filimonic

TS3S DEBIAN SQUEEZE INIT.D

Mar 20th, 2012
212
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides:          ts3-server
  5. # Required-Start:    $local_fs $remote_fs $network $syslog
  6. # Required-Stop:     $local_fs $remote_fs $network $syslog
  7. # Default-Start:     2 3 4 5
  8. # Default-Stop:      0 1 6
  9. # Short-Description: starts the teamspeak3-server
  10. # Description:       starts teamspeak3-server using start-stop-daemon
  11. ### END INIT INFO
  12.  
  13.  
  14. # Copyright (c) 2010 TeamSpeak Systems GmbH
  15. # All rights reserved
  16. # Modified by Alexey D. Filimonov [ alexey _A_T_ filimonic _dot_ net ]
  17.  
  18.  
  19. COMMANDLINE_PARAMETERS="${3}" #add any command line parameters you want to pass here
  20. D1=$(readlink -f "$0")
  21. DAEMONNAME="ts3-server"
  22. BINARYPATH="/usr/bin"
  23. SQLPATH="/usr/share/$DAEMONNAME/sql/"
  24. PIDFILE="/var/run/$DAEMONNAME.pid"
  25. cd "${BINARYPATH}"
  26. LIBRARYPATH="/usr/lib/$DAEMONNAME/"
  27. BINARYNAME="$DAEMONNAME"
  28. LOGPATH="/var/log/$DAEMONNAME/"
  29. LICENSEPATH="/etc/$DAEMONNAME/"
  30. INIPATH="/etc/$DAEMONNAME/$DAEMONNAME.ini"
  31. CMDLINEPATH="/etc/$DAEMONNAME/$DAEMONNAME.cmdlines"
  32. DEB_CMD="logpath=$LOGPATH dbsqlpath=$SQLPATH licensepath=$LICENSEPATH inifile=$INIPATH"
  33. WORKDIR="/var/$DAEMONNAME";
  34.  
  35. # READ CONFIG
  36. #CMD_PARAMS=$(cat $CMDLINEPATH | while read CMDLINE; do echo $CMDLINE;  done)
  37. CMD_PARAMS=` cat $CMDLINEPATH | { while read line ; do CMD_PARAMS="$CMD_PARAMS $line" ;  done ; echo $CMD_PARAMS; } `
  38.  
  39. /usr/sbin/adduser --system --no-create-home --shell /bin/true --group --disabled-password --disabled-login $DAEMONNAME > /dev/null
  40.  
  41. COMMANDLINE_PARAMETERS="${DEB_CMD} ${CMD_PARAMS} ${COMMANDLINE_PARAMETERS}"
  42. mkdir -p $LOGPATH > /dev/null
  43. mkdir -p $WORKDIR > /dev/null
  44.  
  45. chmod a+X /etc/$DAEMONNAME
  46. chmod -R u+r /etc/$DAEMONNAME
  47. chmod -R o+r /etc/$DAEMONNAME
  48. chmod -R g+r /etc/$DAEMONNAME
  49.  
  50. chmod -R u+rwX $SQLPATH
  51. chmod -R o+rX-w $SQLPATH
  52. chmod -R g+rX-w $SQLPATH
  53.  
  54. chown  $DAEMONNAME:$DAEMONNAME $LOGPATH
  55. chmod   u+rwX $LOGPATH
  56. chmod   o+rX-w $LOGPATH
  57. chmod   g+rX-w $LOGPATH
  58.  
  59. chown $DAEMONNAME:$DAEMONNAME $WORKDIR
  60. chmod   u+rwX $WORKDIR
  61. chmod   o-w $WORKDIR
  62. chmod   g-w $WORKDIR
  63.  
  64.  
  65. if [ "${2}" != "nodaemon" ]
  66.         then
  67.         DO_DAEMONIZE="YES"
  68.         fi
  69.  
  70. case "$1" in
  71.         start)
  72.                 if [ -e $PIDFILE ]; then
  73.                         if ( kill -0 $(cat $PIDFILE) 2> /dev/null ); then
  74.                                 echo "The server is already running, try restart or stop"
  75.                                 exit 1
  76.                         else
  77.                                 echo "$PIDFILE found, but no server running. Possibly your previously started server crashed"
  78.                                 echo "Please view the logfile for details."
  79.                                 rm $PIDFILE
  80.                         fi
  81.                 fi
  82.                 if [ "${UID}" = "0" ]; then
  83.                         echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
  84.                         c=1
  85.                         while [ "$c" -le 10 ]; do
  86.                                 echo -n "!"
  87.                                 sleep 1
  88.                                 c=$((++c))
  89.                         done
  90.                         echo "!"
  91.                 fi
  92.                 echo "Starting the TeamSpeak 3 server"
  93.                 if [ -e "$BINARYNAME" ]; then
  94.                         if [ ! -x "$BINARYNAME" ]; then
  95.                                 echo "${BINARYNAME} is not executable, trying to set it"
  96.                                 chmod u+x "${BINARYNAME}"
  97.                         fi
  98.                         if [ -x "$BINARYNAME" ]; then
  99.                                 #export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"
  100.                                 #export LD_DEBUG=files
  101.                                 touch $PIDFILE
  102.                                 chown $DAEMONNAME:$DAEMONNAME $PIDFILE
  103.                                 chmod a+w $PIDFILE
  104.  
  105.                                 if [ "$DO_DAEMONIZE" = "YES" ] ; then
  106.                                         echo "Going background"
  107. LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" start-stop-daemon --start --startas $BINARYPATH/$BINARYNAME --pidfile $PIDFILE --name $DAEMONNAME --chuid $DAEMONNAME  --background --make-pidfile --verbose --chdir $WORKDIR $COMMANDLINE_PARAMETERS
  108. #                                       sudo -b -u $DAEMONNAME /bin/sh -c "cd ${WORKDIR} ; LD_LIBRARY_PATH=\"${LIBRARYPATH}:${LD_LIBRARY_PATH}\" ${BINARYPATH}/${BINARYNAME} ${COMMANDLINE_PARAMETERS} \&  ; echo XX\$! > $PIDFILE ; exit ;" ;
  109.                                 else
  110.                                         echo "Leaving foreground. Press Ctrl+C to stop"
  111. LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" start-stop-daemon --start --startas $BINARYPATH/$BINARYNAME --pidfile $PIDFILE --name $DAEMONNAME --chuid $DAEMONNAME   --make-pidfile --verbose --chdir $WORKDIR $COMMANDLINE_PARAMETERS
  112. #                                       sudo -u $DAEMONNAME /bin/sh -c "cd ${WORKDIR} ; LD_LIBRARY_PATH=\"${LIBRARYPATH}:${LD_LIBRARY_PATH}\" ${BINARYPATH}/${BINARYNAME} ${COMMANDLINE_PARAMETERS}   ; echo \$! > $PIDFILE ; exit "
  113.                                 fi
  114.                                 sleep 3
  115.                                 chown root:root $PIDFILE
  116.                                 chmod a-w $PIDFILE
  117.                                 chmod u+rwx $PIDFILE
  118.                                 echo "PID:"
  119.                                 cat $PIDFILE
  120.                                 #echo $! > $PIDFILE
  121.                                 echo "TeamSpeak 3 server started, for details please view the log file"
  122.                         else
  123.                                 echo "${BINARNAME} is not exectuable, cannot start TeamSpeak 3 server"
  124.                         fi
  125.                 else
  126.                         echo "Could not find binary, aborting"
  127.                         exit 5
  128.                 fi
  129.         ;;
  130.         stop)
  131.                 if [ -e $PIDFILE ]; then
  132.                         echo -n "Stopping the TeamSpeak 3 server"
  133.                         if ( kill -TERM $(cat $PIDFILE) 2> /dev/null ); then
  134.                                 c=1
  135.                                 while [ "$c" -le 300 ]; do
  136.                                         if ( kill -0 $(cat $PIDFILE) 2> /dev/null ); then
  137.                                                 echo -n "."
  138.                                                 sleep 1
  139.                                         else
  140.                                                 break
  141.                                         fi
  142.                                         c=$((++c))
  143.                                 done
  144.                         fi
  145.                         if ( kill -0 $(cat $PIDFILE) 2> /dev/null ); then
  146.                                 echo "Server is not shutting down cleanly - killing"
  147.                                 kill -KILL $(cat $PIDFILE)
  148.                         else
  149.                                 echo "done"
  150.                         fi
  151.                         rm $PIDFILE
  152.                 else
  153.                         echo "No server running ($PIDFILE is missing)"
  154.                         exit 7
  155.                 fi
  156.         ;;
  157.         restart)
  158.                 $0 stop && $0 start || exit 1
  159.         ;;
  160.         status)
  161.                 if [ -e $PIDFILE ]; then
  162.                         if ( kill -0 $(cat $PIDFILE) 2> /dev/null ); then
  163.                                 echo "Server is running"
  164.                         else
  165.                                 echo "Server seems to have died"
  166.                         fi
  167.                 else
  168.                         echo "No server running ($PIDFILE is missing)"
  169.                 fi
  170.         ;;
  171.         *)
  172.                 echo "Usage: ${0} {start|stop|restart|status} [{nodaemon|daemon}[addtional_command_line_parameter_1]]"
  173.                 exit 2
  174. esac
  175. exit 0
RAW Paste Data