コード例 #1
0
    def startupagent(self, sender, **kwargs):

        if not self.bind_web_address:
            _log.info('Web server not started.')
            return
        import urlparse
        parsed = urlparse.urlparse(self.bind_web_address)
        hostname = parsed.hostname
        port = parsed.port

        _log.info('Starting web server binding to {}:{}.' \
                   .format(hostname, port))
        self.registeredroutes.append(
            (re.compile('^/discovery/$'), 'callable', self._get_discovery))
        self.registeredroutes.append(
            (re.compile('^/discovery/allow$'), 'callable', self._allow))
        self.registeredroutes.append(
            (re.compile('^/$'), 'callable', self._redirect_index))
        port = int(port)
        vhome = os.environ.get('VOLTTRON_HOME')
        logdir = os.path.join(vhome, "log")
        if not os.path.exists(logdir):
            os.makedirs(logdir)

        self.appContainer = WebApplicationWrapper(self, hostname, port)
        svr = WSGIServer((hostname, port), self.appContainer)
        self._server_greenlet = gevent.spawn(svr.serve_forever)
コード例 #2
0
 def __init__(self, host, port):
     threading.Thread.__init__(self)
     self.log = logs.Logger('WebSocketsServer').getLogger()
     self.port = int(port)
     self.host = host
     self.daemon = True
     self.flag = True
     self.server = WSGIServer((self.host, self.port), WSDemoApp())
     pass
コード例 #3
0
def run_gevent_server(host="127.0.0.1", port=9001):
    from gevent import monkey; monkey.patch_all()
    from ws4py.websocket import EchoWebSocket
    from ws4py.server.geventserver import WebSocketWSGIApplication, WSGIServer

    server = WSGIServer((host, port), WebSocketWSGIApplication(handler_cls=EchoWebSocket))
    logger = logging.getLogger('autobahn_testsuite')
    logger.warning("Serving gevent server on %s:%s" % (host, port))
    server.serve_forever()
コード例 #4
0
ファイル: ws.py プロジェクト: soitun/janus-cloud
    def __init__(self,
                 listen,
                 request_handler,
                 msg_handler_pool_size=1024,
                 indent='indented',
                 pingpong_trigger=0,
                 pingpong_timeout=0,
                 keyfile=None,
                 certfile=None):
        """
        :param listen: string ip:port
        :param request_handler: instance of januscloud.proxy.core.request:RequestHandler
        :param msg_handler_pool_size:
        :param keyfile:
        :param certfile:
        """
        if msg_handler_pool_size == 0:
            msg_handler_pool_size = None

        self._msg_handler_pool = Pool(size=msg_handler_pool_size)
        self._request_handler = request_handler
        self._listen = listen
        if keyfile or certfile:
            self._server = WSGIServer(
                self._listen,
                WebSocketWSGIApplication(protocols=['janus-protocol'],
                                         handler_cls=WSServerConn),
                log=logging.getLogger('websocket server'),
                keyfile=keyfile,
                certfile=certfile)
        else:
            self._server = WSGIServer(
                self._listen,
                WebSocketWSGIApplication(protocols=['janus-protocol'],
                                         handler_cls=WSServerConn),
                log=logging.getLogger('websocket server'),
            )
        self._server.set_environ({
            'app.recv_msg_cbk': self._async_incoming_msg_handler,
            'app.closed_cbk': self._request_handler.transport_gone,
            'json_indent': indent,
            'pingpong_trigger': pingpong_trigger,
            'pingpong_timeout': pingpong_timeout
        })
コード例 #5
0
    def _run_http(self):
        logger.debug("Webfront engine(HTTP) is running...")

        self._http_listener = WSGIServer((self.listen_addr, self.listen_port),
                                         dispatcher)

        logger.debug("Webfront engine(HTTP) is listening on port: %d",
                     self._http_listener.address[1])

        self._http_listener.serve_forever()
コード例 #6
0
def serve(blocking=False):
    ws_server = WSGIServer(
        ('localhost', int(Config.get('server', 'ws_port'))),
        WebSocketWSGIApplication(handler_cls=_LAUWebSocketHandler))
    if blocking == True:
        ws_server.serve_forever()  # Non-blocking serve
    else:
        ws_server.start()  # Non-blocking serve
        pass
    pass
