Extension:APData: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
 
(9 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.
== Warum this way ==
 
Der Datenbankzugriff kann nur über eine Erweiterung/Extension erfolgen, eine Vorlage/Template kann das nicht leisten. Nun gäbe es zwei Optionen, die Extension mit dem Template zu verbinden. Entweder man ruft im Template die Extension auf, oder andersrum.
 
:Parameters do not get expanded when they are inside nowiki tags or  XML-style extension tags. Thus, the following will not work within a  template - <myextension xparam={{{tparam}}}> ...  </myextension> - because the parameter is not expanded.[http://en.wikipedia.org/wiki/Help:Template]
 
:As of r55682, extensions can make use of a new option for how to process the text within the extension tag ... using the $frame parameter for the recursiveTagParse function tells the parser to expand any template parameters ... [http://www.mediawiki.org/wiki/Manual:Tag_extensions#Extensions_and_Templates]
 
Also funktioniert offenbar nur der Aufruf des Templates in der Extension.
 
  
 +
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 ZEit nicht aktualisiert, aber ist ja auch ok so für nen Test.
+
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 15: 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 Verfügbaren Werte aller APs mit alter Openet-Firmware
+
* [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 ===
Zur Einbindng in den Code einfach
+
Folgende Funtionen stehen zur Verfügung:
<pre><apdata id="1.48" template="Accesspoint"></pre>
+
# OnApDataQuery - bekommt als Parameter die Opennet-ID und muss als erstes aufgerufen werden
Die übergebene id wird gegen die Datenbankspalte "id" geparst, alle Werte werden dem Template "template" übergeben. Weitere Werte können direkt übergeben werden:
+
# OnApDataGetValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Nodes-Spalte)
<pre><apdata id="1.48" template="Accesspoint" nachname="Mustermann"></pre>
+
# 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" erwartet zwei Parameter. Als erstes den Pfad einer vorhandenen oder zu erstellenden Datanbank. Als zweites die Liste der zu prüfenden IP-Adressen, bspw. die Ausgabe von "ip route" mit jeweils der zu prüfenden IP am Anfang jeder Zeile.
+
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 für Accesspoint-Template ====
+
==== normaler Aufruf ====
<pre><apdata id="1.48" template="Accesspoint" /></pre>
+
<pre>{{#OnApDataQuery:2.19}}
<apdata id="1.48" template="Accesspoint" />
+
IP-Addresse:{{#OnApDataGetValue:mainip}}<br />
==== normaler Aufruf für angepasstes Accesspoint-Template ====
+
{{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br />
<pre><apdata id="1.48" template="AccesspointRene" /></pre>
+
{{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br />
<apdata id="1.48" template="AccesspointRene" />
+
{{#OnApDataNextIfacesRow:}}. IP-Addresse: {{#OnApDataGetIfacesValue:ip_addr}}<br /></pre>
==== Aufruf für Accesspoint-Template mit Variablen-Überschreibung ====
+
 
<pre><apdata id="1.48" template="Accesspoint" nummer="1.48" typ="Linksys"  besitzer="Max" betreuer="Anja" email="user@home.de"  kommentar="Vereins-AP" /></pre>
+
{{#OnApDataQuery:2.19}}
<apdata id="1.48" template="Accesspoint" nummer="1.48" typ="Linksys" besitzer="Max" betreuer="Anja" email="user@home.de" kommentar="Vereins-AP" />
+
IP-Addresse:{{#OnApDataGetValue:mainip}}<br />
==== Anzeige aller vorhandenen Daten ====
+
{{#OnApDataNextIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br />
<pre><apdata id="1.48" /></pre>
+
{{#OnApDataNextIfacesRow:}}. Interface: {{#OnApDataGetIfacesValue:ip_addr}}<br />
<apdata id="1.48" />
+
{{#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:

  1. OnApDataQuery - bekommt als Parameter die Opennet-ID und muss als erstes aufgerufen werden
  2. OnApDataGetValue - bekommt als Parameter den Namen des gesuchten Wertes (Kopf der Nodes-Spalte)
  3. OnApDataGetIfacesRow - liefert die ZeilenNummer der Interfaces-Tabelle für die angefragte ID
  4. OnApDataNextIfacesRow - setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden
  5. 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
  6. OnApDataSQLQuery - bekommt als Parameter eine komplette SQL-Anfrage (vgl. auch Ondataservice#Tabellen-Übersicht)
  7. OnApDataGetSQLQueryValue - liefert die ZeilenNummer der Ergebnis-Tabelle für die SQL-Anfrage
  8. OnApDataNextSQLQueryRow- setzt den internen Zeiger auf die nächste Interfaces-Zeile und gibt die Nummer zurück, wenn noch vorhanden
  9. 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:}}}}
}}
ap_button_.png
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
2.198 192.168.2.198 Sun Jun 30 05:41:13 CEST 2024
1.102 192.168.1.102 192.168.1.102 Sun Jun 30 04:23:07 CEST 2024
1.113 192.168.1.113 192.168.1.113 Thu Dec 20 04:02:08 UTC 2012
1.127 192.168.1.127 192.168.1.127 Tue Jul 14 04:02:03 UTC 2015
1.128 192.168.1.128 192.168.1.128 Sun Jun 30 04:23:25 CEST 2024
1.160 192.168.1.160 192.168.1.160 Sun Jun 30 05:43:06 CEST 2024
1.173 192.168.1.173 192.168.1.173 Sun Jun 30 04:32:11 CEST 2024
1.179 192.168.1.179 192.168.1.179 Mon Mar 4 04:02:28 UTC 2013
1.182 192.168.1.182 192.168.1.182 Thu Jul 11 04:02:03 GMT 2013
1.183 192.168.1.183 192.168.1.183 Sun Jan 13 04:02:07 UTC 2013
1.188 192.168.1.188 192.168.1.188 Sun Jun 30 05:13:06 CEST 2024
1.191 192.168.1.191 192.168.1.191 Sun Jun 30 05:47:11 CEST 2024
1.208 192.168.1.208 192.168.1.208 Sun Jun 30 04:23:07 CEST 2024
1.230 192.168.1.230 192.168.1.230 Sat Feb 2 04:02:17 GMT 2013
1.231 192.168.1.231 192.168.1.231 Sun Jun 30 04:29:06 CEST 2024
1.241 192.168.1.241 192.168.1.241 Sun Jun 30 04:36:13 CEST 2024
1.252 192.168.1.252 192.168.1.252 Wed Jan 30 04:02:12 UTC 2013
1.3 192.168.1.3 192.168.1.3 Sat Jun 29 05:48:08 GMT 2024
1.4 192.168.1.4 192.168.1.4 Sun Jun 30 03:14:09 GMT 2024
1.71 192.168.1.71 192.168.1.71 Sun Jun 30 03:17:11 CEST 2024
1.84 192.168.1.84 192.168.1.84 Sun Jun 30 04:25:07 CEST 2024
2.103 192.168.2.103 192.168.2.103 Sun Jun 30 05:45:07 CEST 2024
2.105 192.168.2.105 192.168.2.105 Sun Jun 30 05:46:10 CEST 2024
2.24 192.168.2.24 192.168.2.24 Sun Jun 30 03:51:12 CEST 2024
2.25 192.168.2.25 192.168.2.25 Sun Jun 30 05:54:07 CEST 2024
2.4 192.168.2.4 192.168.2.4 Sun Jun 30 04:23:07 CEST 2024
2.40 192.168.2.40 192.168.2.40 Sun Jun 30 03:53:08 CEST 2024
2.44 192.168.2.44 192.168.2.44 Sat Jun 29 05:50:05 CEST 2024
2.5 192.168.2.5 192.168.2.5 Sun Jun 30 05:58:12 CEST 2024
2.6 192.168.2.6 192.168.2.6 Sun Jun 30 03:02:08 CEST 2024
2.65 192.168.2.65 192.168.2.65 Mon Sep 14 04:02:07 UTC 2015
2.90 192.168.2.90 192.168.2.90 Sun Jun 30 03:02:14 CEST 2024
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge