def __init__(self,
                 session,
                 audio_buffer,
                 host='localhost',
                 try_ports=range(8080, 8090),
                 allowed_ips=['127.0.0.1'],
                 allow_ranges=True):
        port = self._find_free_port(host, try_ports)
        self.__audio_buffer = audio_buffer
        sess_ref = weakref.proxy(session)
        self.__base_token = create_base_token()
        self.__allowed_ips = allowed_ips
        self.__cb_stream_ended = DynamicCallback()
        self.__root = Root(sess_ref, audio_buffer, self.__base_token,
                           self.__allowed_ips, self.__cb_stream_ended,
                           allow_ranges)
        app = cherrypy.tree.mount(self.__root, '/')

        #Don't log to the screen by default
        log = cherrypy.log
        log.access_file = ''
        log.error_file = ''
        log.screen = False
        log.access_log.addHandler(NullLogHandler())
        log.error_log.addHandler(NullLogHandler())

        self.__server = wsgiserver.CherryPyWSGIServer((host, port), app)
        threading.Thread.__init__(self)
示例#2
0
 def __init__(self, session, audio_buffer, host='localhost', try_ports=range(8080,8090), allowed_ips=['127.0.0.1'], allow_ranges=True):
     port = self._find_free_port(host, try_ports)
     self.__audio_buffer = audio_buffer
     sess_ref = weakref.proxy(session)
     self.__base_token = create_base_token()
     self.__allowed_ips = allowed_ips
     self.__cb_stream_ended = DynamicCallback()
     self.__root = Root(
         sess_ref, audio_buffer, self.__base_token, self.__allowed_ips,
         self.__cb_stream_ended, allow_ranges
     )
     app = cherrypy.tree.mount(self.__root, '/')
     
     #Don't log to the screen by default
     log = cherrypy.log
     log.access_file = ''
     log.error_file = ''
     log.screen = False
     log.access_log.addHandler(NullLogHandler())
     log.error_log.addHandler(NullLogHandler())
     
     self.__server = wsgiserver.CherryPyWSGIServer((host, port), app)
     threading.Thread.__init__(self)
class ProxyRunner(threading.Thread):
    __server = None
    __audio_buffer = None
    __base_token = None
    __allowed_ips = None
    __cb_stream_ended = None
    __root = None

    def _find_free_port(self, host, port_list):
        for port in port_list:
            try:
                servers.check_port(host, port, .1)
                return port
            except:
                pass

        list_str = ','.join([str(item) for item in port_list])
        raise HTTPProxyError("Cannot find a free port. Tried: %s" % list_str)

    def __init__(self,
                 session,
                 audio_buffer,
                 host='localhost',
                 try_ports=range(8080, 8090),
                 allowed_ips=['127.0.0.1'],
                 allow_ranges=True):
        port = self._find_free_port(host, try_ports)
        self.__audio_buffer = audio_buffer
        sess_ref = weakref.proxy(session)
        self.__base_token = create_base_token()
        self.__allowed_ips = allowed_ips
        self.__cb_stream_ended = DynamicCallback()
        self.__root = Root(sess_ref, audio_buffer, self.__base_token,
                           self.__allowed_ips, self.__cb_stream_ended,
                           allow_ranges)
        app = cherrypy.tree.mount(self.__root, '/')

        #Don't log to the screen by default
        log = cherrypy.log
        log.access_file = ''
        log.error_file = ''
        log.screen = False
        log.access_log.addHandler(NullLogHandler())
        log.error_log.addHandler(NullLogHandler())

        self.__server = wsgiserver.CherryPyWSGIServer((host, port), app)
        threading.Thread.__init__(self)

    def set_stream_end_callback(self, callback):
        self.__cb_stream_ended.set_callback(callback)

    def clear_stream_end_callback(self):
        self.__cb_stream_ended.clear_callback()

    def run(self):
        self.__server.start()

    def get_port(self):
        return self.__server.bind_addr[1]

    def get_host(self):
        return self.__server.bind_addr[0]

    def get_user_token(self, user_agent):
        return create_user_token(self.__base_token, user_agent)

    def ready_wait(self):
        while not self.__server.ready:
            time.sleep(.1)

    def stop(self):
        self.__audio_buffer.stop()
        self.__server.stop()
        self.join(10)
        self.__root.cleanup()
示例#4
0
class ProxyRunner(threading.Thread):
    __server = None
    __audio_buffer = None
    __base_token = None
    __allowed_ips = None
    __cb_stream_ended = None
    __root = None
    
    
    def _find_free_port(self, host, port_list):
        for port in port_list:
            try:
                servers.check_port(host, port, .1)
                return port
            except:
                pass
        
        list_str = ','.join([str(item) for item in port_list])
        raise HTTPProxyError("Cannot find a free port. Tried: %s" % list_str)
    
    
    def __init__(self, session, audio_buffer, host='localhost', try_ports=range(8080,8090), allowed_ips=['127.0.0.1'], allow_ranges=True):
        port = self._find_free_port(host, try_ports)
        self.__audio_buffer = audio_buffer
        sess_ref = weakref.proxy(session)
        self.__base_token = create_base_token()
        self.__allowed_ips = allowed_ips
        self.__cb_stream_ended = DynamicCallback()
        self.__root = Root(
            sess_ref, audio_buffer, self.__base_token, self.__allowed_ips,
            self.__cb_stream_ended, allow_ranges
        )
        app = cherrypy.tree.mount(self.__root, '/')
        
        #Don't log to the screen by default
        log = cherrypy.log
        log.access_file = ''
        log.error_file = ''
        log.screen = False
        log.access_log.addHandler(NullLogHandler())
        log.error_log.addHandler(NullLogHandler())
        
        self.__server = wsgiserver.CherryPyWSGIServer((host, port), app)
        threading.Thread.__init__(self)
    
    
    def set_stream_end_callback(self, callback):
        self.__cb_stream_ended.set_callback(callback)
    
    
    def clear_stream_end_callback(self):
        self.__cb_stream_ended.clear_callback();
        
    
    def run(self):
        self.__server.start()
    
    
    def get_port(self):
        return self.__server.bind_addr[1]
    
    
    def get_host(self):
        return self.__server.bind_addr[0]
    
    
    def get_user_token(self, user_agent):
        return create_user_token(self.__base_token, user_agent)
    
    
    def ready_wait(self):
        while not self.__server.ready:
            time.sleep(.1)
    
    
    def stop(self):
        self.__audio_buffer.stop()
        self.__server.stop()
        self.join(10)
        self.__root.cleanup()