#!/bin/bash
# Mini Script zum Starten und Stoppen von Diensten
# im Stil der alten rc-Kommandos
# (c) 2013 - Stefan Schäfer - invis-server.org

# License: GPLv3
# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der 
# GNU General Public License, wie von der Free Software Foundation veröffentlicht,
# weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder
# (nach Ihrer Option) jeder späteren Version.

# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
# von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite 
# Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 
# Details finden Sie in der GNU General Public License.

# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem 
# Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. 

# Eingabe pruefen
usage() {
	echo "Befehlszeile: rc {start|stop|reload|restart|status} servicename"
	exit
}

sctl() {
	# Systemd Aufruf
	systemctl $1 $2.service
	exitcode=${?}
}


if [[ -z $1 || -z $2 ]]; then
	usage
fi

service="$1"
command="$2"

case "$command" in

"start")
	sctl $command $service
	if [[ $exitcode == 0 ]]; then
		echo -e "Dienst $service \033[32merfolgreich\033[0m gestartet"
	else
		echo -e "Start des Dienstes \033[31mfehlgeschlagen\033[0m"
		echo -e "Journal des systemd wird angezeigt, verlassen mit \"Q\"\n"
		sleep 3
		journalctl -n
	fi
	;;
"stop")
	sctl $command $service
	if [[ $exitcode == 0 ]]; then
		echo -e "Dienst $service \033[32merfolgreich\033[0m beendet" 
	else
		echo -e "Beenden des Dienstes \033[31mfehlgeschlagen\033[0m"
		echo -e "Journal des systemd wird angezeigt, verlassen mit \"Q\"\n"
		sleep 3
		journalctl -n
	fi
	;;
"reload")
	sctl $command $service
	if [[ $exitcode == 0 ]]; then
		echo -e "Dienst $service hat seine Konfiguration \033[32merfolgreich\033[0m neu geladen" 
	else
		echo -e "Neuladen des Dienstes \033[31mfehlgeschlagen\033[0m"
		echo -e "Journal des systemd wird angezeigt, verlassen mit \"Q\"\n"
		sleep 3
		journalctl -n
	fi
	;;
"restart")
	sctl $command $service
	if [[ $exitcode == 0 ]]; then
		echo -e "Dienst $service \033[32merfolgreich\033[0m neu gestartet"
	else
		echo -e "Neustart des Dienstes \033[31mfehlgeschlagen\033[0m"
		echo -e "Journal des systemd wird angezeigt, verlassen mit \"Q\"\n"
		sleep 3
		journalctl -n
	fi
	;;
"status")
	sctl $command $service
	;;
*)
	usage
	;;
esac
