asu: improve packaging
authorDaniel Golle <daniel@makrotopia.org>
Fri, 8 Mar 2019 03:21:45 +0000 (04:21 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 8 Mar 2019 03:26:31 +0000 (04:26 +0100)
 * use gunicorn instead of Flask for main server threads
 * generate and deploy random database password
 * provide distribution files

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
devel/asu/Makefile
devel/asu/files/asu.defaults
devel/asu/files/asu.init

index b7da2dc2b546bebc58e462e3c849045650f7cdd7..4f9076649b4626ddf2600f26c4c5279bb784e16a 100644 (file)
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=asu
 PKG_VERSION:=0.2.3
-PKG_RELEASE=1
+PKG_RELEASE=2
 
 PKG_LICENSE:=GPL-3.0
 
@@ -37,7 +37,7 @@ define Package/asu
     URL:=http://github.com/aparcar/gsoc17-attended-sysupgrade/
     DEPENDS:=$(IMAGEBUILDER_DEPENDS) +pgsql-server +psqlodbcw \
              +python3-ctypes +python3-distutils +python3-flask \
-             +python3-openssl +python3-pyodbc +python3-yaml \
+             +gunicorn +python3-openssl +python3-pyodbc +python3-yaml \
              +libustream-mbedtls +ca-certificates +gnupg
     USERID:=asu:asu
     VARIANT:=python3
index 8fb2d7ea0957cd002ef1523bb33a93a62b97b940..04fdf07221d83382737666b8f9dd62594dc2ee4b 100644 (file)
@@ -1,15 +1,22 @@
 #!/bin/sh
 
-asu_tables="$(ls -1 /usr/lib/*/site-packages/asu/utils/tables.sql | head -n 1)"
+asu_password=$(dd if=/dev/urandom bs=16 count=1 2>/dev/null | sha256sum | cut -d' ' -f1)
+asu_tables="$(ls -1 /usr/lib/python*/site-packages/asu/utils/tables.sql | head -n 1)"
+
 uci -q batch <<EOF
        del postgresql.asu
        set postgresql.asu=postgres-db
        set postgresql.asu.name=asu
        set postgresql.asu.user=asu
-       set postgresql.asu.pass=password
+       set postgresql.asu.pass='$asu_password'
        set postgresql.asu.script='$asu_tables'
        commit postgresql
 EOF
 
-sed -i 's/database_user:.*/database_user: asu/' /etc/asu/config.yml
-sed -i 's/database_pass:.*/database_pass: asu/' /etc/asu/config.yml
+sed -i "s/database_user.*/database_user: asu/" /etc/asu/config.yml
+sed -i "s/database_pass.*/database_pass: $asu_password/" /etc/asu/config.yml
+
+cp -r /usr/lib/python*/site-packages/asu/utils/distributions /etc/asu/
+
+chown -R root:asu /etc/asu
+chmod -R g+rX /etc/asu
index f022e7ff09f65c0026f4eb4ab34c7beca7c0d135..069c0e716eda70ce4568e3fda6fa4914695ac769 100644 (file)
@@ -26,15 +26,14 @@ start_service() {
     FLASK_APP=asu $PROG loaddb
 
     procd_open_instance asu_main
-#    procd_set_param user asu
-#    procd_set_param group asu
-    procd_set_param env FLASK_APP=asu
-    procd_set_param command $PROG run
+    procd_set_param user asu
+    procd_set_param group asu
+    procd_set_param command gunicorn asu:app
     procd_close_instance
 
     procd_open_instance main_worker
-#    procd_set_param user asu
-#    procd_set_param group asu
+    procd_set_param user asu
+    procd_set_param group asu
     procd_set_param env FLASK_APP=asu
     procd_set_param command $PROG run_worker
     procd_close_instance