From 87af0551e64017ae3fcc6ce27b4a208ff8d8b7fe Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 23 2017 10:44:45 +0000 Subject: [PATCH 1/3] Rely on the exising is_safe_url to determine if an url is safe to redirect to Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/app.py b/pagure/ui/app.py index a348982..5275fa1 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -21,7 +21,7 @@ import pagure.lib import pagure.lib.git import pagure.forms import pagure.ui.filters -from pagure import (APP, SESSION, login_required, +from pagure import (APP, SESSION, login_required, is_safe_url, authenticated, admin_session_timedout) @@ -496,8 +496,8 @@ def wait_task(taskid): flask.flash('Your task failed: %s' % str(result)) status.forget() prev = flask.request.args.get('prev') - if not prev or not prev.startswith('/'): - prev = '/' + if not is_safe_url(prev): + prev = flask.url_for('index') return flask.redirect(prev) endpoint = result.pop('endpoint') status.forget() From 2c3acf41916b961ed9bf4d650416854a3df42a36 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 23 2017 10:44:45 +0000 Subject: [PATCH 2/3] Add a systemd service file to start the worker Signed-off-by: Pierre-Yves Chibon --- diff --git a/files/pagure_worker.service b/files/pagure_worker.service new file mode 100644 index 0000000..933d17d --- /dev/null +++ b/files/pagure_worker.service @@ -0,0 +1,15 @@ +[Unit] +Description=Pagure worker for backend git interaction +After=redis.target +Documentation=https://pagure.io/pagure + +[Service] +ExecStart=celery worker -A pagure.lib.tasks --loglevel=info --autoreload +Environment="PAGURE_CONFIG=/etc/pagure/pagure.cfg" +Type=simple +User=git +Group=git +Restart=on-failure + +[Install] +WantedBy=multi-user.target From da98933e8900f6149e69c2d080eb522c02c89445 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 23 2017 10:44:45 +0000 Subject: [PATCH 3/3] Install the pagure_worker service file in the spec file Signed-off-by: Pierre-Yves Chibon --- diff --git a/files/pagure.spec b/files/pagure.spec index e0c9aeb..0291bc8 100644 --- a/files/pagure.spec +++ b/files/pagure.spec @@ -12,6 +12,7 @@ Source0: https://pagure.io/releases/pagure/%{name}-%{version}.tar.gz BuildArch: noarch +BuildRequires: systemd-devel BuildRequires: python2-devel BuildRequires: python-setuptools BuildRequires: python-nose @@ -22,6 +23,7 @@ BuildRequires: python-arrow BuildRequires: python-binaryornot BuildRequires: python-bleach BuildRequires: python-blinker +BuildRequires: python2-celery BuildRequires: python-chardet BuildRequires: python-cryptography BuildRequires: python-docutils @@ -58,6 +60,7 @@ Requires: python-arrow Requires: python-binaryornot Requires: python-bleach Requires: python-blinker +Requires: python2-celery Requires: python-chardet Requires: python-cryptography Requires: python-docutils @@ -226,6 +229,10 @@ install -m 644 files/alembic.ini $RPM_BUILD_ROOT/%{_sysconfdir}/pagure/alembic.i # Install the alembic revisions cp -r alembic $RPM_BUILD_ROOT/%{_datadir}/pagure +# Install the systemd file for the worker +install -m 644 files/pagure_worker.service \ + $RPM_BUILD_ROOT/%{_unitdir}/pagure_worker.service + # Install the milter files mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/run/pagure @@ -274,6 +281,8 @@ install -m 644 pagure-loadjson/pagure_loadjson.service \ $RPM_BUILD_ROOT/%{_unitdir}/pagure_loadjson.service +%post +%systemd_post pagure_worker.service %post milters %systemd_post pagure_milter.service %post ev @@ -287,6 +296,8 @@ install -m 644 pagure-loadjson/pagure_loadjson.service \ %post loadjson %systemd_post pagure_loadjson.service +%preun +%systemd_post pagure_worker.service %preun milters %systemd_preun pagure_milter.service %preun ev @@ -300,6 +311,8 @@ install -m 644 pagure-loadjson/pagure_loadjson.service \ %preun loadjson %systemd_preun pagure_loadjson.service +%postun +%systemd_post pagure_worker.service %postun milters %systemd_postun_with_restart pagure_milter.service %postun ev @@ -328,6 +341,7 @@ install -m 644 pagure-loadjson/pagure_loadjson.service \ %{python_sitelib}/pagure/ %{python_sitelib}/pagure*.egg-info %{_bindir}/pagure-admin +%{_unitdir}/pagure_worker.service %files milters