Powderking

sabnzbdplus init.d original

Jul 19th, 2012
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # Copyright (C) 2008-2011 by JCF Ploemen <linux@jp.pp.ru>
  4. # released under GPL, version 2 or later
  5.  
  6. ################################################
  7. # #
  8. # TO CONFIGURE EDIT /etc/default/sabnzbdplus #
  9. # #
  10. ################################################
  11.  
  12. ### BEGIN INIT INFO
  13. # Provides: sabnzbdplus
  14. # Required-Start: $local_fs $network $remote_fs
  15. # Required-Stop: $local_fs $network $remote_fs
  16. # Should-Start: NetworkManager
  17. # Should-Stop: NetworkManager
  18. # Default-Start: 2 3 4 5
  19. # Default-Stop: 0 1 6
  20. # Short-Description: SABnzbd+ binary newsgrabber
  21. # Description: SABnzbd+ is a web-based binary newsgrabber with nzb
  22. # support, designed to download files from Usenet.
  23. # This script provides that functionality as a system
  24. # service, starting the program on boot.
  25. ### END INIT INFO
  26.  
  27. DAEMON=/usr/bin/sabnzbdplus
  28. SETTINGS=/etc/default/sabnzbdplus
  29.  
  30. ([ -x $DAEMON ] && [ -r $SETTINGS ]) || exit 0
  31.  
  32. DESC="SABnzbd+ binary newsgrabber"
  33. DEFOPTS="--daemon"
  34. PYTHONEXEC="^$(sed -n '1s/^#\!\([a-z0-9\.\/]\+\)\(.*\)/\1(\2)?/p' $DAEMON)"
  35. PIDFILE=/var/run/sabnzbdplus.pid
  36. SETTINGS_LOADED=FALSE
  37.  
  38. # these are only accepted from the settings file
  39. unset USER CONFIG HOST PORT EXTRAOPTS
  40.  
  41. . /lib/lsb/init-functions
  42.  
  43. check_retval() {
  44. if [ $? -eq 0 ]; then
  45. log_end_msg 0
  46. return 0
  47. else
  48. log_end_msg 1
  49. exit 1
  50. fi
  51. }
  52.  
  53. is_running() {
  54. # returns 0 when running, 1 otherwise
  55. PID="$(pgrep -f -x -u ${USER%:*} "$PYTHONEXEC $DAEMON $DEFOPTS.*")"
  56. RET=$?
  57. [ $RET -gt 1 ] && exit 1 || return $RET
  58. }
  59.  
  60. load_settings() {
  61. if [ $SETTINGS_LOADED != "TRUE" ]; then
  62. . $SETTINGS
  63.  
  64. [ -z "$USER" ] && {
  65. log_warning_msg "$DESC: not configured, aborting. See $SETTINGS";
  66. return 1; }
  67. [ -z "${USER%:*}" ] && exit 1
  68.  
  69. OPTIONS="$DEFOPTS"
  70. [ -n "$CONFIG" ] && OPTIONS="$OPTIONS --config-file $CONFIG"
  71. [ -n "$HOST" ] && SERVER="$HOST" || SERVER=
  72. [ -n "$PORT" ] && SERVER="$SERVER:$PORT"
  73. [ -n "$SERVER" ] && OPTIONS="$OPTIONS --server $SERVER"
  74. [ -n "$EXTRAOPTS" ] && OPTIONS="$OPTIONS $EXTRAOPTS"
  75. SETTINGS_LOADED=TRUE
  76. fi
  77. return 0
  78. }
  79.  
  80. start_sab() {
  81. load_settings || exit 0
  82. if ! is_running; then
  83. log_daemon_msg "Starting $DESC"
  84. start-stop-daemon --quiet --chuid $USER --start --exec $DAEMON -- $OPTIONS
  85. check_retval
  86. # create a pidfile; we don't use it but some monitoring app likes to have one
  87. [ -w $(dirname $PIDFILE) ] && \
  88. pgrep -f -x -n -u ${USER%:*} "$PYTHONEXEC $DAEMON $OPTIONS" > $PIDFILE
  89. else
  90. log_success_msg "$DESC: already running (pid $PID)"
  91. fi
  92. }
  93.  
  94. stop_sab() {
  95. load_settings || exit 0
  96. if is_running; then
  97. TMPFILE="$(mktemp --tmpdir sabnzbdplus.XXXXXXXXXX)"
  98. [ $? -eq 0 ] || exit 1
  99. trap '[ -f "$TMPFILE" ] && rm -f "$TMPFILE"' EXIT
  100. echo "$PID" > "$TMPFILE"
  101. log_daemon_msg "Stopping $DESC"
  102. start-stop-daemon --stop --user ${USER%:*} --pidfile "$TMPFILE" --retry 30
  103. check_retval
  104. else
  105. log_success_msg "$DESC: not running"
  106. fi
  107. [ -f $PIDFILE ] && rm -f $PIDFILE
  108. }
  109.  
  110. case "$1" in
  111. start)
  112. start_sab
  113. ;;
  114. stop)
  115. stop_sab
  116. ;;
  117. force-reload|restart)
  118. stop_sab
  119. start_sab
  120. ;;
  121. status)
  122. load_settings || exit 4
  123. if is_running; then
  124. log_success_msg "$DESC: running (pid $PID)"
  125. else
  126. log_success_msg "$DESC: not running"
  127. [ -f $PIDFILE ] && exit 1 || exit 3
  128. fi
  129. ;;
  130. *)
  131. log_failure_msg "Usage: $0 {start|stop|restart|force-reload|status}"
  132. exit 3
  133. ;;
  134. esac
  135.  
  136. exit 0
Add Comment
Please, Sign In to add comment