コード例 #7
0
def run_server(host, port, routes):
    compiled_routes = [(re.compile(route), app) for route, app in routes]

    def router(environ, start_response):
        query_path = environ.get('PATH_INFO', '')
        for route, app in compiled_routes:
            if route.match(query_path):
                if hasattr(app, 'get_wsgi_application'):
                    app = app.get_wsgi_application()
                return app(environ, start_response)

        start_response("404 Not Found", [('Content-type', 'text/plain')])
        return []

    server = WSGIServer((host, port), router)
    server.serve_forever()
コード例 #8
0
ファイル: webfront.py プロジェクト: eavatar/ava.node
    def _run_https(self):
        logger.debug("Webfront engine(HTTPS) is running...")

        conf_dir = environ.conf_dir()
        keyfile = os.path.join(conf_dir, 'ava.key')
        certfile = os.path.join(conf_dir, 'ava.crt')

        self._https_listener = WSGIServer(
            (self.listen_addr, self.secure_listen_port),
            dispatcher,
            keyfile=keyfile,
            certfile=certfile)

        logger.debug("Webfront engine(HTTPS) is listening on port: %d",
                     self._https_listener.address[1])

        self._https_listener.serve_forever()
コード例 #9
0
def main():
    import argparse
    from ws4py import configure_logger

    configure_logger()

    parser = argparse.ArgumentParser(description='Twister Server')
    parser.add_argument('--host', default='127.0.0.1')
    parser.add_argument('-p', '--port', default=9000, type=int)
    args = parser.parse_args()

    server = WSGIServer((args.host, args.port),
                        WebSocketWSGIApplication(handler_cls=Twister))

    print "Twister running on %s:%s" % (args.host, args.port)

    server.serve_forever()
コード例 #10
0
ファイル: wsgi.py プロジェクト: merylb/implement_table
import os

import gevent
from django.core.wsgi import get_wsgi_application
from gevent import pywsgi
from ws4py.server.geventserver import WSGIServer

from ws4py.server.wsgiutils import WebSocketWSGIApplication

from implement_table.core.settings import DJANGO_HOST, WEBSOCKET_HOST
from implement_table.ws.websocket import MnWebSocket

os.environ.setdefault("DJANGO_SETTINGS_MODULE",
                      "implement_table.core.settings")

http_server = pywsgi.WSGIServer(DJANGO_HOST, get_wsgi_application())

ws_server = WSGIServer(WEBSOCKET_HOST,
                       WebSocketWSGIApplication(handler_cls=MnWebSocket))

g = [
    gevent.spawn(http_server.serve_forever),
    gevent.spawn(ws_server.serve_forever),
    # scheduler.start()
]

gevent.joinall(g, raise_error=True)

application = get_wsgi_application()
コード例 #11
0
 def listen(self, host, port):
     server = WSGIServer((host, port), self.get_wsgi_application())
     server.serve_forever()
コード例 #12
0
monkey.patch_all()
from ws4py.websocket import EchoWebSocket
from ws4py.server.geventserver import WSGIServer
from ws4py.server.wsgiutils import WebSocketWSGIApplication


class CopyPastaSocket(WebSocket):
    def received_message(self, message):
        self.send(CopyPasta.generate_copy_pasta(message.data),
                  message.is_binary)
        print(message.data)
        self.send(CopyPasta.generate_copy_pasta(message.data),
                  message.is_binary)


server = WSGIServer(('localhost', 3001),
                    WebSocketWSGIApplication(handler_cls=CopyPastaSocket))
server.serve_forever()

# @asyncio.coroutine
# def hello(websocket, path):
#     message = yield from websocket.recv()
#     print("Received message {}".format(message))
#     result = CopyPasta.generate_copy_pasta(message)
#     yield from websocket.send(result)
#     print("Sent message: {}".format(result))

# start_server = websockets.serve(hello, 'localhost', 3001)

