diff --git a/hyperkitty/.footprint b/hyperkitty/.footprint index 4e781a1e4..c0bc08d32 100644 --- a/hyperkitty/.footprint +++ b/hyperkitty/.footprint @@ -1,14 +1,39 @@ +drwxr-xr-x root/root etc/ +drwxr-xr-x root/root etc/webapps/ +drwxr-xr-x root/root etc/webapps/hyperkitty/ +-rw-r----- root/root etc/webapps/hyperkitty/settings_local.py (EMPTY) +-rw-r----- root/root etc/webapps/hyperkitty/urls.py drwxr-xr-x root/root usr/ drwxr-xr-x root/root usr/lib/ drwxr-xr-x root/root usr/lib/python3.10/ drwxr-xr-x root/root usr/lib/python3.10/site-packages/ -drwxr-xr-x root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/ --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/AUTHORS.txt --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/COPYING.txt --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/METADATA --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/RECORD --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/WHEEL --rw-r--r-- root/root usr/lib/python3.10/site-packages/HyperKitty-1.3.8.dist-info/top_level.txt +drwxr-xr-x root/root usr/lib/python3.10/site-packages/example_project/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/.gitignore +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/README.rst +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__init__.py (EMPTY) +drwxr-xr-x root/root usr/lib/python3.10/site-packages/example_project/__pycache__/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__pycache__/__init__.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__pycache__/manage.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__pycache__/settings.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__pycache__/urls.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/__pycache__/wsgi.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/apache.conf +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/crontab +drwxr-xr-x root/root usr/lib/python3.10/site-packages/example_project/logs/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/logs/.keep (EMPTY) +-rwxr-xr-x root/root usr/lib/python3.10/site-packages/example_project/manage.py +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/qcluster.service +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/settings.py +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/settings.py.orig +-rw-r--r-- root/root usr/lib/python3.10/site-packages/example_project/urls.py +-rwxr-xr-x root/root usr/lib/python3.10/site-packages/example_project/wsgi.py +drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/METADATA +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/RECORD +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/WHEEL +drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/licenses/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/licenses/AUTHORS.txt +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty-1.3.9.dist-info/licenses/COPYING.txt drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/__init__.py drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/__pycache__/ @@ -46,6 +71,9 @@ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/api/__pycache__ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/apps.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/checks.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/context_processors.py +drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/contrib/ +-rwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/contrib/check_hk_import +-rwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/contrib/cleanarch3 -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/feed.py drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/fixtures/ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/fixtures/first_start.json @@ -79,6 +107,7 @@ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/__init__.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/analysis.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/compat.cpython-310.opt-2.pyc +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/haystack.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/incoming.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/mailman.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/mockup.cpython-310.opt-2.pyc @@ -89,6 +118,7 @@ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__/view_helpers.cpython-310.opt-2.pyc -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/analysis.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/compat.py +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/haystack.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/incoming.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/mailman.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/mockup.py @@ -98,6 +128,7 @@ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/lib/__pycache__ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/utils.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/lib/view_helpers.py drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/locale/ +-rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/locale/LINGUAS drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/locale/af/ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/locale/af/LC_MESSAGES/ -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/locale/af/LC_MESSAGES/django.po @@ -980,3 +1011,22 @@ drwxr-xr-x root/root usr/lib/python3.10/site-packages/hyperkitty/views/__pycache -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/views/tags.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/views/thread.py -rw-r--r-- root/root usr/lib/python3.10/site-packages/hyperkitty/views/users.py +drwxr-xr-x root/root usr/share/ +drwxr-xr-x root/root usr/share/webapps/ +drwxr-xr-x root/root usr/share/webapps/hyperkitty/ +-rw-r--r-- hyperkitty/root usr/share/webapps/hyperkitty/__init__.py (EMPTY) +lrwxrwxrwx root/root usr/share/webapps/hyperkitty/locale -> /var/lib/hyperkitty/locale/ +-rw-r--r-- hyperkitty/root usr/share/webapps/hyperkitty/manage.py +-rw-r--r-- hyperkitty/root usr/share/webapps/hyperkitty/settings.py +lrwxrwxrwx root/root usr/share/webapps/hyperkitty/settings_local.py -> /etc/webapps/hyperkitty/settings_local.py +lrwxrwxrwx root/root usr/share/webapps/hyperkitty/static -> /var/lib/hyperkitty/static/ +lrwxrwxrwx root/root usr/share/webapps/hyperkitty/urls.py -> /etc/webapps/hyperkitty/urls.py +-rw-r--r-- hyperkitty/root usr/share/webapps/hyperkitty/wsgi.py +drwxr-xr-x root/root var/ +drwxr-xr-x root/root var/lib/ +drwxr-xr-x root/root var/lib/hyperkitty/ +drwxr-x--- root/root var/lib/hyperkitty/data/ +drwxr-xr-x root/root var/lib/hyperkitty/locale/ +drwxr-xr-x root/root var/lib/hyperkitty/static/ +drwxr-xr-x root/root var/log/ +drwxr-x--- root/root var/log/hyperkitty/ diff --git a/hyperkitty/.signature b/hyperkitty/.signature index 72becfa1a..e699bf63e 100644 --- a/hyperkitty/.signature +++ b/hyperkitty/.signature @@ -1,5 +1,6 @@ untrusted comment: verify with /etc/ports/contrib.pub -RWSagIOpLGJF3/lF5zQ+TKpLXRRZJ2jsYcfC0r6UUF7vcmw/Xb8QVXV4KFKCkbE2cjE6BbYwUzEkBEw42FbraIc4z9e2VWFxWgk= -SHA256 (Pkgfile) = 1b8105108c8ced34c3d6cc6419a6172dbd40faf90a879f00c30a50237cf4f331 -SHA256 (.footprint) = 72701799e275382bd721a17b222cb0380dc536200dd967556b59b2cdd9fd65f8 -SHA256 (HyperKitty-1.3.8.tar.gz) = 8fffccadba2cfe0d4119e9c746639ee46bc0cdae67bbf99c84081d2d0bbd87b8 +RWSagIOpLGJF32iqNqxG31KPi8RC5v9KLGAS7Xr+Fqwqi0j8HrG7lq3obs9T00pbSRwT98301NDDQGzqONO53YQaUxjQhld6Yww= +SHA256 (Pkgfile) = c44f02c4f6a6083d7550548190a5dacf1fa3a6da279802361cea2bcd33480736 +SHA256 (.footprint) = 5cebe2fbe43127d66de867daec13001b44027bbe2cbc78935ac21bb6bd227a43 +SHA256 (hyperkitty-1.3.9.tar.gz) = 05f842878cd971fc2821fb9b5bff8c5165f0875c85387fe3a5175076c8fa94c1 +SHA256 (hyperkitty-1.3.5-settings.patch) = 040dfb80da123bf86817fdf6e0b7c279941671a31d949c98a68f73ccae20d416 diff --git a/hyperkitty/Pkgfile b/hyperkitty/Pkgfile index f6303f99f..2bd5ef5e7 100644 --- a/hyperkitty/Pkgfile +++ b/hyperkitty/Pkgfile @@ -5,13 +5,34 @@ # Optional: python3-django-debug-toolbar python3-elasticsearch python3-xapian-haystack name=hyperkitty -version=1.3.8 +version=1.3.9 release=1 -source=(https://pypi.org/packages/source/H/HyperKitty/HyperKitty-$version.tar.gz) +source=(https://pypi.org/packages/source/h/hyperkitty/hyperkitty-$version.tar.gz + hyperkitty-1.3.5-settings.patch) build() { - cd HyperKitty-$version + cd hyperkitty-$version + + local site_packages=$(python -c "import site; print(site.getsitepackages()[0])") + patch -Np1 -i $SRC/hyperkitty-1.3.5-settings.patch + touch settings_local.py /usr/bin/python3 -m build --wheel --skip-dependency-check --no-isolation /usr/bin/python3 -m installer --compile-bytecode 2 --destdir=$PKG dist/*.whl + + rm -rfv $PKG/$site_packages/example_project/ + rm -rfv $PKG/$site_packages/$name/tests/ + + install -vDm 644 -o hyperkitty example_project/{__init__,manage,settings,wsgi}.py -t $PKG/usr/share/webapps/$name + ln -svf /var/lib/$name/locale/ $PKG/usr/share/webapps/$name + ln -svf /var/lib/$name/static/ $PKG/usr/share/webapps/$name + # state dir + install -vdm 750 $PKG/var/lib/$name/data + install -vdm 755 $PKG/var/lib/$name/{locale,static} + # log dir + install -vdm 750 $PKG/var/log/$name + # config + install -vDm 640 settings_local.py example_project/urls.py -t $PKG/etc/webapps/$name + ln -svf /etc/webapps/$name/settings_local.py $PKG/usr/share/webapps/$name/settings_local.py + ln -svf /etc/webapps/$name/urls.py $PKG/usr/share/webapps/$name/urls.py } diff --git a/hyperkitty/hyperkitty-1.3.5-settings.patch b/hyperkitty/hyperkitty-1.3.5-settings.patch new file mode 100644 index 000000000..74c794dc8 --- /dev/null +++ b/hyperkitty/hyperkitty-1.3.5-settings.patch @@ -0,0 +1,96 @@ +diff --git i/example_project/settings.py w/example_project/settings.py +index 6a3af404..a184b08c 100644 +--- i/example_project/settings.py ++++ w/example_project/settings.py +@@ -9,15 +9,10 @@ For the full list of settings and their values, see + https://docs.djangoproject.com/en/1.8/ref/settings/ + """ + +-# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +-import os +- + # Compatibility with Bootstrap 3 + from django.contrib.messages import constants as messages # flake8: noqa + + +-BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +- + # SECURITY WARNING: keep the secret key used in production secret! + SECRET_KEY = 'change-this-on-your-production-server' + +@@ -80,7 +75,7 @@ INSTALLED_APPS = ( + 'allauth.socialaccount.providers.stackexchange', + + # Dev only dependencies. Do not include in any production site. +- 'debug_toolbar', ++ # 'debug_toolbar', + ) + + +@@ -88,7 +83,7 @@ MIDDLEWARE = ( + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + # NOTE: Do not include DebugToolbarMiddleware in any production site. +- 'debug_toolbar.middleware.DebugToolbarMiddleware', ++ # 'debug_toolbar.middleware.DebugToolbarMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', +@@ -134,7 +129,7 @@ DATABASES = { + # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'ENGINE': 'django.db.backends.sqlite3', + # DB name or path to database file if using sqlite3. +- 'NAME': os.path.join(BASE_DIR, 'hyperkitty.db'), ++ 'NAME': '/var/lib/hyperkitty/data/hyperkitty.db', + # The following settings are not used with sqlite3: + 'USER': 'hyperkitty', + 'PASSWORD': 'hkpass', +@@ -205,7 +200,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 = '/var/lib/hyperkitty/static' + + # URL prefix for static files. + # Example: "http://example.com/static/", "http://static.example.com/" +@@ -318,7 +313,8 @@ COMPRESS_PRECOMPILERS = ( + # recompiled on each requests. It means running an additional "compress" + # management command after each code upgrade. + # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression +-# COMPRESS_OFFLINE = True ++COMPRESS_OFFLINE = True ++COMPRESS_ENABLED = True + + # Needed for debug mode + INTERNAL_IPS = ('127.0.0.1',) +@@ -330,7 +326,7 @@ INTERNAL_IPS = ('127.0.0.1',) + HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', +- 'PATH': os.path.join(BASE_DIR, "fulltext_index"), ++ 'PATH': "/var/lib/hyperkitty/fulltext_index", + # You can also use the Xapian engine, it's faster and more accurate, + # but requires another library. + # http://django-haystack.readthedocs.io/en/v2.4.1/installing_search_engines.html#xapian +@@ -386,7 +382,7 @@ LOGGING = { + 'level': 'INFO', + #'class': 'logging.handlers.RotatingFileHandler', + 'class': 'logging.handlers.WatchedFileHandler', +- 'filename': os.path.join(BASE_DIR, 'hyperkitty.log'), ++ 'filename': '/var/log/hyperkitty/hyperkitty.log', + 'formatter': 'verbose', + }, + 'console': { +@@ -444,9 +440,9 @@ CACHES = { + # When DEBUG is True, don't actually send emails to the SMTP server, just store + # them in a directory. This way you won't accidentally spam your mailing-lists + # while you're fiddling with the code. +-if DEBUG == True: ++if DEBUG: + EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' +- EMAIL_FILE_PATH = os.path.join(BASE_DIR, 'emails') ++ EMAIL_FILE_PATH = '/var/lib/hyperkitty/emails' + + + # diff --git a/hyperkitty/pre-install b/hyperkitty/pre-install new file mode 100755 index 000000000..17496eddb --- /dev/null +++ b/hyperkitty/pre-install @@ -0,0 +1,9 @@ +#!/bin/sh -e + +_USER=hyperkitty +_HOME=/var/lib/hyperkitty +_GROUP=hyperkitty + +/usr/bin/getent group $_GROUP > /dev/null 2>&1 || /usr/sbin/groupadd $_GROUP +/usr/bin/getent passwd $_USER > /dev/null 2>&1 || /usr/sbin/useradd -c 'hyperkitty system user' -g $_GROUP -d $_HOME -s /bin/false $_USER +passwd -l $_USER > /dev/null