Ejemplo n.º 1
0
                               }


@app.route('/<id>/<int:scene_idx>/preview')
@app.route('/<id>/<int:scene_idx>/<image_id>/preview')
def preview(id, **kwargs):
    with app.app_context():
        return render_template('preview.html',
                               tilejson_url=url_for('meta',
                                                    id=id,
                                                    _external=True,
                                                    _scheme='',
                                                    **kwargs),
                               **kwargs), 200, {
                                   'Content-Type': 'text/html'
                               }


@app.route('/favicon.ico')
def favicon():
    return '', 404


static = app.send_static_file

app.wsgi_app = DispatcherMiddleware(
    None, {app.config['APPLICATION_ROOT']: app.wsgi_app})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000, debug=True)
Ejemplo n.º 2
0
 def wsgi_app(self, environ, start_response):
     dispatcher = DispatcherMiddleware(self.real_wsgi_app, self.services)
     return dispatcher(environ, start_response)
Ejemplo n.º 3
0
def init_request_processors(app):
    @app.context_processor
    def inject_user():
        if session:
            return dict(session)
        return dict()

    @app.url_defaults
    def inject_theme(endpoint, values):
        if "theme" not in values and app.url_map.is_endpoint_expecting(
            endpoint, "theme"
        ):
            values["theme"] = ctf_theme()

    @app.before_request
    def needs_setup():
        return
        if request.path == url_for("views.setup") or request.path.startswith("/themes"):
            return
        if not is_setup():
            return redirect(url_for("views.setup"))

    @app.before_request
    def tracker():
        if request.endpoint in ("views.themes", "views.custom_css"):
            return

        if authed():
            track = Tracking.query.filter_by(ip=get_ip(), user_id=session["id"]).first()
            if not track:
                visit = Tracking(ip=get_ip(), user_id=session["id"])
                db.session.add(visit)
            else:
                track.date = datetime.datetime.utcnow()

            try:
                db.session.commit()
            except (InvalidRequestError, IntegrityError):
                db.session.rollback()
                logout_user()

            if authed():
                user = get_current_user()
                team = get_current_team()

                if request.path.startswith("/themes") is False:
                    if user and user.banned:
                        return (
                            render_template(
                                "errors/403.html",
                                error="You have been banned from this CTF",
                            ),
                            403,
                        )

                    if team and team.banned:
                        return (
                            render_template(
                                "errors/403.html",
                                error="Your team has been banned from this CTF",
                            ),
                            403,
                        )

            db.session.close()

    @app.before_request
    def csrf():
        try:
            func = app.view_functions[request.endpoint]
        except KeyError:
            abort(404)
        if hasattr(func, "_bypass_csrf"):
            return
        if not session.get("nonce"):
            session["nonce"] = generate_nonce()
        if request.method not in ("GET", "HEAD", "OPTIONS", "TRACE"):
            if request.content_type == "application/json":
                if session["nonce"] != request.headers.get("CSRF-Token"):
                    abort(403)
            if request.content_type != "application/json":
                if session["nonce"] != request.form.get("nonce"):
                    abort(403)

    application_root = app.config.get("APPLICATION_ROOT")
    application_root = "/"
    import traceback
    if application_root != "/":
        @app.before_request
        def force_subdirectory_redirect():
            # print(traceback.print_stack())
            # app.wsgi_app = ReverseProxied(app.wsgi_app)
            print("request.path")
            print(request.path)
            print(application_root)
            print(request.script_root)
            print(request.full_path)
            original_uri = request.environ['HTTP_X_ORIGINAL_URI']
            print("original_uri")
            print(original_uri)
            if request.path == "/":
                pass
                #return redirect(request.script_root+ request.full_path)
            else:
                return
                if request.path.startswith(application_root) is False:
                    return redirect(
                        application_root + request.script_root + request.full_path
                       #  application_root + request.script_root
                       #request.environ['HTTP_X_ORIGINAL_URI']
                    )

        app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {application_root: app})
Ejemplo n.º 4
0
app.config.from_envvar('FLASK_SETTINGS')
app.debug = True


@app.route('/login')
def login():
    return render_template('login.html')