# asyncio.get_event_loop().run_until_complete(start_server)
# asyncio.get_event_loop().run_forever()
コード例 #13
0
                 $('#message').val("");
                 return false;
              });
            });
          </script>
        </head>
        <body>
        <form action='#' id='chatform' method='get'>
          <textarea id='chat' cols='35' rows='10'></textarea>
          <br />
          <label for='message'>%(username)s: </label><input type='text' id='message' />
          <input id='send' type='submit' value='Send' />
          </form>
        </body>
        </html>
        """ % {'username': "******" % random.randint(0, 100),
               'host': self.host,
               'port': self.port}

if __name__ == '__main__':
    from ws4py import configure_logger
    configure_logger()

    parser = argparse.ArgumentParser(description='Echo gevent Server')
    parser.add_argument('--host', default='127.0.0.1')
    parser.add_argument('-p', '--port', default=9000, type=int)
    args = parser.parse_args()

    server = WSGIServer((args.host, args.port), EchoWebSocketApplication(args.host, args.port))
    server.serve_forever()
コード例 #14
0
ファイル: ws.py プロジェクト: dulton/IVR
 def server_forever(self):
     self._server = WSGIServer(
         self._listen,
         WebSocketWSGIApplication(handler_cls=WSServerTransport))
     log.info("Starting server on {0}".format(self._listen))
     self._server.serve_forever()
コード例 #15
0
try:
    from gunicorn.workers.ggevent import GeventPyWSGIWorker, PyWSGIHandler

    class WSGIHandler(PyWSGIHandler, WebSocketWSGIHandler):
        pass

    class Worker(GeventPyWSGIWorker):
        """Worker for Gunicorn.
        """
        server_class = WSGIServer
        wsgi_handler = WSGIHandler
except ImportError:
    pass


REDIS_URL = 'redis://127.0.0.1:6379/0'
application = WebSocketChannelApp(redis_url=REDIS_URL)


if __name__ == '__main__':

    logger = ws4py.configure_logger(level='INFO')

    parser = argparse.ArgumentParser(description='Echo gevent Server')
    parser.add_argument('--host', default='127.0.0.1')
    parser.add_argument('--port', default=9000, type=int)
    args = parser.parse_args()

    server = WSGIServer((args.host, args.port), application)
    server.serve_forever()
コード例 #16
0
    def startupagent(self, sender, **kwargs):

        import urlparse
        parsed = urlparse.urlparse(self.bind_web_address)

        ssl_key = self.web_ssl_key
        ssl_cert = self.web_ssl_cert

        if parsed.scheme == 'https':
            # Admin interface is only availble to rmq at present.
            if self.core.messagebus == 'rmq':
                self._admin_endpoints = AdminEndpoints(
                    self.core.rmq_mgmt,
                    self._certs.get_cert_public_key(
                        get_fq_identity(self.core.identity)))

            if ssl_key is None or ssl_cert is None:
                # Because the master.web service certificate is a client to rabbitmq we
                # can't use it directly therefore we use the -server on the file to specify
                # the server based file.
                base_filename = get_fq_identity(self.core.identity) + "-server"
                ssl_cert = self._certs.cert_file(base_filename)
                ssl_key = self._certs.private_key_file(base_filename)

                if not os.path.isfile(ssl_cert) or not os.path.isfile(ssl_key):
                    self._certs.create_ca_signed_cert(base_filename,
                                                      type='server')

        hostname = parsed.hostname
        port = parsed.port

        _log.info('Starting web server binding to {}://{}:{}.'.format(
            parsed.scheme, hostname, port))
        # Handle the platform.web routes here.
        self.registeredroutes.append(
            (re.compile('^/discovery/$'), 'callable', self._get_discovery))
        self.registeredroutes.append(
            (re.compile('^/discovery/allow$'), 'callable', self._allow))
        # these routes are only available for rmq based message bus
        # at present.
        if self.core.messagebus == 'rmq':
            # We need reference to the object so we can change the behavior of
            # whether or not to have auto certs be created or not.
            self._csr_endpoints = CSREndpoints(self.core)
            for rt in self._csr_endpoints.get_routes():
                self.registeredroutes.append(rt)

            for rt in self._admin_endpoints.get_routes():
                self.registeredroutes.append(rt)

            ssl_private_key = self._certs.get_private_key(
                get_fq_identity(self.core.identity))

            for rt in AuthenticateEndpoints(ssl_private_key).get_routes():
                self.registeredroutes.append(rt)

        static_dir = os.path.join(os.path.dirname(__file__), "static")
        self.registeredroutes.append((re.compile('^/.*$'), 'path', static_dir))

        port = int(port)
        vhome = os.environ.get('VOLTTRON_HOME')
        logdir = os.path.join(vhome, "log")
        if not os.path.exists(logdir):
            os.makedirs(logdir)

        self.appContainer = WebApplicationWrapper(self, hostname, port)
        if ssl_key and ssl_cert:
            svr = WSGIServer((hostname, port),
                             self.appContainer,
                             certfile=ssl_cert,
                             keyfile=ssl_key)
        else:
            svr = WSGIServer((hostname, port), self.appContainer)
        self._server_greenlet = gevent.spawn(svr.serve_forever)
コード例 #17
0
ファイル: ServerWolf.py プロジェクト: mohit0412/Kaldiwolf
            self.spt.daemon = True
            self.spt.start()

class EchoWebSocketApplication(object):
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.ws = WebSocketWSGIApplication(handler_cls=BroadcastWebSocket)

    def __call__(self, environ, start_response):

        if environ['PATH_INFO'] == '/ws':
            environ['ws4py.app'] = self
            return self.ws(environ, start_response)

        return None


if __name__ == '__main__':
    from ws4py import configure_logger
    configure_logger()

    parser = argparse.ArgumentParser(description="Kaldiwolf's Server")
    parser.add_argument('--host', default='0.0.0.0')
    parser.add_argument('-p', '--port', default=9000, type=int)
    args = parser.parse_args()

    app = EchoWebSocketApplication(args.host, args.port)
    server = WSGIServer((args.host, args.port), app)
    logging.info("Going to start kaldiwolf's websocket server")
    server.serve_forever()
コード例 #18
0
ファイル: bench_gevent.py プロジェクト: willmcgugan/wsaccel
    def closed(self, code, reason):
        print(("Closed down", code, reason))

    def received_message(self, m):
        self.cnt += 1
        if self.cnt < 1000:
            self.send(msg)
        else:
            self.close(reason='Bye bye')
            print(time.time() - self.started_at)
            global patched
            if not patched:
                patched = True
                wsaccel.patch_ws4py()
                start_client()
            else:
                server.stop()


def start_client():
    ws = EchoClient('ws://127.0.0.1:9000/ws')
    ws.connect()


if __name__ == '__main__':
    server = WSGIServer(('127.0.0.1', 9000), EchoWebSocketApplication())
    server.start()
    start_client()
    while not server.closed:
        gevent.sleep(1)
コード例 #19
0
class HQCWebSocketApplication(object):
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.ws = WebSocketWSGIApplication(handler_cls=HQCWebSocket)
        self.clients = []
        # TODO: remove clients when they exit
        self.current_clients = {}

    def __call__(self, environ, start_response):
        environ['ws4py.app'] = self
        return self.ws(environ, start_response)


if __name__ == '__main__':
    try:
        try:
            PORT = int(sys.argv[1])
        except IndexError:
            PORT = 9000
            print "Port not specified"
        server = WSGIServer(('0.0.0.0', PORT),
                            HQCWebSocketApplication('localhost', PORT))
        print "Running server on port " + str(PORT)
        server.serve_forever()
    except KeyboardInterrupt:
        server.close()
    except socket.error:
        print "Server could not start properly. The socket may already be bound by another instance."
コード例 #20
0
from ws4py.websocket import WebSocket
from ws4py.server.geventserver import WSGIServer
from ws4py.server.wsgiutils import WebSocketWSGIApplication
import time, random


class EchoWebSocket(WebSocket):
    def received_message(self, message):
        """
        Automatically sends back the provided ``message`` to
        its originating endpoint.
        """
        print message.__dict__
        while True:
            try:
                value = random.uniform(50, 900000)
                s = "x" * int(value)
                self.send(s, message.is_binary)
                time.sleep(0.01)
                print "send " + str(value)
            except BaseException:
                print "error"


server = WSGIServer(('0.0.0.0', 9700), WebSocketWSGIApplication(handler_cls=EchoWebSocket))
server.serve_forever()
コード例 #21
0
from ws4py.websocket import WebSocket


class ExampleServer(WebSocket):
    def received_message(self, message):
        print(message)
        super().received_message(message)


if __name__ == '__main__':
    from gevent import monkey

    monkey.patch_all()
    from ws4py.server.geventserver import WSGIServer
    from ws4py.server.wsgiutils import WebSocketWSGIApplication

    server = WSGIServer(('localhost', 9000),
                        WebSocketWSGIApplication(handler_cls=ExampleServer))
    server.serve_forever()
コード例 #22
0
def cli_start():
    if sys.version_info.major < 3 or (sys.version_info.major <= 3
                                      and sys.version_info.minor < 6):
        logging.warning(
            "\n---\n Version 0.6.9 is the last version to support Python older than 3.6\n---\n"
        )

    config = copy.deepcopy(SHARED_DEFAULTS)

    parser = argparse.ArgumentParser(add_help=True)
    parser.add_argument("-i",
                        "--ini",
                        dest="ini",
                        help="Config file path",
                        default=None)
    parser.add_argument("-s",
                        "--secret",
                        dest="secret",
                        help="Secret used to secure your API requests")
    parser.add_argument("-u",
                        "--admin_username",
                        dest="admin_user",
                        help="Administrator username")
    parser.add_argument(
        "-a",
        "--admin_secret",
        dest="admin_secret",
        help="Secret used to secure your admin panel",
    )
    parser.add_argument("-host",
                        "--host",
                        dest="host",
                        help="Host ip on which the server listens to")
    parser.add_argument(
        "-p",
        "--port",
        type=int,
        dest="port",
        help="Port on which the server listens to",
    )
    parser.add_argument("-d",
                        "--debug",
                        dest="debug",
                        help="Does nothing for now")
    parser.add_argument("-l",
                        "--log-level",
                        dest="log_level",
                        help="Does nothing for now")
    parser.add_argument("-e",
                        "--demo",
                        dest="demo",
                        help="Does nothing, BW.compat")
    parser.add_argument(
        "-x",
        "--allowed_post_ip",
        dest="allow_posting_from",
        help="comma separated list of ip's "
        "that can post to server",
    )
    parser.add_argument(
        "-c",
        "--allow_cors",
        dest="allow_cors",
        help="comma separated list of domains's "
        "that can connect to server",
    )
    parser.add_argument(
        "--validate-requests",
        dest="validate_requests",
        help="Enable timestamp check on signed requests",
    )
    args = parser.parse_args()

    parameters = (
        "debug",
        "log_level",
        "port",
        "host",
        "secret",
        "admin_user",
        "admin_secret",
        "allow_posting_from",
        "allow_cors",
        "validate_requests",
    )

    if args.ini:
        parser = configparser.ConfigParser()
        parser.read(args.ini)
        settings = dict(parser.items("channelstream"))
        for key in parameters:
            try:
                config[key] = settings[key]
            except KeyError:
                pass
    else:
        for key in parameters:
            conf_value = getattr(args, key)
            if conf_value:
                config[key] = conf_value

    # convert types
    config["debug"] = asbool(config["debug"])
    config["port"] = int(config["port"])
    config["validate_requests"] = asbool(config["validate_requests"])

    for key in ["allow_posting_from", "allow_cors"]:
        if not config[key]:
            continue
        try:
            listed = [ip.strip() for ip in config[key].split(",")]
            config[key] = listed
        except ValueError:
            pass

    log_level = getattr(logging, config.get("log_level", "INFO").upper())
    logging.basicConfig(level=log_level)
    log.info("Starting channelstream {}".format(channelstream.__version__))
    url = "http://{}:{}".format(config["host"], config["port"])

    log.info("Starting flash policy server on port 10843")
    gc_conns_forever()
    gc_users_forever()
    server = StreamServer(("0.0.0.0", 10843), client_handle)
    server.start()
    log.info("Serving on {}".format(url))
    log.info("Admin interface available on {}/admin".format(url))
    if config["secret"] == "secret":
        log.warning(
            "Using default secret! Remember to set that for production.")
    if config["admin_secret"] == "admin_secret":
        log.warning(
            "Using default admin secret! Remember to set that for production.")

    server = WSGIServer(
        (config["host"], config["port"]),
        RoutingApplication(config),
        log=logging.getLogger("channelstream.WSGIServer"),
    )
    server.serve_forever()
コード例 #23
0
ファイル: echo_server.py プロジェクト: kayoung1222/KorStock
        start_response(status, headers)

        return PAGE % {
            'username': "******" % random.randint(0, 100),
            'host': self.host,
            'port': self.port
        }


class NoLog(object):
    def write(*args, **kw):
        pass


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Echo gevent Server')
    parser.add_argument('--host', default='127.0.0.1')
    parser.add_argument('-p', '--port', default=9000, type=int)
    args = parser.parse_args()

    server = WSGIServer((args.host, args.port),
                        EchoWebSocketApplication(args.host, args.port),
                        log=NoLog(),
                        backlog=100000)

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
コード例 #24
0
    def startupagent(self, sender, **kwargs):

        from urllib.parse import urlparse
        parsed = urlparse(self.bind_web_address)

        ssl_key = self.web_ssl_key
        ssl_cert = self.web_ssl_cert
        rpc_caller = self.vip.rpc
        if parsed.scheme == 'https':
            # Admin interface is only availble to rmq at present.
            if self.core.messagebus == 'rmq':
                self._admin_endpoints = AdminEndpoints(
                    rmq_mgmt=self.core.rmq_mgmt,
                    ssl_public_key=self._certs.get_cert_public_key(
                        get_fq_identity(self.core.identity)),
                    rpc_caller=rpc_caller)
            if ssl_key is None or ssl_cert is None:
                # Because the master.web service certificate is a client to rabbitmq we
                # can't use it directly therefore we use the -server on the file to specify
                # the server based file.
                base_filename = get_fq_identity(self.core.identity) + "-server"
                ssl_cert = self._certs.cert_file(base_filename)
                ssl_key = self._certs.private_key_file(base_filename)

                if not os.path.isfile(ssl_cert) or not os.path.isfile(ssl_key):
                    self._certs.create_signed_cert_files(base_filename,
                                                         cert_type='server')

            if ssl_key is not None and ssl_cert is not None and self._admin_endpoints is None:
                self._admin_endpoints = AdminEndpoints(
                    ssl_public_key=CertWrapper.get_cert_public_key(ssl_cert),
                    rpc_caller=rpc_caller)
        else:
            self._admin_endpoints = AdminEndpoints(rpc_caller=rpc_caller)

        hostname = parsed.hostname
        port = parsed.port

        _log.info('Starting web server binding to {}://{}:{}.'.format(
            parsed.scheme, hostname, port))
        # Handle the platform.web routes here.
        self.registeredroutes.append(
            (re.compile('^/discovery/$'), 'callable', self._get_discovery))
        self.registeredroutes.append(
            (re.compile('^/discovery/allow$'), 'callable', self._allow))
        self.registeredroutes.append(
            (re.compile(r'/gs'), 'callable', self.jsonrpc))
        # these routes are only available for rmq based message bus
        # at present.
        if self.core.messagebus == 'rmq':
            # We need reference to the object so we can change the behavior of
            # whether or not to have auto certs be created or not.
            self._csr_endpoints = CSREndpoints(self.core)
            for rt in self._csr_endpoints.get_routes():
                self.registeredroutes.append(rt)

        # Register the admin endpoints regardless of whether there is an ssl context
        # or not.
        for rt in self._admin_endpoints.get_routes():
            self.registeredroutes.append(rt)

        # Allow authentication endpoint from any https connection
        if parsed.scheme == 'https':
            if self.core.messagebus == 'rmq':
                ssl_private_key = self._certs.get_pk_bytes(
                    get_fq_identity(self.core.identity))
            else:
                ssl_private_key = CertWrapper.get_private_key(ssl_key)
            for rt in AuthenticateEndpoints(
                    tls_private_key=ssl_private_key).get_routes():
                self.registeredroutes.append(rt)
        else:
            # We don't have a private ssl key if we aren't using ssl.
            for rt in AuthenticateEndpoints(
                    web_secret_key=self._web_secret_key).get_routes():
                self.registeredroutes.append(rt)

        static_dir = os.path.join(os.path.dirname(__file__), "static")
        self.registeredroutes.append((re.compile('^/.*$'), 'path', static_dir))

        port = int(port)

        self.appContainer = WebApplicationWrapper(self, hostname, port)
        if ssl_key and ssl_cert:
            svr = WSGIServer((hostname, port),
                             self.appContainer,
                             certfile=ssl_cert,
                             keyfile=ssl_key)
        else:
            svr = WSGIServer((hostname, port), self.appContainer)
        self._server_greenlet = gevent.spawn(svr.serve_forever)
コード例 #25
0
from gevent import monkey; monkey.patch_all()
from ws4py.websocket import EchoWebSocket
from ws4py.server.geventserver import WSGIServer
from ws4py.server.wsgiutils import WebSocketWSGIApplication

server = WSGIServer(('localhost', 8088), WebSocketWSGIApplication(handler_cls=EchoWebSocket))
server.serve_forever()
コード例 #26
0
                      dest="emulate",
                      action="store_true",
                      help="Emulate the hw interface")
    parser.add_option("-d",
                      "--debug",
                      dest="debug",
                      action="store_true",
                      help="Provide some debugging output")

    (options, args) = parser.parse_args()
    DEBUG = options.debug
    dirname = os.path.dirname(sys.argv[0])
    controller = SingleVolumeController(dirname, options)

    try:
        server = WSGIServer(('', 8888),
                            WebSocketWSGIApplication(handler_cls=VolumeServer))

        def handleHup(signum, frame):
            print 'SIGHUP received: taking no action...'

        def handleTerm(signum, frame):
            print 'SIGTERM received: closing down...'
            server.stop()

        signal.signal(signal.SIGHUP, handleHup)
        signal.signal(signal.SIGTERM, handleTerm)

        server.serve_forever()
    except KeyboardInterrupt:
        pass
    except Termination:
コード例 #27
0
ファイル: start.py プロジェクト: timgates42/channelstream
def main():
    config = copy.deepcopy(SHARED_DEFAULTS)

    parser = argparse.ArgumentParser(add_help=True)
    parser.add_argument(
        "-i", "--ini", dest="ini", help="Config file path", default=None
    )
    parser.add_argument(
        "-v",
        "--version",
        dest="version",
        help="Print version info and exit",
        default=None,
        nargs="*",
    )
    args = parser.parse_args()

    if args.version is not None:
        print(channelstream.__version__)
        exit()

    ini_path = args.ini or os.environ.get("CHANNELSTREAM_INI")

    # set values from ini/cli
    if ini_path:
        parser = configparser.ConfigParser()
        parser.read(ini_path)
        settings = dict(parser.items("channelstream"))
        for key in CONFIGURABLE_PARAMS:
            try:
                config[key] = settings[key]
            except KeyError:
                pass
    else:
        for key in CONFIGURABLE_PARAMS:
            conf_value = os.environ.get(f"channelstream_{key}".upper())
            if conf_value is not None:
                config[key] = conf_value

    config = set_config_types(config)
    log_level = getattr(logging, (config.get("log_level") or "INFO").upper())
    logging.basicConfig(level=log_level)
    log.setLevel(log_level)
    log.debug(pprint.pformat(config))
    log.info("Starting channelstream {}".format(channelstream.__version__))
    url = "http://{}:{}".format(config["host"], config["port"])

    log.info("Starting flash policy server on port 10843")
    gevent.spawn(gc_conns_forever)
    gevent.spawn(gc_users_forever)
    server = StreamServer(("0.0.0.0", 10843), client_handle)
    server.start()
    log.info("Serving on {}".format(url))
    log.info("Admin interface available on {}/admin".format(url))
    if config["secret"] == "secret":
        log.warning("Using default secret! Remember to set that for production.")
    if config["admin_secret"] == "admin_secret":
        log.warning("Using default admin secret! Remember to set that for production.")
    log.warning(f"IP's allowed to post to API {config['allow_posting_from']}")
    server = WSGIServer(
        (config["host"], config["port"]),
        RoutingApplication(config),
        log=logging.getLogger("channelstream.WSGIServer"),
    )
    server.serve_forever()
コード例 #28
0
        channel = '%s-%d' % (to_type, to_id)

        from_type = self.user_type
        from_id = self.obj.oid
        msg['path'] = data['path']
        msg['from_type'] = from_type
        msg['from_id'] = from_id
        if 'body' in msg:
            created_at = Message.save(from_type, from_id, to_type, to_id,
                                      msg['body'])
            msg['created_at'] = created_at
        ret = self.redis.publish(channel, json.dumps(msg))
        return {'status': 'ok'}

    def message(self, data):
        print 'message.data:', data
        msg = {'body': data['body']}
        return self._message(data, msg)

    def typing(self, data):
        msg = {'typing': data['typing']}  # True | False
        return self._message(data, msg)

    ### API methods END ###


server = WSGIServer(('0.0.0.0', 9000),
                    WebSocketWSGIApplication(handler_cls=ChatWebSocket))
server.serve_forever()