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