coova-chilli: switch to procd
authorJaehoon You <teslamint@gmail.com>
Thu, 25 May 2017 05:44:24 +0000 (14:44 +0900)
committerYousong Zhou <yszhou4tech@gmail.com>
Mon, 23 Apr 2018 05:34:44 +0000 (13:34 +0800)
Signed-off-by: Jaehoon You <teslamint@gmail.com>
net/coova-chilli/Makefile
net/coova-chilli/files/chilli.init

index a6e4c400c5a922f4458d262e8eeeeb615b0513f4..6bcf5452735656c3681a99591e0253ff8f85c19f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2018 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -12,7 +12,7 @@ PKG_VERSION:=1.3.0+20141128
 PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://github.com/coova/coova-chilli
index 0103a238591c7c01abf51b5d613e57b119ae9059..e0f0a0b68f4d656440a5faab60c3a22d3e878a31 100644 (file)
@@ -1,61 +1,83 @@
 #!/bin/sh /etc/rc.common
 
-START=30
-STOP=90
+START=90
+STOP=89
+USE_PROCD=1
+
+service_triggers() {
+       procd_add_reload_trigger "chilli"
+}
 
 config_cb() {
-    chilli_inst=$2
-    if [ "$chilli_inst" != "" ]
-    then
-       rm -f /var/run/chilli_${chilli_inst}.*
-       chilli_conf=/var/run/chilli_${chilli_inst}.conf
-       eval "start_chilli_$chilli_inst=1"
-    fi
+       local chilli_inst="$2"
+       if [ "$chilli_inst" != "" ]; then
+               chilli_conf="/var/run/chilli_${chilli_inst}.conf"
+               if [ -e "$chilli_conf" ]; then
+                       rm -f "$chilli_conf"
+               fi
+               eval "start_chilli_$chilli_inst=1"
+       fi
 }
 
 option_cb() {
-    case "$1" in
-        # UCI settings
-       network)
-           . /lib/functions/network.sh
-           local ifname
-           network_get_device ifname $2
-           echo "dhcpif=\"$ifname\"" >> $chilli_conf
-           ;;
-       disabled)
-           eval "start_chilli_$chilli_inst=0"
-           ;;
-        # boolean settings
-       dhcpbroadcast|nodynip|vlanlocation|locationstopstart|locationcopycalled|locationimmediateupdate|locationopt82|coanoipcheck|noradallow|proxymacaccept|proxyonacct|dhcpmacset|dhcpradius|noc2c|eapolenable|uamanydns|uamanyip|uamnatanyip|nouamsuccess|nowispr1|nowispr2|domaindnslocal|radsec|macauth|macreauth|macauthdeny|macallowlocal|strictmacauth|strictdhcp|ieee8021q|only8021q|radiusoriginalurl|swapoctets|statusfilesave|wpaguests|openidauth|papalwaysok|mschapv2|chillixml|acctupdate|dnsparanoia|seskeepalive|usetap|noarpentries|framedservice|scalewin|redir|injectwispr|redirurl|routeonetone|nousergardendata|uamgardendata|uamotherdata|withunixipc|uamallowpost|redirssl|uamuissl|layer3|patricia|redirdnsreq|dhcpnotidle|ipv6|ipv6only)
-           [ "$2" = "true" -o "$2" = "1" ] && echo "$1" >> $chilli_conf
-           ;;
-       *)
-           echo "$1=\"$2\"" >> $chilli_conf
-           ;;
-    esac
+       case "$1" in
+               # UCI settings
+               network)
+                       . /lib/functions/network.sh
+                       local ifname
+                       network_get_device ifname "$2"
+                       echo "dhcpif=\"$ifname\"" >> "$chilli_conf"
+                       ;;
+               disabled)
+                       [ "$(config_get_bool "$1")" = "1" ] && eval "start_chilli_$chilli_inst=0"
+                       ;;
+               # boolean settings
+               debug|dhcpbroadcast|nodynip|vlanlocation|locationstopstart|locationcopycalled|locationimmediateupdate|locationopt82|coanoipcheck|noradallow|proxymacaccept|proxyonacct|dhcpmacset|dhcpradius|noc2c|eapolenable|uamanydns|uamanyip|uamnatanyip|nouamsuccess|nowispr1|nowispr2|domaindnslocal|radsec|macauth|macreauth|macauthdeny|macallowlocal|strictmacauth|strictdhcp|ieee8021q|only8021q|radiusoriginalurl|swapoctets|statusfilesave|wpaguests|openidauth|papalwaysok|mschapv2|chillixml|acctupdate|dnsparanoia|seskeepalive|usetap|noarpentries|framedservice|scalewin|redir|injectwispr|redirurl|routeonetone|nousergardendata|uamgardendata|uamotherdata|withunixipc|uamallowpost|redirssl|uamuissl|layer3|patricia|redirdnsreq|dhcpnotidle|ipv6|ipv6only)
+                       [ "$2" = "true" -o "$2" = "1" ] && echo "$1" >> "$chilli_conf"
+                       ;;
+               *)
+                       echo "$1=\"$2\"" >> "$chilli_conf"
+                       ;;
+       esac
 }
 
 start_chilli() {
-    local cfg="$1"
-    local start_chilli=$(eval "echo \$start_chilli_$cfg")
-    [ "$start_chilli" = "0" ] && return
-    local base=/var/run/chilli_${cfg}
-    chilli -c ${base}.conf \
-       --pidfile ${base}.pid \
-       --cmdsocket ${base}.sock \
-       --unixipc ${base}.ipc &
-}
-
-start() {
-    config_load chilli
-    config_foreach start_chilli chilli
-}
-
-stop() {
-    ls /var/run/chilli*.pid 2>/dev/null && {
-       kill $(cat /var/run/chilli*.pid)
-       sleep 1
-       killall -9 chilli
-       rm -f /var/run/chilli*
-    }
+       local cfg="$1"
+       local start_chilli=$(eval "echo \$start_chilli_$cfg")
+       [ "$start_chilli" = "0" ] && return
+       local base="/var/run/chilli_${cfg}"
+
+       procd_open_instance "$cfg"
+       procd_set_param command /usr/sbin/chilli
+       procd_set_param file "${base}.conf"
+       procd_append_param command --fg --conf "${base}.conf" --pidfile "${base}.pid" --cmdsocket "${base}.sock" --unixipc "${base}.ipc"
+       procd_set_param respawn
+       procd_set_param stdout 1
+       procd_set_param stderr 1
+       procd_close_instance
+}
+
+start_service() {
+       config_load chilli
+       config_foreach start_chilli chilli
+}
+
+stop_service() {
+       rm -f /var/run/chilli_*
+}
+
+reload_chilli() {
+       local pid
+       local cfg="$1"
+       local base="/var/run/chilli_${cfg}"
+       if [ -f "${base}.pid" ]; then
+               pid="$(cat "${base}.pid")"
+               [ -f "/var/run/chilli.${pid}.cfg.bin" ] && rm -f "/var/run/chilli.${pid}.cfg.bin"
+               chilli_query -s "${base}.sock" reload
+       fi
+}
+
+reload_service() {
+       config_load chilli
+       config_foreach reload_chilli chilli
 }