<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>