From 44b781294992790f17d88786530f63f9b3fdda8b Mon Sep 17 00:00:00 2001
From: adamoutler <adamoutler>
Date: Sat, 4 Mar 2023 18:34:29 +0000
Subject: [PATCH] add system service

---
 system/etc/init.d/piston | 76 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 system/etc/init.d/piston

diff --git a/system/etc/init.d/piston b/system/etc/init.d/piston
new file mode 100644
index 0000000..4c44f00
--- /dev/null
+++ b/system/etc/init.d/piston
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          exampledaemon
+# Required-Start:    $local_fs $network $syslog
+# Required-Stop:     $local_fs $network $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Example
+# Description:       Example start-stop-daemon - Debian
+### END INIT INFO
+
+NAME="Piston Service"
+PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
+APPDIR="/root"
+APPBIN="/root/S99piston"
+APPARGS=""
+USER="root"
+GROUP="root"
+
+# Include functions
+set -e
+. /lib/lsb/init-functions
+
+start() {
+  printf "Starting '$NAME'... "
+  start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --chdir "$APPDIR" --exec "$APPBIN" -- $APPARGS || true
+  printf "done\n"
+}
+
+#We need this function to ensure the whole process tree will be killed
+killtree() {
+    local _pid=$1
+    local _sig=${2-TERM}
+    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
+        killtree ${_child} ${_sig}
+    done
+    kill -${_sig} ${_pid}
+}
+
+stop() {
+  printf "Stopping '$NAME'... "
+  [ -z `cat /var/run/$NAME.pid 2>/dev/null` ] || \
+  while test -d /proc/$(cat /var/run/$NAME.pid); do
+    killtree $(cat /var/run/$NAME.pid) 15
+    sleep 0.5
+  done
+  [ -z `cat /var/run/$NAME.pid 2>/dev/null` ] || rm /var/run/$NAME.pid
+  printf "done\n"
+}
+
+status() {
+  status_of_proc -p /var/run/$NAME.pid "" $NAME && exit 0 || exit $?
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  restart)
+    stop
+    start
+    ;;
+  status)
+    status
+    ;;
+  *)
+    echo "Usage: $NAME {start|stop|restart|status}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
\ No newline at end of file