#!/bin/sh

. /lib/functions.sh
. /usr/share/libubox/jshn.sh
. /usr/lib/weimarnetz/ipsystem.sh 

log() {
        logger -s -t ffwizard "$@"
}

# dirty workaround to use reload_config. LuCI seems to save and apply another way, so this script would be called twice when we call config_reload at the end to apply other changes 
# uci seems to write md5sums for config files to /var/fun/config.md5, this file is not updated when luci's save and reply runs, so the wizard would be executed a second time when we call reload_config at the end
md5=$(uci show ffwizard |md5sum|cut -d ' ' -f1)
sed -i "/ffwizard/c$md5  /var/run/config.check/ffwizard" /var/run/config.md5

community=$(uci_get freifunk community name "Weimar")

randomnode=false
nodenumber=$(uci_get ffwizard settings nodenumber "-1")
[ "$nodenumber" -gt 0 ] || {
        log "error: wrong or missing node number, generating a temporary random one"
        node_number_seed="$( dd if=/dev/urandom bs=2 count=1 2>&- | hexdump | if read line; then echo 0x${line#* }; fi )"
        random_node_number="$(( $node_number_seed % 19 + 1001))"
        log "info: We've got a new temporary node number: $random_node_number"
        uci_set ffwizard settings nodenumber "$random_node_number"
        uci_commit ffwizard
        randomnode=true
        nodenumber=$random_node_number
}

nodedata="$(node2nets_json "$nodenumber")" 

wdir="/usr/lib/ffwizard.d"
[ -d $wdir ] || return 0
files="$(find $wdir -type f | sort)"
[ -z "$files" ] && return 0
for file in $files; do
        log "procesing $file"
        . "$file"
done

ubus call uci "reload_config"
# vim: set filetype=sh ai noet ts=4 sw=4 sts=4 :
