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

Reply via email to