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 <a...@cryptomilk.org> + +- Fix chdir path in uwsgi config +- Update README.SUSE.md + +------------------------------------------------------------------- +Sat Oct 3 07:55:13 UTC 2020 - Andreas Schneider <a...@cryptomilk.org> + +- 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 -- commit@lists.opensuse.org To unsubscribe, email commit-le...@lists.opensuse.org List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/commit@lists.opensuse.org