@app.route('/logged_in', methods=['POST'])
def login_callback():
    token = request.form['token']
    payload = {'format': 'json', 'token': token}
    response = requests.get(request.host_url + 'velruse/auth_info',
                            params=payload)
    return render_template('result.html', result=response.json)


velruse = make_velruse_app({}, **app.config['VELRUSE'])

application = DispatcherMiddleware(app, {
    '/velruse': velruse,
})

if __name__ == '__main__':
    import os
    from werkzeug.serving import run_simple
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5020))
    run_simple('0.0.0.0', port, application, use_reloader=True, threaded=True)
Ejemplo n.º 5
0
"""Main entrypoint of the Python-based SOAP service

Here, the dispatcher middleware is created and all required parts of the app
are "hooked in".
Adapt this file if you want to add new services to this app.
"""
import os

from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.serving import run_simple
from frontend import app as frontend
from ImageConverterService import app as imageconverter

# Read deployment route from environment variable
CONTEXT_ROOT = os.environ['CONTEXT_ROOT']

# We use a simple, static frontend page and then "hook in" all sub-apps we like
# to have.
# Currently, this is only the calculator, for which we define the hosting
# location
app = DispatcherMiddleware(frontend, {
    CONTEXT_ROOT + '/imageconverter': imageconverter,
})

if __name__ == "__main__":
    # Only for debugging! (Will start the app in a simple Python thread
    # without nginx or uwsgi when main.py is directly executed.)
    run_simple('0.0.0.0', 80, app, use_reloader=True)
class JSONResponse(Response):
    @classmethod
    def force_type(cls, rv, environ=None):
        if isinstance(rv, dict):
            rv = jsonify(rv)
        return super(JSONResponse, cls).force_type(rv, environ)


json_page.response_class = JSONResponse


@json_page.route('/hello/')
def hello():
    return {'message': 'Hello World!'}


@app.route('/')
def index():
    return 'The index page'


# 当访问以/json开头的地址时都默认自动用jsonify格式化, 访问其他地址不受影响
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, OrderedDict((
    ('/json', json_page),
)))

# 使用这个中间件对访问地址是有副作用的,“@json_page.route('/')”等价于“@app.route('/json/')”,也就是子路径的地址前面是有/json前缀的,这一点比较隐晦。
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000)
Ejemplo n.º 7
0
    def wsgi_app(self, environ, start_response):
        """Returns the WSGI app for this application (including all mounted WSGI apps)."""
        apps = self.apps.copy()
        main = apps.pop("/")

        return DispatcherMiddleware(main, apps)(environ, start_response)
Ejemplo n.º 8
0


			@app1.route('/index')
			def index():
				return "app01"


			@app2.route('/index2')
			def index2():
				return "app2"

			# http://www.oldboyedu.com/index
			# http://www.oldboyedu.com/sec/index2
			dm = DispatcherMiddleware(app1, {
				'/sec': app2,
			})

			if __name__ == "__main__":
				run_simple('localhost', 5000, dm)
			
			
			问题:Web访问多app应用时,上下文管理是如何实现?
			
	总结:
		1. threading.local (哪里还用到过threading.local: DBUtils )
		2. 上下文 
			- 请求 
				- request
				- session 
			- 应用
Ejemplo n.º 9
0

@app.route('/')
def index():
    return 'Running...'


@app.route('/write', methods=['POST'])
def addMetrics():
    if request.method == 'POST':
        data = request.get_json()
        adapter.write(data)
        return 'Finished addMetrics'


app.wsgi_app = DispatcherMiddleware(app.wsgi_app,
                                    {'/metrics': make_wsgi_app()})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

# class ReviewForm(Form):
#     filename = TextAreaField('',[validators.DataRequired(), validators.length(min = 5)])
#     metricname = TextAreaField('',[validators.DataRequired(), validators.length(min = 5)])
#     period = TextAreaField('')

# @app.route('/toCSV')
# def toCSV():
#     form = ReviewForm(request.form)
#     return render_template('index.html', form = form)

