diff options
Diffstat (limited to 'net/teamspeak-server/files/teamspeak.sh')
-rw-r--r-- | net/teamspeak-server/files/teamspeak.sh | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/net/teamspeak-server/files/teamspeak.sh b/net/teamspeak-server/files/teamspeak.sh new file mode 100644 index 00000000000..a68d5f5d6ff --- /dev/null +++ b/net/teamspeak-server/files/teamspeak.sh @@ -0,0 +1,119 @@ +#!@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 |