diff options
Diffstat (limited to 'searx/webapp.py')
| -rwxr-xr-x | searx/webapp.py | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/searx/webapp.py b/searx/webapp.py index cf7c58680..120d5de43 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -30,6 +30,9 @@ from pygments.formatters import HtmlFormatter # pylint: disable=no-name-in-modu from werkzeug.serving import is_running_from_reloader +from whitenoise import WhiteNoise +from whitenoise.base import Headers + import flask from flask import ( @@ -147,7 +150,7 @@ STATS_SORT_PARAMETERS = { } # Flask app -app = Flask(__name__, static_folder=settings['ui']['static_path'], template_folder=templates_path) +app = Flask(__name__, static_folder=None, template_folder=templates_path) app.jinja_env.trim_blocks = True app.jinja_env.lstrip_blocks = True @@ -245,6 +248,7 @@ def custom_url_for(endpoint: str, **values): if not _STATIC_FILES: _STATIC_FILES = webutils.get_static_file_list() + # handled by WhiteNoise if endpoint == "static" and values.get("filename"): # We need to verify the "filename" argument: in the jinja templates @@ -257,9 +261,11 @@ def custom_url_for(endpoint: str, **values): if arg_filename not in _STATIC_FILES: # try file in the current theme theme_name = sxng_request.preferences.get_value("theme") - arg_filename = f"themes/{theme_name}/{arg_filename}" - if arg_filename in _STATIC_FILES: - values["filename"] = arg_filename + theme_filename = f"themes/{theme_name}/{arg_filename}" + if theme_filename in _STATIC_FILES: + values["filename"] = theme_filename + + return f"/static/{values['filename']}" if endpoint == "info" and "locale" not in values: @@ -1424,7 +1430,22 @@ def init(): favicons.init() -application = app +def static_headers(headers: Headers, _path: str, _url: str) -> None: + headers['Cache-Control'] = 'public, max-age=30, stale-while-revalidate=60' + + for header, value in settings['server']['default_http_headers'].items(): + headers[header] = value + + +app.wsgi_app = WhiteNoise( + app.wsgi_app, + root=settings['ui']['static_path'], + prefix="static", + max_age=None, + allow_all_origins=False, + add_headers_function=static_headers, +) + patch_application(app) init() |