Exemple #1
0
def make_app(conf=None):

    try:
        import uwsgi
    except ImportError:

        class App(Isso, ThreadedMixin):
            pass
    else:

        class App(Isso, uWSGIMixin):
            pass

    isso = App(conf)

    for host in conf.getiter("general", "host"):
        with http.curl('HEAD', host, '/', 5) as resp:
            if resp is not None:
                logger.info("connected to HTTP server")
                break
    else:
        logger.warn("unable to connect to HTTP server")

    app = ProxyFix(
        wsgi.SubURI(
            SharedDataMiddleware(
                isso.wsgi_app, {
                    '/js': join(dirname(__file__), 'js/'),
                    '/css': join(dirname(__file__), 'css/')
                })))

    return app
Exemple #2
0
def make_app(conf=None):

    try:
        import uwsgi
    except ImportError:

        class App(Isso, ThreadedMixin):
            pass
    else:

        class App(Isso, uWSGIMixin):
            pass

    isso = App(conf)

    for host in conf.getiter("general", "host"):
        with http.curl('HEAD', host, '/', 5) as resp:
            if resp is not None:
                logger.info("connected to HTTP server")
                break
    else:
        logger.warn("unable to connect to HTTP server")

    if isso.conf.getboolean("server", "profile"):
        from werkzeug.contrib.profiler import ProfilerMiddleware
        isso = ProfilerMiddleware(isso,
                                  sort_by=("cumtime", ),
                                  restrictions=("isso/(?!lib)", ))

    app = ProxyFix(
        wsgi.SubURI(
            wsgi.CORSMiddleware(
                SharedDataMiddleware(
                    isso, {
                        '/js': join(dirname(__file__), 'js/'),
                        '/css': join(dirname(__file__), 'css/')
                    }), list(isso.conf.getiter("general", "host")))))

    return app
Exemple #3
0
    def __call__(self, environ, start_response):

        # clear X-Script-Name as the PATH_INFO is already adjusted
        environ.pop('HTTP_X_SCRIPT_NAME', None)

        return super(Dispatcher, self).__call__(environ, start_response)

    def default(self, environ, start_response):
        #resp = Response("\n".join(self.sso.keys()),
        #               404, content_type="text/plain")
        resp = Response("Up and running", 404, content_type="text/plain")
        return resp(environ, start_response)


settings = os.environ.get("ISSO_SETTINGS")
if settings:
    if os.path.isdir(settings):
        conf_glob = os.path.join(settings, '*.cfg')
        confs = glob(conf_glob)
        application = wsgi.SubURI(Dispatcher(*confs))
    else:
        confs = settings.split(";")
        for path in confs:
            if not os.path.isfile(path):
                logger.fatal("%s: no such file", path)
                sys.exit(1)
    application = wsgi.SubURI(Dispatcher(*confs))
else:
    logger.fatal('environment variable ISSO_SETTINGS must be set')