Topologie auf Basis von C-Sharp und Mono

Aus Freifunk Halle
Zur Navigation springen Zur Suche springen
Update: Der Inhalt dieser Seite bezieht sich auf eine veraltete Version der Software, die nicht mehr gewartet wird. Eine aktualisierte Variante befindet sich hier: Freifunk-Tools basierend auf Mono und C-Sharp

von tox

In den letzten Wochen habe ich mich damit befasst, eine mindestens gleichwertige Topologie wie die bisher bekannte auf Python basierende Implementierung in einer modernen Architektur zu erstellen. Zielstellung war dabei die Benutzung einer Hochsprache, die vor Ausführung in nativen Code kompilert wird. Dazu eignete sich sehr gut C# in Verbindung mit Mono, sodass die neue Implementierung also auf deren Basis erstellt wurde.

Der gegenwärtige Status setzt alle Merkmale der ursprünglichen Variante um:

  • Unterschiedliche Farben für HNAs und Nicht-HNAs,
  • Hervorhebung der Linkqualitäten durch Farbe und Linienbreite und -länge,
  • Abfrage der FFHTopo-Datenbank für die Anzeige der Straßennamen und für die farbliche Kennzeichnung der letzten Sichtung der Nodes,
  • Verkürzung der Darstellung von IP-Adresse und Straßennamen,
  • verwendet GraphViz für die Topologieberechnung.

Neue Features sind:

  • Vollständig dynamische Umsetzung ohne serverseitig gespeicherte Datei, dadurch Aktualität zu jedem Zeitpunkt, soweit die Daten dem Server vorliegen,
  • bei Aufruf können URL-Parameter angegeben werden (siehe unten).

URL-Parameter

Die Parameter werden regulär hinter einem Fragezeichen hinter der Pfadangabe aufgelistet, mehrere Parameter werden durch kaufmännische Unds getrennt. Die Form eines Parameters ist dabei "Parametername=Wert". Die Daten müssen im Allgemeinen maskiert werden, allerdings sind bislang keine Parameter vorhanden, bei denen das notwendig ist.

Die möglichen Parameter sind im Einzelnen:

  • maxetx: der maximale etx-Wert der auszugebenden Links. Die Zahl muss als eine Gleitkommazahl nach Deutsch-Deutschland formatiert sein. Standardwert ist 8.
  • format: das Ausgabeformat, entweder png, svg, dot oder pdf, standard ist png. Zusätzlich akzeptiert der Parameter noch input, wodurch die dot-Daten, die normalerweise an GraphViz gesendet werden, direkt ausgegeben werden.
  • hvip: eine Liste von IP-Adressen hervorzuhebender Knoten, Trennzeichen sind das Pipe-Symbol (|) und das Komma. Die Adressen können verkürzt angegeben werden und werden auf 104.62.1.1 aufgefüllt. Beispielsweise wird "7" auf "104.62.1.7" und "61.28.1" auf "104.61.28.1" vervollständig. Dieser Parameter kann mehrfach angegeben werden.
  • zeig: eine Ganzzahl Deutsch-Deutschland formatiert. 0 oder kleiner (Standardwert) bedeutet, dass sämtliche Knoten dargestellt werden. 1 bedeutet, dass nur Nicht-HNAs dargestellt werden, die eine Verbindung zu einem anderen Knoten haben, und sämtliche HNAs. 2 und größer bedeutet, dass nur Knoten dargestellt werden, die eine Verbindung zu einem anderen Knoten haben.
  • groesse: gibt die maximale Größe der Ausgabe in Zoll an, d.h. die Höhe und Breite. Dies ist eine Gleitkommazahl Deutsch-Deutschland formatiert. Sie muss größer als 0 sein und höchstens 10000. Ein Zoll entspricht bei GraphViz 96 Pixeln. Man kann den Wert leer lassen, dann wird die Größe allein von GraphViz bestimmt.
  • ffhtopo: eine Ganzzahl Deutsch-Deutschland formatiert. 0 und größer (Standardwert) bedeutet, dass die FFHTopo-Datenbank für zusätzliche Informationen abgefragt wird. Bei Werten kleiner als 0 wird dies nicht getan. Wenn die FFHTopo-Datenbank abgefragt wird, ist der Standartwert für die groesse-Option 60 und die Schriftgröße in den Knoten 8. Wenn sie nicht abgefragt wird, ist der Standartwert für die groesse-Option 40 und die Schriftgröße in den Knoten 12.
  • gesehen: eine positive Gleitkommazahl Deutsch-Deutschland formatiert und nicht unendlich. Sie gibt die Anzahl der Tage an, die ein Node nicht sichbar war, damit er halben Blauanteil hinzubekommt. Wenn ein Node die doppelte Zeitspanne abwesend ist, bekommt es drei Viertel des Blauanteils usw. Der Standardwert ist 1.
  • zeigip: eine durch Pipe-Symbole (|) und Kommata getrennte Liste von IP-Adressbereichen. Die IP-Adresse eines Nodes muss mit mindestens einem der Bereiche beginnen, damit er angezeigt wird. Dieser Parameter kann mehrfach angegeben werden. Der Standardwert ist 104.62|104.61.246|104.61.250|104.61.251|104.61.252|104.61.253.

