OPNsense Forum

International Forums => German - Deutsch => Topic started by: Oxygen61 on October 19, 2016, 09:59:23 AM

Title: [GELÖST] Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 19, 2016, 09:59:23 AM
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 :)
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on October 19, 2016, 05:35:02 PM
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
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 20, 2016, 08:23:20 AM
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. :)
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 20, 2016, 11:38:35 AM
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. :)
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on October 20, 2016, 09:46:53 PM
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).
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 21, 2016, 09:20:56 AM
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. :-/
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on October 21, 2016, 06:34:41 PM
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/ (https://192.168.1.1/api/)
api_credential_file: "../apikey.ini"
ca_file: "../OPNsense.pem"

MfG

Fabian
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on October 21, 2016, 07:10:34 PM
Note: You will also need a valid voucher server before you can run the tool
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 24, 2016, 09:24:47 AM
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
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: DokuKäfer on October 24, 2016, 10:52:55 AM
Ich glaube du musst beim Brower den Pfad mit EXE angeben.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 24, 2016, 11:31:45 AM
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. :/
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: DokuKäfer on October 24, 2016, 12:03:24 PM
api_credential_file gibt mal dort nur den Pfad zur Datei an und schau das diese Datei "apikey.txt" heißt.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 24, 2016, 01:06:18 PM
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. :(
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on October 24, 2016, 05:54:07 PM
Das CA-Certifikat passt auch? Muss die CA sein, die das Zertifikat von der Weboberfläche unterschrieben hat.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on October 25, 2016, 08:38:14 AM
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.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on November 30, 2016, 10:03:54 AM
Hey hey Leute,

Bump.

Ich hab mich nochmal rangesetzt und muss das Thema noch mal von den Toten auferwecken.
Ich hab mal en Screenshot gemacht, von den Fehlermeldungen die kommen noch bevor das Einstellungs-Fenster angezeigt wird. Vielleicht kann damit jemand was anfangen. da steht halt "require Java false". Kann mir nicht erklären, warum das Fehlen sollte :/

Weil es über das Livesystem irgendwie nich hinhaut werd ich demnächst mal versuchen über ne Virtualbox, die API anzusprechen. Werd dann auch Ubuntu dafür nutzen. Vielleicht klappts ja. :-/

Schöne Grüße
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on November 30, 2016, 05:22:39 PM
require liefert den return-Wert false, wenn die Datei bereits geladen wurde - ist völlig normal (hängt auch davon ab, welche shell man gerade verwendet).

Wo du dir eher sorgen machen musst, ist der LoadError. Das sagt mir, dass er die Clientbibliothek nicht findet.
Setze den mal auf "C:/Users/<username>/Desktop/opnsense_client_lib_master/opnsense" und probiers damit noch mal.

Mit freundlichen Grüßen

Fabian
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on December 01, 2016, 10:16:54 AM
Hey Fabian,

danke erst einmal das du mich noch nich aufgegeben hast :P
Folgendes. Ich hatte bereits "C:\Users\<username>\Desktop\OPNsense_client_lib_master\opnsense\" als Pfad angegeben. Wenn ich am Ende das "\" weg mache, ändert sich nichts. Was ich merkwürdig finde ist, dass er bei der Abfrage des Pfades immer nur "C:\Users\<username>\Desktop\OPNsense_client_lib_master" zu nutzen scheint, egal was ich vorher eingebe.

Deshalb hatte ich jetzt noch versucht im "client.rb" folgende Zeile zu ändern:
______________

$path = File.dirname(File.expand_path(__FILE__))

ConfigurationFile = $path + "/configuration.yml"
$configuration = {"opnsense_lib"=>"C:\Users\<username>\Desktop\OPNsense_client_lib_master\opnsense", "browser"=>"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "base_url"=>"https://<Lan-IP>/api/", "api_credential_file"=>"C:\Users\<username>\Desktop\apikey\apikey.txt", "ca_file"=>"C:\Users\<username>\Desktop\Zertifikat\cert.crt"} 

______________
Dadurch konnte ich zu mindestens schon einmal den LoadError beseitigen.
Jetzt öffnet sich ein Fenster ohne Inhalt siehe Bild 2.

Schöne Grüße :)

EDIT: Meine Idee scheint doch nicht zu funktionieren. Wenn ich mit den festeingetragenen Werten das client.rb starte sagt er "SyntaxError" in client.rb:11

EDIT2: Okay also ich scheine das Hauptproblem gefunden zu haben. Und zwar, bin ich immer davon ausgegangen, dass ich die "\" nehmen muss, da ich ja Windows nutze. client.rb kann damit aber nix anfangen und ignoriert dieses Zeichen komplett. nehme ich "/" kann er zu mindestens schon mal den apikey nutzen, die baseurl verstehen und die library laden.
Das Problem ist jetzt eigentlich nur noch. Obwohl er alles zu verstehen weiß, öffnet er trotzdem jedes mal das Einstellungs-Fenster für die Pfade. Fehlerbild 3 und 4 sind die Ausgaben die er mir in der Konsole gegeben hatte. :-/
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on December 01, 2016, 03:18:43 PM
führe mal require_relative direkt aus - also ohne den block zwischen if und dem letzten end auf dem screenshot. Ich bin mir sicher, dass hier aus irgendeinem grund der tab nicht initialisiert werden kann (würde mal vermuten, dass die verbindung nicht klappt)
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on December 01, 2016, 04:23:14 PM
Hey Fabian,

scheint noch nicht zu klappen. :( Bild wieder im Anhang.
Das Ende von client.rb sieht nun so aus nach dem Auskommentieren:
______________

[...]
$tab_pane.add_change_listener do |x|
  idx = x.get_source.get_selected_index
  window.size = $windowsizes[idx]
end

=begin
##########################################################
if $configuration['opnsense_lib'].length > 0
begin
 
rescue
end
end
=end

require_relative './modules/voucher'
require_relative './modules/options'

##########################################################

# finally show the window
window.add $tab_pane
window.visible = true
________________________

Ich hatte aus './modules/voucher' mal noch das .rb rangehangen zum Test aber das klappte auch nicht. :(

Schöne Grüße
Oxy
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: DokuKäfer on December 01, 2016, 05:47:24 PM
Hallo zusammen,

so kann den Oxy jetzt nicht mehr alleine lassen  ;D und hab es nochmals bei mir getestet. Ich musste auch nochmals kämpfen. Aber mit dem Chatverlauf von Fabian aus FB hab ich es wieder ans laufen bekommen.  ;)

Ich verwendete damals mit Fabian kein cert-File, da es hier bei mir Probleme gab.

Meine configuration.yml sieht folgendermaßen aus:

---
opnsense_lib: G:\OPNsense\OPNsense_client_lib-master\opnsense
browser: C:\Program Files\Mozilla Firefox\firefox.exe
base_url: http://192.168.2.10/api/
api_credential_file: G:\OPNsense\OPNsense-client-library-sample-master\apikey.txt
ca_file: ''


Wenn ohne cer-File, dann bei bei "base_url:" kein https verwenden.

Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on December 02, 2016, 08:54:19 AM
Hallo ihr beiden,

ihr werdet es kaum glauben, aber es hat tatsächlich an dem cert File gelegen. Als ich den Webconfigurator Zugriff auf http umstellte und die configuration.yml ohne HTTPS umschrieb funktionierte es sofort. Unglaublich....  8) ;D
Ich weiß grad nich ob ich vor Freude Luftsprünge machen soll oder ob ich verzweifeln soll, weil ich jetzt noch raus finden muss wie ich das ganze als pdf anstatt html und über HTTPS umsetzen kann.  ;D

Ich glaube jetzt freue ich mich aber erst einmal ne Runde und dann gehts weiter :P

Nichtsdestotrotz, VIELEN DANK für das vorzeitige Weihnachtsgeschenk! :P

Schöne Grüße euer
Oxy
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: DokuKäfer on December 02, 2016, 11:17:41 AM
Super, freut mich das es funktioniert.  :)

Wenn du das ganze per PDF als Ausgabe hin bekommst. Und dann noch mit einem schönen Template.
Daran wär ich auch interessiert! ;)
Mir fehlt hierfür leider gerade die Zeit um mich damit zu beschäftigen.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on December 02, 2016, 01:00:30 PM
Ja wenn ich da etwas hin bekomme, hätte ich euch eh bescheid gegeben. Solange wie ich aber den Zugriff über HTTPS nich hin bekomme, brauch ich mich nich um en PDF Template kümmern.. :-/

