fff-web-ui: Make public page usable for layer 3 variante #250

Open
ChristianD wants to merge 2 commits from ChristianD/firmware:webuineu into master
1 changed files with 43 additions and 0 deletions

View File

@ -57,6 +57,7 @@ contact="$(uci -q get "fff.system.contact")"
</table>
</fieldset>
</td><td>
<% if [ -f "$(command -v batctl)" ] ; then %>
ChristianD marked this conversation as resolved Outdated

Hi Christian,
grossartig, dass du dich dem web-ui annimmst!

So absolute Pfade koennen ganz schnell zu Stolperfallen werden. Dieses Skript verwendet batctl ohne Pfad. Dann sollte man auch mit which entlang von $PATH suchen.

Hi Christian, grossartig, dass du dich dem web-ui annimmst! So absolute Pfade koennen ganz schnell zu Stolperfallen werden. Dieses Skript verwendet batctl ohne Pfad. Dann sollte man auch mit which entlang von $PATH suchen.

Habs mal mit dem command -v von lemmi gemacht. Sorry für den doppelten Push, ich habs mal wieder vermasselt auf Anhieb (ich werde mich nie mit git anfreunden...)

Habs mal mit dem command -v von lemmi gemacht. Sorry für den doppelten Push, ich habs mal wieder vermasselt auf Anhieb (ich werde mich nie mit git anfreunden...)
<fieldset style="min-height: 15em;">
<legend>Status</legend>
<table>
@ -66,6 +67,48 @@ contact="$(uci -q get "fff.system.contact")"
<tr><th>Lokale Clients:</th><td><% echo -n $(batctl tl -H 2> /dev/null | grep -c 'W') %></td></tr>
</table>
</fieldset>
<% fi
if birdc show status >/dev/null 2>&1 || pgrep babeld >/dev/null; then %>
<fieldset style="min-height: 15em;">
<legend>Status</legend>
<table>
<% #Count Clients
client_count=$(bridge fdb show br br_client brport $(ls "/sys/class/net/br-client/brif" | grep -v '^bat') | grep -v self | grep -v permanent -c)
Review

Das mesh_interface sollte aus dem UCI kommen: uci get nodewatcher.@network[0].mesh_interface (siehe 50-clients.sh im Paket fff-network).

Kann bridge fdb mit mehreren Argumenten hinter brport umgehen? Ich fürchte das geht so nicht wenn mehr als ein Interface gelistet ist.

Das mesh_interface sollte aus dem UCI kommen: `uci get nodewatcher.@network[0].mesh_interface` (siehe `50-clients.sh` im Paket `fff-network`). Kann `bridge fdb` mit mehreren Argumenten hinter `brport` umgehen? Ich fürchte das geht so nicht wenn mehr als ein Interface gelistet ist.
%>
<tr><th>Lokale Clients:</th><td><% echo $client_count %></td></tr>
</table>
</fieldset>
<fieldset style="min-height: 15em;">
<legend>Babel Status</legend>
<table>
<tr><th>IP</th><th>Interface</th><th>Kosten</th></tr>
<% if birdc show status >/dev/null 2>&1; then
neighbours="$(birdc -r show babel neighbors | tail -n +5 | awk '{ printf "<tr><td>%s</td><td>%s</td><td>%s</td></tr>", $1, $2, $3 }')"
fi
if
pgrep babeld >/dev/null; then
lockfile="/tmp/fff-web-ui.babel.lock"
ChristianD marked this conversation as resolved Outdated

War da nicht was mit dem babeld dump? Bekommt man da nicht von aussen die Kisten ganz leicht kaputt.
509846fa0b

War da nicht was mit dem babeld dump? Bekommt man da nicht von aussen die Kisten ganz leicht kaputt. https://git.freifunk-franken.de/freifunk-franken/simple-babelweb/commit/509846fa0b9e27f7adec0895dcf351795814d7f4

da war was... Ich hab mal bisschen was aus simple babelweb geklaut und noch etwas verbessert ;)

da war was... Ich hab mal bisschen was aus simple babelweb geklaut und noch etwas verbessert ;)
if [ -e $lockfile ] && [ 30 -gt $(( $(date +%s) - $(date -r $lockfile +%s) )) ] ; then
Review

Wäre das nicht sinnvoll das für bird ebenfalls zu machen?

An sich benötigen wir hier kein extra Lockfile. Es genügt das Änderungsdatum der Inhaltsdatei (fff-web-ui.babel) zu prüfen.

Vom Codefluss her wird es möglicherweise schöner, wenn man einfach immer den Inhalt der Datei anzeigt, und kurz darüber per lockfile-check den Dateiinhalt aktualisiert, wenn er schon älter als eine gewisse Zeit ist.

Wäre das nicht sinnvoll das für bird ebenfalls zu machen? An sich benötigen wir hier kein extra Lockfile. Es genügt das Änderungsdatum der Inhaltsdatei (`fff-web-ui.babel`) zu prüfen. Vom Codefluss her wird es möglicherweise schöner, wenn man einfach immer den Inhalt der Datei anzeigt, und kurz darüber per lockfile-check den Dateiinhalt aktualisiert, wenn er schon älter als eine gewisse Zeit ist.
neighbours=$(cat /tmp/fff-web-ui.babel)
else
neighbours="$(echo dump | nc ::1 33123 | grep '^add neighbour' |
awk '{
for (i=2; i < NF; i += 2) {
vars[$i] = $(i+1)
}
}
{
printf "<tr><td>%s</td><td>%s</td><td>%s</td></tr>", vars["address"], vars["if"], vars["cost"]
}')"
echo "$neighbours" > /tmp/fff-web-ui.babel
touch $lockfile
fi
fi
echo -n "$neighbours"
%>
</table>
</fieldset>
<% fi %>
</td></tr>
</table>
</div>