From da04c1d3ff134f93272636d6282cd4a1a5a74eaf Mon Sep 17 00:00:00 2001
From: nd <git@notandy.de>
Date: Sat, 31 Jul 2021 22:59:03 +0200
Subject: [PATCH] add uffd-admin command, cleanup cronjob and needed /run
 folder

---
 .gitlab-ci.yml            |  1 +
 debian/contrib/uffd-admin | 17 +++++++++++++++++
 debian/cron.d             |  3 +++
 debian/install            |  7 ++++---
 debian/tmpfile            |  2 ++
 5 files changed, 27 insertions(+), 3 deletions(-)
 create mode 100755 debian/contrib/uffd-admin
 create mode 100644 debian/cron.d
 create mode 100644 debian/tmpfile

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 022ed526..869d5225 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -124,6 +124,7 @@ test:package:apt:
   - echo "server { listen 127.0.0.1:5000 default_server;  include /etc/uffd/nginx.include.conf; }" > /etc/nginx/sites-enabled/uffd.ini
   - service nginx start || ( service nginx status; nginx -t; exit 1; )
   - sleep 5
+  - uffd-admin routes
   - curl -Lv 127.0.0.1:5000
   dependencies:
   - build:apt
diff --git a/debian/contrib/uffd-admin b/debian/contrib/uffd-admin
new file mode 100755
index 00000000..5e214e07
--- /dev/null
+++ b/debian/contrib/uffd-admin
@@ -0,0 +1,17 @@
+#!/bin/bash -x
+
+set -e
+
+export FLASK_APP=/usr/share/uffd/uffd
+export CONFIG_FILENAME=/etc/uffd/uffd.cfg
+
+if [ "$(whoami)" = "uffd" ]; then
+	flask $@
+elif command -v sudo &> /dev/null; then
+	exec sudo --preserve-env=FLASK_APP,CONFIG_FILENAME -u uffd flask $@
+elif command -v su &> /dev/null; then
+	exec su -s /bin/sh --preserve-environment uffd -c flask $@
+else
+	echo "Could not not become 'uffd' user, exiting"
+	exit 255
+fi
diff --git a/debian/cron.d b/debian/cron.d
new file mode 100644
index 00000000..4b9e06d0
--- /dev/null
+++ b/debian/cron.d
@@ -0,0 +1,3 @@
+# Cronjobs for uffd
+
+@daily	uffd	[ -f /usr/bin/uffd-admin ] && flock -n /var/run/uffd/cron.roles-update-all.lock /usr/bin/uffd-admin roles-update-all --check-only 2> /dev/null
diff --git a/debian/install b/debian/install
index 7d684bb9..ac4a56f2 100644
--- a/debian/install
+++ b/debian/install
@@ -1,3 +1,4 @@
-uwsgi.ini		/etc/uffd/
-nginx.include.conf	/etc/uffd/
-debian/uffd.cfg		/etc/uffd/
+uwsgi.ini			/etc/uffd/
+nginx.include.conf		/etc/uffd/
+debian/uffd.cfg			/etc/uffd/
+debian/contrib/uffd-admin	/usr/bin/
diff --git a/debian/tmpfile b/debian/tmpfile
new file mode 100644
index 00000000..8b1b0db1
--- /dev/null
+++ b/debian/tmpfile
@@ -0,0 +1,2 @@
+#Type Path         Mode UID      GID      Age Argument
+d    /run/uffd     0755 uffd     uffd     -   -
-- 
GitLab