<html><head></head><body>Hallo Tim,<br>
<br>
das ist die Lösung für das problem, dass nur ein Gateway fe80::1 haben kann.<br>
<br>
Grüße<br>
<br>
Adrian<br><br><div class="gmail_quote">On November 2, 2017 10:18:19 AM GMT+01:00, Tim Niemeyer <tim@tn-x.org> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Hi<br /><br />Was hat der Alfred für einen Vorteil?<br /><br />Ich sehe eigentlich für den kxv2 nur Nachteile. Es ist komplex, geht leicht kaputt, etc.<br /><br />Tim<br /><br />Am 1. November 2017 23:44:39 MEZ schrieb Adrian Schmutzler <freifunk@adrianschmutzler.de>:<br /><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Please read inline comments. UNTESTED.<br /><br />Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de><br />---<br />.../fff-hoods/files/lib/functions/fff/keyxchange   | 28<br />++++++++++++++++++<br />.../fff/fff-hoods/files/usr/sbin/configurehood     | 34<br />++++++++++++++++++++--<br /> 2 files changed, 60 insertions(+), 2 deletions(-)<br /><br />diff --git<br />a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange<br />b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange<br />index 9aeb434..2d645d0 100644<br />--- a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange<br />+++ b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange<br />@@ -31,3 +31,31 @@ getUpgradePath() {<br />  fi<br />  return 0<br /> }<br />+<br />+getJsonTimestamp() {<br />+ json=$1<br />+ <br />+ ts=0<br />+ if [ -n "$json" ] && json_load "$json" &>/dev/null ; then<br />+  json_select "hood" &>/dev/null && json_get_var ts timestamp<br />+ fi<br />+ echo "$ts"<br />+}<br />+<br />+getJsonFromAlfred() {<br />+ datafile=$1<br />+<br />+ tsold=0<br />+ jsonused=""<br />+<br />+ while read -r line<br />+ do<br />+  json="$(echo "$line" | sed 's/[^,]*,\s*"//' | sed 's/"\s*},\s*$//' |<br />sed 's/\\"/"/g')"<br />+  ts="$(getJsonTimestamp "$json")"<br />+  if [ "$ts" -gt "$tsold" ] ; then<br />+   jsonused="$json"<br />+   tsold="$ts"<br />+  fi<br />+ done < "$datafile"<br />+ echo "$jsonused"<br />+}<br />diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br />b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br />index 8ffaced..981f7aa 100755<br />--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br />+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br />@@ -9,6 +9,9 @@ sectorlocal=/etc/sectorfile<br /> sectortmp=/tmp/sectorfile<br /> sectorcopy=/www/hood/sectorfile<br /> <br />+alfredfile=/tmp/alfredhood<br />+alfrednum="65"<br />+<br /> rm -f "$hoodfile"<br /> <br /> # Gatewaycheck function<br />@@ -65,6 +68,29 @@ long=$(uci -q get system.@system[0].longitude)<br /> # if we have Internet, we download the Hoodfile from the keyxchangev2<br /> if hasInternet ; then<br /> wget -T15 -t5<br />"<a href="http://keyserver.freifunk-franken.de/v2/?lat">http://keyserver.freifunk-franken.de/v2/?lat</a>=$lat&long=$long" -O<br />"$hoodfile"<br />+ <br />+ # Alfred will always have only one "entry" per sender address. Thus,<br />old data will be overwritten by new one.<br />+ # If the commented lines are enabled, the behavior will be altered:<br />The router will only send data if no up-to-date information is already<br />present.<br />+ <br />+ #hoodread="$(cat "$hoodfile")"<br />+ #alfred -r "$alfrednum" > "$alfredfile"<br />+ #alfrednewest="$(getJsonFromAlfred "$alfredfile")"<br />+ #rm -f "$alfredfile"<br />+ #tsinet="$(getJsonTimestamp "$hoodread")"<br />+ #tsalfred="$(getJsonTimestamp "$alfrednewest")"<br />+ #if [ "$tsinet" -gt "$tsalfred" ] ; then<br />+  cat "$hoodfile" | alfred -s "$alfrednum"<br />+ #fi<br />+ <br />+ # Note that data sent this way has a lifetime. The following case<br />would be possible:<br />+ # 1. The first uplink router will send data via alfred<br />+ # 2. All routers won't send any data, since the data from the first<br />is already present and up-to-date<br />+ # 3. The alfred data send by the first router expires -> No alfred<br />data present<br />+ # 4. A random router will find no data and paste its own, restarting<br />the cycle<br />+ # Note that between 3. and 4. there is a gap where no data is<br />present.<br />+ # -> Advantage: The alfred information will be much smaller, leading<br />to smaller files and less CPU for parsing (json = about 1 kB per<br />Sender)<br />+ # -> Disadvantage: There will be frequent gaps with no data available<br />+<br />  rm -f "$sectortmp"<br /> [ -s "$sectorlocal" ] || rm -f "$sectorcopy" # If internet present, no<br />custom config should be distributed, except when local file is present<br />  #UPLINK: No uplink download if internet present<br />@@ -115,8 +141,12 @@ else<br />   wget -T15 -t5 "http://[fe80::1%w2sta]:2342/sectorfile" -O<br />"$sectortmp" || wget -T15 -t5 "http://[fe80::1%w5sta]:2342/sectorfile"<br />-O "$sectortmp"<br />   fi<br />  else<br />-  echo "We have a Gateway in Range, we load the keyxchangev2data from<br />fe80::1"<br />-  wget -T15 -t5 "http://[fe80::1%br-mesh]:2342/keyxchangev2data" -O<br />"$hoodfile"<br />+  echo "We have a Gateway in Range, we collect files from the<br />neighborhood"<br />+  alfred -r "$alfrednum" > "$alfredfile"<br />+  alfrednewest="$(getJsonFromAlfred "$alfredfile")"<br />+  rm -f "$alfredfile"<br />+  [ -n "$alfrednewest" ] && echo "$alfrednewest" > "$hoodfile"<br />+  <br />   #UPLINK: Do nothing<br />  fi<br /> fi<br /></blockquote>-- <br />franken-dev mailing list<br />franken-dev@freifunk.net<br /><a href="http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net">http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net</a><br /></pre></blockquote></div></body></html>