# @app.route('/todb', methods=['POST'])
Ejemplo n.º 10
0
if __name__ == '__main__':
    eggroll.init(mode=WORK_MODE)
    manager.url_map.strict_slashes = False
    server = grpc.server(
        futures.ThreadPoolExecutor(max_workers=10),
        options=[(cygrpc.ChannelArgKey.max_send_message_length, -1),
                 (cygrpc.ChannelArgKey.max_receive_message_length, -1)])

    proxy_pb2_grpc.add_DataTransferServiceServicer_to_server(
        UnaryServicer(), server)
    server.add_insecure_port("{}:{}".format(IP, GRPC_PORT))
    server.start()
    JobCron(interval=5 * 1000).start()
    app = DispatcherMiddleware(
        manager, {
            '/data': data_access_manager,
            '/model': model_manager,
            '/workflow': workflow_manager,
            '/dtable': dtable_manager,
            '/job': manager
        })
    run_simple(hostname=IP, port=HTTP_PORT, application=app, threaded=True)

    try:
        while True:
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)
        sys.exit(0)
Ejemplo n.º 11
0
def init_request_processors(app):
    @app.context_processor
    def inject_user():
        if session:
            return dict(session)
        return dict()

    @app.url_defaults
    def inject_theme(endpoint, values):
        if "theme" not in values and app.url_map.is_endpoint_expecting(
                endpoint, "theme"):
            values["theme"] = ctf_theme()

    @app.after_request
    def apply_header(response):
        response.headers["X-CTFProxy-I-Served-By"] = platform.node()
        try:
            db.session.close()
        except:
            pass
        return response

    @app.before_request
    def needs_setup():
        if is_setup() is False:
            if request.endpoint in (
                    "views.setup",
                    "views.integrations",
                    "views.themes",
            ):
                return
            else:
                return redirect(url_for("views.setup"))

    @app.before_request
    def tracker():
        if request.endpoint == "views.themes":
            return

        if authed():
            user_ips = get_current_user_recent_ips()
            ip = get_ip()

            track = None
            if (ip not in user_ips) or (request.method != "GET"):
                track = Tracking.query.filter_by(
                    ip=get_ip(), user_id=session["id"]).first()

                if track:
                    track.date = datetime.datetime.utcnow()
                else:
                    track = Tracking(ip=get_ip(), user_id=session["id"])
                    db.session.add(track)

            if track:
                try:
                    db.session.commit()
                except (InvalidRequestError, IntegrityError):
                    db.session.rollback()
                    logout_user()
                clear_user_recent_ips(user_id=session["id"])

    @app.before_request
    def banned():
        if request.endpoint == "views.themes":
            return

        if authed():
            user = get_current_user_attrs()
            team = get_current_team_attrs()

            if user and user.banned:
                return (
                    render_template(
                        "errors/403.html",
                        error="You have been banned from this CTF"),
                    403,
                )

            if team and team.banned:
                return (
                    render_template(
                        "errors/403.html",
                        error="Your team has been banned from this CTF",
                    ),
                    403,
                )

    @app.before_request
    def tokens():
        token = request.headers.get("Authorization")
        if token and request.content_type == "application/json":
            try:
                token_type, token = token.split(" ", 1)
                user = lookup_user_token(token)
            except UserNotFoundException:
                abort(401)
            except UserTokenExpiredException:
                abort(401)
            except Exception:
                abort(401)
            else:
                login_user(user)

    @app.before_request
    def csrf():
        try:
            func = app.view_functions[request.endpoint]
        except KeyError:
            abort(404)
        if hasattr(func, "_bypass_csrf"):
            return
        if request.headers.get("Authorization"):
            return
        if not session.get("nonce"):
            session["nonce"] = generate_nonce()
        if request.method not in ("GET", "HEAD", "OPTIONS", "TRACE"):
            if request.content_type == "application/json":
                if session["nonce"] != request.headers.get("CSRF-Token"):
                    abort(403)
            if request.content_type != "application/json":
                if session["nonce"] != request.form.get("nonce"):
                    abort(403)

    application_root = app.config.get("APPLICATION_ROOT")
    if application_root != "/":

        @app.before_request
        def force_subdirectory_redirect():
            if request.path.startswith(application_root) is False:
                return redirect(application_root + request.script_root +
                                request.full_path)

        app.wsgi_app = DispatcherMiddleware(app.wsgi_app,
                                            {application_root: app})
