X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=contrib%2Fpackage%2Fmeshwizard%2Ffiles%2Fusr%2Fbin%2Fmeshwizard%2Ffunctions.sh;h=b0f6cb291ea6b844f52f8bc0dfe5085ae787e5f5;hp=c9f7ee7fd12afad82560b3db45f41712c068ad8f;hb=9d85b7ee2e386946612227092ea56b34da08741c;hpb=0c4edd49b982007fff60f64a86d73aabf7f68784 diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh index c9f7ee7fd..b0f6cb291 100644 --- a/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh +++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh @@ -12,6 +12,21 @@ uci_remove_list_element() { done } +# string_contains(string, substring) +# +# Returns 0 if the specified string contains the specified substring, +# otherwise returns 1. +string_contains() { + string="$1" + substring="$2" + if test "${string#*$substring}" != "$string" + then + return 0 # $substring is in $string + else + return 1 # $substring is not in $string + fi +} + # Takes 2 arguments # $1 = text to be displayed in the output for this section # $2 = section (optional) @@ -27,13 +42,20 @@ set_defaults() { 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="$(echo $option |cut -d '=' -f2-)" b="${b//_/ }" - uci set $2.$a="$b" + string_contains "$a" "_LENGTH" && continue + string_contains "$a" "_ITEM" && { + # special threatment for lists. use add_list and remove the + # item index (_ITEMx). + uci add_list $2.${a//_ITEM[0-9]*/}="$b" + } || { + uci set $2.$a="$b" + } done } -# 3 arguements: 1=config name 2=oldname 3=newname +# 3 arguments: 1=config name 2=oldname 3=newname section_rename() { uci -q rename $1.$2=$3 && msg_rename $1.$2 $1.$3 || msg_rename_error $1.$2 $1.$3 } @@ -57,3 +79,40 @@ msg_rename() { msg_rename_error() { echo " \033[1mWarning:\033[0m Could not rename $1 to $2." } + + +restore_factory_defaults() { + echo "+ Restore default config as requested with cleanup=1" + cp -f /rom/etc/config/* /etc/config/ + rm /etc/config/wireless + wifi detect > /etc/config/wireless + rm /etc/config/network + if [ -f /etc/init.d/defconfig ]; then + # legacy (AA) + /etc/init.d/defconfig start + [ -f /rom/etc/uci-defaults/network ] && sh /rom/etc/uci-defaults/network + else + sh /rom/etc/uci-defaults/02_network + fi +} + +is_in_list() { + # checks if an item is in a list + local list="$1" + local item="$2" + for word in $list; do + [ $word = "$item" ] && return 0 + done + return 1 +} + +add_to_list() { + local list="$1" + local item="$2" + is_in_list "$list" "$item" && echo $list + if [ -z "$list" ]; then + echo "$item" + else + echo "$list $item" + fi +}