PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WebFrontend für Monitord



b-bittner
13.05.2013, 14:36
Hallo Zusammen,

für alle die daran interesse haben, bereits auf eine früher Version eines neuen WebFrontend für monitord (POCSAG-only) zurückzugreifen:
https://github.com/b-bittner/MonitordWebAPI

Es befindet sich noch in der Entwicklung und für Verbesserungen und Anregungen bin ich jederzeit offen.

Grundlegend ist es ein geteiltes Projekt: Es gibt eine Backend-API sowie akutell ein Browser Frontend.
Ziel der Trennung ist es, einfach unterschiedliche Plattformen zu integrieren, z.B. Browser, Smart-Phone-App,...

Das Backend ist in PHP geschrieben und wird per POST-JSON angesprochen.
Auch eine starke Authentifizierung mittel OneTimePassword (OTP; GoogleAuthenticator) ist implementiert.

Das Frontend ist aktuell in HTML und hauptsächlich in JavaScript (jQuery) geschrieben.
Die Daten werden per AJAX-Request im Hintergrund aktualisiert

Wer Fragen oder sonstige Dinge hat, soll sich am besten hier im Forum melden.

Freue mich auf erste Rückmeldungen, Gruß
BB

funkwart
17.05.2013, 10:04
Super, dass jemand mal den Anfang gemacht hat!
Hier noch zwei Bitten:
1.) Könntest Du bitte mal ein paar Screenshots machen und einstellen?
2.) Kannst Du bitte mal posten, welche DB-Felder wie gefüllt werden (am besten den entsprechenden Teil der monitord.xml posten)?

Danke und Gruß,
Funkwart

b-bittner
19.05.2013, 17:51
Also hier mal ein Screenshot, ist gar nicht so einfach ein interaktives Frontend das auch noch Datenschutzrelavante Inhalte hat Online zu stellen. Aber jetzt gibts zumindest mal einen ersten Eindruck
14743


Die Monitord.xml Daten hab ich inzw. in der GitHub-Readme ergänzt. Grundsätzlich sind aber alle Felder vom Namen her flexible da in config-file der API veränderbar.

Hier trotzdem nochmal der passende Ausschnitt:


<parameters>
<hostname> localhost</hostname>
<port> 3306 </port>
<username> monitord </username>
<password> CHANGETHIS </password>
<database> monitorDB </database>
<mapping typ="pocsag">
<table> monitor_pocsag </table>
<field name="timestamp"> timestamp </field>
<field name="date" source="mysql"> now() </field>
<field name="ric"> ric </field>
<field name="sub"> sub </field>
<field name="text"> text </field>
</mapping>
</parameters>



Die Backend-API steht schon recht gut da, vorallem am Desing und Funktionsumfang des Frontends muss ich noch arbeiten. Hilfe und Anregungen sind gerne gesehen.

Gruß

funkwart
19.05.2013, 19:52
Vielen Dank,

irgendwie fehlt mir dann noch etwas. Ich hab mal ein zwei Testeinträge direkt mit phpmyadmin in die Tabelle pocsag gemacht. Alles, was mir angezeigt wird, ist der Screenshot im Anhang. Wo gibts denn das Backend? So, wie man es im Screenshot sieht, zeigt sich mir Dein Script. Was mache ich falsch???

Danke und Gruß,
Funkwart

b-bittner
19.05.2013, 21:27
Das Backend besteht ist die Datei "ajax_api.php" + die php-classen im Ordner "classes".

Warum du keine einträge im Browser erhälst kann ich mit den aktuellen informationen auch nicht sagen.
Aber auf es zeigt mir, daß ich mich noch um eine "config-test-seite" zum überprüfen der installtion kümmern sollte.

Um dir beim Troubleshooting zu helfen, bräuchte ich im erstmal ein paar mehr Infos:
-Welcher Browser
-Welche PHP-Version auf dem Server
-sind "element_lastrefresh" und "element_lastentry" während deinem Screenshot auf "enable" gesetzt gewesen?
-was passiert bei die wenn man auf den "History"-Button klickt?
-Falls du "Firebug" oder ähnl. hast: was steht in der Log-Console?

Antworten gerne auch per PN.

Fall wir gemeinsam mal dein System anschauen sollen, können wir das gerne machen.
Freue mich über jeden Fehler der gefunden wird und das Ding verbessert ;)

Gruß

funkwart
20.05.2013, 14:18
Ein Aufruf von ajax_api.php liefert bei mir das Resultat: invalid call
Ich nutze den Firefox in Version 20.0.1
Ich setze zum Testen den USBWebserver (www.usbwebserver.com) ein, der beinhaltet
PHP in Version 5.3.9
Apache 2.2.21 und
mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $
Auszug aus der config:
#Enable/Disable Elements on Frontend
element_lastrefresh = enable
element_lastentry = enable
element_loggedinas = enable
element_activeusers = enable
Wenn ich auf "History" klicke, passiert gar nichts.

Ich würde gerne weiter versuchen, das Ganze zum Laufen zu bewegen und Dir als Tester zur Verfügung stehen.

Gruß,
Funkwart

PS: Kennst Du die Seite http://www.112meldingen.nl/ ? Sehr gut gemacht mit vielen Möglichkeiten zur Filterung. Schau einfach mal drauf, liefert vielleicht ein paar Anregungen.

b-bittner
20.05.2013, 19:51
hmm.. Das sieht auf den ersten Blick nicht so schlecht aus.
Da in deinem Screenshot die Buttons richtig zu sehen sind, dürfte JavaScript grundsätzlich funktionieren.

Der "invalid call" ist so gewollt, da das Backen-API nur über AJAX direkt vom Frontend angesprochen werden soll.

Wenn es dir möglich ist, wäre es hilfreich, den von dir bereits eingerichteten USB-Webserver mir zu schicken/als Download irgendwo bereitstellen.

Und/Oder installiere das Firefox-Plugin "Firebug"; da gibt es dann eine Konsole die Fehler und Aktivitäten mitschreibt. Am besten Konsole öffnen und dann Seite aktualisieren.

Bin die nächsten Tage beruflich unterwegs, werd aber mal reinschauen und versuchen den Fehler zu finden.

Gruß

funkwart
20.05.2013, 21:22
Wie kommt man denn vom Frontend ins Backend-API? Das ist mir noch nicht klar.
Weiterhin verstehe ich noch nicht: Wer füllt denn in die Tabellen _log, _session und _user Daten ein? Ich würde denken, dass das das Script erledigt, oder? Aber von wo aus denn? Wo lege ich z.B. User an? Irgendwie verstehe ich da ein paar Dinge noch nicht.
Ich stelle die Tage die Webserver-Daten mal für Dich zur Verfügung. Ist aber nur die vorgegebene Standard-Installation. Soll ich auch meine (fast leere) MySQL-DB dumpen?

Gruß,
Funkwart

b-bittner
21.05.2013, 11:32
Ich sehe schon, meine arbeit an der Doku muss vertieft werde ;)

Das Backend ist nur eine API, sprich es wird nicht vom User sondern vom Frontend angesprochen was immer nur mit Rohdaten passiert, daher kommt auch der "invalid call" wenn man es mit dem Browser öffnet.
Mit diesem Aufbau ist es sehr einfach unterschiedliche Frontends zu intergrieren da die eigentlichen Daten und Anfragen immer über die selbe Schnittstelle läuft.

Um diese Schnittstelle mal zu testen, kann man auch eine Anfrage auf der Kommandozeile absetzen(hier mit deinen Daten, evtl. Hostname und Port anpassen), das Tool "curl" sollte für alle Betriebssystem zu finden sein:

curl -X POST http://localhost:8080/ajax_api.php -d "cmd=requestSettings"
als Antwort sollte sowas hier kommen (das ist ein JSON-String):