Ejemplo n.º 12
0
    parser.add_argument('--ssl-key')
    parser.add_argument('--api', action='store_true')
    parser.add_argument('--host', '-H', default='127.0.0.1')
    parser.add_argument('--port', '-p', default=5000, type=int)
    args = parser.parse_args()

    app = make_application()
    app.debug = True

    app.acoustid_script.setup_console_logging()

    run_args = {
        'use_debugger': True,
        'use_reloader': True,
        'extra_files': [app.acoustid_config_filename],
    }

    if args.ssl:
        if args.ssl_crt and args.ssl_key:
            run_args['ssl_context'] = args.ssl_crt, args.ssl_key
        else:
            run_args['ssl_context'] = 'adhoc'

    if args.api:
        app = DispatcherMiddleware(
            app, {
                '/api': make_api_application(app.acoustid_config_filename)[1],
            })

    run_simple(args.host, args.port, app, **run_args)  # type: ignore
Ejemplo n.º 13
0
from werkzeug.wsgi import DispatcherMiddleware

from app import app as app_homepage
import fantasydrafts
import fantasypl

from flask import render_template
from flask_sslify import SSLify

sslify_fantasydrafts = SSLify(fantasydrafts.app)
sslify_fantasypl = SSLify(fantasypl.app)
sslify_homepage = SSLify(app_homepage)

app = DispatcherMiddleware(app_homepage, {'/drafts': fantasydrafts.app,
										  '/fantasypl': fantasypl.app})

@app_homepage.route('/')
def index():
	return render_template('index.html',
						   url_draft = '/drafts/necessary-roughness-2014/',
						   url_fantasypl = '/fantasypl/')

if __name__ == '__main__':
	app.run()
Ejemplo n.º 14
0
def main():
    """Entry point for RWS.

    return (int): exit code (0 on success, 1 on error)

    """
    parser = argparse.ArgumentParser(description="Ranking for CMS.")
    parser.add_argument("--config",
                        type=argparse.FileType("rt"),
                        help="override config file")
    parser.add_argument("-d",
                        "--drop",
                        action="store_true",
                        help="drop the data already stored")
    parser.add_argument("-y",
                        "--yes",
                        action="store_true",
                        help="do not require confirmation on dropping data")
    args = parser.parse_args()

    config = Config()
    config.load(args.config)

    if args.drop:
        if args.yes:
            ans = 'y'
        else:
            ans = input(
                "Are you sure you want to delete directory %s? [y/N] " %
                config.lib_dir).strip().lower()
        if ans in ['y', 'yes']:
            print("Removing directory %s." % config.lib_dir)
            shutil.rmtree(config.lib_dir)
        else:
            print("Not removing directory %s." % config.lib_dir)
        return 0

    stores = dict()

    stores["subchange"] = Store(Subchange,
                                os.path.join(config.lib_dir, 'subchanges'),
                                stores)
    stores["submission"] = Store(Submission,
                                 os.path.join(config.lib_dir, 'submissions'),
                                 stores, [stores["subchange"]])
    stores["user"] = Store(User, os.path.join(config.lib_dir, 'users'), stores,
                           [stores["submission"]])
    stores["team"] = Store(Team, os.path.join(config.lib_dir, 'teams'), stores,
                           [stores["user"]])
    stores["task"] = Store(Task, os.path.join(config.lib_dir, 'tasks'), stores,
                           [stores["submission"]])
    stores["contest"] = Store(Contest, os.path.join(config.lib_dir,
                                                    'contests'), stores,
                              [stores["task"]])

    stores["contest"].load_from_disk()
    stores["task"].load_from_disk()
    stores["team"].load_from_disk()
    stores["user"].load_from_disk()
    stores["submission"].load_from_disk()
    stores["subchange"].load_from_disk()

    stores["scoring"] = ScoringStore(stores)
    stores["scoring"].init_store()

    toplevel_handler = RoutingHandler(
        RootHandler(config.web_dir), DataWatcher(stores, config.buffer_size),
        ImageHandler(os.path.join(config.lib_dir, '%(name)s'),
                     os.path.join(config.web_dir, 'img', 'logo.png')),
        ScoreHandler(stores), HistoryHandler(stores))

    wsgi_app = SharedDataMiddleware(
        DispatcherMiddleware(
            toplevel_handler, {
                '/contests':
                StoreHandler(stores["contest"], config.username,
                             config.password, config.realm_name),
                '/tasks':
                StoreHandler(stores["task"], config.username, config.password,
                             config.realm_name),
                '/teams':
                StoreHandler(stores["team"], config.username, config.password,
                             config.realm_name),
                '/users':
                StoreHandler(stores["user"], config.username, config.password,
                             config.realm_name),
                '/submissions':
                StoreHandler(stores["submission"], config.username,
                             config.password, config.realm_name),
                '/subchanges':
                StoreHandler(stores["subchange"], config.username,
                             config.password, config.realm_name),
                '/faces':
                ImageHandler(os.path.join(config.lib_dir, 'faces', '%(name)s'),
                             os.path.join(config.web_dir, 'img', 'face.png')),
                '/flags':
                ImageHandler(os.path.join(config.lib_dir, 'flags', '%(name)s'),
                             os.path.join(config.web_dir, 'img', 'flag.png')),
                '/sublist':
                SubListHandler(stores),
            }), {'/': config.web_dir})

    servers = list()
    if config.http_port is not None:
        http_server = WSGIServer((config.bind_address, config.http_port),
                                 wsgi_app)
        servers.append(http_server)
    if config.https_port is not None:
        https_server = WSGIServer((config.bind_address, config.https_port),
                                  wsgi_app,
                                  certfile=config.https_certfile,
                                  keyfile=config.https_keyfile)
        servers.append(https_server)

    try:
        gevent.joinall(list(gevent.spawn(s.serve_forever) for s in servers))
    except KeyboardInterrupt:
        pass
    finally:
        gevent.joinall(list(gevent.spawn(s.stop) for s in servers))
    return 0
