diff options
Diffstat (limited to 'subsonic-booter/src/main/script/subsonic.sh')
-rw-r--r-- | subsonic-booter/src/main/script/subsonic.sh | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/subsonic-booter/src/main/script/subsonic.sh b/subsonic-booter/src/main/script/subsonic.sh new file mode 100644 index 00000000..4022fb72 --- /dev/null +++ b/subsonic-booter/src/main/script/subsonic.sh @@ -0,0 +1,134 @@ +#!/bin/sh + +################################################################################### +# Shell script for starting Subsonic. See http://subsonic.org. +# +# Author: Sindre Mehus +################################################################################### + +SUBSONIC_HOME=/var/subsonic +SUBSONIC_HOST=0.0.0.0 +SUBSONIC_PORT=4040 +SUBSONIC_HTTPS_PORT=0 +SUBSONIC_CONTEXT_PATH=/ +SUBSONIC_MAX_MEMORY=150 +SUBSONIC_PIDFILE= +SUBSONIC_DEFAULT_MUSIC_FOLDER=/var/music +SUBSONIC_DEFAULT_PODCAST_FOLDER=/var/music/Podcast +SUBSONIC_DEFAULT_PLAYLIST_FOLDER=/var/playlists + +quiet=0 + +usage() { + echo "Usage: subsonic.sh [options]" + echo " --help This small usage guide." + echo " --home=DIR The directory where Subsonic will create files." + echo " Make sure it is writable. Default: /var/subsonic" + echo " --host=HOST The host name or IP address on which to bind Subsonic." + echo " Only relevant if you have multiple network interfaces and want" + echo " to make Subsonic available on only one of them. The default value" + echo " will bind Subsonic to all available network interfaces. Default: 0.0.0.0" + echo " --port=PORT The port on which Subsonic will listen for" + echo " incoming HTTP traffic. Default: 4040" + echo " --https-port=PORT The port on which Subsonic will listen for" + echo " incoming HTTPS traffic. Default: 0 (disabled)" + echo " --context-path=PATH The context path, i.e., the last part of the Subsonic" + echo " URL. Typically '/' or '/subsonic'. Default '/'" + echo " --max-memory=MB The memory limit (max Java heap size) in megabytes." + echo " Default: 100" + echo " --pidfile=PIDFILE Write PID to this file. Default not created." + echo " --quiet Don't print anything to standard out. Default false." + echo " --default-music-folder=DIR Configure Subsonic to use this folder for music. This option " + echo " only has effect the first time Subsonic is started. Default '/var/music'" + echo " --default-podcast-folder=DIR Configure Subsonic to use this folder for Podcasts. This option " + echo " only has effect the first time Subsonic is started. Default '/var/music/Podcast'" + echo " --default-playlist-folder=DIR Configure Subsonic to use this folder for playlists. This option " + echo " only has effect the first time Subsonic is started. Default '/var/playlists'" + exit 1 +} + +# Parse arguments. +while [ $# -ge 1 ]; do + case $1 in + --help) + usage + ;; + --home=?*) + SUBSONIC_HOME=${1#--home=} + ;; + --host=?*) + SUBSONIC_HOST=${1#--host=} + ;; + --port=?*) + SUBSONIC_PORT=${1#--port=} + ;; + --https-port=?*) + SUBSONIC_HTTPS_PORT=${1#--https-port=} + ;; + --context-path=?*) + SUBSONIC_CONTEXT_PATH=${1#--context-path=} + ;; + --max-memory=?*) + SUBSONIC_MAX_MEMORY=${1#--max-memory=} + ;; + --pidfile=?*) + SUBSONIC_PIDFILE=${1#--pidfile=} + ;; + --quiet) + quiet=1 + ;; + --default-music-folder=?*) + SUBSONIC_DEFAULT_MUSIC_FOLDER=${1#--default-music-folder=} + ;; + --default-podcast-folder=?*) + SUBSONIC_DEFAULT_PODCAST_FOLDER=${1#--default-podcast-folder=} + ;; + --default-playlist-folder=?*) + SUBSONIC_DEFAULT_PLAYLIST_FOLDER=${1#--default-playlist-folder=} + ;; + *) + usage + ;; + esac + shift +done + +# Use JAVA_HOME if set, otherwise assume java is in the path. +JAVA=java +if [ -e "${JAVA_HOME}" ] + then + JAVA=${JAVA_HOME}/bin/java +fi + +# Create Subsonic home directory. +mkdir -p ${SUBSONIC_HOME} +LOG=${SUBSONIC_HOME}/subsonic_sh.log +rm -f ${LOG} + +cd $(dirname $0) +if [ -L $0 ] && ([ -e /bin/readlink ] || [ -e /usr/bin/readlink ]); then + cd $(dirname $(readlink $0)) +fi + +${JAVA} -Xmx${SUBSONIC_MAX_MEMORY}m \ + -Dsubsonic.home=${SUBSONIC_HOME} \ + -Dsubsonic.host=${SUBSONIC_HOST} \ + -Dsubsonic.port=${SUBSONIC_PORT} \ + -Dsubsonic.httpsPort=${SUBSONIC_HTTPS_PORT} \ + -Dsubsonic.contextPath=${SUBSONIC_CONTEXT_PATH} \ + -Dsubsonic.defaultMusicFolder=${SUBSONIC_DEFAULT_MUSIC_FOLDER} \ + -Dsubsonic.defaultPodcastFolder=${SUBSONIC_DEFAULT_PODCAST_FOLDER} \ + -Dsubsonic.defaultPlaylistFolder=${SUBSONIC_DEFAULT_PLAYLIST_FOLDER} \ + -Djava.awt.headless=true \ + -verbose:gc \ + -jar subsonic-booter-jar-with-dependencies.jar > ${LOG} 2>&1 & + +# Write pid to pidfile if it is defined. +if [ $SUBSONIC_PIDFILE ]; then + echo $! > ${SUBSONIC_PIDFILE} +fi + +if [ $quiet = 0 ]; then + echo Started Subsonic [PID $!, ${LOG}] +fi + |