{"settings":{"brower_title":"MonitordWeb-Frontend","element_lastrefresh":"enable",....

als weitere Anfrage wäre noch möglich:

curl -X POST http://localhost:8080/ajax_api.php -d "cmd=authenticate"
Anwort darauf sollte so ähnlich aussehen:

{"sessionid":"42bbcf17e19388bc8c65a72d68ab5835","session":"valid","activeusers":"1"}
Kannst mir ja mal deine Ausgaben zuschicken.

Gruß

funkwart
21.05.2013, 17:20
So, hab beides mal durchgeführt. cmd=requestSettings ist in Datei curl1.txt, cmd=authenticate in curl2.txt aufgeführt.

Ich hoffe, das hilft weiter.

Danke und Gruß,
Funkwart

b-bittner
21.05.2013, 20:20
Hi,

also das hilft mal weiter:
Änder in der Datei "monitordWebAPI_config.ini.php" alle Kommentare von "#..." auf "//...".

Also erster Eintrag der geändert werden sollte (Müsste Zeile 24 sein):
"#SQL-Table-name for logging; default "monitor_log"" nach "//SQL-Table-name for logging; default "monitor_log""

und das nun eben mit allen Kommentaren.

Dann bitte erneut testen und Rückmeldung geben.

(da ich unterwegs bin, könnte ich es nur mit sehr viel aufwand jetzt selbst in den Quellen/auf Github ändern)

Gruß

funkwart
21.05.2013, 20:41
So, das habe ich jetzt gemacht. Allerdings musste ich auch in allen Kommentarzeilen die doppelten Anführungszeichen (") entfernen, da es sonst immer noch zu Fehlermeldungen kam. Jetzt kommen folgende Ausgaben mit curl. Am Output im Browser ändert das leider gar nichts. Sieht immer noch exakt so aus wie im ersten Post. Auch Klicken auf die Buttons änder nichts.

Gruß,
Funkwart

b-bittner
21.05.2013, 21:27
Hmm.. also die Ausgaben sind jetzt genau so wie sie sein sollten.

Jetzt wäre eine Suche mit "Firebug" ganz gut (Wie schonmal ein paar Post vorher beschrieben).
Den einzigsten Ansatz den ich grad hab ist, daß es an der Variante "localhost" und/oder Port 8080 liegt. Diese Kombination hatte ich bei mir während der Entwicklung nicht.

Weiterhin wäre deinen bereits eingerichteter USB-Webserver ganz gut. Wenn ich das konzept dieses Server richtig verstanden habe, sollte es ja reichen einfach das gesamte Verzeichnis zu Zippen und dann zur Verfügung zu stellen. Dann sollten ja alle Daten (incl. der MySQL-Tables) drin sein??

Gruß

funkwart
21.05.2013, 21:41
So, ich hab jetzt mal den Firebug installiert. Die Konsole sagt mir:
ReferenceError: update is not defined
update();
/monitord/(Zeile 68)

Hilft das weiter?

Ich kann Dir den kompletten Webserver zur Verfügung stellen, hast Du nen ftp-Server, wo ich es hochladen kann? PM an mich dazu.

Danke und Gruß,
Funkwart

funkwart
21.05.2013, 22:29
Bin etwas weiter:
In der index.php muss bei den script-Einträgen (Zeile 9-12)
src="./JS/..." eingetragen werden. Das hat natürlich mit meinem Unterverzeichnis zu tun.
Jetzt zeigt er mir direkt den Login-Dialog an. Leider habe ich keinen Login. Muss ich den direkt in der mysql-db anlegen?
Egal, was ich eingebe im Login-Dialog, ich bekomme immer:

Fehler:SyntaxError: JSON.parse: unexpected characterparsererror

Soweit mein Zwischenstand.
Gruß,
Funkwart

b-bittner
22.05.2013, 09:32
Ich denke es müsste an eben der Kombination aus localhost , port 8080 und Unterverzeichnis liegen. Mit deinem USB-Server dürfte ich der Sache aber schnell auf die Spur kommen.

Es gibt in der Config 2 Einstellungen die mit Admin und Authentifizierung zu tun haben:

noauthip = 127.0.0.1/32
noauthip_isadmin = false
Der erste Eintrag regelt welches IP-Netz keine Authentifizierung braucht(z.B. Lokales Netz),
Der zweite Eintrag gibt dieser Nutzergruppe dann auch Adminrechte. Zum einrichten von Usern
muss man Admin sein, sprich für die Ersteinrichtung muss man "noauthip_isadmin" auf "true" stellen (Evtl. sollte ich das als Vorgabe in die Sample-Datei machen). Dann kann man entsprechend die User anlegen und ggf. hinterher wieder die Admineinstellung auf False setzten.

Gruß

PS
Zugangsdaten hab ich dir per PN geschickt.

funkwart
22.05.2013, 22:55
Habs Dir als Zip-Datei hochgeladen.

Danke und Gruß,
Funkwart

schmodda
23.05.2013, 09:42
Sieht ja nett aus... Wenn mein VPN Gateway wieder mit mir spricht, dann werd ich das bei mir auch mal einrichten :)

b-bittner
23.05.2013, 11:23
Ok, das hilft etwas weiter...
Der USB-Webserver nutzt IPv4 und IPv6. Aktuell kann das Backend nicht mit v6 umgehen.
Hab es bei mir mit auf die ToDo-Liste genommen, für deine Testumgebung wäre eine schneller Lösung den apache auf IPv4 Only zu bringen.

Desweiteren hab ich dadurch noch andere "Fehlverhalten" gefunden, welche auch Zeitnach gepatch werden.

Um es für dich mal weiter zu bringen:
Apache config-Änderung von:

Listen {port}

auf:

Listen 0.0.0.0:{port}

und in der "monitordWebAPI_config.ini.php" File eins der beiden "datasearch"/"datareplace" aktivieren:


datasearch[newline] = '/<CR><LF>/i'
datareplace[newline] = '</br>'


Dann solltest du weiterkommen, sobald ich wieder in meiner Entwicklungsumgebung bin, werde ich ein paar Fixes einbringen und GitHub aktualisieren, dann kannst du ein Update einspielen

Gruß

funkwart
23.05.2013, 19:25
Also, mit
Listen 0.0.0.0:{port} startet der Webserver bei mir mit einem Error, bzw. startet gar nicht. Wenn ich
Listen 127.0.0.1:{port} einsetze, läuft der Webserver ohne Probleme hoch.
Ich bekomme jetzt (noauthip_isadmin=TRUE gesetzt) einen Screen, bei dem alle 5 Sek. das Refresh-Date updated und ich einen Button "Users" sehe. Wenn ich allerdings auf diesen Button klicke, passiert nichts, außer, dass der Refresh anhält. Daten aus der POCSAG-Tabelle werden auch nicht angezeigt. :-(
Ich denke, es ist wohl das Beste, wenn ich auf das Update in Deinem Download warte. Es sei denn, Du hast nen spontanen Tipp für mich.

Danke soweit für die Unterstützung,
Funkwart

b-bittner
24.05.2013, 17:29
Hallo,

nun sind einige commits online gegangen und die aktuell bekannten Fehler sollten weg sein.
(Mit einer Ausnahme: Wenn IPv6 verwendet wird; da muss ich mir noch überlegen wie ich es grundsätzlich mach)

Bitte mach mal ein Update deiner Dateien und starte deine Versuchsläufe.
Hinweis für Alarm-Meldungen: Aktuell ist als Mindest-Textlänge 10 Zeichen eingestellt; Hintergrund: Damit Meldungen mit fehlerhafter/abgebrochener Übertragung nicht angezeit/verwertet werden.
Falls das ein Problem darstellen sollte, kann ich das auch als konfigurierbaren Parameter umbauen. Bitte um Rückmeldungen.


Weiterhin bin ich natürlich für jede Hilfe bei der Fehlersuche dankbar!

Gruß

b-bittner
29.05.2013, 13:23
Hallo Zusammen,

gibts irgendwelche News zu euren Installationen?
Seit ihr noch im Testlabor oder gibts sogar schon Live-Betrieb?

Gruß

funkwart
30.05.2013, 17:15
Bin noch am Testen, melde mich mit neuen Erkenntnissen. Momentan probiere ich, die DB auch vom "alten" monitor (der ohne "d") füttern zu lassen.

Gruß,
Funkwart