Ejemplo n.º 15
0
extra_files = []
try:
    extra_files.append(os.path.join(app.root_path, os.environ['ZWL_SETTINGS']))
except KeyError:
    pass

# Allow testing if everything still works when not running under /
if len(sys.argv) > 1 and sys.argv[1] == 'subdir':

    notfound = Response('Use <a href="/zwl/">/zwl/</a>, please!', status=404)

    from werkzeug.serving import run_simple
    from werkzeug.wsgi import DispatcherMiddleware

    application = DispatcherMiddleware(notfound, {
        '/zwl': app,
    })

    run_simple('localhost',
               8232,
               application,
               use_reloader=True,
               extra_files=extra_files,
               threaded=True)

# Listen on all interfaces instead of just localhost. Force-deactivate debug mode
elif len(sys.argv) > 1 and sys.argv[1] == 'public':
    app.run(host='0.0.0.0',
            port=8231,
            extra_files=extra_files,
            threaded=True,
Ejemplo n.º 16
0
import os.path
from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.serving import run_simple

import sys

sys.path.insert(0, '/opt/ori')
from ocd_frontend import rest

application = DispatcherMiddleware(rest.create_app(),
                                   {'/v0': rest.create_app()})

# For testing purposes, add a route that serves static files from a directory.
# DO NOT USE IN PRODUCTION. Serve static files through your webserver instead.
if application.app.config.get('DEBUG', False):
    from flask import send_from_directory

    @application.app.route('/data/<path:filename>')
    def download_dump(filename):
        collection_name = '_'.join(filename.split('_')[:2])
        base_dir = os.path.join(application.app.config.get('DUMPS_DIR'),
                                collection_name)
        return send_from_directory(base_dir, filename, as_attachment=True)

    @application.app.route('/media/<path:filename>')
    def serve_media(filename):
        base_dir = os.path.join(application.app.config.get('THUMBNAILS_DIR'),
                                os.path.dirname(filename))
        return send_from_directory(base_dir, os.path.basename(filename))

Ejemplo n.º 17
0
# -*-coding:utf-8 -*-

from werkzeug.wsgi import DispatcherMiddleware
from spyne.server.wsgi import WsgiApplication

from apps import spyned
from apps.flasked import app

# SOAP services are distinct wsgi applications, we should use dispatcher
# middleware to bring all aps together
app.wsgi_app = DispatcherMiddleware(
    app.wsgi_app, {'/soap': WsgiApplication(spyned.create_app(app))})

if __name__ == '__main__':
    app.run()
Ejemplo n.º 18
0
    def _start_tornado(ibs_, port_):
        # Get Flask app
        app = controller_inject.get_flask_app()

        app.ibs = ibs_
        # Try to ascertain the socket's domain name
        socket.setdefaulttimeout(0.1)
        try:
            app.server_domain = socket.gethostbyname(socket.gethostname())
        except socket.gaierror:
            app.server_domain = '127.0.0.1'
        socket.setdefaulttimeout(None)
        app.server_port = port_
        # URL for the web instance
        app.server_url = 'http://%s:%s' % (app.server_domain, app.server_port)
        logger.info('[web] Tornado server starting at %s' % (app.server_url, ))
        # Launch the web browser to view the web interface and API
        if browser:
            url = app.server_url + url_suffix
            import webbrowser

            logger.info('[web] opening browser with url = %r' % (url, ))
            webbrowser.open(url)

        if PROMETHEUS:
            # Add prometheus wsgi middleware to route /metrics requests
            logger.info('LOADING PROMETHEUS')
            app_ = DispatcherMiddleware(
                app, {'/metrics': prometheus_client.make_wsgi_app()})
            # Migrate the most essential settings
            app_.server_port = app.server_port
            app_.server_url = app.server_url
            app_.ibs = app.ibs
            app = app_
        else:
            logger.info('SKIPPING PROMETHEUS')

        # Start the tornado web handler
        # WSGI = Web Server Gateway Interface
        # WSGI is Python standard described in detail in PEP 3333
        wsgi_container = TimedWSGIContainer(app)

        # # Try wrapping with newrelic performance monitoring
        # try:
        #     import newrelic
        #     wsgi_container = newrelic.agent.WSGIApplicationWrapper(wsgi_container)
        # except (ImportError, AttributeError):
        #     pass

        http_server = tornado.httpserver.HTTPServer(wsgi_container)

        try:
            http_server.listen(app.server_port)
        except socket.error:
            fallback_port = ut.find_open_port(app.server_port)
            if fallback:
                logger.info(
                    'Port %s is unavailable, using fallback_port = %r' %
                    (port, fallback_port))
                start_tornado(
                    ibs,
                    port=fallback_port,
                    browser=browser,
                    url_suffix=url_suffix,
                    start_web_loop=start_web_loop,
                    fallback=False,
                )
            else:
                raise RuntimeError(
                    (('The specified IBEIS web port %d is not available, '
                      'but %d is') % (app.server_port, fallback_port)))

        # Add more verbose logging
        try:
            utool_logfile_handler = ut.util_logging.__UTOOL_ROOT_LOGGER__
        except Exception:
            utool_logfile_handler = None

        if utool_logfile_handler is not None:
            logger_list = []
            try:
                logger_list += [
                    app.logger,
                ]
            except AttributeError:
                pass
            try:
                logger_list += [
                    app.app.logger,
                ]
            except AttributeError:
                pass
            logger_list += [
                logging.getLogger('concurrent'),
                logging.getLogger('concurrent.futures'),
                logging.getLogger('flask_cors.core'),
                logging.getLogger('flask_cors'),
                logging.getLogger('flask_cors.decorator'),
                logging.getLogger('flask_cors.extension'),
                logging.getLogger('urllib3'),
                logging.getLogger('requests'),
                logging.getLogger('tornado'),
                logging.getLogger('tornado.access'),
                logging.getLogger('tornado.application'),
                logging.getLogger('tornado.general'),
                logging.getLogger('websocket'),
            ]
            for logger_ in logger_list:
                logger_.setLevel(logging.INFO)
                logger_.addHandler(utool_logfile_handler)

        if start_web_loop:
            tornado.ioloop.IOLoop.instance().start()
Ejemplo n.º 19
0
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware

from test.test_database import *
import unittest, sqlite3

from app.resources import *
from app.resources import app as apis
from client.application import app as client

application = DispatcherMiddleware(apis, {'/shareit/client': client})

if __name__ == "__main__":
    #app.run(debug=True, port=3000)
    run_simple('localhost',
               5000,
               application,
               use_reloader=True,
               use_debugger=True,
               use_evalex=True)
Ejemplo n.º 20
0
def initialize(app):
    app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
        '/mapserv': create_mapserver_app(),
    })
