+ Patch: 0002-starttls-support-via-SMTP_STARTTLS-provide-additiona.patch + Patch: 0001-Do-not-assume-there-is-a-SMTP_STARTTLS-configuration.patch - Backport fix for docs repo access grant + Patch: 0001-Fix-repotype-spelling.patch - Backport fix for visual bug on API docs formatting + Patch: 0001-api-fix-apidoc-format-on-api_view_issues_history_det.patch - Backport fix to changing pull mirror settings + Patch: 0001-Allow-editing-the-URL-a-project-is-mirrored-from.patch - Backport fix to add descriptions to API scopes + Patch: 0001-Show-the-ACL-name-in-addition-to-the-description-whe.patch - Backport fix to make heatmap UI functional again + Patch: 0001-Bring-back-JS-library-used-for-the-heatmap.patch - Backport fix for handling headers + Patch: 0001-Ensure-the-title-name-of-the-headers-are-strings.patch - Backport fix for burndown graph title + Patch: 0001-Fix-the-title-of-the-graph-showing-the-evolution-of-.patch - Backport fix for permissions on authorized_keys file + Patch: 0001-Make-sure-authorized_keys-file-has-mode-600.patch - Add patch to use whitenoise for rendering static assets + Patch: 0101-Use-WhiteNoise-to-serve-static-assets-for-the-Pagure.patch - Refresh default configuration patch + Patch: pagure-5.0-default-example-cfg.patch OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/pagure?expand=0&rev=39
180 lines
5.9 KiB
Diff
180 lines
5.9 KiB
Diff
From 89f18ee38de1e6cb3ac482f865e6352ed340d763 Mon Sep 17 00:00:00 2001
|
|
From: Neal Gompa <ngompa13@gmail.com>
|
|
Date: Sun, 31 May 2020 11:56:38 -0400
|
|
Subject: [PATCH] Use WhiteNoise to serve static assets for the Pagure web
|
|
interface
|
|
|
|
In order to make it easier to run Pagure in a containerized environment,
|
|
the web frontend needs to be capable of serving all of the frontend static
|
|
files. This change introduces WhiteNoise as a dependency that would enable
|
|
the Flask application itself to serve the static assets correctly.
|
|
|
|
This makes it possible to run a Pagure server without Apache or Nginx at all
|
|
in a containerized environment for all of the main functions.
|
|
|
|
Note that the releases folder is still not served through WhiteNoise, and
|
|
deployments that have uploading releases enabled will need something to
|
|
serve them.
|
|
|
|
Signed-off-by: Neal Gompa <ngompa13@gmail.com>
|
|
---
|
|
files/pagure-apache-httpd.conf | 3 ---
|
|
files/pagure-nginx.conf | 9 ---------
|
|
files/pagure.spec | 13 ++-----------
|
|
pagure/docs_server.py | 9 +++++++++
|
|
pagure/flask_app.py | 7 +++++++
|
|
requirements.txt | 1 +
|
|
6 files changed, 19 insertions(+), 23 deletions(-)
|
|
|
|
diff --git a/files/pagure-apache-httpd.conf b/files/pagure-apache-httpd.conf
|
|
index cf61e7f4..5724deb4 100644
|
|
--- a/files/pagure-apache-httpd.conf
|
|
+++ b/files/pagure-apache-httpd.conf
|
|
@@ -33,8 +33,6 @@
|
|
#SSLCertificateChainFile /etc/pki/tls/....intermediate.crt
|
|
#SSLCertificateKeyFile /etc/pki/tls/....key
|
|
|
|
- #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/
|
|
-
|
|
#<Location />
|
|
#WSGIProcessGroup paguredocs
|
|
#<IfModule mod_authz_core.c>
|
|
@@ -64,7 +62,6 @@
|
|
#SSLCertificateChainFile /etc/pki/tls/....intermediate.crt
|
|
#SSLCertificateKeyFile /etc/pki/tls/....key
|
|
|
|
- #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/
|
|
#Alias /releases /var/www/releases
|
|
|
|
## Section used to support cloning git repo over http (https in this case)
|
|
diff --git a/files/pagure-nginx.conf b/files/pagure-nginx.conf
|
|
index fe3ff832..a5d196a6 100644
|
|
--- a/files/pagure-nginx.conf
|
|
+++ b/files/pagure-nginx.conf
|
|
@@ -27,11 +27,6 @@
|
|
#try_files $uri @pagure_docs;
|
|
#}
|
|
|
|
- #location /static {
|
|
- #alias /usr/lib/pythonX.Y/site-packages/pagure/static/;
|
|
- #try_files $uri $uri/;
|
|
- #}
|
|
-
|
|
#}
|
|
|
|
#server {
|
|
@@ -63,10 +58,6 @@
|
|
#try_files $uri @pagure;
|
|
#}
|
|
|
|
- #location /static {
|
|
- #alias /usr/lib/pythonX.Y/site-packages/pagure/static/;
|
|
- #}
|
|
-
|
|
#location /releases {
|
|
#alias /var/www/releases/;
|
|
#autoindex on;
|
|
diff --git a/files/pagure.spec b/files/pagure.spec
|
|
index 5c084436..24fd5b37 100644
|
|
--- a/files/pagure.spec
|
|
+++ b/files/pagure.spec
|
|
@@ -75,6 +75,7 @@ Requires: python%{python_pkgversion}-requests
|
|
Requires: python%{python_pkgversion}-six
|
|
Requires: python%{python_pkgversion}-sqlalchemy >= 0.8
|
|
Requires: python%{python_pkgversion}-straight-plugin
|
|
+Requires: python%{python_pkgversion}-whitenoise
|
|
Requires: python%{python_pkgversion}-wtforms
|
|
%endif
|
|
|
|
@@ -365,22 +366,12 @@ sed -e "s|#!/usr/bin/env python|#!%{__python}|" -i \
|
|
# Switch interpreter for systemd units
|
|
sed -e "s|/usr/bin/python|%{__python}|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
|
|
|
-%if 0%{?rhel} && 0%{?rhel} < 8
|
|
-# Change to correct static file path for apache httpd and nginx
|
|
-sed -e "s/pythonX.Y/python%{python2_version}/g" -i \
|
|
- $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/pagure.conf \
|
|
- $RPM_BUILD_ROOT/%{_sysconfdir}/nginx/conf.d/pagure.conf
|
|
-%else
|
|
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
|
|
# Switch all systemd units to use the correct celery
|
|
sed -e "s|/usr/bin/celery|/usr/bin/celery-3|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
|
|
|
# Switch all systemd units to use the correct gunicorn
|
|
sed -e "s|/usr/bin/gunicorn|/usr/bin/gunicorn-3|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
|
-
|
|
-# Change to correct static file path for apache httpd and nginx
|
|
-sed -e "s/pythonX.Y/python%{python3_version}/g" -i \
|
|
- $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/pagure.conf \
|
|
- $RPM_BUILD_ROOT/%{_sysconfdir}/nginx/conf.d/pagure.conf
|
|
%endif
|
|
|
|
# Make log directories
|
|
diff --git a/pagure/docs_server.py b/pagure/docs_server.py
|
|
index fd7b2778..dc5e297b 100644
|
|
--- a/pagure/docs_server.py
|
|
+++ b/pagure/docs_server.py
|
|
@@ -17,6 +17,7 @@ import flask
|
|
import pygit2
|
|
|
|
from binaryornot.helpers import is_binary_string
|
|
+from whitenoise import WhiteNoise
|
|
|
|
import pagure.config
|
|
import pagure.doc_utils
|
|
@@ -29,6 +30,14 @@ import pagure.forms
|
|
# Create the application.
|
|
APP = flask.Flask(__name__)
|
|
|
|
+# Setup WhiteNoise for serving static files
|
|
+here = os.path.abspath(
|
|
+ os.path.join(os.path.dirname(os.path.abspath(__file__)))
|
|
+)
|
|
+APP.wsgi_app = WhiteNoise(
|
|
+ APP.wsgi_app, root=os.path.join(here, "static"), prefix="/static"
|
|
+)
|
|
+
|
|
# set up FAS
|
|
APP.config = pagure.config.reload_config()
|
|
|
|
diff --git a/pagure/flask_app.py b/pagure/flask_app.py
|
|
index 7d533b63..34eb4783 100644
|
|
--- a/pagure/flask_app.py
|
|
+++ b/pagure/flask_app.py
|
|
@@ -21,6 +21,8 @@ import warnings
|
|
import flask
|
|
import pygit2
|
|
|
|
+from whitenoise import WhiteNoise
|
|
+
|
|
import pagure.doc_utils
|
|
import pagure.exceptions
|
|
import pagure.forms
|
|
@@ -188,6 +190,11 @@ def create_app(config=None):
|
|
app.jinja_loader = jinja2.ChoiceLoader(templ_loaders)
|
|
app.register_blueprint(themeblueprint)
|
|
|
|
+ # Setup WhiteNoise for serving static files
|
|
+ app.wsgi_app = WhiteNoise(
|
|
+ app.wsgi_app, root=os.path.join(here, "static"), prefix="/static"
|
|
+ )
|
|
+
|
|
app.before_request(set_request)
|
|
app.after_request(after_request)
|
|
app.teardown_request(end_request)
|
|
diff --git a/requirements.txt b/requirements.txt
|
|
index dcde36ce..fa538676 100644
|
|
--- a/requirements.txt
|
|
+++ b/requirements.txt
|
|
@@ -33,6 +33,7 @@ sqlalchemy >= 0.8
|
|
# 1.4.0 is broken, 1.4.0-post-1 works but gives odd results on newer setuptools
|
|
# the latest version 1.5.0 is also known to work
|
|
straight.plugin
|
|
+whitenoise
|
|
wtforms
|
|
|
|
# Required only for the `oidc` authentication backend
|
|
--
|
|
2.26.2
|
|
|