Hello community,
here is the log from the commit of package python-postorius for
openSUSE:Factory checked in at 2020-12-14 18:09:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-postorius (Old)
and /work/SRC/openSUSE:Factory/.python-postorius.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-postorius"
Mon Dec 14 18:09:26 2020 rev:6 rq:855618 version:1.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-postorius/python-postorius.changes
2020-08-04 20:23:36.377010732 +0200
+++
/work/SRC/openSUSE:Factory/.python-postorius.new.2328/python-postorius.changes
2020-12-14 18:09:45.647663505 +0100
@@ -1,0 +2,14 @@
+Sat Dec 12 19:19:35 UTC 2020 - Andreas Schneider <[email protected]>
+
+- Fix chdir path in uwsgi config
+- Update README.SUSE.md
+
+-------------------------------------------------------------------
+Sat Oct 3 07:55:13 UTC 2020 - Andreas Schneider <[email protected]>
+
+- Create a postorius-web package with webroot files
+- Create a postorius-web-uwsgi with uwsgi configuration
+- Added postorius-settings.patch
+ * Sets the FHS default paths
+
+-------------------------------------------------------------------
New:
----
README.SUSE.md
postorius-manage.sh
postorius-permissions.sh
postorius-settings.patch
postorius.uwsgi
python-postorius-rpmlintrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-postorius.spec ++++++
--- /var/tmp/diff_new_pack.l8QJtc/_old 2020-12-14 18:09:46.331664185 +0100
+++ /var/tmp/diff_new_pack.l8QJtc/_new 2020-12-14 18:09:46.335664188 +0100
@@ -16,6 +16,19 @@
#
+%global webapps_dir /srv/www/webapps
+
+%global postorius_pkgname postorius
+
+%global postorius_basedir %{webapps_dir}/mailman/postorius
+%global postorius_localedir %{postorius_basedir}/locale
+%global postorius_staticdir %{postorius_basedir}/static
+
+%global postorius_etcdir %{_sysconfdir}/postorius
+%global postorius_libdir %{_localstatedir}/lib/postorius
+%global postorius_logdir %{_localstatedir}/log/postorius
+%global postorius_datadir %{postorius_libdir}/data
+
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-postorius
@@ -24,11 +37,25 @@
Summary: A web user interface for GNU Mailman
License: GPL-3.0-only
URL: https://gitlab.com/mailman/postorius
-Source:
https://files.pythonhosted.org/packages/source/p/postorius/postorius-%{version}.tar.gz
+#
+Source0:
https://files.pythonhosted.org/packages/source/p/postorius/postorius-%{version}.tar.gz
+Source1: python-postorius-rpmlintrc
+#
+Source10: postorius-manage.sh
+Source11: postorius-permissions.sh
+Source12: postorius.uwsgi
+#
+Source20: README.SUSE.md
+#
+Patch0: postorius-settings.patch
+#
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
+BuildRequires: acl
BuildRequires: fdupes
+BuildRequires: openssl
BuildRequires: python-rpm-macros
+BuildRequires: sudo
Requires: python-Django >= 1.11
Requires: python-django-mailman3 >= 1.2.0
Requires: python-mailmanclient >= 3.2.3
@@ -53,16 +80,76 @@
%description
A web user interface for GNU Mailman
+%package -n %{postorius_pkgname}-web
+Summary: The webroot for GNU Mailman
+Requires: acl
+Requires: openssl
+Requires: python3-postorius
+Requires: sudo
+
+%description -n %{postorius_pkgname}-web
+A web user interface for GNU Mailman.
+
+This package holds the web interface.
+
+%package -n %{postorius_pkgname}-web-uwsgi
+Summary: Postorius - uwsgi configuration
+Requires: %{postorius_pkgname}-web
+Requires: uwsgi
+
+%description -n %{postorius_pkgname}-web-uwsgi
+A web user interface for GNU Mailman.
+
+This package holds the uwsgi configuration.
+
%prep
-%setup -q -n postorius-%{version}
+%autosetup -p1 -n postorius-%{version}
+cp %{SOURCE20} .
+touch settings_local.py
%build
+sed -i 's|^#!/usr/bin/env.*|#!%{_bindir}/python3|' \
+ example_project/manage.py
+
%python_build
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+install -d -m 0750 \
+ %{buildroot}%{postorius_etcdir} \
+ %{buildroot}%{postorius_libdir} \
+ %{buildroot}%{postorius_datadir} \
+ %{buildroot}%{postorius_logdir}
+
+install -d -m 0755 \
+ %{buildroot}%{postorius_basedir} \
+ %{buildroot}%{postorius_localedir} \
+ %{buildroot}%{postorius_staticdir} \
+
+cp -a example_project/* %{buildroot}%{postorius_basedir}
+chmod -x %{buildroot}%{postorius_basedir}/wsgi.py
+
+rm -f %{buildroot}%{postorius_basedir}/README.rst
+rm -f %{buildroot}%{postorius_basedir}/mailman.cfg
+
+# Create an empty settings_local.py. This will be filled with a SECRET_KEY in
post
+install -m 0644 settings_local.py
%{buildroot}%{postorius_etcdir}/settings_local.py
+
+ln -svf %{postorius_etcdir}/settings_local.py \
+ %{buildroot}/%{postorius_basedir}/settings_local.py
+
+%fdupes %{buildroot}%{postorius_basedir}
+
+# Manage script
+install -d -m 0755 %{buildroot}%{_sbindir}
+install -m 0750 %{SOURCE10} %{buildroot}%{_sbindir}/postorius-manage
+install -m 0750 %{SOURCE11} %{buildroot}%{_sbindir}/postorius-fix-permissions
+
+install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals
+install -m 0644 %{SOURCE12}
%{buildroot}%{_sysconfdir}/uwsgi/vassals/postorius.ini
+
%check
pushd example_project
export PYTHONPATH='../src'
@@ -70,9 +157,46 @@
%pytest ..
popd
+%pre -n %{postorius_pkgname}-web
+/usr/sbin/groupadd -r postorius &>/dev/null || :
+/usr/sbin/useradd -g postorius -s /bin/false -r -c "Postorius" -d
%{postorius_basedir} postorius &>/dev/null || :
+
+/usr/sbin/groupadd -r postorius-admin &>/dev/null || :
+/usr/sbin/useradd -g postorius-admin -s /bin/bash -r -c "Postorius Admin" -d
%{postorius_basedir} postorius-admin &>/dev/null || :
+
+%post -n %{postorius_pkgname}-web
+%{_sbindir}/postorius-fix-permissions
+# We need a SECRET_KEY for manage to work
+if ! grep -q "^SECRET_KEY.*" %{postorius_etcdir}/settings_local.py; then
+ echo "SECRET_KEY='$(openssl rand -base64 48)'" >>
%{postorius_etcdir}/settings_local.py
+fi
+%{_sbindir}/postorius-manage migrate --pythonpath
/srv/www/webapps/mailman/postorius/ --settings settings
+%{_sbindir}/postorius-manage collectstatic --pythonpath
/srv/www/webapps/mailman/postorius/ --settings settings --clear --noinput
+
%files %{python_files}
%doc README.rst example_project
%license COPYING
%{python_sitelib}/*
+%files -n %{postorius_pkgname}-web
+%doc README.SUSE.md
+%{_sbindir}/postorius-manage
+%{_sbindir}/postorius-fix-permissions
+%dir %{webapps_dir}
+%dir %{webapps_dir}/mailman
+
+%defattr(-,postorius-admin,postorius)
+%{postorius_basedir}
+
+%attr(750,postorius-admin,postorius) %dir %{postorius_etcdir}
+%attr(640,postorius-admin,postorius) %config(noreplace)
%{postorius_etcdir}/settings_local.py
+%attr(750,postorius-admin,postorius) %dir %{postorius_libdir}
+%attr(750,postorius-admin,postorius) %dir %{postorius_datadir}
+%attr(750,postorius-admin,postorius) %dir %{postorius_logdir}
+
+%files -n %{postorius_pkgname}-web-uwsgi
+%dir %{_sysconfdir}/uwsgi
+%dir %{_sysconfdir}/uwsgi/vassals
+%config (noreplace) %{_sysconfdir}/uwsgi/vassals/postorius.ini
+
%changelog
++++++ README.SUSE.md ++++++
Postorius
=========
## Configuration
The web application is configured in `/etc/postorius/settings_local.py` which
is included by the default configuration in
/srv/www/webapps/postorius/settings.py.
1. Optional: Change the default secret for the application:
We already created one, but feel free to replace with a stronger
alternative.
`/etc/postorius/settings_local.py`:
SECRET_KEY = 'something-very-secret'
2. Make sure to disable debugging when running in production:
`/etc/postorius/settings_local.py`:
DEBUG = False
3. To be able to configure a running mailman instance configuration options for
its REST API have to be added to postorius' configuration.
`/etc/postorius/settings_local.py`
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'rest_admin'
MAILMAN_REST_API_PASS = 'rest_admin_password'
4. Add a valid email configuration
`/etc/postorius/settings_local.py`:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_HOST_USER = <username>
EMAIL_HOST_PASSWORD = <password>
5. The valid hosts or domain names for the application need to be defined:
`/srv/www/webapps/mailman/postorius/settings_local.py`:
ALLOWED_HOSTS = [
'localhost',
'lists.example.com'
]
6. Setup the database (optionally configure e.g. postgres first,
default: sqlite3)
postorius-manage migrate
7. Create admin user
postorius-manage createsuperuser
## Apache2
To configure postorius with Apache and uwsgi, just add the follwing lines to a
vhost:
ProxyPassMatch ^/static !
ProxyPass / unix:/run/uwsgi/uwsgi-postorius.sock|uwsgi://localhost/
<Directory /srv/www/webapps/mailman/postorius>
Require all granted
</Directory>
++++++ postorius-manage.sh ++++++
#!/bin/bash
sudo -u postorius-admin /usr/bin/python3
/srv/www/webapps/mailman/postorius/manage.py "$@"
++++++ postorius-permissions.sh ++++++
#!/bin/sh
LOG_DIR="/var/log/postorius"
LIB_DIR="/var/lib/postorius"
DATA_DIR="$LIB_DIR/data/"
setfacl -R --no-mask -m u:postorius-admin:rwX ${DATA_DIR}
setfacl -R -d --no-mask -m u:postorius-admin:rwX ${DATA_DIR}
chown postorius-admin:postorius-admin ${LIB_DIR}
chmod u=rwX,g=rwX,o= ${LIB_DIR}
chown -R postorius:postorius ${DATA_DIR}
chmod -R u=rwX,g=rwX,o= ${DATA_DIR}
chown postorius:postorius ${DATA_DIR}/postorius.db
2>/dev/null
chmod u=rwX,g=rwX,o= ${DATA_DIR}/postorius.db
2>/dev/null
setfacl -R --no-mask -m u:postorius:rwX ${DATA_DIR}
setfacl -R -d --no-mask -m u:postorius:rwX ${DATA_DIR}
setfacl -R --no-mask -m u:postorius-admin:rwX ${DATA_DIR}
setfacl -R -d --no-mask -m u:postorius-admin:rwX ${DATA_DIR}
chown postorius-admin:postorius-admin ${LOG_DIR}
chmod u=rwX,g=rwX,o= ${LOG_DIR}
chown postorius-admin:postorius-admin ${LOG_DIR}/postorius.log
2>/dev/null
chmod u=rwX,g=rwX,o= ${LOG_DIR}/postorius.log
2>/dev/null
setfacl -R --no-mask -m u:postorius:rwX ${LOG_DIR}
setfacl -R -d --no-mask -m u:postorius:rwX ${LOG_DIR}
setfacl -R --no-mask -m u:postorius-admin:rwX ${LOG_DIR}
setfacl -R -d --no-mask -m u:postorius-admin:rwX ${LOG_DIR}
++++++ postorius-settings.patch ++++++
Index: postorius-1.3.3/example_project/settings.py
===================================================================
--- postorius-1.3.3.orig/example_project/settings.py
+++ postorius-1.3.3/example_project/settings.py
@@ -136,7 +136,7 @@ WSGI_APPLICATION = 'wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(BASE_DIR, 'postorius.db'),
+ 'NAME': '/var/lib/postorius/data/postorius.db',
}
}
@@ -180,7 +180,7 @@ USE_TZ = True
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
-STATIC_ROOT = os.path.join(BASE_DIR, 'static')
+STATIC_ROOT = '/srv/www/webapps/mailman/postorius/static'
# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
@@ -259,7 +259,7 @@ LOGGING = {
'level': 'INFO',
#'class': 'logging.handlers.RotatingFileHandler',
'class': 'logging.handlers.WatchedFileHandler',
- 'filename': os.path.join(BASE_DIR, 'logs', 'postorius.log'),
+ 'filename': '/var/log/postorius/postorius.log',
'formatter': 'verbose',
},
},
++++++ postorius.uwsgi ++++++
[uwsgi]
#plugin = apparmor
#apparmor-hat = postorius
uid = postorius
gid = postorius
processes = 1
threads = 25
socket = /run/uwsgi/uwsgi-postorius.sock
chmod-socket = 660
chown-socket = wwwrun:www
plugin = python3
chdir = /srv/www/webapps/mailman/postorius
module = wsgi
++++++ python-postorius-rpmlintrc ++++++
addFilter("zero-length")
addFilter("non-standard-gid")
addFilter("non-standard-uid")
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives:
https://lists.opensuse.org/archives/list/[email protected]