contrib/meshwizard: Fix setting of values which contain spaces & cleanups
authorManuel Munz <freifunk@somakoma.de>
Mon, 3 Oct 2011 21:16:10 +0000 (21:16 +0000)
committerManuel Munz <freifunk@somakoma.de>
Mon, 3 Oct 2011 21:16:10 +0000 (21:16 +0000)
contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/initial_config.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/read_defaults.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_freifunk.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_system.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh

index 689289bbb8e7321d06f2ab57a03af653d140e9ce..fbb36ebe55a4f60d723dcfc8e119bc036462e94c 100644 (file)
@@ -24,9 +24,12 @@ uci_commitverbose() {
 }
 
 set_defaults() {
-       for def in $(env |grep "^$1"); do
-               option=${def/$1/}
-               uci set $2.$option
+       for def in $(env |grep "^$1" | sed 's/ /_/g'); do
+               option="${def/$1/}"
+               a="$(echo $option |cut -d '=' -f1)"
+               b="$(echo $option |cut -d '=' -f2)"
+               b="${b//_/ }"
+               uci set $2.$a="$b"
        done
 }
 
index 388886a54f1d5ba57677ff14c7699082f30ac641..12b9148ab27821f12609218dbe85914f81e4d5e4 100755 (executable)
@@ -18,42 +18,23 @@ handle_system() {
 }
 config_foreach handle_system system
 
-if [ -n "$(uci -q get meshwizard.system)" ]; then
-       echo "    + Setup system"
-       uci show meshwizard.system | sed 's/^meshwizard/uci set system/g' | while read line; do
-               eval $line
-               echo "    $line"
-       done
-       uci -q delete meshwizard.system
-fi
-
 if [ -n "$(uci -q get meshwizard.community)" ]; then
        echo "    + Setup community"
-       uci show meshwizard.community | sed 's/^meshwizard/freifunk/g' | while read line; do
-               eval uci set $line
-               echo "    $line"
-       done
+       set_defaults "community_" freifunk.community
        uci -q delete meshwizard.community
+       uci_commitverbose freifunk
 fi
 
 if [ -n "$(uci -q get meshwizard.contact)" ]; then
        echo "    + Setup contact"
-       uci show meshwizard.contact | sed 's/^meshwizard/freifunk/g' | while read line; do
-               eval uci set $line
-               echo "    $line"
-       done
-       uci -q delete meshwizard.contact
+       set_defaults "contact_" freifunk.contact
+       uci -q delete meshwizard.contact && uci_commitverbose freifunk
 fi
 
 if [ "$has_luci" == TRUE ]; then
-       if [ -n "$(uci -q get meshwizard.luci_main)" ]; then
-               echo "    + Setup luci"
-               uci show meshwizard.luci_main |sed -e 's/^meshwizard/luci/g' -e 's/luci_main/main/' | while read line; do 
-                       eval uci set $line
-                       echo "    $line"
-               done
-               uci -q delete meshwizard.luci_main
-       fi
+       echo "    + Setup luci"
+       set_defaults "luci_main_" luci.main
+       uci -q delete meshwizard.luci_main && uci_commitverbose luci
 fi
 
 uci commit
index e20cc382724bcbbb592511412d32fc4464bcab31..67469e3c2ceaf8087a52b0ce4b117c1cc9b1a3b7 100755 (executable)
@@ -18,3 +18,8 @@ done
 for v in system wifi_device wifi_iface interface alias dhcp olsr_interface olsr_interfacedefaults profile zone_freifunk include; do
        get_var profile_$community.$v
 done
+
+# read values from meshwizard
+for v in system luci_main contact community; do
+        get_var meshwizard.$v
+done
index 0e6e7dfadf2179d54b17f6aaef3d717f14dfad2a..e4bd87f1cbdc622c9cc577182dd0657e1bd5cde2 100755 (executable)
@@ -4,11 +4,10 @@
 . $dir/functions.sh
 
 # Set community homepage
-hp=$(uci -q get profile_$community.profile.homepage)
 
-if [ -n "$hp" ]; then
-       uci set freifunk.community.homepage="$hp"
+if [ -n "$profile_homepage" ]; then
+       uci set freifunk.community.homepage="$profile_homepage"
 fi
 
-uci_commitverbose "/etc/init.d/freifunk config" freifunk
+uci_commitverbose freifunk
 
index 2c3081e6660128ad953f9e58cabf7a63f12e0bd4..eb899d011bdeea2b37cd9b68bd7f8be121239a4a 100755 (executable)
@@ -9,4 +9,5 @@ if [ -n "$(env | grep '^system_')" ]; then
        done
 fi
 
+uci -q delete meshwizard.system && uci commit meshwizard
 uci_commitverbose "System config" system
index f4e7af2bc378a03d59e03ff40addbd62e269d115..113d9058f03fc34c2ba6efbd78ad92fcc100f989 100755 (executable)
@@ -23,12 +23,9 @@ opkg list_installed |grep luci-app-splash > /dev/null && export has_luci_splash=
        echo "+ Renaming wifi-devices in /etc/config/meshwizard"
        $dir/helpers/rename-wifi.sh
 
-# Firstboot/initial config
-       echo "+ Initial config"
-       $dir/helpers/initial_config.sh
-
 # Get community
-export community=$(uci get freifunk.community.name)
+export community=$(uci -q get meshwizard.community.name)
+[ -z "$community" ] && community=$(uci -q get freifunk.community.name)
 [ -z "$community" ] && echo "Error: Community is not set in /etc/config/freifunk, aborting now." && exit 1
 
 # Check whether we want to cleanup uci config before setting new options or not
@@ -45,15 +42,20 @@ export networks
 echo "    Community=$community
     Network(s)=$networks"
 
-# Read default values (first from /etc/config/freifunk, then from /etc/config/profile_$community,
+# Read default values (first from /etc/config/freifunk, then from /etc/config/profile_$community
+# then /etc/config/meshwizard
 # last will overwrite first
 
-
 $dir/helpers/read_defaults.sh $community > /tmp/meshwizard.tmp
 while read line; do
        export "${line//\"/}"
 done < /tmp/meshwizard.tmp
 
+# Firstboot/initial config
+       echo "+ Initial config"
+       $dir/helpers/initial_config.sh
+
+
 $dir/helpers/setup_dnsmasq.sh
 $dir/helpers/setup_system.sh
 $dir/helpers/setup_freifunk.sh