packages/smtptrapd: use new service functions
authorNicolas Thill <nico@openwrt.org>
Thu, 17 Nov 2011 10:47:27 +0000 (10:47 +0000)
committerNicolas Thill <nico@openwrt.org>
Thu, 17 Nov 2011 10:47:27 +0000 (10:47 +0000)
SVN-Revision: 29217

net/smtptrapd/Makefile
net/smtptrapd/files/smtptrapd.init

index da0dffe24f260bd3fa431b8b785b4e8ab3bc5fe7..5cfd7009713a8538f2c80bbe90d44a4a744ad888 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2008-2009 OpenWrt.org
+# Copyright (C) 2008-2011 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=smtptrapd
 PKG_VERSION:=1.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
index 56e5f978084758dda93f573bfd1e6b4fdc414ced..53aba97e017526e384741364fa873cfd982468ad 100644 (file)
@@ -1,11 +1,10 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2008 OpenWrt.org
+# Copyright (C) 2008-2011 OpenWrt.org
 
-START=90
+SERVICE_USE_PID=1
 
-NAME="smtptrapd"
-DAEMON="/usr/sbin/$NAME"
-RUN_D="/var/run"
+START=90
+STOP=10
 
 EXTRA_COMMANDS="list status exconf"
 EXTRA_HELP="   list    Lists available configurations
@@ -17,119 +16,101 @@ globally on all configurations unless the particular
 configuration has been provided as the next parameter.
 "
 
-check_req() {
-       if [ -x "$DAEMON" ]; then
-               return 0
-       else
-               echo "The daemon binary is missing!"
-               return 1
-       fi
-}
-
 check_section() {
        echo "$1" | grep -vq '^cfg[[:xdigit:]]\{6\}$'
 }
 
