summaryrefslogtreecommitdiffstats
path: root/skripti/init_script_interpreter.sh
diff options
context:
space:
mode:
Diffstat (limited to 'skripti/init_script_interpreter.sh')
-rwxr-xr-xskripti/init_script_interpreter.sh115
1 files changed, 115 insertions, 0 deletions
diff --git a/skripti/init_script_interpreter.sh b/skripti/init_script_interpreter.sh
new file mode 100755
index 0000000..fc461ce
--- /dev/null
+++ b/skripti/init_script_interpreter.sh
@@ -0,0 +1,115 @@
+#!/bin/bash
+set -eo pipefail
+name=`rev <<<$1 | cut -d/ -f1 | rev`
+SVCNAME=$name
+pidfile=/run/user/`id -u`/$name.pid
+[ -w /run/user/`id -u`/log ] && stdout_logger="logger --socket /run/user/`id -u`/log" || stdout_logger=logger # failback to logging to syslog
+stderr_logger=$stdout_logger
+[ -r `sed s,/init.d/,/conf.d/, <<<$1` ] && . `sed s,/init.d/,/conf.d/, <<<$1`
+. $1
+type eerror > /dev/null 2> /dev/null || eerror() {
+ echo NAPAKA: $@
+}
+type ewarn > /dev/null 2> /dev/null || ewarn() {
+ echo OPOZORILO: $@
+}
+type einfo > /dev/null 2> /dev/null || einfo () {
+ echo INFO: $@
+}
+type ebegin > /dev/null 2> /dev/null || ebegin() {
+ echo ZAČENJAM: $@
+}
+type need_net > /dev/null 2> /dev/null || need_net() {
+ [ `ip a | grep ^[[:digit:]] | wc -l` -gt 1 ] || { eerror "Ni omrežnih vmesnikov poleg lo." && return 1; }
+ [ `ip route | wc -l` -gt 1 ] || { eerror "Usmerjevalna tabela je prazna." && return 1; }
+}
+type need_clock > /dev/null 2> /dev/null || need_clock() {
+ year=`date +%Y`
+ [ $? -eq 0 ] || { eerror "Ura ne deluje." && return 1; }
+ [ $year -ge 2024 ] || { eerror "Ura je narobe nastavljena." && return 1; }
+}
+type need_hostname > /dev/null 2> /dev/null || need_hostname() {
+ hn=`hostname`
+ [ $? -eq 0 ] || { eerror "Ni mogoče pridobiti imena gostitelja." && return 1; }
+ [ x$hn = x ] && { eerror "Ni imena gostitelja" && return 1; }
+ [ x$hn = xlocalhost ] && { eerror "Ime gostitelja je localhost." && return 1; }
+ return 0
+}
+needs=
+needs_izpolnjen=0
+type need > /dev/null 2> /dev/null || need() {
+ for i in $@
+ do
+ needs="$needs $i"
+ need_$i || { eerror "Odvisnost $i ni izpolnjena." && needs_izpolnjen=1; }
+ done
+}
+provides=
+type provide > /dev/null 2> /dev/null || provide() {
+ for i in $@
+ do
+ provides="$provides $i"
+ done
+}
+type depend > /dev/null 2> /dev/null || depend() {
+ return
+}
+type check_dependencies > /dev/null 2> /dev/null || check_dependencies() {
+ depend
+ return $needs_izpolnjen
+}
+type needs > /dev/null 2> /dev/null || needs() {
+ depend
+ echo $needs
+}
+type provides > /dev/null 2> /dev/null || provides() {
+ depend
+ echo $provides
+}
+type checkconfig > /dev/null 2> /dev/null || checkconfig() {
+ return
+}
+type start > /dev/null 2> /dev/null || start() {
+ checkconfig || { eerror "Checkconfig ni uspel." && return 1; };
+ check_dependencies || { eerror "Odvisnosti niso izpolnjene."; return 1; }
+ ebegin "Zaganjam $SVCNAME"
+ start-stop-daemon --start --verbose `[ x$command_background = true ] || echo --background --make-pidfile` `[ x$chdir = x ] || echo --chdir $chdir` --stdout-logger "$stdout_logger" --stderr-logger "$stderr_logger" --exec $command --pidfile $pidfile -- $command_args || { eerror "start-stop-daemon ni uspel. Koda napake: $?"; return 1; }
+}
+type stop > /dev/null 2> /dev/null || stop() {
+ ebegin "Ustavljam $SVCNAME"
+ start-stop-daemon --stop --pidfile $pidfile --verbose --exec $command -- $command_args || { eerror "start-stop-daemon ni uspel. Koda napake: $?"; return 1; }
+}
+type restart > /dev/null 2> /dev/null || restart() {
+ checkconfig || { eerror "Checkconfig ni uspel." && return 1; };
+ stop || ewarn "Stop ni uspel. Vseeno poskušam zagnati storitev."
+ start || { eerror "Start ni uspel." && return 1; }
+}
+type reload > /dev/null 2> /dev/null || reload() {
+ checkconfig || { eerror "Checkconfig ni uspel." && return 1; };
+ ebegin "Pošiljam SIGHUP storitvi $SVCNAME"
+ start-stop-daemon --signal HUP $start_stop_daemon_args
+}
+type status > /dev/null 2> /dev/null || status() {
+ if [ -r $pidfile ]
+ then
+ if [ -d /proc/`cat $pidfile` ]
+ then
+ einfo started
+ else
+ einfo crashed
+ return 3
+ fi
+ else
+ einfo stopped
+ return 3
+ fi
+}
+type list > /dev/null 2> /dev/null || list() {
+ echo start stop restart $extra_commands $extra_started_commands $extra_stopped_commands status reload list check_dependencies needs provides
+}
+if type $2 > /dev/null 2> /dev/null
+then
+ ${@:2}
+else
+ eerror "Ta ukaz ne obstaja!"
+fi