From 0f57b3662a33d00aa8823f433f8cc9e0203dd72f Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Sun, 3 Feb 2013 17:20:04 +0100 Subject: [PATCH] configurator: yep.. it got a diet, too Signed-off-by: Tim Niemeyer --- .../root_file_system/etc/configurator.sh | 186 +++++++----------- 1 file changed, 71 insertions(+), 115 deletions(-) diff --git a/bsp/default/root_file_system/etc/configurator.sh b/bsp/default/root_file_system/etc/configurator.sh index 567c9f5..cb59ec1 100644 --- a/bsp/default/root_file_system/etc/configurator.sh +++ b/bsp/default/root_file_system/etc/configurator.sh @@ -26,169 +26,125 @@ fi API_RETRY=$(($API_RETRY - 1)) -get_url() { - if [[ $API_IPV4_ADRESS != "1" ]]; then - url=$API_IPV4_ADRESS - else - url="[$API_IPV6_ADRESS"%"$API_IPV6_INTERFACE]" - fi - echo $url -} +if [[ $API_IPV4_ADRESS != "1" ]]; then + netmon_api=$API_IPV4_ADRESS +else + netmon_api="[$API_IPV6_ADRESS"%"$API_IPV6_INTERFACE]" +fi + +if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then + err() { + echo "$(date) [configurator]: $1" >> $SCRIPT_LOGFILE + } +else + err() { + : + } +fi sync_hostname() { - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: Syncing hostname" >> $SCRIPT_LOGFILE - fi - netmon_api=`get_url` - command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=get_hostname&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID" - api_return=`$command&sleep $API_TIMEOUT; kill $!` - netmon_hostname=`echo $api_return| cut '-d,' -f2` + err "Syncing hostname" + api_return=$(wget -T $API_TIMEOUT -q -O - "http://$netmon_api/api_csv_configurator.php?section=get_hostname&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID") + netmon_hostname=${api_return%,*} + netmon_hostname=${netmon_hostname#*,} if [ "$netmon_hostname" != "" ]; then if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: Setting new hostname: $netmon_hostname" >> $SCRIPT_LOGFILE - fi + err "Setting new hostname: $netmon_hostname" uci set system.@system[0].hostname=$netmon_hostname uci commit echo $netmon_hostname > /proc/sys/kernel/hostname else - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: Hostname is up to date" >> $SCRIPT_LOGFILE - fi + err "Hostname is up to date" fi fi } assign_router() { - netmon_api=`get_url` hostname=`cat /proc/sys/kernel/hostname` #Choose right login String - login_strings="$(ifconfig br-mesh | grep HWaddr | awk '{ print $5 }'|sed -e 's/://g');$(ifconfig eth0 | grep HWaddr | awk '{ print $5 }'|sed -e 's/://g');$(ifconfig ath0 | grep HWaddr | awk '{ print $5 }'|sed -e 's/://g')" - command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=test_login_strings&login_strings=$login_strings" - ergebnis=`$command&sleep $API_TIMEOUT; kill $!` - if [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then - router_auto_assign_login_string=`echo $ergebnis| cut '-d;' -f2` - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: A router with the login string $router_auto_assign_login_string does exists. Trying to assign..." >> $SCRIPT_LOGFILE - fi - elif [ `echo $ergebnis| cut '-d;' -f1` = "error" ]; then - router_auto_assign_login_string=`echo $login_strings| cut '-d;' -f1` - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: A router with this login string does not exist: $login_strings" >> $SCRIPT_LOGFILE - echo "`date`: Using $router_auto_assign_login_string as login string" >> $SCRIPT_LOGFILE - fi + #Here maybe a ; to much at the end..?? + login_strings=$(awk '{ mac=toupper($1); gsub(":", "", mac); printf mac ";" }' /sys/class/net/br-mesh/address /sys/class/net/eth0/address /sys/class/net/ath0/address 2> /dev/null) + ergebnis=$(wget -T $API_TIMEOUT -q -O - "http://$netmon_api/api_csv_configurator.php?section=test_login_strings&login_strings=$login_strings") + router_auto_assign_login_string=${ergebnis#*;} + ergebnis=${ergebnis%;*} + if [ "$ergebnis" = "error" ]; then + router_auto_assign_login_string=${login_strings%%;*} + err "A router with this login string does not exist: $login_strings" + err "Using $router_auto_assign_login_string as login string" fi #Try to assign Router with choosen login string - command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=router_auto_assign&router_auto_assign_login_string=$router_auto_assign_login_string&hostname=$hostname" - ergebnis=`$command&sleep $API_TIMEOUT; kill $!` - if [ `echo $ergebnis| cut '-d;' -f1` != "success" ]; then - if [ `echo $ergebnis| cut '-d;' -f2` = "already_assigned" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: The login string `echo $ergebnis| cut '-d;' -f3` is already assigned to a router. Exiting" >> $SCRIPT_LOGFILE - exit 0 - fi - elif [ `echo $ergebnis| cut '-d;' -f2` = "autoassign_not_allowed" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: The router with the login string `echo $ergebnis| cut '-d;' -f3` does not allow autoassign. Exiting" >> $SCRIPT_LOGFILE - exit 0 - fi - elif [ `echo $ergebnis| cut '-d;' -f2` = "new_not_assigned" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: Router has been added to the list of not assigned routers. Exiting" >> $SCRIPT_LOGFILE - exit 0 - fi - elif [ `echo $ergebnis| cut '-d;' -f2` = "updated_not_assigned" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: The list of not assigned routers has been updated. Exiting" >> $SCRIPT_LOGFILE - exit 0 - fi - else - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: An unknown error occured" >> $SCRIPT_LOGFILE - exit 0 - fi - fi - if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then - echo "`date`: The router has not been assigned to a router in Netmon" >> $SCRIPT_LOGFILE - fi - elif [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then + ergebnis=$(wget -T $API_TIMEOUT -q -O - "http://$netmon_api/api_csv_configurator.php?section=router_auto_assign&router_auto_assign_login_string=$router_auto_assign_login_string&hostname=$hostname") + ret=${ergebnis%%;*} + errstr=${ergebnis#*;} + errstr=${errstr%%;*} + if [ "$ret" != "success" ]; then + err "The router has not been assigned to a router in Netmon" + err "Failure on router_auto_assign: $errstr. Exiting" + exit 0 + elif [ "$ret" = "success" ]; then + update_hash=${ergebnis%;*} + update_hash=${update_hash##*;} #write new config - uci set configurator.@crawl[0].router_id=`echo $ergebnis| cut '-d;' -f2` - uci set configurator.@crawl[0].update_hash=`echo $ergebnis| cut '-d;' -f3` + uci set configurator.@crawl[0].router_id=$errstr + uci set configurator.@crawl[0].update_hash=$update_hash #set also new router id for nodewatcher - uci set nodewatcher.@crawl[0].router_id=`echo $ergebnis| cut '-d;' -f2` + #uci set nodewatcher.@crawl[0].router_id=$errstr - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: The router `echo $ergebnis| cut '-d;' -f2` has been assigned with a router in Netmon" >> $SCRIPT_LOGFILE - fi + err "The router $errstr has been assigned with a router in Netmon" uci commit CRAWL_METHOD=`uci get configurator.@crawl[0].method` - CRAWL_ROUTER_ID=`uci get configurator.@crawl[0].router_id` - CRAWL_UPDATE_HASH=`uci get configurator.@crawl[0].update_hash` + CRAWL_ROUTER_ID=$errstr + CRAWL_UPDATE_HASH=$update_hash CRAWL_NICKNAME=`uci get configurator.@crawl[0].nickname` CRAWL_PASSWORD=`uci get configurator.@crawl[0].password` fi } autoadd_ipv6_address() { - netmon_api=`get_url` - echo "`date`: Doing IPv6 autoadd" >> $SCRIPT_LOGFILE - ipv6_link_local_addr="`ifconfig br-mesh | grep 'inet6 addr:' | grep 'Scope:Link' | awk '{ print $3}'`" - command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=autoadd_ipv6_address&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID&ip=$ipv6_link_local_addr" - ergebnis=`$command&sleep $API_TIMEOUT; kill $!` - if [ `echo $ergebnis| cut '-d,' -f1` = "success" ]; then + err "Doing IPv6 autoadd" + ipv6_link_local_addr=$(ip addr show dev br-mesh scope link | awk '/inet6/{print $2}') + ergebnis=$(wget -T $API_TIMEOUT -q -O - "http://$netmon_api/api_csv_configurator.php?section=autoadd_ipv6_address&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID&ip=$ipv6_link_local_addr") + ret=${ergebnis%%,*} + if [ "$ret" = "success" ]; then uci set configurator.@netmon[0].autoadd_ipv6_address='0' uci commit - echo "`date`: The IPv6 address of the router $CRAWL_ROUTER_ID has been added to the router in Netmon" >> $SCRIPT_LOGFILE - echo "`date`: IPv6 Autoadd has been disabled cause it is no longer necesarry" >> $SCRIPT_LOGFILE + err "The IPv6 address of the router $CRAWL_ROUTER_ID has been added to the router in Netmon" + err "IPv6 Autoadd has been disabled cause it is no longer necesarry" else - if [ `echo $ergebnis| cut '-d,' -f3` == "$CRAWL_ROUTER_ID" ]; then - echo "`date`: The IPv6 address already exists in Netmon on this router. Maybe because of a previos assignment" >> $SCRIPT_LOGFILE + routerid=${ergebnis##*,} + if [ "$routerid" == "$CRAWL_ROUTER_ID" ]; then + err "The IPv6 address already exists in Netmon on this router. Maybe because of a previos assignment" uci set configurator.@netmon[0].autoadd_ipv6_address='0' uci commit - echo "`date`: IPv6 Autoadd has been disabled cause it is no longer necesarry" >> $SCRIPT_LOGFILE + err "IPv6 Autoadd has been disabled cause it is no longer necesarry" else - echo "`date`: The IPv6 address already exists in Netmon on another router `echo $ergebnis| cut '-d,' -f3`" >> $SCRIPT_LOGFILE + err "The IPv6 address already exists in Netmon on another router $routerid" fi fi } if [ $CRAWL_METHOD == "login" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: Authentification method is: username and passwort" >> $SCRIPT_LOGFILE - fi + err "Authentification method is: username and passwort" elif [ $CRAWL_METHOD == "hash" ]; then - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: Authentification method: autoassign and hash" >> $SCRIPT_LOGFILE - echo "`date`: Checking if the router is already assigned to a router in Netmon" >> $SCRIPT_LOGFILE - fi + err "Authentification method: autoassign and hash" + err "Checking if the router is already assigned to a router in Netmon" if [ $CRAWL_UPDATE_HASH == "1" ]; then - can_crawl=0 - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: The router is not assigned to a router in Netmon" >> $SCRIPT_LOGFILE - echo "`date`: Trying to assign the router" >> $SCRIPT_LOGFILE - fi + err "The router is not assigned to a router in Netmon" + err "Trying to assign the router" assign_router - sync_hostname + if [[ $AUTOADD_IPV6_ADDRESS = "1" ]]; then + autoadd_ipv6_address + fi else - if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then - echo "`date`: The router is already assigned to a router in Netmon" >> $SCRIPT_LOGFILE - fi - if [[ $AUTOADD_IPV6_ADDRESS = "1" ]]; then - autoadd_ipv6_address - fi + err "The router is already assigned to a router in Netmon" fi fi - -tmp=${1-text} -if [[ $tmp = "sync_hostname" ]]; then - #Sync Hostname - if [[ $SCRIPT_SYNC_HOSTNAME = "1" ]]; then - sync_hostname - fi +if [[ $SCRIPT_SYNC_HOSTNAME = "1" ]]; then + sync_hostname fi +