Statusseite im Router anpassen/erweitern

#1

Ich mag es, schnell über alles notwendige eine Übersicht zu haben. Auf der Router-Statusseite fehlte mir dazu die Anzahl der verbundenen Clients und die Statistik wie sie in den Mesh-Maps angezeigt wird. Die kann man aber durch eine kleine Modifizoerung der Seite integrieren.
Zusätzlich wollte ich, dass die Statusseite sich automatisch alle X Sekunden von selber neu lädt um immer einen aktuellen Stand zu haben.
Das ganze ist kein Zaubertrick, pures HTML. Hier die Infos.

Die Datei findet ihr unter:

/lib/gluon/status-page/www/cgi-bin/status

Für den automatischen Reload:

io.write("<META HTTP-EQUIV=\"refresh\" CONTENT=\"20\">")

die “20” stehen dabei für die Sekunden, in der Sich die Seite neu lädt.
Das ganze wird nach der Zeile:

io.write("<head>")

eingefügt.
Nun lädt die Seite sich alle 20 Sekunden automatisch neu.

Anzahl der verbundenen Clients anzeigen:

io.write("Clients: ")
io.write(escape_html(sys.exec("tail -n +3 /sys/kernel/debug/batman_adv/bat0/transtable_local | grep -v P | wc -l")))

Das ganze kommt über den Bereich:

io.write("<h2>Neighbours</h2>")

Client-Statistik aus der Mesh-Karte:
Nun verlinken wir eigentlich nur die original Grafik aus der Knotenübersicht der Mesh-Karte. Klickt dazu euren Knoten auf der Mesh-Karte an. Wenn die Übersicht eures Knoten geöffnet ist, kopiert ihr nur die “Node-ID”.

Jetzt fügt ihr folgenden Code unter dem eben hinzugefügten Code (also über dem Neibours-Bereich) hinzu:

io.write("<img src=\"http://map.ffgek.de/data/nodes/XXXXXXXXXXXX.png\" alt=\"ClientStat\">")

Die “XXXXXXXXXXXX” stehen für eure Knoten-ID (Node-ID).
Solltet ihr in einem Anderen Netzwerk als GE sein. Solltet ihr den gesamten Grafiklink dort einfügen!

Clients anzeigen
(Aus dem Thema: PowerUser-Clients aussperren (61GB in vier Tagen) übernommen)

io.write("<h2>Clients</h2>")

local interfaces = util.split(util.trim(util.exec("iw dev | grep AP -B 5 | grep Interface | cut -d' ' -f2")))

for _, ifname in ipairs(interfaces) do
  io.write("<h3>" .. escape_html(ifname) .. "</h3>")
  io.write("<pre>")

  for _, line in ipairs(util.split(util.exec("iw dev " .. ifname .. " station dump"))) do
    local mac = line:match("^Station (.*) %(on ")
    if mac then
     io.write("Station <a id=\"" .. escape_html(ifname) .. "-" .. mac .. "\">" .. mac .. "</a> (on " .. escape_html(ifname) .. ")\n")
    else
      io.write(escape_html(line) .. "\n")
    end
  end

  io.write("</pre>")
end

Das ganze kann dann direkt unter dem Punkt der der Meshkarte.

Fertig!

Diese Änderungen werdet ihr übrigens nach jedem Update erneut durchführen müssen!

Ich hoffe ich konnte euch ein wenig inspirieren oder helfen. Feedback gerne erwünscht so lange es konstruktiv ist.

1 Like

#2

Einen konstruktiven Vorschlag hätte ich:

Wie wärs, wenn du das bei Github einreichst? Ich fände das auf jeden Fall praktisch und weiß nicht wie schnell die neue Status-Page kommen soll.

1 Like

#3

Das sollte immer der weg sein, das die Entwickler entsprechende Patches bekommen. Wobei ich die oben angegebenen Infos in der neuen Status Page auch gerne sehen würde.

0 Likes

#4

Ok, ich kenn GitHub nicht. Kann mir einer schnell mal einen Einblick geben wie ich die Änderungswünsche dort eintragen kann?

0 Likes

#5

Ich habe meinen ersten Beitrag erweitert um den Punkt “Clients anzeigen”.

0 Likes

#6

das geht sogar ganz bequem über die weboberfläche:
nachdem du dir einen github account gemacht hast.

https://help.github.com/articles/editing-files-in-another-user-s-repository/

das gluon repo findest du unter: GitHub - freifunk-gluon/gluon: a modular framework for creating OpenWrt-based firmwares for wireless mesh nodes

0 Likes

#7

Ok, ok. Ich glaube ich finde mich da ganz langsam zurecht! Danke @jim

0 Likes

#8

Ich glaube, ich habe das jetzt eingetragen :grin:

0 Likes