Skip to content
Snippets Groups Projects
Commit 1de3d36d authored by Sebastian Kemper's avatar Sebastian Kemper
Browse files

restund: add procd init script


- add procd init script
- script starts the daemon as user "restund" instead of root
- add /etc/default/restund
- declare /etc/init.d/restund a configuration file
- prevent autostart after upgrade by using ENABLE_RESTUND variable in
  /etc/default/restund

Signed-off-by: default avatarSebastian Kemper <sebastian_ml@gmx.net>
parent 42193680
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,7 @@ define Package/restund
$(call Package/restund/Default)
TITLE:=Modular STUN/TURN server
DEPENDS:=+libre
USERID:=$(PKG_NAME)=373:$(PKG_NAME)=373
endef
restund-mod-mysql:=USE_MYSQL
......@@ -78,14 +79,31 @@ define Package/restund/install
$(SED) \
's|^\(module_path\)\([ \t]\+\).*$$$$|\1\2/usr/lib/restund/modules|g' \
$(1)/etc/restund.conf
$(INSTALL_DIR) $(1)/etc/default
$(INSTALL_CONF) ./files/restund.default $(1)/etc/default/restund
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/restund.init $(1)/etc/init.d/restund
endef
define Package/restund/conffiles
/etc/default/restund
/etc/init.d/restund
/etc/restund.conf
endef
define Package/restund/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
chown $(PKG_NAME):$(PKG_NAME) /etc/restund.conf
# Prevent $(PKG_NAME) from auto-starting after an upgrade. The modules may
# not be upgraded yet and the user configuration may need a revision.
sed -i '/^ENABLE_RESTUND="yes"/s/^/#/' \
/etc/default/$(PKG_NAME)
fi
exit 0
endef
#
# 1. Name
# 2. Title
......
### restund init configuration ###
# Uncomment once you verified your configuration, otherwise the init script will
# not start restund.
#ENABLE_RESTUND="yes"
# The following is added to the command line when starting restund:
OPTIONS=""
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2010-2011 OpenWrt.org
# Copyright (C) 2010 Alfred E. Heggestad
#
# Copyright (C) 2017 OpenWrt.org
START=60
start() {
service_start /usr/sbin/restund
USE_PROCD=1
#PROCD_DEBUG=1
DAEMON=restund
DEFAULT=/etc/default/$DAEMON
LOGGER="/usr/bin/logger -p user.err -s -t $DAEMON"
OPTIONS=
PROG=/usr/sbin/$DAEMON
TIMEOUT=30
[ -f $DEFAULT ] && . $DEFAULT
start_service() {
local dir=
if [ "$ENABLE_RESTUND" != yes ]; then
$LOGGER User configuration incomplete - not starting $DAEMON
$LOGGER Check ENABLE_RESTUND in $DEFAULT
exit 1
fi
procd_open_instance
procd_set_param command $PROG
procd_append_param command \
-n \
$OPTIONS
procd_set_param pidfile /var/run/${DAEMON}.pid
# forward stderr to logd
procd_set_param stderr 1
# forward stdout to logd
procd_set_param stdout 1
procd_set_param user $DAEMON
procd_close_instance
}
stop() {
service_stop /usr/sbin/restund
stop_service() {
local retval=
local mypid=
local timeout=$TIMEOUT
pgrep $DAEMON &> /dev/null
[ $? -ne 0 ] && exit 0
[ -f /var/run/${DAEMON}.pid ]
retval=$?
# init script could find itself in a scenario where restund was started
# very recently, so make it wait a while for a pid file to appear
while [ $retval -ne 0 -a $timeout -gt 0 ]; do
sleep 1
[ -f /var/run/${DAEMON}.pid ]
retval=$?
timeout=$(($timeout-1))
done
[ $retval -eq 0 ] || {
$LOGGER PID file does not exist
exit 1
}
mypid=$(cat /var/run/${DAEMON}.pid)
[ "$mypid" -gt 1 ] 2> /dev/null || {
$LOGGER PID file contains garbage
exit 1
}
timeout=$TIMEOUT
kill $mypid 2>/dev/null
pgrep $DAEMON | grep -w $mypid &>/dev/null
retval=$?
while [ $retval -eq 0 -a $timeout -gt 0 ]; do
sleep 10
pgrep $DAEMON | grep -w $mypid &>/dev/null
retval=$?
[ $retval -eq 0 ] && kill $mypid 2>/dev/null
timeout=$(($timeout-10))
done
[ $retval -ne 1 ] && {
$LOGGER Failed to stop $DAEMON
exit 1
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment