diff --git a/ipv6/aiccu/files/aiccu.init b/ipv6/aiccu/files/aiccu.init index 68bac208f..bc5ef7543 100644 --- a/ipv6/aiccu/files/aiccu.init +++ b/ipv6/aiccu/files/aiccu.init @@ -1,52 +1,77 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2006 OpenWrt.org +# Copyright (C) 2006-2011 OpenWrt.org START=51 -config_cb() { - local cfg_type="$1" - local cfg_name="$2" +add_config_bool() { + local section="$1" + local option="$2" + local value="$3" + local default="$4" + local _val - case "$cfg_type" in - aiccu) - append cfgs_sections "$cfg_name" "$N" - ;; - esac + config_get_bool _val "$section" "$option" "$default" + [ "$_val" -gt 0 ] && _val="true" || _val="false" + append args "$3 $_val" "\n" +} + +add_config() { + local section="$1" + local option="$2" + local value="$3" + local _val + + config_get _val "$section" "$option" + [ -n "$_val" ] && append args "$3 $_val" "\n" +} + +start_instance() { + local cfg="$1" + CFGFILE="/var/etc/aiccu-${cfg}.conf" + PIDFILE="/var/run/aiccu-${cfg}.pid" + args="" + + add_config "$cfg" username username + add_config "$cfg" password password + add_config "$cfg" server server + add_config "$cfg" protocol protocol + add_config "$cfg" interface ipv6_interface + add_config "$cfg" tunnel_id tunnel_id + add_config_bool "$cfg" requiretls requiretls 0 + add_config_bool "$cfg" defaultroute defaultroute 1 + add_config_bool "$cfg" nat behindnat 1 + add_config_bool "$cfg" heartbeat makebeats 1 + append args "daemonize true" "\n" + append args "pidfile $PIDFILE" "\n" + + mkdir -p /var/run + echo -e "$args" > "$CFGFILE" + + config_get_bool enabled "$cfg" enabled '1' + [ "$enabled" -gt 0 ] && aiccu start "$CFGFILE" +} + +stop_instance() { + local cfg="$1" + aiccu stop /tmp/run/aiccu-"$cfg".conf +} + +restart_instance() { + local cfg="$1" + stop_instance "$cfg" + start_instance "$cfg" } start() { config_load aiccu - for cfgs_section in $cfgs_sections; do - config_get username $cfgs_section username - config_get password $cfgs_section password - config_get server $cfgs_section server - config_get protocol $cfgs_section protocol - config_get interface $cfgs_section interface - config_get tunnel_id $cfgs_section tunnel_id - config_get_bool requiretls $cfgs_section requiretls 0 - config_get_bool defaultroute $cfgs_section defaultroute 1 - config_get_bool nat $cfgs_section nat 1 - config_get_bool heartbeat $cfgs_section heartbeat 1 - mkdir -p /tmp/run - echo "username $username" > /tmp/run/aiccu-${cfgs_section}.conf - echo "password $password" >> /tmp/run/aiccu-${cfgs_section}.conf - [ -n "$server" ] && echo "server $server" >> /tmp/run/aiccu-${cfgs_section}.conf - [ -n "$protocol" ] && echo "protocol $protocol" >> /tmp/run/aiccu-${cfgs_section}.conf - [ -n "$interface" ] && echo "ipv6_interface $interface" >> /tmp/run/aiccu-${cfgs_section}.conf - [ -n "$tunnel_id" ] && echo "tunnel_id $tunnel_id" >> /tmp/run/aiccu-${cfgs_section}.conf - [ "$requiretls" = "1" ] && echo "requiretls true" >> /tmp/run/aiccu-${cfgs_section}.conf - [ "$defaultroute" != "1" ] && echo "defaultroute false" >> /tmp/run/aiccu-${cfgs_section}.conf - [ "$nat" = "1" ] && echo "behindnat true" >> /tmp/run/aiccu-${cfgs_section}.conf - [ "$heartbeat" != "1" ] && echo "makebeats false" >> /tmp/run/aiccu-${cfgs_section}.conf - echo 'daemonize true' >> /tmp/run/aiccu-${cfgs_section}.conf - echo "pidfile /var/run/aiccu-${cfgs_section}.pid" >> /tmp/run/aiccu-${cfgs_section}.conf - - aiccu start /tmp/run/aiccu-$cfgs_section.conf - done + config_foreach start_instance aiccu } stop() { config_load aiccu - for cfgs_section in $cfgs_sections; do - aiccu stop /tmp/run/aiccu-$cfgs_section.conf - done + config_foreach stop_instance aiccu } + +restart() { + config_load aiccu + config_foreach restart_instance aiccu +} \ No newline at end of file