diff --git a/bsp/default/root_file_system/etc/configurator.sh b/bsp/default/root_file_system/etc/configurator.sh index eb434c89..c7b92bc3 100644 --- a/bsp/default/root_file_system/etc/configurator.sh +++ b/bsp/default/root_file_system/etc/configurator.sh @@ -15,7 +15,6 @@ if [ -f /etc/config/configurator ];then SCRIPT_VERSION=`uci get configurator.@script[0].version` SCRIPT_ERROR_LEVEL=`uci get configurator.@script[0].error_level` SCRIPT_LOGFILE=`uci get configurator.@script[0].logfile` - SCRIPT_SYNC_HOSTNAME=`uci get configurator.@script[0].sync_hostname` 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` @@ -44,42 +43,6 @@ else } fi -sync_hostname() { - 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") - ret=${api_return%%,*} - if [ "$ret" != "success" ]; then - err "Ther was an error fetching the hostname" - exit 0 - elif [ "$ret" = "success" ]; then - netmon_hostname=${api_return%,*} - netmon_hostname=${netmon_hostname#*,} - - #check for valid hostname as specified in rfc 1123 - #see http://stackoverflow.com/a/3824105 - regex='^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])' - regex=$regex'(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$' - if [ "${#netmon_hostname}" -le "255" ]; then - if echo -n $netmon_hostname | egrep -q "$regex"; then - if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then - err "Setting new hostname: $netmon_hostname" - uci set system.@system[0].hostname=$netmon_hostname - uci commit - echo $netmon_hostname > /proc/sys/kernel/hostname - else - err "Hostname is up to date" - fi - else - err "Hostname ist malformed" - exit 0 - fi - else - err "Hostname exceeds the maximum length of 255 characters" - exit 0 - fi - fi -} - assign_router() { hostname=`cat /proc/sys/kernel/hostname` @@ -168,7 +131,3 @@ fi if [ "$AUTOADD_IPV6_ADDRESS" = "1" ]; then autoadd_ipv6_address fi - -if [ "$SCRIPT_SYNC_HOSTNAME" = "1" ]; then - sync_hostname -fi \ No newline at end of file diff --git a/bsp/default/root_file_system/etc/crontabs/root b/bsp/default/root_file_system/etc/crontabs/root index 630c3588..6cb8f9f4 100644 --- a/bsp/default/root_file_system/etc/crontabs/root +++ b/bsp/default/root_file_system/etc/crontabs/root @@ -1,4 +1,4 @@ -*/5 * * * * sh /etc/fastdstart.sh; sh /etc/nodewatcher.sh; sh /etc/configurator.sh +*/5 * * * * sh /etc/fastdstart.sh; sh /etc/nodewatcher.sh; sh /etc/configurator.sh; /etc/syncHostname.sh */1 * * * * /usr/sbin/batctl gw off; sleep 1; /usr/sbin/batctl gw client #15 01 * * * rdate -s time.fu-berlin.de > /dev/null diff --git a/bsp/default/root_file_system/etc/syncHostname.sh b/bsp/default/root_file_system/etc/syncHostname.sh new file mode 100755 index 00000000..0147b780 --- /dev/null +++ b/bsp/default/root_file_system/etc/syncHostname.sh @@ -0,0 +1,80 @@ +#!/bin/sh +# Netmon Configurator (C) 2010-2012 Freifunk Oldenburg +# Lizenz: GPL v3 + +test -f /tmp/started || exit + +#Get the configuration from the uci configuration file +#If it does not exists, then get it from a normal bash file with variables. +if [ -f /etc/config/configurator ];then + API_IPV4_ADRESS=`uci get configurator.@api[0].ipv4_address` + API_IPV6_ADRESS=`uci get configurator.@api[0].ipv6_address` + API_IPV6_INTERFACE=`uci get configurator.@api[0].ipv6_interface` + API_TIMEOUT=`uci get configurator.@api[0].timeout` + SCRIPT_ERROR_LEVEL=`uci get configurator.@script[0].error_level` + SCRIPT_LOGFILE=`uci get configurator.@script[0].logfile` + SCRIPT_SYNC_HOSTNAME=`uci get configurator.@script[0].sync_hostname` + 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_NICKNAME=`uci get configurator.@crawl[0].nickname` + CRAWL_PASSWORD=`uci get configurator.@crawl[0].password` +else + . `dirname $0`/configurator_config +fi + +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() { + 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") + ret=${api_return%%,*} + if [ "$ret" != "success" ]; then + err "Ther was an error fetching the hostname" + exit 0 + elif [ "$ret" = "success" ]; then + netmon_hostname=${api_return%,*} + netmon_hostname=${netmon_hostname#*,} + + #check for valid hostname as specified in rfc 1123 + #see http://stackoverflow.com/a/3824105 + regex='^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])' + regex=$regex'(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$' + if [ "${#netmon_hostname}" -le "255" ]; then + if echo -n $netmon_hostname | egrep -q "$regex"; then + if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then + err "Setting new hostname: $netmon_hostname" + uci set system.@system[0].hostname=$netmon_hostname + uci commit + echo $netmon_hostname > /proc/sys/kernel/hostname + else + err "Hostname is up to date" + fi + else + err "Hostname ist malformed" + exit 0 + fi + else + err "Hostname exceeds the maximum length of 255 characters" + exit 0 + fi + fi +} + +if [ "$SCRIPT_SYNC_HOSTNAME" = "1" ]; then + sync_hostname +fi