[GELÖST] Voucherdruck als PDF / Captive Portal Port

Started by Oxygen61, October 19, 2016, 09:59:23 AM

Previous topic - Next topic
October 19, 2016, 09:59:23 AM Last Edit: December 14, 2016, 11:13:05 AM by Oxygen61
Hallo Zusammen,

dieses Thema gab es damals schon mal in der Zeit in der das Captive Portal noch nicht in die MVC Umgebung migriert wurde. Damals konnte man "relativ" einfach durch das editieren der "captiveportal.inc" Datei ($listenporthttp = 8078 + $cpcfg['zoneid']) den Port auf 8080 ändern für HTTP und mit dem Filemanager diese Datei im System dann ersetzen. Das funktionierte bei der pfSense genauso gut wie bei der OPNsense.

Genauso verhielt es sich mit der "services_captiveportal_vouchers.php" Datei die editiert werden konnte und über den Filemanager hochgeladen werden konnte um mit ein paar Zeilen den PDF Voucherdruck "freizuschalten". Will sagen: Einen zweiten Button der den gewünschten Vouchercode in ein vorgefertigtes template reinlud und diesen zum abspeichern als PDF vorschlug. Dazu wurde als Hilfsmittel FPDF genutzt (http://fpdf.de/).

Gibt es überhaupt noch eine Möglichkeit diese captiveportal_voucher.php Seite mit einer editierten Version zu ersetzen? Wie könnte man das jetzt mit Version 16.7.6 am Besten umsetzen?
Beide features funktionierten damals bei der M0n0wall genauso gut wie bei der früheren OPNsense Version.
Leider benötige ich beide "features" für meinen Captive Portal Betrieb. :-/
Bevor es dafür keine Lösung gibt, wird man mir wohl leider keine Freigabe für einen pfSense-->OPNsense Change zuteilen können. Deshalb meine Sorge. :P

Schöne Grüße :)

Voucher kann man mit einem einfachen API-Call generieren und dann mit dem JSON arbeiten, das man zurück bekommt.

Man kann zum Beispiel diese Bibliothek von mir verwenden: https://github.com/fabianfrz/OPNsense_client_lib
Die Methode zum Generieren heißt OPNsense::Voucher::create!

Mit dem Ergebnis kann man dann ein Template rendern und dieses dann verwenden. Ich habe diesbezüglich eine Beispielimplementierung in JRuby geschrieben. Es kann hier gefunden werden: https://github.com/fabianfrz/OPNsense-client-library-sample

Hallo Fabian,

vielen Dank erstmal. 8)
Das klingt ja schon ziemlich umständlich,
im Gegensatz dazu wie das vor nem halben Jahr mal gelöst werden konnte.
Puh! Na mal schauen ob ich das hinkrieg. Ich les mich da mal rein und schreib wenn es geklappt hat oder ich daran verzweifelt bin  ;) ;D
Auf jeden Fall probier ich deine Variante mal aus in ner VM. :)

October 20, 2016, 11:38:35 AM #3 Last Edit: October 20, 2016, 12:30:14 PM by Oxygen61
Hallöle ich nochmal,

also ich versuch gerade nachzuvollziehen, wie man deinen Vorschlag anwendet.
Tue mich da leider sehr schwer mit. Sorry! :/
Was ich gemacht hab ist:
Die Bibliothek runtergeladen und deine Beispielimplementierung.
Unter System> Access > User für meinen Benutzer einen Api Key generiert und abgespeichert als txt.
client.rb mit JRuby gestartet > Fenster öffnet sich.

Pfad zur Bibliothek: C:\Users\<mein Name>\Desktop\OPNsense_client_lib-master
Pfad zum Browser: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Basis-Url für den API Zugriff: http://x.x.x.x/api/captiveportal/voucher/
Pfad zu den Zugangsdaten: C:\Users\<mein Name>\Desktop\apikey\apikey.txt
Pfad zum TLS-Zertifikat der CA des Servers: <erstmal noch leer gelassen>

Nachdem ich Übernehme und Speicher und client.rb neu öffne sind die Einstellungen wieder zurückgesetzt.
Ich komm bloß nich so recht dahinter wie ich den eigentlichen API Zugang hinbekomme.
Hatte mir dazu auch mal: https://docs.opnsense.org/development/how-tos/api.html angeschaut.
Da wurde ja Python genutzt. Wollte ja schon bei deiner Variante bleiben eigentlich. :)

Hoffe du hilfst mir nochmal aus. Danke dir eh schon mal für die Idee. :)

Basisurl ist zum Beispiel https://192.168.1.1/api/
Die Einstellungen werden in die Datei configuration.yml geschrieben (Wenn man auf den Button zum Speichern drückt).

Hallo Fabian,

Jap. Die x.x.x.x waren nur als Platzhalter gedacht. :)
Aber will ich nicht über die API Zugriff auf die Voucher Seite haben für die Generierung und Weiterverarbeitung, also demnach zum Beispiel: http://192.168.1.1/api/captiveportal/voucher/ ??
Außerdem noch eine Frage zu deinem Sample. Sobald man auf Speichern & Übernehmen drückt und die Config in configuration.yml geschrieben wird, warum sollte  man dann laut deiner Anleitung das client.rb Script nochmal neu öffnen? Bei mir kommt dann erneut das Fenster mit den Einstellmöglichkeiten der Config. :-/

October 21, 2016, 06:34:41 PM #6 Last Edit: October 21, 2016, 06:37:06 PM by fabian
Der Tab mit den Vouchern braucht eine funktionierende API-Verbindung daher das Problem und die Basis-URL für API-Requests ist nur bis api/, alles andere hängt vom API-Aufruf ab. Da es sich hierbei nur um ein Beispielprogramm handelt, initialisiere ich die Tabs beim Ändern der Einstellungen nicht neu.

Meine Konfigurationsdatei sieht übrigens so aus:
---
opnsense_lib: "../opnsenserb/opnsense"
browser: "/usr/bin/firefox"
base_url: https://192.168.1.1/api/
api_credential_file: "../apikey.ini"
ca_file: "../OPNsense.pem"

MfG

Fabian

Note: You will also need a valid voucher server before you can run the tool

Hallo Fabian,

ich hab die Einstellungen nun soweit abgeändert und verbessert.
Sieht nun so aus:

opnsense_lib: "C:\Users\<Platzhalter>\Desktop\OPNsense_client_lib-master\opnsense"
browser: "C:\Program Files (x86)\Google\Chrome\Application"
base_url: https://192.168.1.1/api/
api_credential_file: "C:\Users\<Platzhalter>\Desktop\apikey\apikey.ini"
ca_file: "C:\Users\<Platzhalter>\Desktop\Zertifikat\OPNsense.crt"

Irgendwas scheint immer noch grundlegend falsch zu sein. Die API Verbindung scheint noch nicht zu klappen.
Hoffe es gibt auch kein Problem damit, dass ich Chrome und Windows für den Zugriff nutze.
Den Voucher Server hatte ich schon vor ner Weile erstellt für das Captive Portal. Dieser funktioniert auch.
Man kann sich erfolgreich am CP anmelden, wenn man einen Vouchercode hat.
Daran kann es auch nicht liegen.... das ist echt zum verzweifeln  ;D :(

Trotzdem schöne Grüße

Ich glaube du musst beim Brower den Pfad mit EXE angeben.

Hallo DokuKäfer,

danke für den Tipp aber "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
war es anscheinend auch nicht.
Öffnet sich beim zweiten Mal starten der client.rb wieder nur das Einstellungs-Fenster. :/

api_credential_file gibt mal dort nur den Pfad zur Datei an und schau das diese Datei "apikey.txt" heißt.

Hey hey,

gerade versucht und funktioniert leider auch nicht.
Ich hatte auch bei ca_file mal probiert nur den Dateipfad hin zur Datei anzugeben oder direkt zur Datei. Funktionierte beides auch nicht. :(

Das CA-Certifikat passt auch? Muss die CA sein, die das Zertifikat von der Weboberfläche unterschrieben hat.

October 25, 2016, 08:38:14 AM #14 Last Edit: October 25, 2016, 12:35:07 PM by Oxygen61
Hey ihr Beiden,

ja das CA cert sollte auch stimmen. Ist zwar "self-signed" aber ist die CA die das genutzte Zertifikat für die Weboberfläche nutzt. Der apikey wurde in der GUI angelegt und als .txt abgespeichert. Hab da also auch nichts formatiert oder ähnliches. Die IP ist die "Management IP" auf der LAN Seite für die GUI und die Client Library hatte ich auch nich verändert oder bearbeitet. :/
Ich hab mittlerweile echt sämtliche Kombinationen durch, die man so probieren könnte.

Meine Config. sieht nun so aus:
------
opnsense_lib: "C:\Users\<platzhalter>\Desktop\OPNsense_client_lib-master\opnsense\"
browser: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
base_url: "https://<LAN IP für Webzugriff>/api/"
api_credential_file: "C:\Users\<platzhalter>\Desktop\apikey\apikey.txt"
ca_file: "C:\Users\<platzhalter>\Desktop\Zertifikat\cert.crt"
------

Langsam werden die Möglichkeiten knapp für Einfälle. :/

Note: ich hatte grade in der Client Library noch im apicredentials.rb file die Zeile geändert auf die richtige LAN IP: >>APICredentials.new(credentials[0],credentials[1],'https://<LAN IP>/api/',nil)
Aber ohne Erfolg. Keine Veränderung.