Warum muss es eigentlich die .cer/.pem Datei der CA sein und nicht die Datei des ausgestellten Zertifikats für die Webseite?
Ich hatte jetzt mittlerweile auch mit der Konvertierung vom DER Format auf das PEM Format versucht, dass Zertifikatsproblem zu lösen, aber keine Chance. Wenn man nur wüsste, wie Fabian das geschafft hatte mit seiner CA :D

Ich hatte das Ganze jetzt nochmal mit dem self signed Zertifikat von der OPNsense probiert.
Diesem Default Zertifikat, was ja seine eigene CA ist. Hab meine Weboberfläche darauf umgestellt und dann versucht client.rb mit dem .cer wie auch als .pem zu starten aber keine Chance. Funktionierte auch nicht. :-/
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: fabian on December 02, 2016, 03:41:42 PM
Bei mir Läuft eine interne CA, welche das Zertifikat für die Webkonfiguration ausgestellt hat. Ich verwende das öffentliche CA-Zertifikat für den Client.
Title: Re: Voucherdruck als PDF / Captive Portal Port
Post by: Oxygen61 on December 12, 2016, 10:36:32 AM
Hey Leute,

ich hab mich nochmal ordentlich hinter gesetzt und siehe da HTTPS funktioniert jetzt auch.  8)
Für alle die es vielleicht interessiert. Mein Fehler war, dass ich zum umkonvertieren der public Key .DER Datei Windoof mit openSSL-Win64 benutzt hatte und er mir zwar die Konvertierung immer durchführte aber "anscheinend nicht richtig".

Worauf man also achten muss:
1.) Internal-ca erstellen bei OPNsense (Create Internal Certificate Authority)
2.) Internes Zertifikat erstellen (Create Internal Certificate), (Type: Server Certificate), welches von der internal-ca unterschrieben wird.
3.) Webkonfigurations-Zertifikat mit dem Zertifikat ersetzen, welches man gerade erstellt hatte.
4.) Über den Internet Explorer  oben links auf das Schloss-Symbol klicken > Details > View Certificate > Zertifizierungspfad > internal-ca öffnen und in Datei kopieren. > Public-Key/Öffentliches Zertifikat "DER-codiert-binär (.CER)" exportieren.
5.) Jetzt der Knackpunkt: Noch funktioniert es nicht, daher mithilfe von Unix (OpenSSL) oder "https://www.sslshopper.com/ssl-converter.html" dieses Zertifikat auf ein .PEM umwandeln und als .crt abspeichern.
6.) Client.rb Konfig ändern auf die .crt Datei.
7.) Starten > aufstehen Kaffee holen, denn "Cool Guys Don't Look At Explosions"  8) 8)  ;)