Ejemplo n.º 21
0
    log_table.insert({
        'datetime': arrow.now().format('DD.MM.YYYY HH:mm:ss'),
        'message': json_data['message']
    })
    return 'ok'


@app.route('/api/remove/<id_>')
def remove_data(id_):
    eid = int(id_)
    ring_table.remove(eids=[eid])
    return 'ok'


@app.route('/api/clear')
def clear_data():
    log_table.purge()
    ring_table.purge()
    return 'ok'


@mqtt.subscribe('/home/temperature')
def print_it(client, userdata, message):
    data = {'temperature': float(message.payload.decode())}
    socketio.emit('new temperature', data)


if __name__ == '__main__':
    application = DispatcherMiddleware(None, {'/bell': app})
    run_simple('0.0.0.0', 8081, application)
Ejemplo n.º 22
0
except Exception as e:
    pass
logger.setLevel(logging.INFO)

debug_log = logging.getLogger("debug")
logging.basicConfig()
debug_log.setLevel(logging.DEBUG)

import debugpy
debugpy.listen(('0.0.0.0', 5678))
debug_log.info("wait_for_client on port 5678")
debugpy.wait_for_client()

from instance.settings import OPERATOR_ROOT_PATH, OPERATOR_CR_PATH, OPERATOR_SLR_PATH, OPERATOR_DUMMYUI_PATH

