Opennet Firmware
 Alle Dateien Funktionen Variablen Gruppen Seiten
Dienste

Verwaltung von Diensten (z.B. via olsrd-nameservice announciert) Mehr ...

Funktionen

 get_service_name ()
 Ermittle en Namen eines Diensts basierend auf den Dienst-Attributen. Mehr ...
 
 notify_service ()
 Aktualisiere den Zeitstempel und die Entfernung (etx) eines Dienstes. Mehr ...
 
 update_service_routing_distance (service_name)
 Aktualisiere Routing-Entfernung und Hop-Count eines Dienst-Anbieters. Mehr ...
 
 is_existing_service (service_name)
 Prüfe ob ein Service existiert. Mehr ...
 
 _get_local_bias_for_service ()
 Ermittle eine reproduzierbare Zahl von 0 bis (LOCAL_BIAS_MODULO-1, service_name) - abhängig von der lokalen IP und dem Dienstnamen. Mehr ...
 
 sort_services_by_priority ()
 Sortiere den eingegebenen Strom von Dienstnamen und gib eine nach der Priorität sortierte Liste. Mehr ...
 
 filter_reachable_services ()
 Filtere aus einer Reihe eingehender Dienste diejenigen heraus, die erreichbar sind. Mehr ...
 
 filter_enabled_services ()
 Filtere aus einer Reihe eingehender Dienste diejenigen heraus, die nicht manuell ausgeblendet wurden. Mehr ...
 
 pipe_service_attribute (key, default)
 Liefere zu einer Reihe von Diensten ein gewähltes Attribut dieser Dienste zurück. Mehr ...
 
 get_services (service_type)
 Liefere alle Dienste zurueck, die dem angegebenen Typ zugeordnet sind. Falls kein Typ angegben wird, dann werden alle Dienste ungeachtet ihres Typs ausgegeben. Mehr ...
 
 filter_services_by_value (key, value)
 
 get_service_value (key, default)
 Auslesen eines Werts aus der Service-Datenbank. Mehr ...
 
 print_services (service_type)
 menschenfreundliche Ausgabe der aktuell angemeldeten Dienste Mehr ...
 
 move_service_up (service_name, service_type)
 Verschiebe einen Dienst in der Dienst-Sortierung um eine Stufe nach oben. Mehr ...
 
 move_service_down (service_name, service_type)
 Verschiebe einen Dienst in der Dienst-Sortierung um eine Stufe nach unten. Mehr ...
 
 move_service_top (service_name, service_types)
 Verschiebe einen Dienst an die Spitze der Dienst-Sortierung. Mehr ...
 
 get_service_detail (service_name, key, default)
 Ermittle den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts. Mehr ...
 
 set_service_detail (service_name, key, value)
 Setze den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts. Mehr ...
 
 get_service_log_filename ()
 Ermittle den Namen der Log-Datei für diesen Dienst. Zusätzliche Details (z.B. "openvpn mtu", service, other) sind möglich. Mehr ...
 
 get_service_log_content (service, max_lines)
 Lies den Inhalt einer Log-Datei für einen Dienst aus. Mehr ...
 
 is_service_routed_via_wan (service_name)
 Pruefe ob der Verkehr zum Anbieter des Diensts über ein WAN-Interface verlaufen würde. Mehr ...
 
 run_cyclic_service_tests (test_function)
 Durchlaufe alle via STDIN angegebenen Dienste bis mindestens ein Test erfolgreich ist. Mehr ...
 

Ausführliche Beschreibung

Verwaltung von Diensten (z.B. via olsrd-nameservice announciert)

Dokumentation der Funktionen

_get_local_bias_for_service ( )

Ermittle eine reproduzierbare Zahl von 0 bis (LOCAL_BIAS_MODULO-1, service_name) - abhängig von der lokalen IP und dem Dienstnamen.

Parameter
service_nameder Name des Diensts für den ein Bias-Wert zu ermitteln ist.

Dadurch können wir beim Sortieren strukturelle Bevorzugungen (z.B. durch alphabetische Sortierung) verhindern.

Definiert in Zeile 27 der Datei services.sh.

filter_enabled_services ( )

Filtere aus einer Reihe eingehender Dienste diejenigen heraus, die nicht manuell ausgeblendet wurden.

Die Dienst-Namen werden über die Standardeingabe gelesen und an die Standardausgabe weitergeleitet, falls der Dienst nicht abgewählt wurde.

Definiert in Zeile 43 der Datei services.sh.

filter_reachable_services ( )

Filtere aus einer Reihe eingehender Dienste diejenigen heraus, die erreichbar sind.

Die Dienst-Namen werden über die Standardeingabe gelesen und an die Standardausgabe weitergeleitet, falls der Dienst erreichbar sind. "Erreichbarkeit" gilt als erreicht, wenn der Host via olsr route-bar ist oder wenn er als DNS-entdeckter Dienst eine Priorität hat oder wenn er manuell hinzugefügt wurde.

Definiert in Zeile 38 der Datei services.sh.

filter_services_by_value ( key  ,
value   
)
Parameter
keyein Schlüssel
valueein Wert

Als Parameter kann ein "key/value"-Schluesselpaar angegeben werden. Nur diejenigen Dienste, auf die diese Bedingung zutrifft, werden zurueckgeliefert.

Definiert in Zeile 67 der Datei services.sh.

get_service_detail ( service_name  ,
key  ,
default   
)

Ermittle den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts.

Parameter
service_nameName eines Diensts
keyName des Schlüssels
defaultdieser Wert wird zurückgeliefert, falls der Schlüssel nicht gefunden wurde
Rückgabe
den ermittelten Wert aus dem Schlüssel-Wert-Paar

Definiert in Zeile 111 der Datei services.sh.

get_service_log_content ( service  ,
max_lines   
)

Lies den Inhalt einer Log-Datei für einen Dienst aus.

Parameter
serviceName eines Dienstes.
max_linesmaximale Anzahl der auszuliefernden Zeilen (unbegrenzt: 0, other)
otherEine beliebige Anzahl weiterer Parameter ist erlaubt: diese erweitern den typischen Log-Dateinamen für diesen Dienst.
Siehe auch
get_service_log_filename

Definiert in Zeile 131 der Datei services.sh.

get_service_log_filename ( )

Ermittle den Namen der Log-Datei für diesen Dienst. Zusätzliche Details (z.B. "openvpn mtu", service, other) sind möglich.

Parameter
serviceName eines Dienstes.
otherEine beliebige Anzahl weiterer Parameter ist erlaubt: diese erweitern den typischen Log-Dateinamen für diesen Dienst.

Die Funktion stellt sicher, dass das Verzeichnis der ermittelten Log-Datei anschließend existiert.

Definiert in Zeile 124 der Datei services.sh.

get_service_name ( )

Ermittle en Namen eines Diensts basierend auf den Dienst-Attributen.

Reihenfolge der Eingabeparameter: SERVICE_TYPE SCHEMA HOST PORT PROTOCOL PATH

Definiert in Zeile 7 der Datei services.sh.

get_service_value ( key  ,
default   
)

Auslesen eines Werts aus der Service-Datenbank.

Parameter
keyDer Name eines Dienst-Attributs
defaultDer Standard-Wert wird anstelle des Attribut-Werts verwendet, falls dieser leer ist.

Falls das Attribut nicht existiert, wird ein leerer Text zurückgeliefert. Es gibt keinen abschließenden Zeilenumbruch.

Definiert in Zeile 74 der Datei services.sh.

get_services ( service_type  )

Liefere alle Dienste zurueck, die dem angegebenen Typ zugeordnet sind. Falls kein Typ angegben wird, dann werden alle Dienste ungeachtet ihres Typs ausgegeben.

Parameter
service_type(optional) ein Service-Typ

Definiert in Zeile 61 der Datei services.sh.

is_existing_service ( service_name  )

Prüfe ob ein Service existiert.

Parameter
service_nameder Name des Diensts
Rückgabe
exitcode=0 falls der Dienst existiert

Definiert in Zeile 22 der Datei services.sh.

is_service_routed_via_wan ( service_name  )

Pruefe ob der Verkehr zum Anbieter des Diensts über ein WAN-Interface verlaufen würde.

Parameter
service_nameder Name des Diensts
Rückgabe
Exitcode == 0, falls das Routing über das WAN-Interface verläuft.

Definiert in Zeile 136 der Datei services.sh.

move_service_down ( service_name  ,
service_type   
)

Verschiebe einen Dienst in der Dienst-Sortierung um eine Stufe nach unten.

Parameter
service_nameder zu verschiebende Dienst
service_typeder Service-Typ innerhalb derer Mitglieder die Verschiebung stattfinden soll

Für verschiedene Sortier-Modi hat dies verschiedene Auswirkungen:

  • manual: Verschiebung hinter den dahinterliegenden Dienst desselben Typs
  • etx/hop: Erhöhung des Offsets um eins Falls keine Dienst-Typen angegeben sind, bewegt der Dienst sich in der globalen Liste nach unten.

Definiert in Zeile 97 der Datei services.sh.

move_service_top ( service_name  ,
service_types   
)

Verschiebe einen Dienst an die Spitze der Dienst-Sortierung.

Parameter
service_nameder zu verschiebende Dienst
service_typesein oder mehrere Dienst-Typen, auf die die Ermittlung der Dienst-Liste begrenzt werden soll (z.B. "gw")

Der Dienst steht anschließend direkt vor dem bisher führenden Dienst der ausgewählten Typen (falls angegeben). Falls keine Dienst-Typen angegeben sind, bewegt der Dienst sich in der globalen Liste an die Spitze.

Definiert in Zeile 104 der Datei services.sh.

move_service_up ( service_name  ,
service_type   
)

Verschiebe einen Dienst in der Dienst-Sortierung um eine Stufe nach oben.

Parameter
service_nameder zu verschiebende Dienst
service_typeder Service-Typ innerhalb derer Mitglieder die Verschiebung stattfinden soll

Für verschiedene Sortier-Modi hat dies verschiedene Auswirkungen:

  • manual: Verschiebung vor den davorplatzierten Dienst desselben Typs
  • etx/hop: Reduzierung des Offsets um eins Falls keine Dienst-Typen angegeben sind, bewegt der Dienst sich in der globalen Liste nach unten.

Definiert in Zeile 88 der Datei services.sh.

notify_service ( )

Aktualisiere den Zeitstempel und die Entfernung (etx) eines Dienstes.

Rückgabe
Der Dienstname wird ausgegeben.

Definiert in Zeile 11 der Datei services.sh.

pipe_service_attribute ( key  ,
default   
)

Liefere zu einer Reihe von Diensten ein gewähltes Attribut dieser Dienste zurück.

Parameter
keyDer Name eines Dienst-Attributs
defaultDer Standard-Wert wird anstelle des Attribut-Werts verwendet, falls dieser leer ist.

Die Dienstenamen werden via Standardeingabe erwartet. Auf der Standardausgabe wird für einen Dienst entweder ein Wert oder nichts ausgeliefert. Keine Ausgabe erfolgt, falls der Wert des Dienste-Attributs leer ist. Bei der Eingabe von mehreren Diensten werden also eventuell weniger Zeilen ausgegeben, als eingelesen wurden. Falls der optionale zweite 'default'-Parameter nicht leer ist, dann wird bei einem leeren Ergebnis stattdessen dieser Wert ausgegeben. Der 'default'-Parameter sorgt somit dafür, dass die Anzahl der eingelesenen Zeilen in jedem Fall mit der Anzahl der ausgegebenen Zeilen übereinstimmt.

Definiert in Zeile 56 der Datei services.sh.

print_services ( service_type  )

menschenfreundliche Ausgabe der aktuell angemeldeten Dienste

Parameter
service_type(optional) ein Service-Type
Rückgabe
Ausgabe der bekannten Dienste (für Menschen - nicht parsebar)

Definiert in Zeile 79 der Datei services.sh.

run_cyclic_service_tests ( test_function  )

Durchlaufe alle via STDIN angegebenen Dienste bis mindestens ein Test erfolgreich ist.

Parameter
test_functionder Name der zu verwendenden Test-Funktion für einen Dienst (z.B. "verify_vpn_connection", test_period_minutes, max_fail_attempts)
test_period_minutesWiederholungsperiode der Dienst-Prüfung
max_fail_attemptsAnzahl von Fehlversuchen, bis ein Dienst von "gut" oder "unklar" zu "schlecht" wechselt

Die Diensteanbieter werden in der Reihenfolge ihrer Priorität geprüft. Nach dem ersten Durchlauf dieser Funktion sollte typischerweise der nächstgelegene nutzbare Dienst als funktionierend markiert sein. Falls nach dem Durchlauf aller Dienste keiner positiv getestet wurde (beispielsweise weil alle Zeitstempel zu frisch sind), dann wird in jedem Fall der älteste nicht-funktionsfähige Dienst getestet. Dies minimiert die Ausfallzeit im Falle einer globalen Nicht-Erreichbarkeit aller Dienstenanbieter ohne auf den Ablauf der Test-Periode warten zu müssen.

Achtung
Seiteneffekt: die Zustandsinformationen des getesteten Diensts (Status, Test-Zeitstempel) werden verändert.

Definiert in Zeile 149 der Datei services.sh.

set_service_detail ( service_name  ,
key  ,
value   
)

Setze den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts.

Parameter
service_nameName eines Diensts
keyName des Schlüssels
valueder neue Wert

Ein leerer Wert löscht das Schlüssel-Wert-Paar.

Definiert in Zeile 118 der Datei services.sh.

sort_services_by_priority ( )

Sortiere den eingegebenen Strom von Dienstnamen und gib eine nach der Priorität sortierte Liste.

Die Prioritätsinformation wird typischerweise für nicht-mesh-verteilte Dienste verwendet (z.B. den mesh-Tunnel).

Definiert in Zeile 31 der Datei services.sh.

update_service_routing_distance ( service_name  )

Aktualisiere Routing-Entfernung und Hop-Count eines Dienst-Anbieters.

Parameter
service_nameder zu aktualisierende Dienst

Beide Dienst-Werte werden gelöscht, falls der Host nicht route-bar sein sollte. Diese Funktion sollte regelmäßig für alle Hosts ausgeführt werden.

Definiert in Zeile 17 der Datei services.sh.