summaryrefslogtreecommitdiffhomepage
path: root/contrib/package/freifunk-mapupdate/files/usr
diff options
context:
space:
mode:
authorManuel Munz <freifunk@somakoma.de>2011-09-24 20:15:26 +0000
committerManuel Munz <freifunk@somakoma.de>2011-09-24 20:15:26 +0000
commit42a129f669159eee467e1198bcd84f38257d14d3 (patch)
treee783ad1e13230cf12e8e3305974f4e75d4e63f0d /contrib/package/freifunk-mapupdate/files/usr
parentbf49f78599a006a9d136d9fd83cecc5d8a5afb1a (diff)
contrib/package: Add update script for freifunkmap
Diffstat (limited to 'contrib/package/freifunk-mapupdate/files/usr')
-rwxr-xr-xcontrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh b/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh
new file mode 100755
index 0000000000..53225497e7
--- /dev/null
+++ b/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+if [ ! "$(uci -q get freifunk-mapupdate.mapupdate.enabled)" == 1 ]; then
+ exit 1
+fi
+
+MAPSERVER="$(uci -q get freifunk-mapupdate.mapupdate.mapserver)"
+[ -z "$MAPSERVER" ] && logger -t "freifunk-mapupdate:" "No mapserver configured" && exit 1
+
+#check if nameservice plugin is installed and enabled, else exit
+nslib=`uci show olsrd |grep olsrd_nameservice.so |awk {' FS="."; print $1"."$2 '}`
+if [ -n "$nslib" ]; then
+ LATLONFILE="$(uci -q get $nslib.latlon_file)"
+ if [ -z "$LATLONFILE" ]; then
+ LATLONFILE="/var/run/latlon.js"
+ fi
+ if [ ! -p "$LATLONFILE" ]; then
+ logger -t "freifunk-mapupdate:" "latlon_file not found."; exit 1
+ fi
+else
+ logger -t "freifunk-mapupdate:" "nameservice plugin not found in olsrd config."
+ exit 1
+fi
+
+HOSTNAME="$(uci show system |grep hostname |cut -d "=" -f 2)"
+HF_INFO=""
+
+# Get info for myself
+SELF=$(cat $LATLONFILE |grep ^Self | sed -e 's/Self(//' -e 's/);//' -e "s/'//g")
+OLSR_IP="$(echo $SELF |awk '{ FS=",";print $1 }')"
+LOCATION="$(uci show system |grep .location |cut -d "=" -f 2)"
+[ -n "$LOCATION" ] && NOTE="$LOCATION<br>"
+FFNOTE="$(uci -q get freifunk.contact.note)"
+[ -n "$FFNOTE" ] && NOTE="$NOTE $FFNOTE"
+NOTE="<h3><a href='http://$OLSR_IP' target='_blank'>$HOSTNAME</a></h3><p>$NOTE"
+NOTE=`echo -e "$NOTE" | sed -e 's/\ /%20/g' -e 's/&/%26/g' -e 's/"/%22/g'`
+UPDATESTRING="$(echo $SELF |awk '{ FS=",";print $2 }'), $(echo $SELF |awk '{ FS=",";print $3 }')"
+
+# get neighbor Info (lat, lon, lq)
+while read line; do
+ NEIGHUPD="$(echo $line |awk '{ FS=","; print $6 }'), $(echo $line |awk '{ FS=","; print $7 }'), $(echo $line |awk '{ FS=",";print $4 }')"
+ UPDATESTRING="${UPDATESTRING}, ${NEIGHUPD}"
+done << EOF
+`grep "PLink('$OLSR_IP" $LATLONFILE | sed -e 's/PLink(//' -e 's/);//' -e "s/'//g"`
+EOF
+
+# Send UPDATESTRING
+UPDATE=`echo -e "$UPDATESTRING" | sed s/\ /%20/g`
+result="$(wget "$MAPSERVER?update=$UPDATE&updateiv=3600&olsrip=$OLSR_IP&note=${NOTE}${HF_INFO}" -qO -)"
+
+if [ ! "$result" == "success update" ]; then
+ logger -t "freifunk-mapupdate:" "Update failed: $result"
+fi
+