Jelajahi Sumber

Scripts and service units for autostarting CronAlarm

Lukas Angerer 1 tahun lalu
induk
melakukan
6338395691

+ 5 - 0
scripts/cron-api.py

@@ -1,6 +1,7 @@
 #!/usr/bin/python3
 
 import os
+import subprocess
 from flask import Flask, Response, json, request
 from cron.Parser import Parser
 
@@ -25,4 +26,8 @@ def set_section(name):
     return Response(cronFile.get_section(name), mimetype="text/plain")
 
 if __name__ == "__main__":
+    print("Running as user:")
+    subprocess.run("whoami")
+    print("Checking crontab access with 'crontab -l'")
+    print(subprocess.run(["crontab", "-l"], capture_output = True, text = True).stdout.count('\n'))
     api.run(host = "0.0.0.0", port = 5000)

+ 22 - 0
scripts/mopidy-init.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# enable Job Control
+set -m
+
+mopidy -q &
+
+until mpc version
+do
+	echo "waiting for mopidy to become available..."
+	sleep 1
+done
+
+mpc load JM
+mpc playlist
+mpc random on
+mpc next
+mpc current
+
+# get mopidy to the foreground
+fg
+

+ 24 - 0
service-units/cron-alarm.service

@@ -0,0 +1,24 @@
+[Unit]
+Description=CronAlarm Web UI
+# user services CANNOT reference system services
+#Requires=docker.service
+#After=docker.service
+
+[Service]
+Restart=always
+# Shutdown container (if running) when unit is stopped
+ExecStartPre=/usr/bin/docker compose -f %h/projects/CronAlarm/docker-compose.yml down -v
+# Start container when unit is started
+ExecStart=/usr/bin/docker compose -f %h/projects/CronAlarm/docker-compose.yml up
+# Stop container when unit is stopped
+ExecStop=/usr/bin/docker compose -f %h/projects/CronAlarm/docker-compose.yml down -v
+
+# Hardening
+ProtectSystem=full
+PrivateTmp=true
+SystemCallArchitectures=native
+MemoryDenyWriteExecute=true
+NoNewPrivileges=true
+
+[Install]
+WantedBy=default.target

+ 14 - 0
service-units/cron-api.service

@@ -0,0 +1,14 @@
+[Unit]
+Description=CronAlarm Host API
+
+[Service]
+Type=simple
+Restart=always
+ExecStart= %h/projects/CronAlarm/scripts/cron-api.py
+
+# Hardening
+#MemoryDenyWriteExecute=true
+#NoNewPrivileges=true
+
+[Install]
+WantedBy=default.target

+ 12 - 0
service-units/mopidy.service

@@ -0,0 +1,12 @@
+[Unit]
+Description=Mopidy Server
+
+[Service]
+Type=simple
+Restart=always
+ExecStart= %h/projects/CronAlarm/scripts/mopidy-init.sh
+
+# No hardening since Mopidy has to load plugins and such
+
+[Install]
+WantedBy=default.target