-start_service() {
-       local cfg="$1"
-       local named="$2"
-       check_section "$cfg" || return 1
-       [ "$named" != "" -a "$cfg" != "$named" ] && return 0
+start_instance() {
+       local section="$1"
+       local instance="$2"
+
+       check_section "$section" || return 1
+       [ -n "$instance" -a "$section" != "$instance" ] && return 0
+
        local args listen_ip banner_host username num_threads listen_port accept_queue_len
-       config_get listen_ip "$cfg" listen_ip
+
+       config_get listen_ip "$section" 'listen_ip'
        [ -n "$listen_ip" ] && append args "-l $listen_ip"
-       config_get listen_port "$cfg" listen_port
+
+       config_get listen_port "$section" 'listen_port'
        [ -n "$listen_port" ] && append args "-p $listen_port"
-       config_get username "$cfg" username
+
+       config_get username "$section" 'username'
        [ -n "$username" ] && append args "-u $username"
-       config_get banner_host "$cfg" banner_host
-       [ -n "$banner_host" ] && append args "-b \"$banner_host\""
-       config_get num_threads "$cfg" num_threads
+
+       config_get banner_host "$section" 'banner_host'
+       [ -n "$banner_host" ] && append args "-b '$banner_host'"
+
+       config_get num_threads "$section" 'num_threads'
        [ -n "$num_threads" ] && append args "-t $num_threads"
-       config_get accept_queue_len "$cfg" accept_queue_len
+
+       config_get accept_queue_len "$section" 'accept_queue_len'
        [ -n "$accept_queue_len" ] && append args "-m $accept_queue_len"
-       append args "-f ${RUN_D}/${NAME}-${cfg}.pid"
-       eval "$DAEMON $args"
+
+       SERVICE_PID_FILE="/var/run/smtptrapd-${section}.pid
+       service_start /usr/sbin/smtptrapd -f $SERVICE_PID_FILE $args
 }
 
-stop_service() {
-       local cfg="$1"
-       local named="$2"
-       check_section "$cfg" || return 1
-       [ "$named" != "" -a "$cfg" != "$named" ] && return 0
-       local PID_F="${RUN_D}/${NAME}-${cfg}.pid"
-       [ -f $PID_F ] && {
-               local ppid=$(cat $PID_F)
-               ps | grep "^[[:space:]]*$ppid[[:space:]]" | grep -q "[s]mtptrapd\>" && kill $ppid
-               rm -f $PID_F
-       }
+stop_instance() {
+       local section="$1"
+       local instance="$2"
+
+       check_section "$section" || return 1
+       [ -n "$instance" -a "$section" != "$instance" ] && return 0
+
+       SERVICE_PID_FILE="/var/run/smtptrapd-${section}.pid"
+       service_stop /usr/sbin/smtptrapd
 }
 
-status_service() {
-       local cfg="$1"
-       local named="$2"
-       check_section "$cfg" || return 1
-       [ "$named" != "" -a "$cfg" != "$named" ] && return 0
-       local PID_F="${RUN_D}/${NAME}-${cfg}.pid"
-       [ -f $PID_F ] && {
-               local ppid=$(cat $PID_F)
-               if ps | grep "^[[:space:]]*$ppid[[:space:]]" | grep -q "[s]mtptrapd\>"; then
-                       echo "$cfg (pid $ppid) is running"
-               else
-                       echo "$cfg is not running (stale pid file exists)"
-               fi
+check_instance() {
+       local section="$1"
+       local instance="$2"
+
+       check_section "$section" || return 1
+       [ -n "$instance" -a "$section" != "$instance" ] && return 0
+
+       SERVICE_PID_FILE="/var/run/smtptrapd-${section}.pid"
+       service_check /usr/sbin/smtptrapd && {
+               echo "${initscript}: configuration instance '$section' is running"
+       } || {
+               echo "${initscript}: configuration instance '$section' is not running"
        }
 }
 
-list_service() {
-       local cfg="$1"
-       check_section "$cfg" || return 1
-       echo "  $cfg"
+list_instance() {
+       local section="$1"
+       check_section "$section" || return 1
+       echo "  $section"
 }
 
 start() {
-       local svc_cfg="$1"
-       check_req || return 1
-       [ ! -d $RUN_D ] && mkdir -p $RUN_D
-       config_load "$NAME"
-       config_foreach start_service "$NAME" "$svc_cfg"
+       config_load 'smtptrapd'
+       config_foreach start_instance 'smtptrapd' "$@"
 }
 
 stop() {
-       local svc_cfg="$1"
-       check_req || return 1
-       config_load "/etc/config/$NAME"
-       if [ -n "$svc_cfg" ]; then
-               config_foreach stop_service "$NAME" "$svc_cfg"
-       else
-               config_foreach stop_service "$NAME"
-               local pf
-               for pf in $(ls ${RUN_D}/${NAME}*.pid 2>/dev/null); do
-                       local ppid=$(cat $pf)
-                       ps | grep "^[[:space:]]*$ppid[[:space:]]" | grep -q "[s]mtptrapd\>" && kill "$ppid"
-                       rm -f $pf
-               done
-       fi
+       config_load 'smtptrapd'
+       config_foreach stop_instance 'smtptrapd' "$@"
 }
 
 status() {
-       local svc_cfg="$1"
-       check_req || return 1
-       config_load "$NAME"
-       config_foreach status_service "$NAME" "$svc_cfg"
+       config_load 'smtptrapd'
+       config_foreach check_instance 'smtptrapd' "$@"
 }
 
 list() {
-       check_req || return 1
-       echo "Available $NAME configurations:"
-       config_load "$NAME"
-       config_foreach list_service "$NAME"
+       config_load 'smtptrapd'
+       echo "${initscript}: available configuration instances:"
+       config_foreach list_instance 'smtptrapd'
 }
 
 exconf() {
-       echo "An example configuration in /etc/config/$NAME:" >&2
        cat <<EOF
-config '$NAME' 'myfailhost'
+# /etc/config/smtptrapd - example configuration
+
+package 'smtptrapd'
+
+config 'smtptrapd' 'myfailhost'
        option 'num_threads' '1'
 
 # The init script operates only with named sections