configurator: yep.. it got a diet, too

Signed-off-by: Tim Niemeyer <tim.niemeyer@mastersword.de>
This commit is contained in:
Tim Niemeyer 2013-02-03 17:20:04 +01:00
parent 7b24ace289
commit 0f57b3662a
1 changed files with 71 additions and 115 deletions

View File

@ -26,169 +26,125 @@ fi
API_RETRY=$(($API_RETRY - 1)) API_RETRY=$(($API_RETRY - 1))
get_url() { if [[ $API_IPV4_ADRESS != "1" ]]; then
if [[ $API_IPV4_ADRESS != "1" ]]; then netmon_api=$API_IPV4_ADRESS
url=$API_IPV4_ADRESS else
else netmon_api="[$API_IPV6_ADRESS"%"$API_IPV6_INTERFACE]"
url="[$API_IPV6_ADRESS"%"$API_IPV6_INTERFACE]" fi
fi
echo $url if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
} err() {
echo "$(date) [configurator]: $1" >> $SCRIPT_LOGFILE
}
else
err() {
:
}
fi
sync_hostname() { sync_hostname() {
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Syncing hostname"
echo "`date`: Syncing hostname" >> $SCRIPT_LOGFILE 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")
fi netmon_hostname=${api_return%,*}
netmon_api=`get_url` netmon_hostname=${netmon_hostname#*,}
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`
if [ "$netmon_hostname" != "" ]; then if [ "$netmon_hostname" != "" ]; then
if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Setting new hostname: $netmon_hostname"
echo "`date`: Setting new hostname: $netmon_hostname" >> $SCRIPT_LOGFILE
fi
uci set system.@system[0].hostname=$netmon_hostname uci set system.@system[0].hostname=$netmon_hostname
uci commit uci commit
echo $netmon_hostname > /proc/sys/kernel/hostname echo $netmon_hostname > /proc/sys/kernel/hostname
else else
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Hostname is up to date"
echo "`date`: Hostname is up to date" >> $SCRIPT_LOGFILE
fi
fi fi
fi fi
} }
assign_router() { assign_router() {
netmon_api=`get_url`
hostname=`cat /proc/sys/kernel/hostname` hostname=`cat /proc/sys/kernel/hostname`
#Choose right login String #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')" #Here maybe a ; to much at the end..??
command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=test_login_strings&login_strings=$login_strings" 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=`$command&sleep $API_TIMEOUT; kill $!` ergebnis=$(wget -T $API_TIMEOUT -q -O - "http://$netmon_api/api_csv_configurator.php?section=test_login_strings&login_strings=$login_strings")
if [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then router_auto_assign_login_string=${ergebnis#*;}
router_auto_assign_login_string=`echo $ergebnis| cut '-d;' -f2` ergebnis=${ergebnis%;*}
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ "$ergebnis" = "error" ]; then
echo "`date`: A router with the login string $router_auto_assign_login_string does exists. Trying to assign..." >> $SCRIPT_LOGFILE router_auto_assign_login_string=${login_strings%%;*}
fi err "A router with this login string does not exist: $login_strings"
elif [ `echo $ergebnis| cut '-d;' -f1` = "error" ]; then err "Using $router_auto_assign_login_string as login string"
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
fi fi
#Try to assign Router with choosen login string #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=$(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")
ergebnis=`$command&sleep $API_TIMEOUT; kill $!` ret=${ergebnis%%;*}
if [ `echo $ergebnis| cut '-d;' -f1` != "success" ]; then errstr=${ergebnis#*;}
if [ `echo $ergebnis| cut '-d;' -f2` = "already_assigned" ]; then errstr=${errstr%%;*}
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ "$ret" != "success" ]; then
echo "`date`: The login string `echo $ergebnis| cut '-d;' -f3` is already assigned to a router. Exiting" >> $SCRIPT_LOGFILE err "The router has not been assigned to a router in Netmon"
exit 0 err "Failure on router_auto_assign: $errstr. Exiting"
fi exit 0
elif [ `echo $ergebnis| cut '-d;' -f2` = "autoassign_not_allowed" ]; then elif [ "$ret" = "success" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then update_hash=${ergebnis%;*}
echo "`date`: The router with the login string `echo $ergebnis| cut '-d;' -f3` does not allow autoassign. Exiting" >> $SCRIPT_LOGFILE update_hash=${update_hash##*;}
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
#write new config #write new config
uci set configurator.@crawl[0].router_id=`echo $ergebnis| cut '-d;' -f2` uci set configurator.@crawl[0].router_id=$errstr
uci set configurator.@crawl[0].update_hash=`echo $ergebnis| cut '-d;' -f3` uci set configurator.@crawl[0].update_hash=$update_hash
#set also new router id for nodewatcher #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 err "The router $errstr has been assigned with a router in Netmon"
echo "`date`: The router `echo $ergebnis| cut '-d;' -f2` has been assigned with a router in Netmon" >> $SCRIPT_LOGFILE
fi
uci commit uci commit
CRAWL_METHOD=`uci get configurator.@crawl[0].method` CRAWL_METHOD=`uci get configurator.@crawl[0].method`
CRAWL_ROUTER_ID=`uci get configurator.@crawl[0].router_id` CRAWL_ROUTER_ID=$errstr
CRAWL_UPDATE_HASH=`uci get configurator.@crawl[0].update_hash` CRAWL_UPDATE_HASH=$update_hash
CRAWL_NICKNAME=`uci get configurator.@crawl[0].nickname` CRAWL_NICKNAME=`uci get configurator.@crawl[0].nickname`
CRAWL_PASSWORD=`uci get configurator.@crawl[0].password` CRAWL_PASSWORD=`uci get configurator.@crawl[0].password`
fi fi
} }
autoadd_ipv6_address() { autoadd_ipv6_address() {
netmon_api=`get_url` err "Doing IPv6 autoadd"
echo "`date`: Doing IPv6 autoadd" >> $SCRIPT_LOGFILE ipv6_link_local_addr=$(ip addr show dev br-mesh scope link | awk '/inet6/{print $2}')
ipv6_link_local_addr="`ifconfig br-mesh | grep 'inet6 addr:' | grep 'Scope:Link' | awk '{ print $3}'`" 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")
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" ret=${ergebnis%%,*}
ergebnis=`$command&sleep $API_TIMEOUT; kill $!` if [ "$ret" = "success" ]; then
if [ `echo $ergebnis| cut '-d,' -f1` = "success" ]; then
uci set configurator.@netmon[0].autoadd_ipv6_address='0' uci set configurator.@netmon[0].autoadd_ipv6_address='0'
uci commit uci commit
echo "`date`: The IPv6 address of the router $CRAWL_ROUTER_ID has been added to the router in Netmon" >> $SCRIPT_LOGFILE err "The IPv6 address of the router $CRAWL_ROUTER_ID has been added to the router in Netmon"
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 else
if [ `echo $ergebnis| cut '-d,' -f3` == "$CRAWL_ROUTER_ID" ]; then routerid=${ergebnis##*,}
echo "`date`: The IPv6 address already exists in Netmon on this router. Maybe because of a previos assignment" >> $SCRIPT_LOGFILE 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 set configurator.@netmon[0].autoadd_ipv6_address='0'
uci commit 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 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
fi fi
} }
if [ $CRAWL_METHOD == "login" ]; then if [ $CRAWL_METHOD == "login" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Authentification method is: username and passwort"
echo "`date`: Authentification method is: username and passwort" >> $SCRIPT_LOGFILE
fi
elif [ $CRAWL_METHOD == "hash" ]; then elif [ $CRAWL_METHOD == "hash" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Authentification method: autoassign and hash"
echo "`date`: Authentification method: autoassign and hash" >> $SCRIPT_LOGFILE err "Checking if the router is already assigned to a router in Netmon"
echo "`date`: Checking if the router is already assigned to a router in Netmon" >> $SCRIPT_LOGFILE
fi
if [ $CRAWL_UPDATE_HASH == "1" ]; then if [ $CRAWL_UPDATE_HASH == "1" ]; then
can_crawl=0 err "The router is not assigned to a router in Netmon"
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "Trying to assign the router"
echo "`date`: The router is not assigned to a router in Netmon" >> $SCRIPT_LOGFILE
echo "`date`: Trying to assign the router" >> $SCRIPT_LOGFILE
fi
assign_router assign_router
sync_hostname if [[ $AUTOADD_IPV6_ADDRESS = "1" ]]; then
autoadd_ipv6_address
fi
else else
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then err "The router is already assigned to a router in Netmon"
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
fi fi
fi fi
if [[ $SCRIPT_SYNC_HOSTNAME = "1" ]]; then
tmp=${1-text} sync_hostname
if [[ $tmp = "sync_hostname" ]]; then
#Sync Hostname
if [[ $SCRIPT_SYNC_HOSTNAME = "1" ]]; then
sync_hostname
fi
fi fi