def handle(self, *args, **options):
        # set tracker object
        Connection.tracker = Notifier.tracker = Tracker()

        # use the routes classmethod to build the correct resource
        router = tornadio2.router.TornadioRouter(Connection,
            dict(websocket_check=False,
                enabled_protocols=[
                'websocket',
                #'flashsocket',
                'xhr-polling',
                'jsonp-polling',
                'htmlfile',
                ]
            )
        )

        r = router.apply_routes([
             #(r"/WebSocketMain.swf", WebSocketFileHandler),
        ])
        # configure the Tornado application
        application = tornado.web.Application(r,
            socket_io_port=settings.SERVERPUSH_PORT,
            flash_policy_port=getattr(settings, 'SERVERPUSH_FLASH_PORT', 10843),
            flash_policy_file=settings.SERVERPUSH_FLASHPOLICY,
        )

        notifier = tornado.web.Application(
            [(r"/notify", Notifier)],
        )
        notifier.listen(settings.SERVERPUSH_NOTIFIER_PORT, '0.0.0.0')

        #logger.setLevel(logging.INFO if getattr(settings, "PRODUCTION", False) else logging.DEBUG)

        # patch django orm
        patch()

        ssl_options = None
        if getattr(settings, "SERVERPUSH_PROTOCOL", "HTTP") == "HTTPS":
            cert = getattr(settings, "SSL_CERT", None)
            cert_key = getattr(settings, "SSL_CERT_KEY", None)
            if cert and cert_key and op.exists(cert) and op.exists(cert_key):
                ssl_options = {
                    "certfile": cert,
                    "keyfile": cert_key,
                }
        try:
            tornadio2.server.SocketServer(application, ssl_options=ssl_options)

        except KeyboardInterrupt:
            print "Ctr+C pressed; Exiting."
예제 #2
0
파일: server.py 프로젝트: skygeek/skyproc
# clean private dir
os.system("rm -rf %s >/dev/null 2>&1" % private_dir)
os.system("mkdir -p %s" % private_dir)
os.system("chown %s %s" % (settings.COMET_USER, private_dir))
os.system("chmod 500 %s" % private_dir)

# set socket ssl options
ssl_options = {}
ssl_options["certfile"] = get_private_copy(settings.COMET_CERT_FILE)
ssl_options["keyfile"] = get_private_copy(settings.COMET_KEY_FILE)
ssl_options["ca_certs"] = get_private_copy(settings.COMET_CA_CERT)
ssl_options["cert_reqs"] = ssl.CERT_OPTIONAL if ssl_options["ca_certs"] else ssl.CERT_NONE

# drop privileges
os.setuid(pwd.getpwnam(settings.COMET_USER)[2])

# global connections list
CONNECTIONS = set()

# Create router
router = tornadio2.router.TornadioRouter(Connection, {"websocket_check": True})

# Create application
application = tornado.web.Application(
    router.apply_routes([(r"/datachanged", DataChangeHandler)]), socket_io_port=settings.COMET_PORT
)

# start server
tornadio2.server.SocketServer(application, ssl_options=ssl_options)
예제 #3
0
os.system("chown %s %s" % (settings.COMET_USER, private_dir))
os.system("chmod 500 %s" % private_dir)

# set socket ssl options
ssl_options = {}
ssl_options['certfile'] = get_private_copy(settings.COMET_CERT_FILE)
ssl_options['keyfile'] = get_private_copy(settings.COMET_KEY_FILE)
ssl_options['ca_certs'] = get_private_copy(settings.COMET_CA_CERT)
ssl_options['cert_reqs'] = ssl.CERT_OPTIONAL if ssl_options[
    'ca_certs'] else ssl.CERT_NONE

# drop privileges
os.setuid(pwd.getpwnam(settings.COMET_USER)[2])

# global connections list
CONNECTIONS = set()

# Create router
router = tornadio2.router.TornadioRouter(Connection, {'websocket_check': True})

# Create application
application = tornado.web.Application(
    router.apply_routes([
        (r"/datachanged", DataChangeHandler),
    ]),
    socket_io_port=settings.COMET_PORT,
)

# start server
tornadio2.server.SocketServer(application, ssl_options=ssl_options)