Formatierung von Zahlen

Die Angabe, dass eine Zahl "Deutsch-Deutschland" formatiert ist, bezieht sich auf die akzeptierten Zeichen für das Dezimaltrennzeichen (in dem Fall das Komma) und das Zifferngruppierungszeichen (in dem Fall der Punkt), welches ausgelassen werden kann, aber akzeptiert wird, wenn es vorhanden ist. Bei Gleitkommazahlen werden darüberhinaus Zahlen in der wissenschaftlichen Exponentialdarstellung akzeptiert (z.B. 3,3e5=330000) und unendlich als Wert, dies ist in Mono normalerweise das Unendlichzeichen (∞), welches man regulär nicht zur Hand hat, und das obendrein in der URL auch noch maskiert werden müsste (%E2%88%9E). Als Workaround kann man auch "unendlich" schreiben. Jedes auftreten dieses Wortes wird serverseitig zu ∞ umgewandelt.

Beispiele

Der parameterlose Aufruf verwendet die jeweiligen Standardwerte: http://tox.3dfxatwork.de/preview/Topo.ashx

Angabe einer Größe als Vorschaubild: http://tox.3dfxatwork.de/preview/Topo.ashx?groesse=6

Darstellen sämtlicher, auch besonders schlechter Links: http://tox.3dfxatwork.de/preview/Topo.ashx?maxetx=unendlich

Der Übersichtlichkeit halber abgeschaltete Abfrage der FFHTopo-Datenbank: http://tox.3dfxatwork.de/preview/Topo.ashx?ffhtopo=-1

Einige Knoten verhorgehoben: http://tox.3dfxatwork.de/preview/Topo.ashx?hvip=28.1%7C8.22,&hvip=129

Um es sich schneller als PDF ausgeben zu lassen, weil der Download der PNG sehr groß ist: http://tox.3dfxatwork.de/preview/Topo.ashx?format=pdf

Sehr lange abwesende Nodes von weniger lang abwesenden besser unterscheiden: http://tox.3dfxatwork.de/preview/Topo.ashx?gesehen=5

Leipziger Nodes anzeigen: http://tox.3dfxatwork.de/preview/Topo.ashx?zeigip=104.61

Alle verbundenen Nodes im Freifunk anzeigen: http://tox.3dfxatwork.de/preview/Topo.ashx?zeigip=

Die Werte können kombiniert werden: http://tox.3dfxatwork.de/preview/Topo.ashx?hvip=28.1%7C8.22,&hvip=129&groesse=6&maxetx=3&ffhtopo=-1&zeig=1&format=svg

Außerdem kann man sich über einen extra Link auch die gefilterten Quelldaten anschauen: http://tox.3dfxatwork.de/preview/TopoData.ashx

Bezugsquelle und Diskussion

Wer den Quellcode erhalten möchte, möge mir eine Nachricht per Jabber oder PN zukommen lassen im Forum. Dort befindet sich auch die Diskussion zum Thema.