Пример #1
0
// Constructor
SipTlsServer::SipTlsServer(int port,
                           SipUserAgent* userAgent,
                           UtlBoolean bUseNextAvailablePort,
                           const char* szBindAddr) :
   // Use PORT_NONE here to prevent SipTcpServer from opening a socket.
   SipTcpServer(PORT_NONE,
                userAgent,
                "SipTlsServer-%d",
                FALSE,
                NULL,
                SIP_TRANSPORT_TLS)
{
   Os::Logger::instance().log(FAC_SIP, PRI_DEBUG,
                 "SipTlsServer[%s]::_  '%s' %s port %d szBindAddr = '%s'",
                 getName().data(), mName.data(),
                 bUseNextAvailablePort ? "use next available" : "specific",
                 port, szBindAddr);

   // mServerPort is set to PORT_NONE by SipTcpServer::SipTcpServer.
   mServerPort = port;
   mpServerBrokerListener = new SipServerBrokerListener(this);
   mIsSecureTransport = true;

   Os::Logger::instance().log(FAC_SIP, PRI_DEBUG,
                 "SipTlsServer[%s]::_ port %d",
                 getName().data(), mServerPort);

   if (szBindAddr && 0 != strcmp(szBindAddr, "0.0.0.0"))
   {
      mDefaultIp = szBindAddr;
      createServerSocket(szBindAddr, mServerPort, bUseNextAvailablePort);
   }
   else
   {
      int numAddresses = 0;
      const HostAdapterAddress* adapterAddresses[MAX_IP_ADDRESSES];
      getAllLocalHostIps(adapterAddresses, numAddresses);

      for (int i = 0; i < numAddresses; i++)
      {
         createServerSocket(adapterAddresses[i]->mAddress.data(),
                            mServerPort,
                            bUseNextAvailablePort);
         if (0 == i)
         {
            // use the first IP address in the array
            // for the 'default ip'
            mDefaultIp = adapterAddresses[i]->mAddress.data();
         }
         delete adapterAddresses[i];
      }
   }

   // Correct mDefaultPort, which is set to SIP_PORT in SipProtocolServerBase.
   mDefaultPort = SIP_TLS_PORT;
}
Пример #2
0
// Constructor
SipUdpServer::SipUdpServer(int port,
                           SipUserAgent* userAgent,
                           const char* natPingUrl,
                           int natPingFrequencySeconds,
                           const char* natPingMethod,
                           int udpReadBufferSize,
                           UtlBoolean bUseNextAvailablePort,
                           const char* szBoundIp) :
   SipProtocolServerBase(userAgent, "UDP", "SipUdpServer-%d"),
   mStunRefreshSecs(28), 
   mStunOptions(0)  
{
    OsSysLog::add(FAC_SIP, PRI_DEBUG,
                  "SipUdpServer::_ port = %d, bUseNextAvailablePort = %d, szBoundIp = '%s'",
                  port, bUseNextAvailablePort, szBoundIp);

    if (szBoundIp && 0 != strcmp(szBoundIp, "0.0.0.0"))
    {
        mDefaultIp = szBoundIp;
        int serverSocketPort = port;
        createServerSocket(szBoundIp, serverSocketPort, bUseNextAvailablePort, udpReadBufferSize);
    }
    else
    {
        int numAddresses = 0;
        const HostAdapterAddress* adapterAddresses[MAX_IP_ADDRESSES];
        getAllLocalHostIps(adapterAddresses, numAddresses);

        for (int i = 0; i < numAddresses; i++)
        {
            int serverSocketPort = port;
            
            createServerSocket(adapterAddresses[i]->mAddress.data(),
                               serverSocketPort,
                               bUseNextAvailablePort,
                               udpReadBufferSize);
            if (0 == i)
            {
                // use the first IP address in the array
                // for the 'default ip'
                mDefaultIp = adapterAddresses[i]->mAddress.data();
            }
            delete adapterAddresses[i];   
        }
    }

    if(natPingUrl && *natPingUrl)
        mNatPingUrl = natPingUrl;
    if(natPingMethod && *natPingMethod)
        mNatPingMethod = natPingMethod;
    else
        mNatPingMethod = "PING";

    mNatPingFrequencySeconds = natPingFrequencySeconds;
}
Пример #3
0
// Constructor
SipTlsServer::SipTlsServer(int port,
                           SipUserAgent* userAgent, 
                           UtlBoolean bUseNextAvailablePort,
                           UtlString certNickname,
                           UtlString certPassword,
                           UtlString dbLocation,
                           const char*  szBindAddr) :
 SipProtocolServerBase(userAgent, "TLS", "SipTlsServer %d"),
 mCertNickname(certNickname),
 mCertPassword(certPassword),
 mDbLocation(dbLocation),
 mTlsInitCode(OS_SUCCESS)
{
    OsSysLog::add(FAC_SIP, PRI_DEBUG,
                  "SipTlsServer::_ port = %d, bUseNextAvailablePort = %d",
                  port, bUseNextAvailablePort);

    mServerPort = port ;
    mpServerBrokerListener = new SipServerBrokerListener(this);

#ifdef _DISABLE_MULTIPLE_INTERFACE_SUPPORT
   szBindAddr = "0.0.0.0" ;
#endif

    OsSysLog::add(FAC_SIP,PRI_DEBUG,"SipTlsServer::~ port %d", port);

    if (szBindAddr && 0 != strcmp(szBindAddr, "0.0.0.0"))
    {
        mDefaultIp = szBindAddr;
        createServerSocket(szBindAddr, mServerPort, bUseNextAvailablePort);
    }
    else      
    {
        int numAddresses = MAX_IP_ADDRESSES;
        const HostAdapterAddress* adapterAddresses[MAX_IP_ADDRESSES];
        getAllLocalHostIps(adapterAddresses, numAddresses);

        for (int i = 0; i < numAddresses; i++)
        {
            createServerSocket(adapterAddresses[i]->mAddress.data(),
                               mServerPort,
                               bUseNextAvailablePort);
            if (0 == i)
            {
                // use the first IP address in the array
                // for the 'default ip'
                mDefaultIp = adapterAddresses[i]->mAddress.data();
            }
            delete adapterAddresses[i];
        }
    }

   mDefaultPort = SIP_TLS_PORT;
}
Пример #4
0
int startServices(int *echoFD, int *dtFD)
{
	int echoSockFD;
	int daytimeSockFD;
	int rc,rc1;

	rc = createServerSocket(ECHO_PORT,&echoSockFD) ;
	rc1 = createServerSocket(DAYTIME_PORT,&daytimeSockFD) ;

	rc = rc + rc1;

	*echoFD =  echoSockFD;
	*dtFD = daytimeSockFD;
	return rc;
}
Пример #5
0
// Constructor
SipUdpServer::SipUdpServer(int port,
                           SipUserAgent* userAgent,
                           int udpReadBufferSize,
                           UtlBoolean bUseNextAvailablePort,
                           const char* szBoundIp) :
   SipProtocolServerBase(userAgent,
                         SIP_TRANSPORT_UDP,
                         "SipUdpServer-%d"),
   mStunRefreshSecs(28), 
   mStunOptions(0)
{
    OsSysLog::add(FAC_SIP, PRI_DEBUG,
                  "SipUdpServer[%s]::_ port = %d, bUseNextAvailablePort = %d, szBoundIp = '%s'",
                  getName().data(), port, bUseNextAvailablePort, szBoundIp);

    if (szBoundIp && 0 != strcmp(szBoundIp, "0.0.0.0"))
    {
       // If an address was supplied, only open a socket on that address.
       mDefaultIp = szBoundIp;
       int serverSocketPort = port;
       createServerSocket(szBoundIp, serverSocketPort, bUseNextAvailablePort,
                          udpReadBufferSize);
    }
    else
    {
       // If no address was supplied, get all local addresses and open
       // sockets on all of them.
       int numAddresses = 0;
       const HostAdapterAddress* adapterAddresses[MAX_IP_ADDRESSES];
       getAllLocalHostIps(adapterAddresses, numAddresses);

       if (numAddresses >= 1)
       {
          // Use the first IP address in the array for the 'default IP address'.
          mDefaultIp = adapterAddresses[0]->mAddress.data();
       }
       for (int i = 0; i < numAddresses; i++)
       {
          int serverSocketPort = port;
            
          createServerSocket(adapterAddresses[i]->mAddress.data(),
                             serverSocketPort,
                             bUseNextAvailablePort,
                             udpReadBufferSize);
          delete adapterAddresses[i];   
       }
    }
}
Пример #6
0
int main(){
	struct sockaddr_in  addr, cliaddr;
	socklen_t cliaddrlen = sizeof(cliaddr);	
		

	// create the socket
	int fd = createServerSocket(addr, cliaddr, sizeof(cliaddr));

	// receive msg-es
	while(1){
		// accept a connection
		printf("> Accepting connection \n");
		int connfd = accept(fd, (struct sockaddr*)  &cliaddr, &cliaddrlen);
		if(connfd == -1){
			printf("! Error in accepting connection");
		}	
		// announce the connection
		// announce_client(&cliaddr.sin_addr);
		// create the thread
		printf("> Creating thread \n");
		pthread_t tid;
		int flag = pthread_create(&tid,               // ID
					  NULL,               // attributes
				   	  receiveMsg,    // routine
					  &connfd);           // arguments of routine
		if(flag<0){
			perror("! Error in creating a thread.");
		}
	}
	printf("> Exit server");
	
	close(fd);
	return 0;
}
Пример #7
0
static int server(void){
	int ret=0;
	struct socket* _clientSocket;
	struct socket * _socket = createServerSocket();
	if(!_socket)
	{
		printk("server socket created failed\n");
		return -1;
	}
	while	(1){
		 /*listen*/
        	ret=_socket->ops->listen(_socket,10);
        	if(ret<0){
                	printk("server: listen error\n");
                	return ret;
        	}
        	printk("server:listen ok!\n");

 	        ret=_socket->ops->accept(_socket,_clientSocket,10);
		if(ret<0){
                	printk("server:accept error!\n");
                	return ret;
        	}
		printk("server: accept ok, Connection Established\n");
		processConnection(_clientSocket);
	}
	sock_release(_socket);

}
Пример #8
0
void Connection::init(int port)
{
    int serverFd = createServerSocket();

    sockaddr_in address = bindSocket(serverFd, port);
    serverSocket = new Socket(-1, serverFd, address);

    listen(serverFd, MAX_CONNECTIONS);
}
Пример #9
0
LineServer *createLineServer(char *port, LineServerCallback callback)
{
    LineServer *result = ALLOCATE_OBJECT(LineServer);
    result->state = RPC_SERVER_STATE_STOPPED;
    result->open_connections = 0;
    result->socket = createServerSocket(port);
    result->callback = callback;
    return result;
}
shared_ptr<TSimpleServer> TSimpleServerCreator::createSimpleServer() {
  shared_ptr<TSimpleServer> server;

  if (duplexProtocolFactory_.get() != nullptr) {
    server.reset(new TSimpleServer(processor_,
                                   createServerSocket(),
                                   getDuplexTransportFactory(),
                                   duplexProtocolFactory_));
  } else {
    server.reset(new TSimpleServer(processor_,
                                   createServerSocket(),
                                   transportFactory_,
                                   getProtocolFactory()));
  }

  SyncServerCreator::configureServer(server);
  return server;
}
Пример #11
0
static void
on_create(HWND hWnd)
{
	LOGFONT lf = {0};
	HFONT hfont;

	CreateWindow(
		TEXT("STATIC"),
		NULL,
		WS_CHILD | WS_VISIBLE | SS_CENTER,
		0, 0,
		500, 100,
		hWnd,
		(HMENU)(IDC_PRIM),
		hInst,
		NULL);

	lf.lfHeight = 36;
	lf.lfPitchAndFamily = FF_SWISS;
	hfont = CreateFontIndirect(&lf);
	SendDlgItemMessage(hWnd, IDC_PRIM,
			WM_SETFONT, (WPARAM)hfont, TRUE);

	CreateWindow(
		TEXT("STATIC"),
		NULL,
		WS_CHILD | WS_VISIBLE | SS_CENTER,
		0, 100,
		500, 100,
		hWnd,
		(HMENU)(IDC_SEC),
		hInst,
		NULL);

	lf.lfHeight = 24;
	lf.lfPitchAndFamily = FF_SWISS;
	hfont = CreateFontIndirect(&lf);
	SendDlgItemMessage(hWnd, IDC_SEC,
			WM_SETFONT, (WPARAM)hfont, TRUE);

	CreateWindow(
		TEXT("STATIC"),
		NULL,
		WS_CHILD | SS_CENTER,
		0, 100,
		500, 100,
		hWnd,
		(HMENU)(IDC_WATCHDOG_TIMER),
		hInst,
		NULL);

	createServerSocket();
	WSAAsyncSelect(mySocket, hWnd,
		M_PACKET,
		FD_READ);
}
Пример #12
0
// main()
int main() {
	printf("beginning of program in C\n");
	//struct lightBulb bulb;
	struct timeEmulate bulbTime;
	int i, level[10];
	bool isHealth = true;
	pthread_t threadPush, threadTime;
	pthread_mutex_init(&lock, NULL);
	printf("Do we get here?\n");

	
	// Obtain socket FD using PORT_WEATHER to communicate with weather.py
	int servSockWeather = createServerSocket(PORT_WEATHER);
	pthread_mutex_lock(&lock);
	bulb.health = 0;
	pthread_mutex_unlock(&lock);
	bulbTime.hour = 0;
	bulbTime.min = 0;
	for (i = 0; i < 10; i++){
		level[i] = i+1;
	}
	printf("do we get to this in main?\n");
	/* Two threads that run in background to update the time of the bulb and also push/pull notifications periodically to 
	* Parse Cloud
	*/
	pthread_create(&threadPush, NULL, threadPushNotifications, NULL);
	pthread_create(&threadTime, NULL, updateBulbTime, (void *)(&bulbTime));
	//MOVED THIS FROM ITS ORIGINAL SPOT
	updateIntensity(0, NULL);
	printf("what about here?\n");
	while(1)
	{	
		char str[4];
		updateBasedOnTime(&bulbTime, level, servSockWeather);
		// doesn't get to here...printf("after UBOT?");
		sprintf(str, "%d", getIntensity(&bulb));
		clientSendSocket(PORT_INTENSITY, str);
		printf("Main loop thing\n");
		while (bulb.health == 2)
		{
			if (isHealth)
			{
				updateOnParse("Intensity", 0);
				updateOnParse("Health", 2);
				//updateOnParse("Intensity", 0, "Health", 2);
				isHealth = false;
				printf("Bulb Health is screwed up\n");
			}
		} // Avoid crazy looping during bulb DAMAGED condition. Optimization to avoid excess CPU cycle usage.
		isHealth = true;
	}
	
	return 0;
}
Пример #13
0
void initializeSockets() { 
  int i;
  dbg_clear(DBG_SIM, "SIM: Initializing sockets\n");

  pthread_mutex_init(&(tos_state.pause_lock), NULL);
  pthread_cond_init(&(tos_state.pause_cond), NULL);
  pthread_cond_init(&(tos_state.pause_ack_cond), NULL);

  for (i = 0; i < MAX_CLIENT_CONNECTIONS; i++) {
    commandClients[i] = -1;
    eventClients[i] = -1;
    batchState[i] = 0;
  }
  eventMask = 0xffff;
  commandServerSocket = createServerSocket(COMMAND_PORT);
  eventServerSocket = createServerSocket(EVENT_PORT);
  pthread_mutex_init(&eventClientsLock, NULL);
  pthread_cond_init(&eventClientsCond, NULL);
  pthread_create(&eventAcceptThread, NULL, eventAcceptThreadFunc, NULL);
  pthread_create(&commandReadThread, NULL, commandReadThreadFunc, NULL);
  socketsInitialized = 1;
}
Пример #14
0
OlySocket::OlySocket(int port, bool multiple) {
#ifdef WIN32
  WSADATA wsaData;
  if (WSAStartup(0x0202, &wsaData) != 0) {
    logg->logError(__FILE__, __LINE__, "Windows socket initialization failed");
    handleException();
  }
#endif

  if (multiple) {
    createServerSocket(port);
  } else {
    createSingleServerConnection(port);
  }
}
Пример #15
0
main (int argc, char *argv[])
{
    int socketFD;
    int connectionFD;
    char buffer[80];
    int ret;
    int port;
    int schem;
    if (argc < 3)
    {
        strcpy (buffer, "Usage: ServerSocket PortNumber ServerScheme [MaxClients]\n");
        write (2, buffer, strlen (buffer));
        exit (1);
    }
    port = atoi(argv[1]);
    schem = atoi(argv[2]);

#ifdef DEBUG
    printf("port: %s\n", argv[1]);
    printf("schem: %s\n",argv[2]);
#endif

    MAX_CLIENTS = 100;
    if(argc == 4)
        MAX_CLIENTS = atoi(argv[3]);
    NUM_CONECTIONS = 0;

    socketFD = createServerSocket (port);
    if (socketFD < 0)
    {
        perror ("Error creating socket\n");
        exit (1);
    }
    setScheme(schem);
    signal(SIGCHLD,func_sigchild);  // reprogramacio del signal sigchld, quan un fill acaba descompta el nombre de conexions totals
    while (1) {
#ifdef DEBUG
        printf("Conexions: [%d/%d]\n",NUM_CONECTIONS, MAX_CLIENTS);
#endif
        ServerLoop(socketFD);
    }
}
Пример #16
0
/**
 * initSocket
 *
 * Création d'un socket en parcourant tous les ports depuis 1025 à la recherche
 * d'un port disponible
 *
 * @param   {int *}     port    Va être complété avec le port utilisé
 *
 * @return  {SOCKET}    Le socket
 */
