<html><head></head><body>Hallo,<br>
<br>
was passiert denn im falle einer hoodteilung? Reicht das switchen des uplinks, dass die mesh-router dann im neuen layer2 der neuen hood sind (und so die neuen files downloaden)?<br>
<br>
Und alle Router die beide Hoods sehen, bleiben bei der alten...?<br>
<br>
Grüße<br>
<br>
Adrian<br><br><div class="gmail_quote">On November 2, 2017 9:35:14 AM GMT+01:00, Christian Dresel <fff@chrisi01.de> 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 />On 02.11.2017 09:27, Adrian Schmutzler wrote:<br /><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> Hallo,<br /> <br /> 1. Man könnte die Infrastruktur so bauen, dass nur die Gateways<br /> hoodfiles per Alfred verschicken. Dies könnte der zielrouter überprüfen,<br /> indem man die macadressen der Gateways in die hoodfile schreibt. Der<br /> zielrouter nimmt dann nur die Einträge mit der richtigen sendermac. Für<br /> den dezentralen exchange könnte man das dann leicht auf den jetzigen<br /> stand umbauen.<br /></blockquote><br />gefällt mir irgendwie nicht so recht. Ich hab aktuell 2 Ideen im Kopf:<br /><br />1) Wir ignorieren es einfach, Möglichkeiten das L2 Netz kaputt zu machen<br />gibt es sehr viele, das wäre dann nur eine davon.<br /><br />2) Der Keyxchange signiert die Hoodfile mit ecdsautils und gibt die<br />Signatur mit an die Uplinkrouter, welche sie wiederrum mit ins Alfred<br />stecken. Die Meshrouter können die Signatur prüfen und die File für<br />gültig erachten. Dann wäre der Umstieg auf den dezentralen Keyxchange<br />noch leichter, da dies dort sowieso geplant war. Nur das es da nicht die<br />Masterkeyxchange Signatur gibt sondern noch ein WebOfTrust und<br />Usersignaturen so das sie irgendwo in die Hood als neue File<br />reingesteckt werden kann.<br /><br />mfg<br /><br />Christian<br /><br /><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> <br /> 2. Was mich im Moment noch stört ist dass wir so einen haufen Daten im<br /> ganzen layer2 rumschicken. Die hoodfiles sind ja nicht so klein und ich<br /> weiß nicht, wie oft das Netz die hin und her schickt.<br /> <br /> Grüße<br /> <br /> Adrian<br /> <br /> On November 2, 2017 9:13:21 AM GMT+01:00, Christian Dresel<br /> <fff@chrisi01.de> wrote:<br /> <br /> Morgen Robert<br /> <br /> später für den dezentralen Keyxchange wäre das ein absolut gewünschtes<br /> verhalten (da wären die Files signiert und es müssen auch genug<br /> Signaturen dran sein, damit sie gültig ist). Daher fände ich es toll,<br /> wenn wir es jetzt beim keyxchangev2 so hinbekommen das es zum aktuellen<br /> Zeitpunkt "relativ sicher" ist dann wäre der Umstieg später auf den<br /> dezentralen Keyxchange recht leicht.<br /> <br /> Uplinkrouter holen sich die File ja sowieso nicht aus der json sondern<br /> aus dem keyxchangev2. Vielleicht kann man da ansetzen das irgendwie<br /> abzusichern, eine richtige Idee habe ich aber gerade nicht.<br /> <br /> mfg<br /> <br /> Christian<br /> <br /> On 02.11.2017 08:58, robert wrote:<br /> <br /> Hallo,<br /> <br /> Mir ist da gerade ein Gedanke gekommen.<br /> <br /> Wenn wir das hoodfile über alfred verteilen, dann zieht die<br /> gesamte Hood<br /> nach, sobald irgendwo, aus welchem Grund auch immer ein neues<br /> Hoodfile<br /> auftaucht. Das bedeutet, jeder der einen Router in der Hood hat,<br /> kann<br /> diese umkonfigurieren. Nicht so gut.<br /> <br /> Robert<br /> <br /> <br /> Am 01.11.2017 um 23:44 schrieb Adrian Schmutzler:<br /> <br /> 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 /> ---<br /> a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange<br /> +++<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<br /> 's/"\s*},\s*$//' | 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<br /> 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<br /> system.@system[0].longitude)<br /> # if we have Internet, we download the Hoodfile from the<br /> 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"<br /> -O "$hoodfile"<br /> +<br /> + # Alfred will always have only one "entry" per sender<br /> address. Thus, old data will be overwritten by new one.<br /> + # If the commented lines are enabled, the behavior will be<br /> altered: The router will only send data if no up-to-date<br /> information is already 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<br /> following case 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<br /> the first is already present and up-to-date<br /> + # 3. The alfred data send by the first router expires -><br /> No alfred data present<br /> + # 4. A random router will find no data and paste its own,<br /> restarting the cycle<br /> + # Note that between 3. and 4. there is a gap where no data<br /> is present.<br /> + # -> Advantage: The alfred information will be much<br /> smaller, leading to smaller files and less CPU for parsing<br /> (json = about 1 kB per Sender)<br /> + # -> Disadvantage: There will be frequent gaps with no<br /> data available<br /> +<br /> rm -f "$sectortmp"<br /> [ -s "$sectorlocal" ] || rm -f "$sectorcopy" # If internet<br /> present, no custom config should be distributed, except when<br /> 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<br /> "http://[fe80::1%w5sta]:2342/sectorfile" -O "$sectortmp"<br /> fi<br /> else<br /> - echo "We have a Gateway in Range, we load the<br /> keyxchangev2data from fe80::1"<br /> - wget -T15 -t5<br /> "http://[fe80::1%br-mesh]:2342/keyxchangev2data" -O "$hoodfile"<br /> + echo "We have a Gateway in Range, we collect files from<br /> the 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 /> <br /> <br /> <br /></blockquote><br /></pre></blockquote></div></body></html>