Extension:APData: Unterschied zwischen den Versionen
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= proof of concept = | = proof of concept = | ||
hier wird noch dran gearbeitet, mal schauen was draus wird. | hier wird noch dran gearbeitet, mal schauen was draus wird. | ||
+ | |||
+ | Und nun Version 0.2, das ganze als dynamische Funktion. So lässt sich das auch in die Vorlagen einbinden. | ||
== Erweiterung == | == Erweiterung == | ||
− | Die Erweiterung APData greift auf eine Datanbank zu, die Daten aller AccessPoints des Opennets enthält. Zur Zeit stehen nur Daten der APs mit alter Firmware zur Verfügung. Ausserdem wurden persönliche Daten wie Email, Telefon und Ort entfernt, da diese Seiten bisher nicht ausserhalb vom Opennet zugänglich waren. Und vielleicht sollte es auch so bleiben. Die Datenbank wird zur | + | Die Erweiterung APData greift auf eine Datanbank zu, die Daten aller AccessPoints des Opennets enthält. Zur Zeit stehen nur Daten der APs mit alter Firmware zur Verfügung. Ausserdem wurden persönliche Daten wie Email, Telefon und Ort entfernt, da diese Seiten bisher nicht ausserhalb vom Opennet zugänglich waren. Und vielleicht sollte es auch so bleiben. Die Datenbank wird zur Zeit nicht aktualisiert, aber ist ja auch ok so für nen Test. |
Die notwendigen Dateien liegen auf www.on-i.de unter on-v6:/var/www/mediawiki-1.16.5/extensions/APData | Die notwendigen Dateien liegen auf www.on-i.de unter on-v6:/var/www/mediawiki-1.16.5/extensions/APData | ||
Zeile 9: | Zeile 11: | ||
* [https://wiki.opennet-initiative.de/extensions/APData/APData.php APData.php] - die eigentliche Erweiterung, sucht nach dem entsprechenden Eintrag für die angegebene ID und reicht alle Werte weiter an ein Template | * [https://wiki.opennet-initiative.de/extensions/APData/APData.php APData.php] - die eigentliche Erweiterung, sucht nach dem entsprechenden Eintrag für die angegebene ID und reicht alle Werte weiter an ein Template | ||
* [https://wiki.opennet-initiative.de/extensions/APData/database database] - die Datenbank, zur Zeit mit im Verzeichnis der Erweiterung (hardcoded in APData.php). Es handelt sich um eine SQlite3-Datenbank, eine Tabelle für die AP-Config und eine für die aktuellen Daten aller Interfaces. | * [https://wiki.opennet-initiative.de/extensions/APData/database database] - die Datenbank, zur Zeit mit im Verzeichnis der Erweiterung (hardcoded in APData.php). Es handelt sich um eine SQlite3-Datenbank, eine Tabelle für die AP-Config und eine für die aktuellen Daten aller Interfaces. | ||
− | * [https://wiki.opennet-initiative.de/extensions/APData/get_ap_data.py get_ap_data.py] - python-script zur Erstellung der Datenbank und zum parsen der | + | * [https://wiki.opennet-initiative.de/extensions/APData/get_ap_data.py get_ap_data.py] - python-script zur Erstellung der Datenbank und zum parsen der verfügbaren Werte aller APs mit alter Openet-Firmware |
=== Nutzung der Erweiterung === | === Nutzung der Erweiterung === | ||
− | + | Folgende Funtionen stehen zur Verfügung: | |
− | + | # OnApDataQuery - bekommt als Parameter die Opennet-ID und muss als erstes aufgerufen werden | |
− | + | # OnApDataGetValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Nodes-Spalte) | |
− | + | # OnApDataGetIfacesRow - liefert die ZeilenNummer der Interfaces-Tabelle für die angefragte ID | |
+ | # OnApDataNextIfacesRow - setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden | ||
+ | # OnApDataGetIfacesValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Ifaces-Spalte) und liefert den Wert für die ausgewählte Zeile zurück | ||
+ | # OnApDataSQLQuery - bekommt als Parameter eine komplette SQL-Anfrage (vgl. auch [[Ondataservice#Tabellen-Übersicht]]) | ||
+ | # OnApDataGetSQLQueryValue - liefert die ZeilenNummer der Ergebnis-Tabelle für die SQL-Anfrage | ||
+ | # OnApDataNextSQLQueryRow- setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden | ||
+ | # OnApDataGetSQLQueryRow - bekommt als Parameter den Namen des gesuchten Wertes und liefert den Wert für die ausgewählte Zeile zurück | ||
=== Erstellung/Aktualiserung der Datenbank === | === Erstellung/Aktualiserung der Datenbank === | ||
− | das script "get_ap_data.py" | + | Die Verbreitung der Daten im Opennet erfolgt durch das olsr-plugin [[ondataservice]]. Daten der AccessPoints mit alter Firmware werden durch ein script "get_ap_data.py" gelesen, welches täglich auf inez.on-i.de läuft und ebenso per olsr verbreitet. |
=== praktische Beispiele === | === praktische Beispiele === | ||
(anzuschauen im Quellcode) | (anzuschauen im Quellcode) | ||
− | ==== normaler Aufruf | + | ==== normaler Aufruf ==== |
− | <pre>< | + | <pre>{{#OnApDataQuery:2.19}} |
− | < | + | IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> |
− | ==== | + | {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /> |
− | <pre>< | + | {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /> |
− | < | + | {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /></pre> |
− | ==== Aufruf | + | |
− | <pre> | + | {{#OnApDataQuery:2.19}} |
− | + | IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> | |
− | ==== | + | {{#OnApDataNextIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> |
− | <pre> | + | {{#OnApDataNextIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> |
− | + | {{#OnApDataNextIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> | |
+ | |||
+ | ==== Aufruf mit Nutzung der Loops-Erweiterung ==== | ||
+ | Die OnData-Erweiterung ist für die gemeinsame Nutzung mit der [http://www.mediawiki.org/wiki/Extension:Loops Loops-Erweiterung] optimiert. | ||
+ | <pre>{{#OnApDataQuery:2.19}} | ||
+ | IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextIfacesRow:}} | ||
+ | |<nowiki/>{{#OnApDataGetIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> | ||
+ | }}</pre> | ||
+ | {{#OnApDataQuery:2.19}} | ||
+ | IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextIfacesRow:}} | ||
+ | |<nowiki/>{{#OnApDataGetIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> | ||
+ | }} | ||
+ | |||
+ | ==== Aufruf mit angepassten Templates ==== | ||
+ | Na und so könnte der Aufruf dann später mit angepassten Templates (siehe [[Vorlage:AccesspointRene]] und [[Vorlage:AccesspointIfacesRene]] aussehen (das zweite Template bekommt die Zeile als Parameter, da es so jedesmal neu gerendert wird: | ||
+ | <pre>{{#OnApDataQuery:2.19}} | ||
+ | {{AccesspointRene}} | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextIfacesRow:}} | ||
+ | |<nowiki/>{{AccesspointIfacesRene|row={{#OnApDataGetIfacesRow:}}}} | ||
+ | }}</pre> | ||
+ | {{#OnApDataQuery:2.19}} | ||
+ | {{AccesspointRene}} | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextIfacesRow:}} | ||
+ | |<nowiki/>{{AccesspointIfacesRene|row={{#OnApDataGetIfacesRow:}}}} | ||
+ | }} | ||
+ | |||
+ | ==== Überblick über aktuell gespeicherte Werte ==== | ||
+ | (Beispiel einer SQL-Abfrage auf die gesamte Datenbank) | ||
+ | <pre> | ||
+ | {| {{Prettytable}} | ||
+ | !Opennet ID | ||
+ | !Quell-IP | ||
+ | !Datenherkunft | ||
+ | !letzte Aktualisierung | ||
+ | |- | ||
+ | {{#OnApDataSQLQuery:SELECT mainip.originator,on_id,db_time FROM nodes ORDER BY mainip ASC}} | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextSQLQueryRow:}} | ||
+ | |{{AccesspointOverview|row={{#OnApDataGetSQLQueryRow:}}}} | ||
+ | }} | ||
+ | |} | ||
+ | </pre> | ||
+ | |||
+ | {| {{Prettytable}} | ||
+ | !Opennet ID | ||
+ | !Quell-IP | ||
+ | !Datenherkunft | ||
+ | !letzte Aktualisierung | ||
+ | |- | ||
+ | {{#OnApDataSQLQuery:SELECT mainip,originator,on_id,db_time FROM nodes ORDER BY mainip ASC}} | ||
+ | {{#while: | ||
+ | |{{#OnApDataNextSQLQueryRow:}} | ||
+ | |{{AccesspointOverview|row={{#OnApDataGetSQLQueryRow:}}}} | ||
+ | }} | ||
+ | |} |
Aktuelle Version vom 5. November 2013, 18:58 Uhr
Inhaltsverzeichnis |
[Bearbeiten] proof of concept
hier wird noch dran gearbeitet, mal schauen was draus wird.
Und nun Version 0.2, das ganze als dynamische Funktion. So lässt sich das auch in die Vorlagen einbinden.
[Bearbeiten] Erweiterung
Die Erweiterung APData greift auf eine Datanbank zu, die Daten aller AccessPoints des Opennets enthält. Zur Zeit stehen nur Daten der APs mit alter Firmware zur Verfügung. Ausserdem wurden persönliche Daten wie Email, Telefon und Ort entfernt, da diese Seiten bisher nicht ausserhalb vom Opennet zugänglich waren. Und vielleicht sollte es auch so bleiben. Die Datenbank wird zur Zeit nicht aktualisiert, aber ist ja auch ok so für nen Test.
Die notwendigen Dateien liegen auf www.on-i.de unter on-v6:/var/www/mediawiki-1.16.5/extensions/APData
- APData.php - die eigentliche Erweiterung, sucht nach dem entsprechenden Eintrag für die angegebene ID und reicht alle Werte weiter an ein Template
- database - die Datenbank, zur Zeit mit im Verzeichnis der Erweiterung (hardcoded in APData.php). Es handelt sich um eine SQlite3-Datenbank, eine Tabelle für die AP-Config und eine für die aktuellen Daten aller Interfaces.
- get_ap_data.py - python-script zur Erstellung der Datenbank und zum parsen der verfügbaren Werte aller APs mit alter Openet-Firmware
[Bearbeiten] Nutzung der Erweiterung
Folgende Funtionen stehen zur Verfügung:
- OnApDataQuery - bekommt als Parameter die Opennet-ID und muss als erstes aufgerufen werden
- OnApDataGetValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Nodes-Spalte)
- OnApDataGetIfacesRow - liefert die ZeilenNummer der Interfaces-Tabelle für die angefragte ID
- OnApDataNextIfacesRow - setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden
- OnApDataGetIfacesValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Ifaces-Spalte) und liefert den Wert für die ausgewählte Zeile zurück
- OnApDataSQLQuery - bekommt als Parameter eine komplette SQL-Anfrage (vgl. auch Ondataservice#Tabellen-Übersicht)
- OnApDataGetSQLQueryValue - liefert die ZeilenNummer der Ergebnis-Tabelle für die SQL-Anfrage
- OnApDataNextSQLQueryRow- setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden
- OnApDataGetSQLQueryRow - bekommt als Parameter den Namen des gesuchten Wertes und liefert den Wert für die ausgewählte Zeile zurück
[Bearbeiten] Erstellung/Aktualiserung der Datenbank
Die Verbreitung der Daten im Opennet erfolgt durch das olsr-plugin ondataservice. Daten der AccessPoints mit alter Firmware werden durch ein script "get_ap_data.py" gelesen, welches täglich auf inez.on-i.de läuft und ebenso per olsr verbreitet.
[Bearbeiten] praktische Beispiele
(anzuschauen im Quellcode)
[Bearbeiten] normaler Aufruf
{{#OnApDataQuery:2.19}} IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /> {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /> {{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br />
IP-Addresse:
1. Interface:
. Interface:
1. Interface:
[Bearbeiten] Aufruf mit Nutzung der Loops-Erweiterung
Die OnData-Erweiterung ist für die gemeinsame Nutzung mit der Loops-Erweiterung optimiert.
{{#OnApDataQuery:2.19}} IP-Addresse:{{#OnApDataGetValue:mainip}}<br /> {{#while: |{{#OnApDataNextIfacesRow:}} |<nowiki/>{{#OnApDataGetIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br /> }}
IP-Addresse:
1. Interface:
[Bearbeiten] Aufruf mit angepassten Templates
Na und so könnte der Aufruf dann später mit angepassten Templates (siehe Vorlage:AccesspointRene und Vorlage:AccesspointIfacesRene aussehen (das zweite Template bekommt die Zeile als Parameter, da es so jedesmal neu gerendert wird:
{{#OnApDataQuery:2.19}} {{AccesspointRene}} {{#while: |{{#OnApDataNextIfacesRow:}} |<nowiki/>{{AccesspointIfacesRene|row={{#OnApDataGetIfacesRow:}}}} }}
opennet ID / OLSR Main IP | / |
Typ / Hersteller | |
Firmware | / |
VPN-Gateway | Expression-Fehler: Unerwarteter Operator <tt>=</tt> |
verbundene Usergateways | Expression-Fehler: Unerwarteter Operator <tt>=</tt> |
Wifidog-ID | Expression-Fehler: Unerwarteter Operator <tt>=</tt> |
uptime / load / mem / free | / / / |
letzte Aktualisierung |
Interface | / |
IP-Addresse / Netzmaske | / |
MAC-Adresse | |
TX-Bytes/ RX-Bytes | / |
WLAN-SSID/ WLAN-Channel | / |
[Bearbeiten] Überblick über aktuell gespeicherte Werte
(Beispiel einer SQL-Abfrage auf die gesamte Datenbank)
{| {{Prettytable}} !Opennet ID !Quell-IP !Datenherkunft !letzte Aktualisierung |- {{#OnApDataSQLQuery:SELECT mainip.originator,on_id,db_time FROM nodes ORDER BY mainip ASC}} {{#while: |{{#OnApDataNextSQLQueryRow:}} |{{AccesspointOverview|row={{#OnApDataGetSQLQueryRow:}}}} }} |}
Opennet ID | Quell-IP | Datenherkunft | letzte Aktualisierung |
---|---|---|---|
1.102 | 192.168.1.102 | 192.168.1.102 | Sat Sep 28 04:23:06 CEST 2024 |
1.113 | 192.168.1.113 | 192.168.1.113 | Sat Dec 10 04:02:07 UTC 2011 |
1.127 | 192.168.1.127 | 192.168.1.127 | Mon Oct 12 04:02:13 UTC 2015 |
1.128 | 192.168.1.128 | 192.168.1.128 | Sat Sep 28 04:23:28 CEST 2024 |
1.160 | 192.168.1.160 | 192.168.1.160 | Sat Sep 28 05:43:06 CEST 2024 |
1.173 | 192.168.1.173 | 192.168.1.173 | Sat Sep 28 04:32:11 CEST 2024 |
1.179 | 192.168.1.179 | 192.168.1.179 | Tue Feb 12 04:02:03 UTC 2013 |
1.182 | 192.168.1.182 | 192.168.1.182 | Thu Oct 10 04:02:03 GMT 2013 |
1.183 | 192.168.1.183 | 192.168.1.183 | Fri Feb 8 04:02:07 UTC 2013 |
1.188 | 192.168.1.188 | 192.168.1.188 | Sat Sep 28 05:13:07 CEST 2024 |
1.191 | 192.168.1.191 | 192.168.1.191 | Sat Sep 28 05:47:13 CEST 2024 |
1.208 | 192.168.1.208 | 192.168.1.208 | Sat Sep 28 04:23:03 CEST 2024 |
1.230 | 192.168.1.230 | 192.168.1.230 | Sat Feb 9 04:02:03 GMT 2013 |
1.231 | 192.168.1.231 | 192.168.1.231 | Sat Sep 28 04:29:06 CEST 2024 |
1.241 | 192.168.1.241 | 192.168.1.241 | Sat Sep 28 04:36:10 CEST 2024 |
1.252 | 192.168.1.252 | 192.168.1.252 | Tue Apr 30 04:02:13 UTC 2013 |
1.3 | 192.168.1.3 | 192.168.1.3 | Sat Sep 28 05:48:08 GMT 2024 |
1.4 | 192.168.1.4 | 192.168.1.4 | Sat Sep 28 03:14:08 GMT 2024 |
1.71 | 192.168.1.71 | 192.168.1.71 | Sat Sep 28 03:17:13 CEST 2024 |
1.84 | 192.168.1.84 | 192.168.1.84 | Sat Sep 28 04:25:04 CEST 2024 |
2.105 | 192.168.2.105 | 192.168.2.105 | Sat Sep 28 05:46:11 CEST 2024 |
2.24 | 192.168.2.24 | 192.168.2.24 | Sat Sep 28 03:51:12 CEST 2024 |
2.25 | 192.168.2.25 | 192.168.2.25 | Sat Sep 28 05:54:13 CEST 2024 |
2.4 | 192.168.2.4 | 192.168.2.4 | Sat Sep 28 04:23:07 CEST 2024 |
2.40 | 192.168.2.40 | 192.168.2.40 | Sat Sep 28 03:53:07 CEST 2024 |
2.44 | 192.168.2.44 | 192.168.2.44 | Sat Sep 28 05:50:07 CEST 2024 |
2.5 | 192.168.2.5 | 192.168.2.5 | Sat Sep 28 05:58:04 CEST 2024 |
2.6 | 192.168.2.6 | 192.168.2.6 | Sat Sep 28 03:02:11 CEST 2024 |
2.65 | 192.168.2.65 | 192.168.2.65 | Sun Dec 13 04:02:07 UTC 2015 |
2.90 | 192.168.2.90 | 192.168.2.90 | Sat Sep 28 03:02:11 CEST 2024 |
3.97 | 192.168.3.97 | 192.168.3.97 | Sat Sep 28 05:51:20 CEST 2024 |