2013-09-26 17:14:40 +02:00

120 lines
3.2 KiB
Bash

#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD: teamspeak.sh,v 1.1.1.1 2007/04/30 15:33:27 abs Exp $
#
# PROVIDE: teamspeak
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# You will need to set the following in /etc/rc.conf to start Teamspeak:
#
# teamspeak=YES
if [ -f /etc/rc.subr ]
then
. /etc/rc.subr
fi
name="teamspeak"
rcvar=$name
teamspeak_user="@TSUSER@"
eval teamspeak_home="~$teamspeak_user"
extra_commands="passwords status"
start_cmd="teamspeak_doit start"
status_cmd="teamspeak_doit status"
stop_cmd="teamspeak_doit stop"
passwords_cmd="teamspeak_doit passwords"
pidfile="$teamspeak_home/tsserver2.pid"
logfile=$teamspeak_home/server.log
SHARE=@PREFIX@/share/teamspeak-server
SERVER=@PREFIX@/lib/teamspeak-server/teamspeak-server
SERVER_ARGS="-ini=$teamspeak_home/server.ini -sql=$SHARE/sqlite_sql/ -httpdocs=$SHARE/httpdocs/ -tcpquerydocs=$SHARE/tcpquerydocs/ -db=$teamspeak_home/server.dbs -log=$logfile -pid=$pidfile -badnames=$teamspeak_home/badnames.txt"
teamspeak_doit()
{
case $1 in
start)
if [ ! -d "$teamspeak_home" -o ! -w "$teamspeak_home" ] ; then
echo "Unable to write to $teamspeak_home"
exit 1
fi
if [ -e $pidfile ]; then
echo "$pidfile already exists...server already started ?";
echo "If you are sure the server is not running, delete $pidfile"
exit 1
else
echo "starting the teamspeak2 server"
doit_command="$SERVER $SERVER_ARGS"
doit="@SU@ -m $teamspeak_user -c '${doit_command}'"
eval $doit
fi
;;
stop)
if [ -e $pidfile ]; then
echo -n "stopping the teamspeak2 server"
if ( kill -TERM `cat $pidfile` ); then
for c in $(seq 1 300); do
if [ -e $pidfile ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e $pidfile ]; then
echo "server does not shutdown cleanly - killing"
kill -KILL `cat $pidfile`
rm $pidfile
sleep 5
else
echo "done"
fi
else
echo "$pidfile is missing, no started server ?"
exit 7
fi
;;
status)
if [ -e $pidfile ]; then
pid=`cat $pidfile`
if kill -0 "$pid" ; then
echo "the server seems to be running: pid $pid"
exit 0
else
echo "the server seems to be stopped: pid $pid"
exit 3
fi
else
echo "the server seems to be stopped"
exit 3
fi
;;
passwords)
if [ -e $logfile ]; then
date=$(cat $logfile | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
spass=$(cat $logfile | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/")
pass=$(cat $logfile | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]\+\).*$/\1/")
echo "Following passwords were generated on $date"
echo "superadmin = \"$spass\""
echo "admin = \"$pass\""
else
echo "$logfile not found, maybe you did not start the server yet ?"
exit 1
fi
;;
esac
}
if [ -f /etc/rc.subr -a -f /etc/rc.conf -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]
then
load_rc_config $name
run_rc_command "$1"
else
teamspeak_doit "$1"
fi
# restart)
# $0 stop && $0 start || exit 1