Readme und PHP-Version am 22.10.2019 aktualisiert
Mit dieser Anwendung können AML-Daten (Advanced Mobile Location) angefragt und verarbeitet werden. Zur Abfrage der Daten sind Zugangsdaten notwendig, die nur an 112-Leitstellen vergeben werden.
Für die Funktionalität der Software wird keinerlei Haftung übernommen. Auch für Schäden an Systemen Dritter wird keinerlei Haftung übernommen. Die Nutzung erfolgt ohne Zwang und auf eigene Gefahr.
Dieses Repository besteht aus zwei Teilen:
Über eine PHP-Webseite können AML-Daten für eine Telefonnummer abgefragt werden. Das Ergebnis wird in einer Karte im Browser dargestellt.
Das automatische Abrufen der Daten erfolgt über eine Auswertung der Notrufnummer beim Klingeln und ist optional (also zusätzlich zur Variante A, die Variante B muss nicht genutzt werden). Danach erfolgt eine Weitergabe der AML-Positionsdaten (soforn vorhanden) an andere Systeme (z.B. das Kartenmodul des Einsatzleitsystems). Diese Version wurde bisher nur im Land Brandenburg erfolgreich umgesetzt.
- Installation eines Linux-Servers (Debian, Ubuntu etc.) (Windows ist theoretisch auch möglich, wurde aber nie getestet)
- Schaffen der Netz-Infrastruktur (IP-Verbindung, ggf. DMZ und Proxy)
- Installation der notwendigen Pakete
- für Variante A (PHP-Webseite): Webserver installieren, z.B. Apache oder vergleichbar (z.B. Ngnix), prüfen ob notwendige Pakte zum Ausführen von Curl installiert sind (Curl für das Linux-System und für den Web-Server)
- für Variante B (automatisches Abfragen, wird nicht zwingend benötigt) Installation von Node.js (Version 8 oder höher)
- Download des Quellcodes (Master)
- Entpacken der *.zip-Datei
- Die Konfigurations-Dateien anpassen und Datein verschieben
- für Variante A (PHP-Webseite): config.php anpassen; aml.php und config/config.php in das Verzeichnis des Webservers kopieren
- für Variante B (automatisches Abfragen): app_cfg.js anpassen
- Anwendung starten:
- für Variante A (PHP-Webseite): Webserver starten und nach http://ip-das-servers:port/verzeichnis/aml.php?telefon= navigieren
- für Variante B (automatisches Abfragen): Komandozeile öffnen (Terminal, SSH etc.) und in das Verzeichnis mit der Datei app.js wechseln. Dort folgende Befehle eingeben:
npm install
(lädt und installiert alle Pakete)npm start
(startet die Anwendung)- optional: forever-service (https://www.npmjs.com/package/forever-service) installieren und app.js als Service einbinden
Auf dem Server den Testbefehl der AML-Spezifikation ausführen (siehe Dokument der Leitstelle Freiburg -> Curl-Skript).
- Zertifkat umwandeln:
$ sudo openssl pkcs12 -in zertifikatsdatei_alt.p12 -out zertifikatsdatei_neu.pem -nodes
- Key aus Zertifikat erhalten:
$ sudo openssl pkey -in zertifikatsdatei_neu.pem -out zertifikatsdatei_neu-key.pem
- Sind alle notwendigen Erweiterungen für den Webserver installiert?
PHP, Curl etc.
(oftmals fehlt php-curl $sudo apt-get install php-curl
)
- Was sagen die Log-Dateien?
Zunächst sollten Sie die PHP-Log-Dateien prüfen, bzw. aktivieren (siehe: Where are the apache and php log files?).
Unter Ubuntu finden sich die Log-Dateien unter /var/log/apache/access.log
- Sind die Zertifkate OK?
Sind die Zertifkate richtig umgewandelt? (siehe oben) Sind die Zertifkate durch den Webserver lesbar? Testweise kann die Berechtigung für das Zertifkat angepasst werden:
$ sudo chmod 777 zertifkat.pem
Dies erfolgt aktuell über einen Paramater beim aufrufen der Webseite http://ip-das-servers:port/verzeichnis/aml.php?telefon=0123456789
$curl_url = "https://aml-daten.irgendwas.com:1234/hilfe/daten?telefon=";
// URL der AML-Adresse inkl. paramter zur Abfrage (siehe Spezifikation von Freiburg)
$curl_proxy = "192.168.1.80:80";
// IP:Port des Proxy-Servers, sofern vorhanden, sonst einfach leer lassen
$curl_port = 1234;
// Port des AML-Servers (siehe Port in der o.g. URL)
$curl_sslcert = "/var/notrufdaten-zertifikat.pem";
// Speicherort des notwendigen Zertifkats
$curl_sslkey = "/var/notrufdaten-zertifikat-ssl.pem";
// Speicherort des notwendigen Zertifkats
$curl_sslkeypasswd = "1234567890";
// SSL-Passwort (wird vom AML-Betreiber mitgeteilt)
$curl_cainfo = "/etc/ssl/certs/ca-certificates.crt";
// lokales CA-Zertifikat des Linux-Systems
$curl_userpwd = "benutzer:passwort";
// Benutzer und Passwort für mit : getrennt
$tile_layer = "https://a.tile.openstreetmap.de/{z}/{x}/{y}.png";
// Eigener Tile-Server für Kartendarstellung
[2019-08-02 17:00:10.678] [INFO] UDP Server auf 0.0.0.0:1554 gestartet. PID: 12569
[2019-08-02 17:03:18.169] [LOG] Notruf auf Kanal 4 erkannt. Rufnummer: 015123456789
[2019-08-02 17:03:19.880] [LOG] Frage AML-Daten für Rufnummer 015123456789 nach 1 Sekunden ab.
[2019-08-02 17:03:20.433] [LOG] Keine AML-Daten zur Nummer 015123456789 verfügbar.
[2019-08-02 17:03:24.895] [LOG] Frage AML-Daten für Rufnummer 015123456789 nach 6 Sekunden ab.
[2019-08-02 17:03:25.303] [LOG] AML-Daten zur Nummer 015123456789 vorhanden, übermittle Daten an das Einsatzleitsystem.
[2019-08-02 17:03:25.304] [LOG] Position: 51.733152, 14.337873 (wifi)
[2019-08-02 17:03:25.304] [LOG] Genauigkeit: 17.489
[2019-08-02 17:03:25.304] [LOG] Geschwindigkeit: 5 m/s - Richtung: 192 Grad
[2019-08-02 17:03:25.304] [LOG] ISSI: 1234567