Ejemplo n.º 1
0
 def __init__(self,proxyURLs,appURL):
     websocket.enableTrace(False)
     self.admin_proxy = {}
     self.proxies = set()
     self.admins = set()
     self.adm_id = str(uuid.uuid4())
     self.broadcasted = False
     # set TCP_NODELAY to 1 to disable Nagle
     sockopt = ((socket.IPPROTO_TCP, socket.TCP_NODELAY, DISABLE_NAGLE),)
     
     if not appURL.endswith("/"):
             appURL += "/"
     for proxy in proxyURLs:
         if not proxy.endswith("/"):
             proxy += "/"
         adminWS = websocket.WebSocketApp(proxy+"admin",
                                     on_open = self.Admin_on_open,
                                     on_message = self.Admin_on_message,
                                     on_error = self.Admin_on_error,
                                     on_close = self.Admin_on_close,
                                     sockopt=sockopt)
         proxyWS = websocket.WebSocketApp(proxy+"server",
                                     on_open = self.Proxy_on_open,
                                     on_message = self.Proxy_on_message,
                                     on_error = self.Proxy_on_error,
                                     on_close = self.Proxy_on_close,
                                     sockopt=sockopt)
         self.admin_proxy[adminWS] = proxyWS
         self.proxies.add(proxyWS)
         logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy)
         pws = Thread(target=proxyWS.run_forever)
         pws.daemon = True
         pws.start()
         logger.debug("[ProxyConnector]: Proxy Connected!")
         logger.debug("[ProxyConnector]: Connecting to Admin in " + proxy)
         aws = Thread(target=adminWS.run_forever)
         aws.daemon = True
         aws.start()
         logger.debug("[ProxyConnector]: Admin Connected!")
     
     self.app = websocket.WebSocketApp(appURL,
                                 on_open = self.App_on_open,
                                 on_message = self.App_on_message,
                                 on_error = self.App_on_error,
                                 on_close = self.App_on_close,
                                 sockopt=sockopt)
     # TODO: Fix this sleep, looks so bad :(
     time.sleep(1)
     logger.debug("[ProxyConnector]: Connecting to AppServer in " + appURL)        
     t = Thread(target=self.app.run_forever)
     t.daemon = True
     t.start()
     logger.debug("[ProxyConnector]: App Server Connected!")
     
     self.manager = RMUVE_Manager()
     self.events = Event()
     self.client_proxy = {}
     self.client_admin = {}
Ejemplo n.º 2
0
    def __init__(self, proxyURLs, appURL):
        websocket.enableTrace(True)
        """
        TODO: Support more than one proxy! Right now only the last proxy in the list is used.
        """
        for proxy in proxyURLs:
            self.proxyWS = websocket.WebSocketApp(
                proxy,
                on_open=self.Proxy_on_open,
                on_message=self.Proxy_on_message,
                on_error=self.Proxy_on_error,
                on_close=self.Proxy_on_close,
            )
            logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy)
            Thread(target=self.proxyWS.run_forever).start()
            logger.debug("[ProxyConnector]: Proxy Connected!")

        url = urlparse(appURL)
        logger.debug("[ProxyConnector]: Connecting to AppServer in " + url.netloc)

        conn = httplib.HTTPConnection(url.netloc)
        conn.request("POST", "/socket.io/1/")
        resp = conn.getresponse()
        hskey = resp.read().split(":")[0]
        logger.debug("[ProxyConnector]: hskey is " + hskey)
        self.appWS = websocket.WebSocketApp(
            appURL + "/socket.io/1/websocket/" + hskey,
            on_open=self.App_on_open,
            on_message=self.App_on_message,
            on_error=self.App_on_error,
            on_close=self.App_on_close,
        )
        time.sleep(1)
        Thread(target=self.appWS.run_forever).start()
        logger.debug("[ProxyConnector]: App Server Connected!")

        self.manager = RMUVE_Manager()
        self.events = Event()
Ejemplo n.º 3
0
    def __init__(self, proxyURLs, appURL):
        websocket.enableTrace(True)
        """
        TODO: Support more than one proxy! Right now only the last proxy in the list is used.
        """
        for proxy in proxyURLs:
            self.proxyWS = websocket.WebSocketApp(
                proxy,
                on_open=self.Proxy_on_open,
                on_message=self.Proxy_on_message,
                on_error=self.Proxy_on_error,
                on_close=self.Proxy_on_close)
            logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy)
            Thread(target=self.proxyWS.run_forever).start()
            logger.debug("[ProxyConnector]: Proxy Connected!")

        url = urlparse(appURL)
        logger.debug("[ProxyConnector]: Connecting to AppServer in " +
                     url.netloc)

        conn = httplib.HTTPConnection(url.netloc)
        conn.request('POST', '/socket.io/1/')
        resp = conn.getresponse()
        hskey = resp.read().split(':')[0]
        logger.debug("[ProxyConnector]: hskey is " + hskey)
        self.appWS = websocket.WebSocketApp(appURL +
                                            "/socket.io/1/websocket/" + hskey,
                                            on_open=self.App_on_open,
                                            on_message=self.App_on_message,
                                            on_error=self.App_on_error,
                                            on_close=self.App_on_close)
        time.sleep(1)
        Thread(target=self.appWS.run_forever).start()
        logger.debug("[ProxyConnector]: App Server Connected!")

        self.manager = RMUVE_Manager()
        self.events = Event()