packages/deluge: use new service functions, add a 'group' config option for holding gid

git-svn-id: svn://svn.openwrt.org/openwrt/packages@29180 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nico 2011-11-16 09:44:27 +00:00
parent 1ab938adbc
commit 5eac616616
3 changed files with 69 additions and 42 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=deluge
PKG_VERSION:=1.2.0
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.deluge-torrent.org/source/

View File

@ -1,5 +1,6 @@
config global deluged
option 'user' 'deluge:deluge'
option 'user' 'deluge'
option 'group' 'deluge'
option 'home' ''
option 'options' ''
option 'enabled' 1

View File

@ -1,60 +1,86 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2010 OpenWrt.org
# Copyright (C) 2010-2011 OpenWrt.org
# Copyright (C) 2010 Alexander Sulfrian
NAME=deluge
PIDFILE=/var/run/deluged.pid
START=50
STOP=50
load_config()
{
config_get_bool enabled $1 enabled 0
[ "${enabled}" -eq 0 ] && return 1
SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1
SERVICE_PID_FILE="/var/run/deluged.pid"
config_get user $1 user
if [ "${user}" == "" ]; then
echo "Please check your uci config. User for '$1' should not be empty."
error() {
echo "${initscript}:" "$@" 1>&2
}
section_enabled() {
config_get_bool enabled "$1" 'enabled' 0
[ $enabled -gt 0 ]
}
start_instance() {
local s="$1"
section_enabled "$s" || return 1
config_get uid "$s" 'user'
[ -n "$uid" ] || {
error "user is not set"
return 1
fi
username=$(echo ${user} | cut -d ':' -f 1)
group=$(echo ${user} | cut -d ':' -f 2)
if ! $(cut -d ':' -f 1 /etc/passwd | grep -sq "${username}"); then
echo "Please check your uci config. User for '$1' should exist."
}
user_exists $uid || {
error "user '$uid' dos not exist"
return 1
fi
}
if [ "${group}" != "" ]; then
if ! $(cut -d ':' -f 1 /etc/passwd | grep -sq "${group}"); then
echo "Please check your uci config. Group for '$1' should exist."
config_get gid "$s" 'group'
[ -n "$gid" ] || {
error "group is not set"
return 1
}
group_exists $gid || {
error "group '$gid' dos not exist"
return 1
}
config_get home "$s" 'home'
[ -n "$home" ] || {
home=$(grep "^${user}:" /etc/passwd | cut -d ':' -f 6)
fi
fi
[ -d "$home" ] || {
error "home directory '$home' for user '$uid' dos not exist"
return 1
}
config_get options "$s" 'options'
HOME="$home" \
SERVICE_UID="$uid" \
SERVICE_GID="$gid" \
service_start /usr/bin/python2.6 /usr/bin/deluged --do-not-daemonize $options
}
stop_instance() {
local s="$1"
section_enabled "$s" || return 1
config_get uid "$s" 'user'
config_get gid "$s" 'group'
SERVICE_UID="$uid" \
SERVICE_GID="$gid" \
service_stop /usr/bin/python2.6
}
start()
{
config_load "${NAME}"
load_config deluged || return $?
config_get options deluged options
config_get home deluged home
if [ "${home}" == "" ]; then
home=$(grep "^${username}:" /etc/passwd | cut -d ':' -f 6)
fi
HOME="${home}" /sbin/start-stop-daemon -S -u "${username}" \
-p "${PIDFILE}" -b -m -x "/usr/bin/python2.6" -a deluged \
-c "${user}" -- --do-not-daemonize ${options}
config_load 'deluged'
config_foreach start_instance 'deluged'
}
stop()
{
config_load "${NAME}"
load_config deluged || return $?
/sbin/start-stop-daemon -K -u "${username}" -n deluged -p "${PIDFILE}"
config_load 'deluged'
config_foreach stop_instance 'deluged'
}