void WInternalTelnetServer::RunTelnetServer() { SOCKET hSock; SOCKADDR_IN lpstName; int AddrLen = sizeof(SOCKADDR_IN); CreateListener(); if (hSocketHandle != INVALID_SOCKET) { std::cout << "Press control-c to exit\r\n\n"; std::cout << "Waiting for socket connection...\r\n\n"; hSock = accept(hSocketHandle, reinterpret_cast<LPSOCKADDR>(&lpstName), &AddrLen); if (hSock != INVALID_SOCKET) { char buffer[20]; _snprintf(buffer, sizeof(buffer), "-H%u", hSock); char **szParameters; szParameters = new char *[3]; szParameters[0] = new char [1]; szParameters[1] = new char [20]; szParameters[2] = new char [20]; strcpy(szParameters[0], ""); strcpy(szParameters[1], buffer); strcpy(szParameters[2], "-XT"); m_pRunnable->Run(3, szParameters); delete [] szParameters[0]; delete [] szParameters[1]; delete [] szParameters[2]; delete [] szParameters; } } }
bool SharedPortEndpoint::StartListener() { if( m_registered_listener ) { return true; } if( !CreateListener() ) { return false; } // We are a daemon-core application, so register our listener // socket for read events. Otherwise, it is up to our caller // to call AcceptAndReceiveConnection() at appropriate times. // We could register it as a command socket, but in the // current implementation, we don't, because IPVerify // is not prepared to deal with unix domain addresses. #ifdef WIN32 /* Registering the named pipe. */ return StartListenerWin32(); #else ASSERT( daemonCore ); int rc; rc = daemonCore->Register_Socket( &m_listener_sock, m_full_name.Value(), (SocketHandlercpp)&SharedPortEndpoint::HandleListenerAccept, "SharedPortEndpoint::HandleListenerAccept", this); ASSERT( rc >= 0 ); if( m_socket_check_timer == -1 ) { // In case our named socket gets deleted, keep checking to // make sure it is there. Also, touch it to prevent preen // from removing it (and to prevent tmpwatch accidents). const int socket_check_interval = TouchSocketInterval(); int fuzz = timer_fuzz(socket_check_interval); m_socket_check_timer = daemonCore->Register_Timer( socket_check_interval + fuzz, socket_check_interval + fuzz, (TimerHandlercpp)&SharedPortEndpoint::SocketCheck, "SharedPortEndpoint::SocketCheck", this ); } dprintf(D_ALWAYS,"SharedPortEndpoint: waiting for connections to named socket %s\n", m_local_id.Value()); m_registered_listener = true; return true; #endif }
int ProxyInst::InitServer( size_t session_size) { pListen = CreateListener() ; if(!pListen) { return -1 ; } pListen->Initilize(NDInstanceSrv::srvcfg.max_connect, session_size, "listen-tcp") ; return 0; }
bool DarunGrim::StartIDAListener(unsigned short port) { StopIDAListener(); ListeningPort = port; if (ListeningPort>0) { ListeningSocket = CreateListener(NULL, port); Logger.Log(10, "%s: ListeningSocket=%d\n", __FUNCTION__, ListeningSocket); return TRUE; } return FALSE; }
void BrowserSource::UpdateBrowser() { if (browserIdentifier != 0) { LockTexture(); BrowserManager::Instance()->DestroyBrowser(browserIdentifier); InvalidateActiveTexture(); browserIdentifier = 0; UnlockTexture(); } std::shared_ptr<BrowserListener> browserListener(CreateListener()); BrowserSettings browserSettings; browserSettings.url = isLocalFile? "http://absolute/"+ url : url, browserSettings.width = width; browserSettings.height = height; browserSettings.fps = fps; browserSettings.css = css; browserIdentifier = BrowserManager::Instance()->CreateBrowser( browserSettings, browserListener); }
int TRANS(MakeAllCOTSServerListeners) (char *port, int *partial, int *count_ret, XtransConnInfo **ciptrs_ret) { char buffer[256]; /* ??? What size ?? */ XtransConnInfo ciptr, temp_ciptrs[NUMTRANS]; int status, i, j; PRMSG (2,"MakeAllCOTSServerListeners(%s,%x)\n", port ? port : "NULL", ciptrs_ret, 0); *count_ret = 0; for (i = 0; i < NUMTRANS; i++) { Xtransport *trans = Xtransports[i].transport; if (trans->flags&TRANS_ALIAS || trans->flags&TRANS_NOLISTEN) continue; sprintf(buffer,"%s/:%s", trans->TransName, port ? port : ""); PRMSG (5,"MakeAllCOTSServerListeners: opening %s\n", buffer, 0, 0); if ((ciptr = TRANS(OpenCOTSServer(buffer))) == NULL) { if (trans->flags & TRANS_DISABLED) continue; PRMSG (1, "MakeAllCOTSServerListeners: failed to open listener for %s\n", trans->TransName, 0, 0); continue; } if ((status = TRANS(CreateListener (ciptr, port))) < 0) { if (status == TRANS_ADDR_IN_USE) { /* * We failed to bind to the specified address because the * address is in use. It must be that a server is already * running at this address, and this function should fail. */ PRMSG (1, "MakeAllCOTSServerListeners: server already running\n", 0, 0, 0); for (j = 0; j < *count_ret; j++) TRANS(Close) (temp_ciptrs[j]); *count_ret = 0; *ciptrs_ret = NULL; *partial = 0; return -1; } else { PRMSG (1, "MakeAllCOTSServerListeners: failed to create listener for %s\n", trans->TransName, 0, 0); continue; } } PRMSG (5, "MakeAllCOTSServerListeners: opened listener for %s, %d\n", trans->TransName, ciptr->fd, 0); temp_ciptrs[*count_ret] = ciptr; (*count_ret)++; } *partial = (*count_ret < complete_network_count()); PRMSG (5, "MakeAllCLTSServerListeners: partial=%d, actual=%d, complete=%d \n", *partial, *count_ret, complete_network_count()); if (*count_ret > 0) { if ((*ciptrs_ret = (XtransConnInfo *) xalloc ( *count_ret * sizeof (XtransConnInfo))) == NULL) { return -1; } for (i = 0; i < *count_ret; i++) { (*ciptrs_ret)[i] = temp_ciptrs[i]; } } else *ciptrs_ret = NULL; return 0; }
int TRANS(MakeAllCOTSServerListeners) (char *port, int *partial, int *count_ret, XtransConnInfo **ciptrs_ret) { char buffer[256]; /* ??? What size ?? */ XtransConnInfo ciptr, temp_ciptrs[NUMTRANS]; int status, i, j; #if defined(IPv6) && defined(AF_INET6) int ipv6_succ = 0; #endif PRMSG (2,"MakeAllCOTSServerListeners(%s,%p)\n", port ? port : "NULL", ciptrs_ret, 0); *count_ret = 0; #ifdef XQUARTZ_EXPORTS_LAUNCHD_FD fprintf(stderr, "Launchd socket fd: %d\n", xquartz_launchd_fd); if(xquartz_launchd_fd != -1) { if((ciptr = TRANS(ReopenCOTSServer(TRANS_SOCKET_LOCAL_INDEX, xquartz_launchd_fd, getenv("DISPLAY"))))==NULL) fprintf(stderr,"Got NULL while trying to Reopen launchd port\n"); else temp_ciptrs[(*count_ret)++] = ciptr; } #endif for (i = 0; i < NUMTRANS; i++) { Xtransport *trans = Xtransports[i].transport; unsigned int flags = 0; if (trans->flags&TRANS_ALIAS || trans->flags&TRANS_NOLISTEN) continue; snprintf(buffer, sizeof(buffer), "%s/:%s", trans->TransName, port ? port : ""); PRMSG (5,"MakeAllCOTSServerListeners: opening %s\n", buffer, 0, 0); if ((ciptr = TRANS(OpenCOTSServer(buffer))) == NULL) { if (trans->flags & TRANS_DISABLED) continue; PRMSG (1, "MakeAllCOTSServerListeners: failed to open listener for %s\n", trans->TransName, 0, 0); continue; } #if defined(IPv6) && defined(AF_INET6) if ((Xtransports[i].transport_id == TRANS_SOCKET_INET_INDEX && ipv6_succ)) flags |= ADDR_IN_USE_ALLOWED; #endif if ((status = TRANS(CreateListener (ciptr, port, flags))) < 0) { if (status == TRANS_ADDR_IN_USE) { /* * We failed to bind to the specified address because the * address is in use. It must be that a server is already * running at this address, and this function should fail. */ PRMSG (1, "MakeAllCOTSServerListeners: server already running\n", 0, 0, 0); for (j = 0; j < *count_ret; j++) TRANS(Close) (temp_ciptrs[j]); *count_ret = 0; *ciptrs_ret = NULL; *partial = 0; return -1; } else { PRMSG (1, "MakeAllCOTSServerListeners: failed to create listener for %s\n", trans->TransName, 0, 0); continue; } } #if defined(IPv6) && defined(AF_INET6) if (Xtransports[i].transport_id == TRANS_SOCKET_INET6_INDEX) ipv6_succ = 1; #endif PRMSG (5, "MakeAllCOTSServerListeners: opened listener for %s, %d\n", trans->TransName, ciptr->fd, 0); temp_ciptrs[*count_ret] = ciptr; (*count_ret)++; } *partial = (*count_ret < complete_network_count()); PRMSG (5, "MakeAllCOTSServerListeners: partial=%d, actual=%d, complete=%d \n", *partial, *count_ret, complete_network_count()); if (*count_ret > 0) { if ((*ciptrs_ret = (XtransConnInfo *) xalloc ( *count_ret * sizeof (XtransConnInfo))) == NULL) { return -1; } for (i = 0; i < *count_ret; i++) { (*ciptrs_ret)[i] = temp_ciptrs[i]; } } else *ciptrs_ret = NULL; return 0; }
int TRANS(MakeAllCOTSServerListeners) (char *port, int *partial, int *count_ret, XtransConnInfo **ciptrs_ret) { char buffer[256]; /* ??? What size ?? */ XtransConnInfo ciptr, temp_ciptrs[NUMTRANS]; int status, i, j; #ifdef HAVE_LAUNCHD int launchd_fd; launch_data_t sockets_dict, checkin_request, checkin_response; launch_data_t listening_fd_array, listening_fd; #endif #if defined(IPv6) && defined(AF_INET6) int ipv6_succ = 0; #endif PRMSG (2,"MakeAllCOTSServerListeners(%s,%p)\n", port ? port : "NULL", ciptrs_ret, 0); *count_ret = 0; #ifdef HAVE_LAUNCHD /* Get launchd fd */ if ((checkin_request = launch_data_new_string(LAUNCH_KEY_CHECKIN)) == NULL) { fprintf(stderr,"launch_data_new_string(\"" LAUNCH_KEY_CHECKIN "\") Unable to create string.\n"); goto not_launchd; } if ((checkin_response = launch_msg(checkin_request)) == NULL) { fprintf(stderr,"launch_msg(\"" LAUNCH_KEY_CHECKIN "\") IPC failure: %s\n",strerror(errno)); goto not_launchd; } if (LAUNCH_DATA_ERRNO == launch_data_get_type(checkin_response)) { // ignore EACCES, which is common if we weren't started by launchd if (launch_data_get_errno(checkin_response) != EACCES) fprintf(stderr,"launchd check-in failed: %s\n",strerror(launch_data_get_errno(checkin_response))); goto not_launchd; } sockets_dict = launch_data_dict_lookup(checkin_response, LAUNCH_JOBKEY_SOCKETS); if (NULL == sockets_dict) { fprintf(stderr,"launchd check-in: no sockets found to answer requests on!\n"); goto not_launchd; } if (launch_data_dict_get_count(sockets_dict) > 1) { fprintf(stderr,"launchd check-in: some sockets will be ignored!\n"); goto not_launchd; } listening_fd_array = launch_data_dict_lookup(sockets_dict, ":0"); if (NULL == listening_fd_array) { fprintf(stderr,"launchd check-in: No known sockets found to answer requests on!\n"); goto not_launchd; } if (launch_data_array_get_count(listening_fd_array)!=1) { fprintf(stderr,"launchd check-in: Expected 1 socket from launchd, got %d)\n", launch_data_array_get_count(listening_fd_array)); goto not_launchd; } listening_fd=launch_data_array_get_index(listening_fd_array, 0); launchd_fd=launch_data_get_fd(listening_fd); fprintf(stderr,"Xquartz: run by launchd for fd %d\n",launchd_fd); if((ciptr = TRANS(ReopenCOTSServer(TRANS_SOCKET_LOCAL_INDEX, launchd_fd, getenv("DISPLAY"))))==NULL) fprintf(stderr,"Got NULL while trying to Reopen launchd port\n"); else temp_ciptrs[(*count_ret)++] = ciptr; not_launchd: #endif for (i = 0; i < NUMTRANS; i++) { Xtransport *trans = Xtransports[i].transport; unsigned int flags = 0; if (trans->flags&TRANS_ALIAS || trans->flags&TRANS_NOLISTEN) continue; snprintf(buffer, sizeof(buffer), "%s/:%s", trans->TransName, port ? port : ""); PRMSG (5,"MakeAllCOTSServerListeners: opening %s\n", buffer, 0, 0); if ((ciptr = TRANS(OpenCOTSServer(buffer))) == NULL) { if (trans->flags & TRANS_DISABLED) continue; PRMSG (1, "MakeAllCOTSServerListeners: failed to open listener for %s\n", trans->TransName, 0, 0); continue; } #if defined(IPv6) && defined(AF_INET6) if ((Xtransports[i].transport_id == TRANS_SOCKET_INET_INDEX && ipv6_succ)) flags |= ADDR_IN_USE_ALLOWED; #endif if ((status = TRANS(CreateListener (ciptr, port, flags))) < 0) { if (status == TRANS_ADDR_IN_USE) { /* * We failed to bind to the specified address because the * address is in use. It must be that a server is already * running at this address, and this function should fail. */ PRMSG (1, "MakeAllCOTSServerListeners: server already running\n", 0, 0, 0); for (j = 0; j < *count_ret; j++) TRANS(Close) (temp_ciptrs[j]); *count_ret = 0; *ciptrs_ret = NULL; *partial = 0; return -1; } else { PRMSG (1, "MakeAllCOTSServerListeners: failed to create listener for %s\n", trans->TransName, 0, 0); continue; } } #if defined(IPv6) && defined(AF_INET6) if (Xtransports[i].transport_id == TRANS_SOCKET_INET6_INDEX) ipv6_succ = 1; #endif PRMSG (5, "MakeAllCOTSServerListeners: opened listener for %s, %d\n", trans->TransName, ciptr->fd, 0); temp_ciptrs[*count_ret] = ciptr; (*count_ret)++; } *partial = (*count_ret < complete_network_count()); PRMSG (5, "MakeAllCOTSServerListeners: partial=%d, actual=%d, complete=%d \n", *partial, *count_ret, complete_network_count()); if (*count_ret > 0) { if ((*ciptrs_ret = (XtransConnInfo *) xalloc ( *count_ret * sizeof (XtransConnInfo))) == NULL) { return -1; } for (i = 0; i < *count_ret; i++) { (*ciptrs_ret)[i] = temp_ciptrs[i]; } } else *ciptrs_ret = NULL; return 0; }
void TLServer_IP::OnRun() { m_running = CreateListener(); updateControls(); }