From ec184e0c14edb177ff86c499bb13d0a1735c07fb Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@freedombone.net> Date: Sat, 25 Nov 2017 21:06:27 +0000 Subject: [PATCH] Move icecast to systemd --- src/freedombone-app-icecast | 131 +++++++++++++----------------------- 1 file changed, 46 insertions(+), 85 deletions(-) diff --git a/src/freedombone-app-icecast b/src/freedombone-app-icecast index 75147f28d..a4b7cb96d 100755 --- a/src/freedombone-app-icecast +++ b/src/freedombone-app-icecast @@ -49,89 +49,47 @@ icecast_variables=(MY_USERNAME DEFAULT_LANGUAGE) function icecast_update_daemon { - echo '#! /bin/sh' > /etc/init.d/icecast2 - echo '#' >> /etc/init.d/icecast2 - echo '# icecast2' >> /etc/init.d/icecast2 - echo '#' >> /etc/init.d/icecast2 - echo '# Written by Miquel van Smoorenburg <miquels@cistron.nl>.' >> /etc/init.d/icecast2 - echo '# Modified for Debian' >> /etc/init.d/icecast2 - echo '# by Ian Murdock <imurdock@gnu.ai.mit.edu>.' >> /etc/init.d/icecast2 - echo '#' >> /etc/init.d/icecast2 - echo '# Further modified by Keegan Quinn <ice@thebasement.org>' >> /etc/init.d/icecast2 - echo '# for use with Icecast 2' >> /etc/init.d/icecast2 - echo '#' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' >> /etc/init.d/icecast2 - echo 'DAEMON=/usr/bin/icecast2' >> /etc/init.d/icecast2 - echo 'NAME=icecast2' >> /etc/init.d/icecast2 - echo 'DESC=icecast2' >> /etc/init.d/icecast2 - echo 'ICES=/usr/bin/ices2' >> /etc/init.d/icecast2 - echo 'ICES_CONFIGFILE=/etc/ices2/ices-playlist.xml' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'test -x $DAEMON || exit 0' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo '# Defaults' >> /etc/init.d/icecast2 - echo 'CONFIGFILE="/etc/icecast2/icecast.xml"' >> /etc/init.d/icecast2 - echo 'CONFIGDEFAULTFILE="/etc/default/icecast2"' >> /etc/init.d/icecast2 - echo 'USERID=icecast2' >> /etc/init.d/icecast2 - echo 'GROUPID=icecast' >> /etc/init.d/icecast2 - echo 'ENABLE="false"' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo '# Reads config file (will override defaults above)' >> /etc/init.d/icecast2 - echo '[ -r "$CONFIGDEFAULTFILE" ] && . $CONFIGDEFAULTFILE' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'if [ "$ENABLE" != "true" ]; then' >> /etc/init.d/icecast2 - echo ' echo "$NAME daemon disabled - read $CONFIGDEFAULTFILE."' >> /etc/init.d/icecast2 - echo ' exit 0' >> /etc/init.d/icecast2 - echo 'fi' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'set -e' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'case "$1" in' >> /etc/init.d/icecast2 - echo ' start)' >> /etc/init.d/icecast2 - echo ' echo -n "Starting $DESC: "' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \' >> /etc/init.d/icecast2 - echo ' --exec $DAEMON -- -b -c $CONFIGFILE' >> /etc/init.d/icecast2 - echo ' sleep 3' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --start --quiet --exec $ICES $ICES_CONFIGFILE' >> /etc/init.d/icecast2 - echo ' echo "$NAME."' >> /etc/init.d/icecast2 - echo ' ;;' >> /etc/init.d/icecast2 - echo ' stop)' >> /etc/init.d/icecast2 - echo ' echo -n "Stopping $DESC: "' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --oknodo --quiet --exec $ICES' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --oknodo --quiet --exec $DAEMON' >> /etc/init.d/icecast2 - echo ' echo "$NAME."' >> /etc/init.d/icecast2 - echo ' ;;' >> /etc/init.d/icecast2 - echo ' reload|force-reload)' >> /etc/init.d/icecast2 - echo ' echo "Reloading $DESC configuration files."' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --oknodo --quiet --exec $ICES' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON' >> /etc/init.d/icecast2 - echo ' sleep 3' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --start --quiet --exec $ICES $ICES_CONFIGFILE' >> /etc/init.d/icecast2 - echo ' ;;' >> /etc/init.d/icecast2 - echo ' restart)' >> /etc/init.d/icecast2 - echo ' echo -n "Restarting $DESC: "' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --oknodo --quiet --exec $ICES' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --stop --oknodo --quiet --exec $DAEMON' >> /etc/init.d/icecast2 - echo ' sleep 3' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \' >> /etc/init.d/icecast2 - echo ' --exec $DAEMON -- -b -c $CONFIGFILE' >> /etc/init.d/icecast2 - echo ' sleep 3' >> /etc/init.d/icecast2 - echo ' start-stop-daemon --start --quiet --exec $ICES $ICES_CONFIGFILE' >> /etc/init.d/icecast2 - echo ' echo "$NAME."' >> /etc/init.d/icecast2 - echo ' ;;' >> /etc/init.d/icecast2 - echo ' *)' >> /etc/init.d/icecast2 - echo ' echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2' >> /etc/init.d/icecast2 - echo ' exit 1' >> /etc/init.d/icecast2 - echo ' ;;' >> /etc/init.d/icecast2 - echo 'esac' >> /etc/init.d/icecast2 - echo '' >> /etc/init.d/icecast2 - echo 'exit 0' >> /etc/init.d/icecast2 + systemctl stop icecast2 + if [ -f /etc/init.d/icecast2 ]; then + rm /etc/init.d/icecast2 + fi + + echo '[Unit]' > /etc/systemd/system/icecast2.service + echo 'Description=Icecast' >> /etc/systemd/system/icecast2.service + echo 'After=network.target' >> /etc/systemd/system/icecast2.service + echo 'After=tor.service' >> /etc/systemd/system/icecast2.service + echo '' >> /etc/systemd/system/icecast2.service + echo '[Service]' >> /etc/systemd/system/icecast2.service + echo 'User=icecast2' >> /etc/systemd/system/icecast2.service + echo 'Group=icecast' >> /etc/systemd/system/icecast2.service + echo "ExecStart=/usr/bin/icecast2 -c /etc/icecast2/icecast.xml" >> /etc/systemd/system/icecast2.service + echo 'Restart=on-failure' >> /etc/systemd/system/icecast2.service + echo 'RestartSec=10' >> /etc/systemd/system/icecast2.service + echo '' >> /etc/systemd/system/icecast2.service + echo '[Install]' >> /etc/systemd/system/icecast2.service + echo 'WantedBy=multi-user.target' >> /etc/systemd/system/icecast2.service + + echo '[Unit]' > /etc/systemd/system/ices2.service + echo 'Description=Icecast' >> /etc/systemd/system/ices2.service + echo 'After=network.target' >> /etc/systemd/system/ices2.service + echo 'After=tor.service' >> /etc/systemd/system/ices2.service + echo 'After=icecast2.service' >> /etc/systemd/system/ices2.service + echo '' >> /etc/systemd/system/ices2.service + echo '[Service]' >> /etc/systemd/system/ices2.service + echo 'User=icecast2' >> /etc/systemd/system/ices2.service + echo 'Group=icecast' >> /etc/systemd/system/ices2.service + echo "ExecStart=/usr/bin/ices2 /etc/ices2/ices-playlist.xml" >> /etc/systemd/system/ices2.service + echo 'Restart=on-failure' >> /etc/systemd/system/ices2.service + echo 'RestartSec=10' >> /etc/systemd/system/ices2.service + echo '' >> /etc/systemd/system/ices2.service + echo '[Install]' >> /etc/systemd/system/ices2.service + echo 'WantedBy=multi-user.target' >> /etc/systemd/system/ices2.service systemctl daemon-reload + systemctl enable icecast2 + systemctl enable ices2 systemctl restart icecast2 + systemctl restart ices2 } function change_password_icecast { @@ -169,7 +127,7 @@ function icecast_convert_files { echo $'Converting any mp4 files to ogv format' find . -type f -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -c:a libvorbis -q:a 4 "${f/%mp4/ogv}' '{}' \; - chown -R icecast2:icecast2 $ICECAST_DIR + chown -R icecast2:icecast $ICECAST_DIR } function icecast_add_file_to_playlist { @@ -192,7 +150,7 @@ function icecast_add_file_to_playlist { fi done - chown icecast2:icecast2 $ICECAST_PLAYLIST_FILE + chown icecast2:icecast $ICECAST_PLAYLIST_FILE systemctl restart icecast2 } @@ -426,7 +384,7 @@ function restore_local_icecast { fi cp $ICECAST_DIR/.icepasswd /etc/nginx/.icepasswd rm $ICECAST_DIR/.icepasswd - chown -R icecast2:icecast2 $ICECAST_DIR + chown -R icecast2:icecast $ICECAST_DIR systemctl start icecast2 rm -rf $temp_restore_dir @@ -462,7 +420,7 @@ function restore_remote_icecast { fi cp $ICECAST_DIR/.icepasswd /etc/nginx/.icepasswd rm $ICECAST_DIR/.icepasswd - chown -R icecast2:icecast2 $ICECAST_DIR + chown -R icecast2:icecast $ICECAST_DIR systemctl start icecast2 rm -rf $temp_restore_dir @@ -646,7 +604,7 @@ function install_icecast { if [ ! -d $ICECAST_DIR ]; then mkdir $ICECAST_DIR fi - chown -R icecast2:icecast2 $ICECAST_DIR + chown -R icecast2:icecast $ICECAST_DIR # create a password for users @@ -663,6 +621,9 @@ function install_icecast { ${PROJECT_NAME}-pass -u $MY_USERNAME -a icecast -p "$ICECAST_PASSWORD" ${PROJECT_NAME}-pass -u $MY_USERNAME -a icecastuser -p "$ICECAST_USER_PASSWORD" + groupadd icecast + useradd -c "Icecast system account" -d /etc/icecast2 -m -r -g icecast icecast2 + icecast_update_daemon nginx_ensite icecast systemctl restart nginx -- GitLab