application = DispatcherMiddleware(
    Operator_Root.create_app(), {
        OPERATOR_ROOT_PATH + OPERATOR_CR_PATH: Operator_CR.create_app(),
        OPERATOR_ROOT_PATH + OPERATOR_SLR_PATH: Operator_SLR.create_app(),
        OPERATOR_ROOT_PATH + OPERATOR_DUMMYUI_PATH:
        Operator_DummyUI.create_app()
    })

if __name__ == "__main__":
    run_simple('0.0.0.0',
               5000,
               application,
               use_reloader=False,
               use_debugger=False,
               threaded=False)
Ejemplo n.º 23
0
Archivo: wsgi.py Proyecto: N03/invenio
 def create_wsgi(app, **kwargs):
     mounts = {
         mount: factory(**kwargs)
         for mount, factory in mounts_factories.items()
     }
     return DispatcherMiddleware(app.wsgi_app, mounts)
Ejemplo n.º 24
0
def init_request_processors(app):
    @app.context_processor
    def inject_user():
        if session:
            return dict(session)
        return dict()

    @app.url_defaults
    def inject_theme(endpoint, values):
        if 'theme' not in values and app.url_map.is_endpoint_expecting(
                endpoint, 'theme'):
            values['theme'] = ctf_theme()

    @app.before_request
    def needs_setup():
        if request.path == url_for('views.setup') or request.path.startswith(
                '/themes'):
            return
        if not is_setup():
            return redirect(url_for('views.setup'))

    @app.before_request
    def tracker():
        # TODO: This function shouldn't cause a DB hit for lookups if possible
        if authed():
            track = Tracking.query.filter_by(ip=get_ip(),
                                             user_id=session['id']).first()
            if not track:
                visit = Tracking(ip=get_ip(), user_id=session['id'])
                db.session.add(visit)
            else:
                track.date = datetime.datetime.utcnow()

            try:
                db.session.commit()
            except (InvalidRequestError, IntegrityError) as e:
                print(e.message)
                db.session.rollback()
                session.clear()

            if authed():
                user = get_current_user()
                team = get_current_team()

                if request.path.startswith('/themes') is False:
                    if user and user.banned:
                        return render_template(
                            'errors/403.html',
                            error='You have been banned from this CTF'), 403

                    if team and team.banned:
                        return render_template(
                            'errors/403.html',
                            error='Your team has been banned from this CTF'
                        ), 403

            db.session.close()

    @app.before_request
    def csrf():
        try:
            func = app.view_functions[request.endpoint]
        except KeyError:
            abort(404)
        if hasattr(func, '_bypass_csrf'):
            return
        if not session.get('nonce'):
            session['nonce'] = generate_nonce()
        if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'):
            if request.content_type == 'application/json':
                if session['nonce'] != request.headers.get('CSRF-Token'):
                    abort(403)
            if request.content_type != 'application/json':
                if session['nonce'] != request.form.get('nonce'):
                    abort(403)

    application_root = app.config.get('APPLICATION_ROOT')
    if application_root != '/':

        @app.before_request
        def force_subdirectory_redirect():
            if request.path.startswith(application_root) is False:
                return redirect(application_root + request.script_root +
                                request.full_path)

        app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
            application_root: app,
        })
