Autor: Alan d Moore (http://www.alandmoore.com, E-Mail me_at_alandmoore_dot_com)
Mitwirkende:
Admbrowser ist ein Browser speziell für die Verwendung in Webkiosken. Es basiert auf PYQT5 und QTWEBengine (Chrom/Blink) und ist so konzipiert, dass sie Lock-Down sehr einfach und schmerzlos machen.
Es wurde ursprünglich für die Verwendung in Bibliothekskatalogterminals konzipiert, als klar wurde, dass Browser mit immer wachsenden Merkmalslisten wie Firefox und Chrome zu viel Arbeit waren, um es richtig und vollständig abzuschließen. Es wurde auch so konzipiert, dass es mit einer einfachen Textdatei leicht konfigurierbar ist, die in einem Terminal über SSH über einen langsamen WAN handgearbeitet werden kann, sodass hier keine Datenbanken, XML oder verrückte Binärdateien.
Admbrowser ist eine Gabel von WCGBrowser mit diesen wichtigen Unterschieden:
Viele Merkmale, die sich in WCGBrowser befanden, sind einfach gebrochen oder sind nicht verfügbar, weil Qtwebgine die Dinge anders macht als qtwebkit.
Es sollte auf jeder Plattform funktionieren, aber es wurde erst auf Arch Linux, Debian und Ubuntu getestet.
Die mitgelieferte Datei admbrowser.yaml zeigt eine dokumentierte Beispielkonfiguration an. Um es zu verwenden, kopieren Sie es auf /etc/admbrowser.yaml, ~/.admbrowser.yaml oder geben Sie es mit dem Switch -c (-Config-File) an. Sie können die ausführbare Datei admbrowser.py machen oder mit Python wie folgt starten:
Python admbrowser.py
Zumindest müssen Sie eine start_url entweder mit der Konfigurationsdatei oder im Switch -l angeben, oder der Browser wird nicht sehr verwendet. Die erweiterte Konfiguration erfolgt wahrscheinlich am besten in der Konfigurationsdatei, aber viele grundlegende Funktionen können in der Befehlszeile mit diesen Switches aktiviert oder deaktiviert werden:
| Schalten | Beschreibung |
|---|---|
| -Debug_log | Senden Sie die Debugging -Ausgabe an die angegebene Datei |
| --Größe | Stellen Sie die anfängliche Fenstergröße als "<breite> x <höhe>" (z. B. "800x600"), "max" für maximierte oder "voll" für Vollbildschirm ein. |
| --Proxy_Server | Legen Sie den Proxy -Server -Host und den Port in Form <Host>: <Port> fest |
| -C, -Config-Datei | Geben Sie eine zu verwendende Konfigurationsdatei an |
| -d, - -debug | Bieten Sie Debugging -Output für STDOut an |
| -e, --allow_external | Lassen Sie den Browser den Inhalt in externen Programmen über den MIME -Typ öffnen |
| -g, --allow_plugins | Ermöglichen Sie die Verwendung von Plugins wie Blitz, Java usw. |
| -h, -Help | Zeigen Sie schnelle Hilfe bei der Befehlszeilensyntax |
| -i, --icon-theme | Das zu verwendende Symbolthema. Sie müssen diese Themen selbst installieren |
| -l, --url | Der "Startort" für den Browser. Dies ist die anfängliche URL, die sie lädt und wo sie beim Zurücksetzen zurückkehrt. |
| -n, --No-Navigation | Schalten Sie das Navigationspanel aus (zurück, vorwärts, zu Hause, Verknüpfungen usw.). |
| -p, -popups | Aktivieren Sie die Erstellung neuer Fenster, wenn ein Link geklickt wird, der in einem neuen Fenster geöffnet wird, oder JavaScript versucht, ein Fenster zu öffnen |
| -t, -Zeitout | Die Zeitüberschreitung für den Inaktivitätsmonitor. Nach vielen Sekunden Inaktivität setzen Sie den Browser zurück |
| -U, --user | Legen Sie den Standardbenutzernamen fest, der gesendet werden soll, wenn eine Site Authentifizierung anfordert |
| -W, -password | Setzen Sie das zugesandte Standardkennwort, wenn eine Site Authentifizierung anfordert |
| -Z, --zoom | Der Standard -Zoomfaktor für den Inhalt. 0 ignoriert das. 1 ist Standard, 2 wäre eine doppelte Größe, 0,5 wäre eine halbe Größe usw. |
Admbrowser akzeptiert auch die integrierten QT-Befehlszeilenargumente, die einige Überschüsse auf niedriger Ebene liefern. Die Dokumentation dieser Switches finden Sie unter https://doc.qt.io/qt-5/qapplication.html#qapplication.
Die Beispielkonfigurationsdatei ist vollständig kommentiert und sollte ziemlich einfach zu konfigurieren sein, wenn Sie sie gerade durchlesen. Falls Sie nur von vorne anfangen möchten, finden Sie hier die aktuellen Konfigurationsoptionen für die Anwendung.
| Optionsname | Standardwert | Erläuterung |
|---|---|---|
| ALLGESTELLTE_EXTERNAL_CONTENT | FALSCH | Unabhängig davon, ob nicht-HTML-Inhalte, z. B. PDF-Dateien, z. B. PDF-Dateien. Wenn dies zutrifft, müssen Sie einen Inhaltsbehandlungshandler für den MIME -Typ oder einen 404 -Fehler, "Netzwerkfehler" oder leere Seite wahrscheinlich an den Benutzer angeben. |
| erlaubte_plugins | FALSCH | Wenn wahr, ermöglicht die Verwendung von Plugins wie Flash, Java usw. usw. |
| ALLGESTELLTE_POPUPS | FALSCH | Ob Sie eine Navigation zulassen oder nicht, bei der ein neues Browserfenster geöffnet werden muss, z. Wenn falsch, wird die Navigation ignoriert. Wenn wahr, wird wie erwartet ein neues Fenster erstellt. |
| Force_JS_Confirm | "fragen" | Wenn Sie auf "Akzeptieren" oder "verweigern" festgelegt, überschreiben Sie jedes JavaScript-Dialogfeld "you-sure-you-want to-exit |
| Suppress_Alerts | FALSCH | Wenn es zutrifft, blockiert JavaScript -Popup -Warnungen vor dem Erscheinen oder zeigt sie, wenn sie falsch sind. |
| ALLGESTELLT | FALSCH | Aktivieren Sie das Drucken von Webseiten aus dem Kontextmenü oder der Symbolleiste. |
| print_setings | (leer) | Geben Sie die Standarddruckereinstellungen an, siehe unten. |
| default_password | (leer) | Standardkennwort zum Senden, wenn Seiten Authentifizierung anfordern |
| default_user | (leer) | Standard -Benutzername zum Senden, wenn Seiten Authentifizierung anfordern |
| icon_theme | (qt5 Standard) | Icon -Thema für Navigationssymbole verwendet |
| Navigation | WAHR | Zeigen Sie die Navigationsleiste oben an (zurück/vorwärts/reload/bookmarks/beenden). |
| navigation_layout | (siehe unten) | Legt das Layout der Navigationsleiste fest. Siehe die detaillierte Erklärung unten. |
| network_down_html | (leer) | Der vollständige Pfad zu einer Datei mit HTML, die angezeigt wird, wenn die Seite start_url nicht geladen werden kann, was wahrscheinlich auf eine Art Netzwerkfehler hinweist. |
| page_unavailable_html | (leer) | Momentan_broken der vollständige Pfad zu einer Datei mit HTML, die angezeigt wird, wenn eine Seite nicht geladen werden kann, da sie nicht durch Sicherheitsbeschränkungen zugänglich oder blockiert ist. |
| Privacy_Mode | WAHR | Aktivieren oder deaktivieren Sie den privaten Browsermodus |
| user_agent | (qt5 Standard) | Überschreibt die Standard -Benutzeragentenzeichenfolge. |
| Proxy_Server | (leer) | Legt die Proxy -Server -Zeichenfolge für HTTP -Proxy fest. Nimmt den Formular Host: Port oder Host an, wenn Sie den Standardport von 8080 verwenden möchten. |
| quit_button_mode | zurücksetzen | Genau wie Timeout_Mode ist dies nur die Aktion, die beim Drücken der Kündigungsstaste ausgeführt wird (gleiche Optionen) |
| Quit_button_text | "Ich bin & fertig" | Text zum Anzeigen auf der Schaltfläche Beenden/Reset. Kann einen Beschleunigungsindikator (&) enthalten. |
| Bildschirmschoner_url | Über: leer | Die URL zu besuchen im Leerlauf. Nur wenn Timeout_Mode "Bildschirmschoner" und "Timeout" ist, ist ungleich Null. |
| SSL_MODE | strikt | Definiert, wie der Browser SSL -Zertifikatfehler umgeht. "Strict" liefert nur einen Fehler und verhindert den Zugriff auf die problematische URL. "Ignorore" ignoriert die Fehler still und ermöglicht den Zugriff. |
| start_url | Über: leer | Die Start -URL |
| Stylesheet | (leer) | Dateiname eines QSS-Format-Stylesheets zum Styling des Anwendungsfensters. Siehe Beispieldatei. |
| Time-out | 0 | Anzahl der Sekunden der Inaktivität, bevor der Browser sich schließt oder zurücksetzt. Ein Wert von 0 deaktiviert die Funktion. |
| timeout_mode | zurücksetzen | Die Aktion, die zum Zeitpunkt der Inaktivität ausgeführt wurde. Die Werte können "zurücksetzen" (zur Rückkehr zur Start -URL und zur klaren Geschichte), "Schließen" (um das Programm zu schließen) oder "Screensaver" (um die ScreenSaver_url im Leerlauf anzuzeigen) |
| Whitelist | (leer) | Eine Liste von Webdomänen oder Hosts, um den Zugriff auf (siehe unten) zu ermöglichen. |
| window_icon | (leer) | Der vollständige Pfad der Icon -Datei, die vom Fenstermanager angezeigt wird. |
| window_size | "Max" | Machen Sie das Fenster standardmäßig zu dieser Größe. Kann <breiten> x <höhe> (z. B. "800x600"), "max" für maximierte oder "voll" für Vollbildmodus sein. |
| window_title | "Browser" | Ein benutzerdefinierter Fenstertitel, der vom Fenstermanager angezeigt wird. |
| ZOOM_FACTOR | 1.0 | Die Menge an Zoom wird auf Seiten angewendet. .5 ist halb Größe, 2.0 ist doppelte Größe usw. |
Lesezeichen werden in einer YAML -Liste mit dem Titel "Lesezeichen" mit diesem Format erstellt:
Lesezeichen:
1:
Name: "Lesezeichenname"
URL: "http: //bookmark.url/"
Beschreibung: "Eine kurze Beschreibung des Lesezeichens für den Tooltip"
2:
Name: "Ein anderer Lesezeichenname":
URL: "http://example.com/some_bookmark"
Beschreibung: "Eine kurze Beschreibung dieses Lesezeichens"
Lesezeichennamen können einen Verstärker und einen Gaspedal -Schlüssel angeben. Sie können auch Lesezeichen -Einträge wie SO angeben:
Lesezeichen:
"Lesezeichenname":
URL: "http: //bookmark.url/"
Beschreibung: "Eine kurze Beschreibung des Lesezeichens für den Tooltip"
Dies ist kompakter, aber der Nachteil ist, dass Sie keine Kontrolle über die Reihenfolge der Lesezeichen haben (sie werden von Schlüssel bestellt, sodass es mit Namen alphabetisch ist). Dieser Modus dient wirklich für die Rückwärtskompatibilität, aber wenn Sie viele Lesezeichen haben, die Sie alphabetisiert haben und etwas Tippen speichern möchten, ist dies möglicherweise der richtige Weg.
Wenn Sie zulassen, dass externe Inhalte gestartet werden, können Sie mit dem Array "content_handlers" angeben, in welchen Programmen der externe Inhalt nach MIME -Typ geöffnet wird. Die Syntax sieht so aus:
content_handllers: "Anwendung/PDF": "XPDF" "application/vnd.oasis.opendocument.text": "libreoffice"
Admbrowser wird die Datei in ein TEMP -Verzeichnis herunterladen und als Argument für den Befehl übergeben, den Sie in der zweiten Spalte angeben. Beachten Sie dies, da Sie in einigen Fällen möglicherweise ein Wrapper -Skript in irgendeiner Art schreiben möchten, um mit einigen Arten von Dateien oder Programmen umzugehen, die sich nicht ordnungsgemäß mit Argumenten befassen.
Der Parameter "navigation_layout" ist eine Liste von Elementen, die in der Navigationsleiste aufgestellt werden sollen, wenn er angezeigt wird. Sie können aus folgenden wählen:
Die Liste kann in jedem gültigen YAML -Listenformat angegeben werden. Ich empfehle jedoch, sie in quadratischen Klammern einzuschließen und sich mit Kommas zu trennen. "Separator" und "Spacer" können so oft verwendet werden, wie Sie möchten, die anderen sollten jeweils nur einmal verwendet werden.
Die Whitelist -Funktion wird als Komfort hinzugefügt, um Ihren Kiosk zu sperren, wenn Sie nicht die vollständige Kontrolle über alle Links auf Ihren Kioskseiten haben und verhindern möchten, dass Benutzer auf seltsame Websites gehen. Es ist kein Firewall- oder Inhaltsfilter und verhalten sich möglicherweise nicht genau, wie Sie es erwarten. Wenn Sie also planen, es zu verwenden, lesen Sie bitte ein wenig darüber, was es tut und was es nicht tut.
Wenn Sie die Whitelist -Funktion nicht verwenden möchten, kommentieren Sie sie einfach aus, lassen Sie die Liste leer oder geben Sie ihr einen Wert von "Falsch".
Sie geben der Whitelist eine Liste von Domänen oder Hosts wie folgt:
Whitelist: ["irgendwo.example.com", "SONDER-LOCAL-HOST", "mydomain.org"]
Immer wenn der Benutzer auf einen Link klickt oder auf andere Weise versucht, zu einer Seite zu navigieren, wird der Hostname aus der angeforderten URL extrahiert und gegen die Whitelist übereinstimmt. Wenn es eine Übereinstimmung gibt, wird die Seite angezeigt. Wenn nicht, wird der Fehlertext angezeigt.
Einige Dinge sind automatisch:
Wenn Sie nur die Whitelist die URLs start_url und ein Lesezeichen und nichts anderes möchten, können Sie dies einfach in der Konfigurationsdatei tun:
Whitelist: wahr
Wenn man sich auf das automatische Whitelisting verlassen, ist es wichtig zu verstehen, dass die vollständige Host -Zeichenfolge dieser URLs auf Whitelist ist. Wenn Ihr start_url beispielsweise "http://example.com" ist, wird "example.com" zum Whitelist hinzugefügt (und somit alle Subdomains von Beispiel.com, wie z. B. foo.example.com, bar.example.com usw.). Wenn Sie jedoch "http://www.example.com" als start_url angeben, wird "www.example.com" zur Whitelist hinzugefügt. So würde "foo.example.com" nicht whitelistiert.
Beachten Sie außerdem, dass Sie beide Hosts im Whitelisten angeben müssen, wenn Sie eine URL, die Sie nur an einen anderen Host weiterleitet, angeben müssen.
Der Bildschirmschoner -Modus ist ein spezieller Zeitüberschreitungsmodus, mit dem Sie eine bestimmte URL nur anweisen können, wenn der Browser im Leerlauf ist. Betrachten Sie eine solche Konfiguration:
start_url: 'http://example.com/kiosk' ' Auszeit: 1800 Timeout_Mode: 'Bildschirmschoner' screenSaver_url: 'http://example.com/slides' '
Diese Konfiguration würde Folgendes ausführen:
Das Bildschirmschoner -Abschluss kann beispielsweise eine Bildrotatorin, eine Seite mit Anzeigen, eine Begrüßungsnachricht usw. sein. Es spielt keine Rolle, aber bedenken Sie, dass der Benutzer nicht tatsächlich mit der Bildschirmschoner -Seite interagieren kann, denn sobald sie eine Maus oder eine Tastatur berühren, wird der Start_url geladen.
Mit AdMbrowser können Sie einen Host (Name oder IP) und eine Portnummer für einen HTTP -Proxy festlegen. HTTPS, FTP, Socken oder authentifizierte Proxy werden derzeit nicht unterstützt. Sie können die Proxy -Einstellungen auf drei Möglichkeiten festlegen:
Verwenden Sie zum Festlegen des Proxy -Servers den Format Host: Port, wie in diesen Beispielen:
proxyserver.mynetwork.local: 3128 Localhost: 8080 192.168.1.1:8880
Wenn Sie es vernachlässigen, einen Port einzuschließen und einfach eine IP -Adresse oder einen Hostnamen anzugeben, wird der Port 8080 standardmäßig verwendet.
Beachten Sie, dass diese Funktion möglicherweise nicht auf einem Betriebssystem funktioniert. Derzeit basiert es auf der Einstellung der Umgebungsvariablen http_proxy (unabhängig davon, welche Methode Sie zum Konfigurieren verwenden), die möglicherweise nicht auf allen Systemen respektiert werden. Es funktioniert definitiv unter Linux und wahrscheinlich auf jedem Unix-ähnlichen System.
Admbrowser unterstützt die Konfiguration der Standarddruckereinstellungen und ermöglicht das Drucken, ohne ein Dialogfeld anzuzeigen. Die Optionen werden mit der Variablen print_setings gesetzt. Zum Beispiel:
print_setings:
still: wahr
Ränder: [5, 5, 3, 3]
Orientierung: "Landschaft"
Die folgenden Optionen werden unterstützt:
| Optionsname | Standardwert | Erläuterung |
|---|---|---|
| still | FALSCH | Wenn admbrowser stimmt, wird sofort gedruckt, ohne das Dialogfeld "Druck" anzuzeigen. |
| Orientierung | "Porträt" | Gibt das Drucken in Porträt- oder Landschaftsorientierung an. |
| size_unit | "Millimeter" | Gibt an, welche Maßeinheit von den Variablen paper_size und Rand verwendet wird. Kann "Millimeter", "Punkt", "Zoll", "Pica", "Didot", "Cicero" oder "DevicePixel" sein. |
| Ränder | (Drucker Standard) | Gibt die Druckermargen als Liste im Formular an: [links, oben, rechts, unten]. Beispiel: [5, 3,5, 6, 2,4]. Einheiten werden durch die Variable size_unit angegeben. |
| paper_size | (Drucker Standard) | Gibt die Papiergröße als Liste im Formular an: [Breite, Höhe]. Beispiel: [500, 650.5]. Einheiten werden durch die Variable size_unit angegeben. |
| Auflösung | (Drucker Standard) | Gibt die Auflösung des Druckers in PPI (Pixel pro Zoll) an. |
| Modus | "Bildschirm" | Legt fest |
Die folgenden Einschränkungen sind bekannt:
Die folgenden Ausgaben zeigten sich mit dem Port von Qtwebkit nach Qtwebgine:
Wenn Sie Fehler finden, melden Sie sie bitte als "Problem" auf der Github -Seite des Projekts: http://github.com/alandmoore/admbrowser/issues. Wenn Ihr "Fehler" wirklich eine Funktionsanforderung ist, siehe unten.
Admbrowser kann theoretisch an einem Himbeer -Pi arbeiten, aber nicht an Raspbian 10 . Admbrowser verlangt Qtwebgine, das (ab Januar 2020) nicht für Raspbian 10 verpackt ist.
Um Admbrowser zu verwenden, müssen Sie eine Distribution verwenden, die eine funktionierende Version von Qtwebgine bietet. Ab Januar 2020 wurden verschiedene Lösungen mit den folgenden Ergebnissen getestet (getestet auf PI 3B+):
| Distribution | Bogen | Funktioniert? | Erläuterung |
|---|---|---|---|
| OpenSuse Sprung 15.1 | ARM64 | Ja | Scheint fehlerfrei zu funktionieren, wenn auch etwas langsam. |
| Ubuntu Mate 20.04 Alpha | Armhf | Ja | Scheint fehlerfrei, aber sehr langsam zu funktionieren. Langsamer als opensuse. |
| Ubuntu Mate 18.04 | Armhf | Fast | Starten, aber Segfaults beim Laden von Seiten oft. |
| Ubuntu Server 19.10 | ARM64 | NEIN | PYQT -Skripte Segfault zum Erstellen von Qapplication Wenn QtwebgineWidgets importiert wird. |
| Fedberry 27 | ARMV7 | NEIN | SEGV_MAPERR, wenn Sie versuchen, Qwebengineview anzuzeigen |
In Ausgabe 16 finden Sie laufende Diskussionen über die Unterstützung von Raspberry PI.
Beiträge sind willkommen, solange sie mit dem Geist und der Absicht des Browsers übereinstimmen-das heißt, sie sind Funktionen für einen Kiosk, eine Beschilderung oder eine andere Lock-Down-Situation und halten den Browser einfach zu konfigurieren. Ich würde es auch bevorzugen, dass Änderungen an Funktionen oder Verhaltensweisen angemeldet sind (erfordern einen Schalter, um sie zu aktivieren), es sei denn, es macht keinen Sinn, dies so zu tun.
Wenn Sie Code beitragen, befolgen Sie bitte die folgenden Practices:
Wenn es Funktionen gibt, die Sie in diesem Projekt unterstützt sehen möchten, haben Sie drei Optionen, um sie implementiert zu sehen:
Admbrowser wird unter den Bestimmungen der GNU GPL V3 veröffentlicht.