[OpenWrt-Devel] [PATCH] aiccu: revamp the init script

2009-06-08 Thread Malte S. Stretz
This patch:

* Replaces the mess the config file generation was with a bunch of helper 
routines.

* Makes absent boolean config options use the aiccu internal defaults like for 
the strings.  These options are commented out in the config per default.

* Ensures that the generated config file has mode 600.  I know that OpenWrt is 
normally not a multiuser system but we've got passwords in there, better safe 
than sorry.

* Records for each (probably only one) running aiccu the state in /var/state 
and stops the tunnels based on that.  This avoids weird errors when you 
change your config and then try to restart aiccu.

* Replaces config_cb with config_foreach which makes the file a lot better to 
understand for non-pros like me.

* Adds a name to the section in the default config file so the files 
in /var/run have a nicer name.  Maybe the files should be named based on the 
interface name instead but I didn't find a clean way to implement this.

Signed-off-by: Malte S. Stretz m...@apache.org
---
 ipv6/aiccu/files/aiccu.conf |   10 ++--
 ipv6/aiccu/files/aiccu.init |   93 +-
 2 files changed, 60 insertions(+), 43 deletions(-)

diff --git a/ipv6/aiccu/files/aiccu.conf b/ipv6/aiccu/files/aiccu.conf
index 671fd16..b088992 100755
--- a/ipv6/aiccu/files/aiccu.conf
+++ b/ipv6/aiccu/files/aiccu.conf
@@ -1,11 +1,11 @@
-config aiccu
+config aiccu tunnel
option username ''
option password ''
option protocol ''
option server   ''
option interface''
option tunnel_id''
-   option requiretls   ''
-   option defaultroute '1'
-   option nat  '1'
-   option heartbeat'1'
+#  option requiretls   'true'
+#  option defaultroute 'true'
+#  option nat  'true'
+#  option heartbeat'true'
diff --git a/ipv6/aiccu/files/aiccu.init b/ipv6/aiccu/files/aiccu.init
index 56de87d..6567bcd 100644
--- a/ipv6/aiccu/files/aiccu.init
+++ b/ipv6/aiccu/files/aiccu.init
@@ -1,52 +1,69 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2009 OpenWrt.org
 START=50
 
-config_cb() {
-   local cfg_type=$1
-   local cfg_name=$2
+aiccu_set() {
+   local config=$1
+   local option=$2
+   local value=$3
+   echo $option $value  /var/run/aiccu-${config}.conf
+}
+
+aiccu_set_string() {
+   local config=$1
+   local option=$2
+   local setting=$3
+   config_get dummy $config ${setting:-$option}
+   [ -n $dummy ]  aiccu_set $config $option $dummy
+}
 
-   case $cfg_type in
-   aiccu)
-   append cfgs_sections $cfg_name $N
-   ;;
+aiccu_set_bool() {
+   local config=$1
+   local option=$2
+   local setting=$3
+   config_get_bool dummy $config ${setting:-$option} undef
+   case $dummy in
+   0) aiccu_set $config $option false ;;
+   1) aiccu_set $config $option true  ;;
esac
 }
 
 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

Re: [OpenWrt-Devel] [PATCH] aiccu: revamp the init script

2009-06-08 Thread Malte S. Stretz
On Monday 08 June 2009 22:10:27 I wrote:
 This patch:

... is wordwrapped.  Grmf, it did look good before I sent it out, seems like 
KMail wordwraps after closing the composer window :-/

Any comments, shall I send again?

The patch is the base for other stuff I'm working on, coming soon.

Cheers,
Malte


-- 
   
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel