Example #1
0
    def _create_app(self):
        """Create our tornado web app.

        Returns
        -------
        tornado.web.Application

        """
        base = config.get_option("server.baseUrlPath")
        routes = [
            (
                make_url_path_regex(base, "stream"),
                _BrowserWebSocketHandler,
                dict(server=self),
            ),
            (
                make_url_path_regex(base, "healthz"),
                HealthHandler,
                dict(callback=lambda: self.is_ready_for_browser_connection),
            ),
            (make_url_path_regex(base, "debugz"), DebugHandler, dict(server=self)),
            (make_url_path_regex(base, "metrics"), MetricsHandler),
            (
                make_url_path_regex(base, "message"),
                MessageCacheHandler,
                dict(cache=self._message_cache),
            ),
            (
                make_url_path_regex(base, "upload_file"),
                UploadFileRequestHandler,
                dict(file_mgr=self._uploaded_file_mgr),
            ),
            (make_url_path_regex(base, "media/(.*)"), MediaFileHandler),
        ]

        if config.get_option("global.developmentMode") and config.get_option(
            "global.useNode"
        ):
            LOGGER.debug("Serving static content from the Node dev server")
        else:
            static_path = file_util.get_static_dir()
            LOGGER.debug("Serving static content from %s", static_path)

            routes.extend(
                [
                    (
                        make_url_path_regex(base, "(.*)"),
                        StaticFileHandler,
                        {"path": "%s/" % static_path, "default_filename": "index.html"},
                    ),
                    (make_url_path_regex(base, trailing_slash=False), AddSlashHandler),
                ]
            )

        return tornado.web.Application(
            routes,  # type: ignore[arg-type]
            cookie_secret=config.get_option("server.cookieSecret"),
            xsrf_cookies=config.get_option("server.enableXsrfProtection"),
            **TORNADO_SETTINGS,  # type: ignore[arg-type]
        )
Example #2
0
    def _create_app(self):
        """Create our tornado web app.

        Returns
        -------
        tornado.web.Application

        """
        base = config.get_option("server.baseUrlPath")
        routes = [
            (
                make_url_path_regex(base, "stream"),
                _BrowserWebSocketHandler,
                dict(server=self),
            ),
            (
                make_url_path_regex(base, "healthz"),
                HealthHandler,
                dict(callback=lambda: self.is_ready_for_browser_connection),
            ),
            (make_url_path_regex(base,
                                 "debugz"), DebugHandler, dict(server=self)),
            (make_url_path_regex(base, "metrics"), MetricsHandler),
            (
                make_url_path_regex(base, "message"),
                MessageCacheHandler,
                dict(cache=self._message_cache),
            ),
        ]

        if config.get_option("global.developmentMode") and config.get_option(
                "global.useNode"):
            LOGGER.debug("Serving static content from the Node dev server")
        else:
            static_path = util.get_static_dir()
            LOGGER.debug("Serving static content from %s", static_path)

            routes.extend([(
                make_url_path_regex(base, "(.*)"),
                StaticFileHandler,
                {
                    "path": "%s/" % static_path,
                    "default_filename": "index.html"
                },
            )])

        return tornado.web.Application(routes, **TORNADO_SETTINGS)
Example #3
0
    def _create_app(self) -> tornado.web.Application:
        """Create our tornado web app."""
        base = config.get_option("server.baseUrlPath")

        routes = [
            (
                make_url_path_regex(base, "stream"),
                _BrowserWebSocketHandler,
                dict(server=self),
            ),
            (
                make_url_path_regex(base, "healthz"),
                HealthHandler,
                dict(callback=lambda: self.is_ready_for_browser_connection),
            ),
            (make_url_path_regex(base, "debugz"), DebugHandler, dict(server=self)),
            (make_url_path_regex(base, "metrics"), MetricsHandler),
            (
                make_url_path_regex(base, "message"),
                MessageCacheHandler,
                dict(cache=self._message_cache),
            ),
            (
                make_url_path_regex(
                    base,
                    UPLOAD_FILE_ROUTE,
                ),
                UploadFileRequestHandler,
                dict(
                    file_mgr=self._uploaded_file_mgr,
                    get_session_info=self._get_session_info,
                ),
            ),
            (
                make_url_path_regex(base, "assets/(.*)"),
                AssetsFileHandler,
                {"path": "%s/" % file_util.get_assets_dir()},
            ),
            (make_url_path_regex(base, "media/(.*)"), MediaFileHandler, {"path": ""}),
            (
                make_url_path_regex(base, "component/(.*)"),
                ComponentRequestHandler,
                dict(registry=ComponentRegistry.instance()),
            ),
        ]

        if config.get_option("server.scriptHealthCheckEnabled"):
            routes.extend(
                [
                    (
                        make_url_path_regex(base, "script-health-check"),
                        HealthHandler,
                        dict(callback=lambda: self.does_script_run_without_error()),
                    )
                ]
            )

        if config.get_option("global.developmentMode"):
            LOGGER.debug("Serving static content from the Node dev server")
        else:
            static_path = file_util.get_static_dir()
            LOGGER.debug("Serving static content from %s", static_path)

            routes.extend(
                [
                    (
                        make_url_path_regex(base, "(.*)"),
                        StaticFileHandler,
                        {"path": "%s/" % static_path, "default_filename": "index.html"},
                    ),
                    (make_url_path_regex(base, trailing_slash=False), AddSlashHandler),
                ]
            )

        return tornado.web.Application(
            routes,  # type: ignore[arg-type]
            cookie_secret=config.get_option("server.cookieSecret"),
            xsrf_cookies=config.get_option("server.enableXsrfProtection"),
            **TORNADO_SETTINGS,  # type: ignore[arg-type]
        )