SOCKET initSocket(int *port) {
    int p = 1025;
    int listener;
    while ((listener = createServerSocket(p)) == -1) {
        p++;
        close(listener);
        if (p > 65535) {
            break;
        }
    }

    if (listener >= 0) {
        *port = p;
        if (listen(listener, MAX_QUEUE) == -1) {
            perror("listen()");
            exit(EXIT_FAILURE);
        }
    }

    return listener;
}
Пример #17
0
main (int argc, char *argv[])
{
  int socketFD;
  int connectionFD;
  char buffer[80];
  int ret;
  int port;


  if (argc != 2)
    {
      strcpy (buffer, "Usage: ServerSocket PortNumber\n");
      write (2, buffer, strlen (buffer));
      exit (1);
    }

  port = atoi(argv[1]);
  socketFD = createServerSocket(port);
  if (socketFD < 0)
    {
      perror ("Error creating socket\n");
      exit (1);
    }

  while (1) {
      connectionFD = acceptNewConnections (socketFD);
      if (connectionFD < 0)
      {
          perror ("Error establishing connection \n");
          deleteSocket(socketFD);
          exit (1);
      }

      doServiceFork(connectionFD);
  }
}
Пример #18
0
int main() {
	//TODO: thread pool
	struct sockaddr_in addr, cliaddr;
	socklen_t cliaddrlen = sizeof(cliaddr);

	// create the socket
	int fd = createServerSocket(addr);

	// receive msg-es
	while (1) { // THREAD POOL MISSING
		// accept a connection
		printf("> Accepting connection \n");
		int* connfd = malloc(sizeof(int));
		*connfd = accept(fd, (struct sockaddr*) &cliaddr, &cliaddrlen);
		if (*connfd == -1) {
			printf("! Error in accepting connection");
		}
		// announce the connection
		// create the thread
		printf("> Creating thread \n");
		pthread_t tid;
		int flag = pthread_create(&tid,               // ID
				NULL,               // attributes
				receiveMsg,         // routine
				connfd);           // arguments of routine
		if (flag < 0) {
			sendErrorServer(connfd);
			perror("! Error in creating a thread.");
		}
	}
	printf("> Exit server");
	// there should be a release for the CONNFD here, but there is no logical exit from the server

	close(fd); // close the socket
	return 0;
}
int main()
{
    int sockfd1,sockfd2;
    sockfd1 = createServerSocket(8233);
    if(sockfd1 == -1)
    {
        LINLOG("failed to create server socket\n");
        return 1;
    }
    sockfd2 = createServerSocket(8234);
    if(sockfd2 == -1)
    {
        LINLOG("failed to create server socket\n");
        close(sockfd1);
        return 1;
    }
    int epollfd = epoll_create(1);
    if(epollfd == -1)
    {
        LINLOG("failed to create epoll\n");
        close(sockfd1);
        close(sockfd2);
        return 1;
    }
    struct epoll_event ev;
    memset(&ev,0,sizeof(ev));
    ev.events = EPOLLIN;
    ev.data.fd = sockfd1;
    if (epoll_ctl(epollfd, EPOLL_CTL_ADD, sockfd1, &ev) == -1) {
        LINLOG("failed to add epoll event to sockfd1 %d\n",errno);
        close(sockfd1);
        close(sockfd2);
        close(epollfd);
        return 1;
    }

    memset(&ev,0,sizeof(ev));
    ev.events = EPOLLIN;
    ev.data.fd = sockfd2;
    if (epoll_ctl(epollfd, EPOLL_CTL_ADD, sockfd2, &ev) == -1) {
        LINLOG("failed to add epoll event sockfd2 %d\n",errno);
        close(sockfd1);
        close(sockfd2);
        close(epollfd);
        return 1;
    }

    for (;;) {
        memset(&ev,0,sizeof(ev));
        int nfds = epoll_wait(epollfd, &ev, 1, -1);
        if (nfds == -1) {
            LINLOG("epoll_wait:%d",errno);
            close(sockfd1);
            close(sockfd2);
            close(epollfd);
            return 1;
        }
        printf("got event from %d in %d,%d\n",ev.data.fd,sockfd1,sockfd2);
        sockaddr_in local;
        socklen_t size = sizeof(local);
        int clientfd = accept(ev.data.fd,(sockaddr*)&local,&size);
        if(clientfd == -1)
        {
            LINLOG("failed to accept:%d\n",errno);
            
            close(sockfd1);
            close(sockfd2);
            close(epollfd);
            return 1;
        }
        close(clientfd);
    }
    close(sockfd1);
    close(sockfd2);
    close(epollfd);
    return 0;
}
Пример #20
0
void OlySocket::createSingleServerConnection(int port) {
  createServerSocket(port);

  mSocketID = acceptConnection();
  closeServerSocket();
}
Пример #21
0
static void connectServer(const char *stty, const char *dev) {
  int fdmax, newfd;

  fd_set master, read_fds;
  FD_ZERO(&master);
  FD_ZERO(&read_fds);

  int serverfd;
  serverfd = createServerSocket(dev);
  if (serverfd < 0) {
    syslog(LOG_ERR, "mTerm_server: Failed to create server socket\n");
    return;
  }

  struct ttyRaw* tty_sol;
  tty_sol = setTty(openTty(stty), 1);
  if (!tty_sol) {
    syslog(LOG_ERR, "mTerm_server: Failed to set tty to raw mode\n");
    close(serverfd);
    return;
  }

  struct bufStore* buf;
  buf = createBuffer(dev, FILE_SIZE_BYTES);
  if (!buf || (buf->buf_fd < 0)) {
    syslog(LOG_ERR, "mTerm_server: Failed to create the log file\n");
    closeTty(tty_sol);
    close(serverfd);
    return;
  }

  FD_SET(serverfd, &master);
  FD_SET(tty_sol->fd,&master);
  fdmax = (serverfd > tty_sol->fd) ? serverfd : tty_sol->fd;

  for(;;) {
    read_fds = master;
    if (select(fdmax + 1, &read_fds, NULL, NULL, NULL) == -1) {
      syslog(LOG_ERR, "mTerm_server: Server socket: select error\n");
      break;
    }
    if (FD_ISSET(serverfd, &read_fds)) {
      newfd = acceptClient(serverfd);
      if (newfd < 0) {
        syslog(LOG_ERR, "mTerm_server: Error on accepting client\n");
      } else {
        FD_SET(newfd, &master);
        if (newfd > fdmax) {
          fdmax = newfd;
        }
      }
    }
    if (FD_ISSET(tty_sol->fd, &read_fds)) {
      if ( processSol(&master, serverfd, fdmax, tty_sol->fd, buf) < 0) {
        break;
      }
    }
    int i;
    for(i = 0; i <= fdmax; i++) {
      if (FD_ISSET(i, &read_fds)) {
        if ((i == serverfd) || (i == tty_sol->fd)) {
          continue;
        } else {
          processClient(&master, i, tty_sol->fd, buf);
        }
      }
    }
  }
  closeTty(tty_sol);
  close(serverfd);
  closeBuffer(buf);
}