Guest User

TeamSpeak 3 Server FreeBSD rc.d script

a guest
Aug 17th, 2016
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.81 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # $FreeBSD$
  4. #
  5. # PROVIDE: teamspeak
  6. # REQUIRE: LOGIN
  7. # KEYWORD: shutdown
  8.  
  9. . /etc/rc.subr
  10.  
  11. # system
  12. name="teamspeak"
  13. arch="freebsd_amd64"
  14. rcvar="${name}_enable"
  15.  
  16. # query settings
  17. query_host="127.0.0.1"
  18. query_port="10011"
  19. query_user="serveradmin"
  20. query_pass="password"
  21.  
  22. # directory settings
  23. dir_bin="/usr/local/libexec"
  24. dir_cfg="/usr/local/etc/${name}"
  25. dir_lib="/usr/local/lib/${name}/server"
  26. dir_log="/var/log/${name}"
  27. dir_sql="/var/db/${name}"
  28. dir_tmp="/tmp/${name}"
  29.  
  30. # daemon settings
  31. pidfile="${dir_sql}/${name}_server.pid"
  32. procname="${dir_bin}/${name}_server"
  33. command="/usr/sbin/daemon"
  34. command_args="-fp ${pidfile} -u ${name} ${procname} dbsqlpath=${dir_sql}/sql/ inifile=${dir_cfg}/ts3server.ini licensepath=${dir_cfg}/ logpath=${dir_log}"
  35. extra_commands="update message"
  36. teamspeak_chdir="${dir_sql}"
  37. required_dirs="${dir_lib} ${dir_log} ${dir_sql}"
  38.  
  39. # command settings
  40. update_cmd="teamspeak_update"
  41. message_cmd="teamspeak_message"
  42.  
  43. load_rc_config ${name}
  44. : ${teamspeak_enable="NO"}
  45.  
  46. teamspeak_update()
  47. {
  48.   if [ -z "$1" ]; then
  49.     echo "Missing server update package source; aborting."
  50.     rm -Rf "${dir_tmp}"
  51.     return 1
  52.   fi
  53.  
  54.   echo "Downloading server update package."
  55.  
  56.   mkdir "${dir_tmp}"
  57.   /usr/local/bin/wget --no-check-certificate -q -O "${dir_tmp}/server.tar.bz2" "$1"
  58.  
  59.   if [ $(wc -c < "${dir_tmp}/server.tar.bz2") -le 1000000 ]; then
  60.     echo "Failed to download server update package; aborting."
  61.     rm -Rf "${dir_tmp}"
  62.     return 1
  63.   fi
  64.  
  65.   echo "Extracting server update package."
  66.  
  67.   tar -xf "${dir_tmp}/server.tar.bz2" -C "${dir_tmp}"
  68.   rm "${dir_tmp}/server.tar.bz2"
  69.  
  70.   if [ ! -e "${dir_tmp}/teamspeak3-server_${arch}" ]; then
  71.     echo "Invalid server update package; aborting."
  72.     rm -Rf "${dir_tmp}"
  73.     return 1
  74.   fi
  75.  
  76.   if [ -e ${pidfile} ]; then
  77.     run_rc_command stop
  78.   fi
  79.  
  80.   echo "Updating ts3server."
  81.  
  82.   cp "${dir_sql}/ts3server.sqlitedb" "${dir_sql}/ts3server.sqlitedb-bak" && chown -R ${name}:${name} "${dir_sql}/ts3server.sqlitedb-bak"
  83.   cp "${dir_tmp}/teamspeak3-server_${arch}/ts3server" "${procname}"
  84.   find "${dir_tmp}" -name \*.so* -exec cp {} "${dir_lib}" \;
  85.   rm -R "${dir_sql}/serverquerydocs" && cp -fR "${dir_tmp}/teamspeak3-server_${arch}/serverquerydocs" "${dir_sql}/serverquerydocs" && chown -R ${name}:${name} "${dir_sql}/serverquerydocs"
  86.   rm -R "${dir_sql}/sql" && cp -fR "${dir_tmp}/teamspeak3-server_${arch}/sql" "${dir_sql}/sql" && chown -R ${name}:${name} "${dir_sql}/sql"
  87.  
  88.   run_rc_command start
  89.  
  90.   rm -Rf "${dir_tmp}"
  91. }
  92.  
  93. teamspeak_message()
  94. {
  95.   (echo "login ${query_user} ${query_pass}"; echo "gm msg=[B][COLOR=red]$(echo $@ | sed 's/ /\\s/g')[/COLOR][/B]"; echo "quit") | nc ${query_host} ${query_port} > /dev/null
  96. }
  97.  
  98. LD_LIBRARY_PATH=${dir_lib}:$LD_LIBRARY_PATH
  99. export LD_LIBRARY_PATH
  100.  
  101. run_rc_command "$@"
Add Comment
Please, Sign In to add comment