Example #1
0
File: app.py Project: xdrew/twoost
def build_manhole(app, namespace=None):

    if not settings.DEBUG:
        logger.debug("don't create manhole server - production mode")
        return

    import twisted
    from twoost.manhole import AnonymousShellFactory
    from twisted.application.internet import UNIXServer

    workerid = app.workerid
    socket_file = os.path.join(settings.MANHOLE_SOCKET_DIR, workerid)
    mkdir_p(os.path.dirname(socket_file))

    namespace = dict(namespace or {})
    if not namespace:
        namespace.update({
            'twisted': twisted,
            'app': app,
            'settings': settings,
        })
    f = AnonymousShellFactory(namespace)

    logger.info("serve shell on %r socket", socket_file)

    # only '0600' mode allowed here!
    ss = UNIXServer(address=socket_file, factory=f, mode=0600, wantPID=1)

    return attach_service(app, ss)
Example #2
0
File: app.py Project: xdrew/twoost
def build_health(app):

    from twoost.health import HealthCheckFactory
    from twisted.application.internet import UNIXServer

    mode = settings.HEALTHCHECK_SOCKET_MODE
    workerid = app.workerid
    socket_file = os.path.join(settings.HEALTHCHECK_SOCKET_DIR, workerid)
    mkdir_p(os.path.dirname(socket_file))

    fct = HealthCheckFactory(app)

    logger.debug("serve health checker on %r socket", socket_file)
    ss = UNIXServer(address=socket_file, factory=fct, mode=mode, wantPID=1)

    return attach_service(app, ss)
Example #3
0
    def makeService(self, options):

        service = MultiService()

        contextFactory = DefaultOpenSSLContextFactory(options["key"],
                                                      options["certificate"])
        apnsFactory = APNSClientFactory()
        apnsService = SSLClient(options["apns-host"],
                                int(options["apns-port"]), apnsFactory,
                                contextFactory)
        apnsService.setServiceParent(service)

        database = RegistrationDatabase(options["database"])
        topicName = parseTopicFromCertificate(options["certificate"])

        xapsService = UNIXServer(options["socket"],
                                 XAPSFactory(database, topicName, apnsFactory))
        xapsService.setServiceParent(service)

        return service