Skip to content

Instantly share code, notes, and snippets.

@uniacid
Forked from phracker/autodl-irssi
Created January 13, 2017 18:48
Show Gist options
  • Save uniacid/5a3a0734c4f106396e8582deca22a5b8 to your computer and use it in GitHub Desktop.
Save uniacid/5a3a0734c4f106396e8582deca22a5b8 to your computer and use it in GitHub Desktop.
A system init script for autodl-irssi
#!/bin/sh
# https://github.com/phracker
#
# AutoDL-Irssi Init Script
# Tested on Debian 7 (Wheezy)
# Instructions:
# - Install / configure irssi + autodl-irssi (duh)
# - Save this script as /etc/init.d/autodl-irssi
# - `chmod +x /etc/init.d/autodl-irssi`
# - `insserv autodl-irssi`
# - Enjoy!
#
# select user to run screen / irssi as
user="root"
# set of options to run with
options=""
# default directory for screen, needs to be an absolute path
base="`su -c 'echo $HOME' $user`"
# name of screen session
srnname="autodl-irssi"
# file to log to (makes for easier debugging if something goes wrong)
logfile="/var/log/autodl-init.log"
PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
DESC="IRC BitTorrent AutoDL"
NAME="autodl-irssi"
DAEMON=irssi
SCRIPTNAME=/etc/init.d/autodl-irssi
checkcnfg() {
exists=0
for i in `echo "$PATH" | tr ':' '\n'` ; do
if [ -f $i/$DAEMON ] ; then
exists=1
break
fi
done
if [ $exists -eq 0 ] ; then
echo "cannot find irssi binary in PATH $PATH" | tee -a "$logfile" >&2
exit 3
fi
}
d_start() {
[ -d "${base}" ] && cd "${base}"
stty stop undef && stty start undef
su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "screen -dm -S ${srnname} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
su -c "screen -S "${srnname}" -X screen irssi ${options} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
}
d_stop() {
pid=`ps a | grep irssi | grep -v grep | cut -f2 -d" "`
screen_no=`screen -ls | grep "autodl-irssi" | cut -f1 -d"." | sed "s/\t//g" | sed "s/ //g"`
if [ -z "$pid" ]; then
echo "No instance of irssi found."
break
elif ps -A | grep -sq ${pid}.*irssi ; then # make sure the pid doesn't belong to another process
kill -s INT ${pid}
elif [ -n "$screen_no" ]; then
screen -X -S $screen_no quit
fi
}
checkcnfg
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1s
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment