Opennet Firmware
 Alle Dateien Funktionen Variablen Gruppen Seiten
OpenVPN (allgemein)

Vorbereitung, Konfiguration und Prüfung von VPN-Verbindunge (z.B. für Nutzertunnel oder UGW). Mehr ...

Funktionen

 enable_openvpn_service ()
 Erzeuge eine funktionierende openvpn-Konfiguration (Datei + UCI, service_name).
 update_vpn_config (service_name)
 Schreibe eine openvpn-Konfigurationsdatei.
 disable_openvpn_service (service_name)
 Löschung einer openvpn-Verbindung.
 is_openvpn_service_active (service_name)
 Prüfung ob eine openvpn-Verbindung besteht.
 _change_openvpn_config_setting (config_file, config_key, config_value)
 Ändere eine Einstellung in einer openvpn-Konfigurationsdatei.
 get_openvpn_config (service_name)
 liefere openvpn-Konfiguration eines Dienstes zurück
 verify_vpn_connection (service_name, key, cert, ca-cert)
 Prüfe einen VPN-Verbindungsaufbau.
 openvpn_service_has_certificate_and_key ()
 Prüfe ob das Zertifikat eines openvpn-basierten Diensts existiert.
 submit_csr_via_http (upload_url, csr_file)
 Einreichung einer Zertifikatsanfrage via http (bei http://ca.on)
 has_openvpn_credentials_by_template (template_file)
 Prüft, ob der Nutzer bereits einen Schlüssel und ein Zertifikat angelegt hat.
 log_openvpn_events_and_disconnect_if_requested ()
 Allgemeines Ereignisbehandlung fuer openvpn-Verbindungen: Logging und eventuell Dienst-Bereinigung (nur für "down").
 prepare_openvpn_service (Name, template_file)
 Erzeuge oder aktualisiere einen OpenVPN-Dienst.
 openvpn_get_mtu ()
 Ermittle die MTU auf dem Weg zum Anbieter des Diensts.
 cleanup_stale_openvpn_services ()
 Beräumung liegengebliebener openvpn-Konfigurationen, sowie Deaktivierung funktionsunfähiger Verbindungen.

Ausführliche Beschreibung

Vorbereitung, Konfiguration und Prüfung von VPN-Verbindunge (z.B. für Nutzertunnel oder UGW).

Dokumentation der Funktionen

_change_openvpn_config_setting ( config_file  ,
config_key  ,
config_value   
)

Ändere eine Einstellung in einer openvpn-Konfigurationsdatei.

Parameter
config_fileName der Konfigurationsdatei.
config_keyName der openvpn-Einstellung.
config_valueNeuer Inhalt der Einstellung - die Einstellung wird gelöscht, falls dieser Parameter fehlt oder leer ist.
Achtung
OpenVPN-Optionen ohne Parameter (z.B. –mtu-test) können nicht mittels dieser Funktion gesetzt werden.

Definiert in Zeile 31 der Datei openvpn.sh.

cleanup_stale_openvpn_services ( )

Beräumung liegengebliebener openvpn-Konfigurationen, sowie Deaktivierung funktionsunfähiger Verbindungen.

Verwaiste openvpn-Konfigurationen können aus zwei Grunden auftreten: 1) nach einem reboot wurde nicht du zuletzt aktive openvpn-Verbindung ausgewählt - somit bleibt der vorher aktive uci-Konfigurationseintrag erhalten 2) ein VPN-Verbindungsaufbau scheitert und hinterlässt einen uci-Eintrag, eine PID-Datei, jedoch keinen laufenden Prozess

Definiert in Zeile 83 der Datei openvpn.sh.

disable_openvpn_service ( service_name  )

Löschung einer openvpn-Verbindung.

Parameter
service_nameName eines Dienstes

Die UCI-Konfiguration, sowie alle anderen mit der Verbindung verbundenen Elemente werden entfernt. Die openvpn-Verbindung bleibt bestehen, bis zum nächsten Aufruf von 'apply_changes openvpn'.

Definiert in Zeile 19 der Datei openvpn.sh.

enable_openvpn_service ( )

Erzeuge eine funktionierende openvpn-Konfiguration (Datei + UCI, service_name).

Parameter
service_nameName eines Dienstes

Die Konfigurationsdatei wird erzeugt und eine openvpn-uci-Konfiguration wird angelegt. Falls zu diesem openvpn-Dienst kein Zertifikat oder kein Schlüssel gefunden wird, dann passiert nichts.

Definiert in Zeile 9 der Datei openvpn.sh.

get_openvpn_config ( service_name  )

liefere openvpn-Konfiguration eines Dienstes zurück

Parameter
service_nameName eines Dienstes

Definiert in Zeile 35 der Datei openvpn.sh.

has_openvpn_credentials_by_template ( template_file  )

Prüft, ob der Nutzer bereits einen Schlüssel und ein Zertifikat angelegt hat.

Parameter
template_fileName einer openvpn-Konfigurationsdatei (oder einer Vorlage). Aus dieser Datei werden "cert"- und "key"-Werte entnommen.
Rückgabe
Liefert "wahr", falls Schlüssel und Zertifikat vorhanden sind oder falls in irgendeiner Form Unklarheit besteht.

Definiert in Zeile 62 der Datei openvpn.sh.

is_openvpn_service_active ( service_name  )

Prüfung ob eine openvpn-Verbindung besteht.

Parameter
service_nameName eines Dienstes

Die Prüfung wird anhand der PID-Datei und der Gültigkeit der enthaltenen PID vorgenommen.

Definiert in Zeile 24 der Datei openvpn.sh.

log_openvpn_events_and_disconnect_if_requested ( )

Allgemeines Ereignisbehandlung fuer openvpn-Verbindungen: Logging und eventuell Dienst-Bereinigung (nur für "down").

Alle Informationen (bis auf das Log-Ziel) werden aus den Umgebungsvariablen gezogen, die openvpn in seinen Ereignisskripten setzt.

Definiert in Zeile 67 der Datei openvpn.sh.

openvpn_get_mtu ( )

Ermittle die MTU auf dem Weg zum Anbieter des Diensts.

The output can be easily parsed via 'cut'. Even the full status output of openvpn is safe for parsing since potential tabulator characters are removed.

Rückgabe
One line consisting of five fields separated by tab characters is returned (tried_to_remote real_to_remote tried_from_remote real_from_remote full_status_output). Failed tests are indicated by an empty result.

Definiert in Zeile 77 der Datei openvpn.sh.

openvpn_service_has_certificate_and_key ( )

Prüfe ob das Zertifikat eines openvpn-basierten Diensts existiert.

Rückgabe
exitcode=0 falls das Zertifikat existiert

Falls der Ort der Zertifikatsdatei nicht zweifelsfrei ermittelt werden kann, dann liefert die Funktion "wahr" zurück.

Definiert in Zeile 49 der Datei openvpn.sh.

prepare_openvpn_service ( Name  ,
template_file   
)

Erzeuge oder aktualisiere einen OpenVPN-Dienst.

Parameter
Nameeines Diensts
template_fileName einer openvpn-Konfigurationsvorlage

Definiert in Zeile 72 der Datei openvpn.sh.

submit_csr_via_http ( upload_url  ,
csr_file   
)

Einreichung einer Zertifikatsanfrage via http (bei http://ca.on)

Parameter
upload_urlURL des Upload-Formulars
csr_fileDateiname einer Zertifikatsanfrage

Eine Prüfung des Ergebniswerts ist aufgrund des auf menschliche Nutzer ausgerichteten Interface nicht so leicht moeglich.

Noch zu erledigen:
Umstellung vom Formular auf die zu entwickelnde API
Rückgabe
Das Ergebnis ist die html-Ausgabe des Upload-Formulars.

Definiert in Zeile 57 der Datei openvpn.sh.

update_vpn_config ( service_name  )

Schreibe eine openvpn-Konfigurationsdatei.

Parameter
service_nameName eines Dienstes

Definiert in Zeile 13 der Datei openvpn.sh.

verify_vpn_connection ( service_name  ,
key  ,
cert  ,
ca-  cert 
)

Prüfe einen VPN-Verbindungsaufbau.

Parameter
service_nameName eines Dienstes
key[optional] Schluesseldatei: z.B. $VPN_DIR/on_aps.key
cert[optional] Zertifikatsdatei: z.B. $VPN_DIR/on_aps.crt
ca-cert[optional] CA-Zertifikatsdatei: z.B. $VPN_DIR/opennet-ca.crt
Rückgabe
Exitcode=0 falls die Verbindung aufgebaut werden konnte

Definiert in Zeile 43 der Datei openvpn.sh.