diff --git a/net/coova-chilli/Makefile b/net/coova-chilli/Makefile index a6e4c400c..6bcf54527 100644 --- a/net/coova-chilli/Makefile +++ b/net/coova-chilli/Makefile @@ -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 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 diff --git a/net/coova-chilli/files/chilli.init b/net/coova-chilli/files/chilli.init index 0103a2385..e0f0a0b68 100644 --- a/net/coova-chilli/files/chilli.init +++ b/net/coova-chilli/files/chilli.init @@ -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 }