Ejemplo n.º 25
0
import os
import sys
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware

sys.path.insert(0, '../ajna_docs/commons')
sys.path.insert(0, '../virasana')
from ajna_commons.flask.conf import BHADRASANA_URL

os.environ['DEBUG'] = '1'
from bhadrasana.main import app

if __name__ == '__main__':
    print('Iniciando Servidor Bhadrasana...')
    port = 5000
    if BHADRASANA_URL:
        port = int(BHADRASANA_URL.split(':')[-1])
    application = DispatcherMiddleware(app, {'/bhadrasana': app})
    run_simple('localhost', port, application, use_reloader=True)
Ejemplo n.º 26
0
from werkzeug.wsgi import DispatcherMiddleware

from server.apps import api
from server.apps import frontend

# This is the entry point for callable or entry point function for uwsgi.
application = DispatcherMiddleware(
    frontend.create_app(),
    {
        '/api': api.create_app(),
    },
)
Ejemplo n.º 27
0
    from werkzeug.wsgi import DispatcherMiddleware
    # Switch logging on
    import logging
    from logging.handlers import RotatingFileHandler
    log_dir = os.path.abspath(config.logs.server)
    # Create the directory if it does not exist
    if not os.path.isdir(log_dir):
        os.makedirs(log_dir)
    # File handle for server logs
    file_handler = RotatingFileHandler(
        os.path.join(log_dir, 'vizier-webapi.log'),
        maxBytes=1024 * 1024 * 100,
        backupCount=20
    )
    file_handler.setLevel(logging.ERROR)
    file_handler.setFormatter(
        logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
    )
    app.logger.addHandler(file_handler)
    # Load a dummy app at the root URL to give 404 errors.
    # Serve app at APPLICATION_ROOT for localhost development.
    application = DispatcherMiddleware(Flask('dummy_app'), {
        app.config['APPLICATION_ROOT']: app,
    })
    run_simple(
        '0.0.0.0',
        config.webservice.server_local_port,
        application,
        use_reloader=config.run.debug
    )
Ejemplo n.º 28
0
from flask import Flask
from werkzeug.wsgi import DispatcherMiddleware
from api_service.app import app as api_service_app
from api_service.ui import app as api_service_ui


app = DispatcherMiddleware(Flask(__name__), {
    "/api/v1": api_service_app,
    "/ui": api_service_ui
})
Ejemplo n.º 29
0
from flask import Flask
from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.serving import run_simple

app = Flask('app01')

app2 = Flask('app02')  #生成两个app


@app.route('/index', methods=['GET'])
def home():
    return 'index'


@app2.route('/index2', methods=['GET'])
def index():
    return 'index2'


app3 = DispatcherMiddleware(
    app,
    {
        '/sec': app2,  # 做了 分发,必须要加'/sec/index2' 才能触发app2
    })

if __name__ == '__main__':
    app.__call__
    run_simple('localhost', 9000, app3)
Ejemplo n.º 30
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware

from app.frontend import create_app

frontend = create_app(settings_override="app.config.Development")

application = DispatcherMiddleware(frontend, {})

if __name__ == "__main__":
    with frontend.app_context():
        # db.create_all()
        pass
    run_simple('0.0.0.0',
               5000,
               application,
               use_reloader=True,
               use_debugger=True)