Example #4
0
    def _create_app(self):
        """Create our tornado web app.

        Returns
        -------
        tornado.web.Application

        """
        base = config.get_option("server.baseUrlPath")
        routes = [
            (
                make_url_path_regex(base, "stream"),
                _BrowserWebSocketHandler,
                dict(server=self),
            ),
            (
                make_url_path_regex(base, "healthz"),
                HealthHandler,
                dict(callback=lambda: self.is_ready_for_browser_connection),
            ),
            (make_url_path_regex(base,
                                 "debugz"), DebugHandler, dict(server=self)),
            (make_url_path_regex(base, "metrics"), MetricsHandler),
            (
                make_url_path_regex(base, "message"),
                MessageCacheHandler,
                dict(cache=self._message_cache),
            ),
            (
                # Tornado doesn't allow body in DELETE requests.
                # Passing lookup values in URL
                make_url_path_regex(
                    base,
                    "/upload_file/(?P<session_id>.*)/(?P<widget_id>.*)/(?P<file_id>[0-9]*)?",
                ),
                UploadFileRequestHandler,
                dict(file_mgr=self._uploaded_file_mgr),
            ),
            (
                make_url_path_regex(base, "upload_file"),
                UploadFileRequestHandler,
                dict(file_mgr=self._uploaded_file_mgr),
            ),
            (
                make_url_path_regex(base, "assets/(.*)"),
                AssetsFileHandler,
                {
                    "path": "%s/" % file_util.get_assets_dir()
                },
            ),
            (make_url_path_regex(base, "media/(.*)"), MediaFileHandler, {
                "path": ""
            }),
            (
                make_url_path_regex(base, "component/(.*)"),
                ComponentRequestHandler,
                dict(registry=ComponentRegistry.instance()),
            ),
        ]

        if config.get_option("global.developmentMode"):
            LOGGER.debug("Serving static content from the Node dev server")
        else:
            static_path = file_util.get_static_dir()
            LOGGER.debug("Serving static content from %s", static_path)

            routes.extend([
                (
                    make_url_path_regex(base, "(.*)"),
                    StaticFileHandler,
                    {
                        "path": "%s/" % static_path,
                        "default_filename": "index.html"
                    },
                ),
                (make_url_path_regex(base,
                                     trailing_slash=False), AddSlashHandler),
            ])

        return tornado.web.Application(
            routes,  # type: ignore[arg-type]
            cookie_secret=config.get_option("server.cookieSecret"),
            xsrf_cookies=config.get_option("server.enableXsrfProtection"),
            **TORNADO_SETTINGS,  # type: ignore[arg-type]
        )
Example #5
0
    def _create_app(self):
        """Create our tornado web app.

        Returns
        -------
        tornado.web.Application

        """
        base = config.get_option("server.baseUrlPath")
        routes = [
            (
                make_url_path_regex(base, "stream"),
                _BrowserWebSocketHandler,
                dict(server=self),
            ),
            (
                make_url_path_regex(base, "healthz"),
                HealthHandler,
                dict(callback=lambda: self.is_ready_for_browser_connection),
            ),
            (make_url_path_regex(base,
                                 "debugz"), DebugHandler, dict(server=self)),
            (make_url_path_regex(base, "metrics"), MetricsHandler),
            (
                make_url_path_regex(base, "message"),
                MessageCacheHandler,
                dict(cache=self._message_cache),
            ),
            (
                make_url_path_regex(base, "upload_file"),
                UploadFileRequestHandler,
                dict(file_mgr=self._uploaded_file_mgr),
            ),
            (make_url_path_regex(base, "media/(.*)"), MediaFileHandler),
        ]

        if config.get_option("global.developmentMode") and config.get_option(
                "global.useNode"):
            LOGGER.debug("Serving static content from the Node dev server")
        else:
            static_path = file_util.get_static_dir()
            LOGGER.debug("Serving static content from %s", static_path)

            routes.extend([
                (
                    make_url_path_regex(base, "(.*)"),
                    StaticFileHandler,
                    {
                        "path": "%s/" % static_path,
                        "default_filename": "index.html"
                    },
                ),
                (make_url_path_regex(base,
                                     trailing_slash=False), AddSlashHandler),
            ])

        return tornado.web.Application(
            routes,  # type: ignore[arg-type]
            cookie_secret=config.get_option("server.cookieSecret"),
            compress_response=True,  # Gzip HTTP responses.
            websocket_ping_interval=20,  # Ping every 20s to keep WS alive.
            websocket_ping_timeout=
            30,  # Pings should be responded to within 30s.
            websocket_max_message_size=
            MESSAGE_SIZE_LIMIT,  # Up the WS size limit.
            xsrf_cookies=config.get_option("server.enableXsrfProtection"),
        )