Auteur: Alan D Moore (http://www.alandmoore.com, e-mail me_at_alandmoore_dot_com)
Contributeurs:
Admbrowser est un navigateur spécifiquement pour une utilisation sur les kiosques Web. Il est basé sur PYQT5 et QTWEBENGINE (Chromium / Blink), et est conçu pour rendre le verrouillage très simple et indolore.
Il a été conçu à l'origine pour être utilisé dans les terminaux du catalogue de bibliothèque, lorsqu'il est devenu clair que les navigateurs avec des listes de fonctionnalités en constante augmentation comme Firefox et Chrome étaient trop de travail à verrouiller correctement et complètement. Il a également été conçu pour être facilement configurable à l'aide d'un fichier texte simple qui peut être édité à la main dans un terminal sur SSH à travers un WAN lent, donc pas de bases de données, de XML ou de binaires fous ici.
Admbrowser est une fourche de WCGBrowser, avec ces principales différences:
De nombreuses fonctionnalités qui étaient dans WCGBrowser sont cassées ou indisponibles simplement parce que QtwebEgine fait les choses différemment de Qtwebkit.
Il devrait fonctionner sur n'importe quelle plate-forme, mais il n'a été testé que sur Arch Linux, Debian et Ubuntu.
Le fichier Admbrowser.yaml inclus affiche un exemple de configuration documentée. Pour l'utiliser, copiez-le sur /etc/admbrowser.yaml, ~ / .admbrowser.yaml, ou spécifiez-le avec le commutateur -c (--Config-file). Vous pouvez fabriquer l'exécutable Admbrowser.py ou le lancer à l'aide de Python, comme ainsi:
python addbrowser.py
Au minimum, vous devez spécifier un start_url à l'aide du fichier de configuration ou du commutateur -l, sinon le navigateur n'est pas très utilisé. La configuration avancée est probablement mieux effectuée dans le fichier de configuration, mais de nombreuses fonctionnalités de base peuvent être activées ou désactivées sur la ligne de commande à l'aide de ces commutateurs:
| Changer | Description |
|---|---|
| --debug_log | Envoyer une sortie de débogage dans le fichier spécifié |
| --taille | Définissez la taille initiale de la fenêtre comme "<largeur> x <Hight>" (par exemple "800x600"), "max" pour maximisé ou "complet" pour l'écran complet. |
| --Proxy_Server | Définissez l'hôte et le port du serveur proxy, sous le formulaire <host>: <port> |
| -C, --Config-file | Spécifiez un fichier de configuration à utiliser |
| -d, - debug | Fournir une sortie de débogage à STDOUT |
| -e, --allow_external | Permettez au navigateur d'ouvrir du contenu dans des programmes externes via le type MIME |
| -g, --allow_plugins | Autorisez l'utilisation de plugins comme Flash, Java, etc. |
| -H, - help | Afficher une aide rapide sur la syntaxe des lignes de commande |
| -i, --icon-thème | Le thème de l'icône à utiliser. Vous devrez installer ces thèmes vous-même |
| -l, --url | «Emplacement de démarrage» pour le navigateur. Il s'agit de l'URL initiale qu'il chargera et où il reviendra lors de la réinitialisation. |
| -n, --no-navigation | Éteignez le panneau de navigation (dos, avant, maison, raccourcis, etc.). |
| -P, --Popups | Activez la création de nouvelles fenêtres lorsqu'un lien est cliqué qui s'ouvre dans une nouvelle fenêtre, ou JavaScript essaie d'ouvrir une fenêtre |
| -T, - Timeout | Le délai d'expiration du moniteur d'inactivité. Après ces nombreuses secondes d'inactivité, réinitialisez le navigateur |
| -U, --User | Définissez le nom d'utilisateur par défaut à envoyer lorsqu'un site demande l'authentification |
| -W, --word-passe | Définissez le mot de passe par défaut à envoyer lorsqu'un site demande l'authentification |
| -Z, --zoom | Le facteur de zoom par défaut pour le contenu. 0 ignore cela. 1 est par défaut, 2 serait double, 0,5 serait une demi-taille, etc. |
Admbrowser accepte également les arguments de ligne de commande QT intégrés, qui fournissent des remplacements de bas niveau. La documentation de ces commutateurs peut être trouvée sur https://doc.qt.io/qt-5/qapplication.html#qapplication.
L'exemple de fichier de configuration est entièrement commenté et devrait être assez facile à configurer si vous le lisez. Dans le cas où vous souhaitez simplement commencer à zéro, voici les options de configuration actuelles disponibles pour l'application.
| Nom d'option | Valeur par défaut | Explication |
|---|---|---|
| allow_external_content | FAUX | Que ce soit ou non autoriser le contenu non-HTML, par exemple les fichiers PDF. Si cela est vrai, vous devez spécifier un gestionnaire de contenu pour le type MIME ou une erreur 404, "Erreur réseau", ou la page vierge sera probablement affichée à l'utilisateur. |
| allow_plugins | FAUX | Si vrai, permet l'utilisation de plugins comme Flash, Java, etc. |
| allow_popups | FAUX | Que ce soit ou non une navigation qui nécessite l'ouverture d'une nouvelle fenêtre de navigateur, telles que javascript window.open () appelle ou lie avec une cible de "_blank". Si faux, la navigation sera ignorée. Si c'est vrai, une nouvelle fenêtre sera créée comme prévu. |
| force_js_confirm | "demander" | Si défini sur "Accepter" ou "Deny", il remplacera toute boîte de dialogue JavaScript Are-You-You-want-to-Exit avec la réponse spécifiée, si elle est définie sur "demander" (la valeur par défaut) demandera à l'utilisateur à chaque fois. |
| Suppress_Alerts | FAUX | Si c'est vrai, bloque les alertes popup JavaScript de l'appartenance, ou les montre en cas de fausse. |
| Autorce_printing | FAUX | Activer l'impression des pages Web à partir du menu contextuel ou de la barre d'outils. |
| print_settings | (vide) | Spécifiez les paramètres de l'imprimante par défaut, voir ci-dessous. |
| default_password | (vide) | Mot de passe par défaut à envoyer lorsque les pages demandent l'authentification |
| default_user | (vide) | Nom d'utilisateur par défaut à envoyer lorsque les pages demandent l'authentification |
| icon_theme | (Qt5 par défaut) | Thème icône à utiliser pour les icônes de navigation |
| navigation | Vrai | Afficher la barre de navigation en haut (dos / avant / rechargement / signets / quit) |
| navigation_layout | (voir ci-dessous) | Définit la disposition de la barre de navigation. Voir l'explication détaillée ci-dessous. |
| réseau_down_html | (vide) | Actuellement_BROKER Le chemin complet vers un fichier contenant HTML qui sera affiché lorsque la page start_url ne peut pas être chargée, ce qui indique probablement une sorte d'erreur réseau. |
| page_unavailable_html | (vide) | Actuellement_BROKER Le chemin complet vers un fichier contenant HTML qui s'affiche lorsqu'une page ne peut pas être chargée, soit parce qu'elle n'est pas accessible ou bloquée par les restrictions de sécurité. |
| Privacy_Mode | Vrai | Activer ou désactiver le mode de navigation privé |
| user_agent | (Qt5 par défaut) | Remplace la chaîne d'agent utilisateur par défaut. |
| proxy_server | (vide) | Définit la chaîne de serveur proxy pour le proxy HTTP. Prend le formulaire Host: Port, ou simplement l'hôte si vous souhaitez utiliser le port par défaut de 8080. |
| QUIT_BUTTON_MODE | réinitialiser | Tout comme timeout_mode, seulement c'est l'action prise lorsque le bouton de quitte est enfoncé (mêmes options) |
| quit_button_text | "Je suis et fini" | Texte à afficher sur le bouton Quit / Réinitialiser. Peut inclure un indicateur d'accélérateur (&). |
| Économiseur d'écran_url | À propos: vide | L'URL à visiter quand elle est inactive. Seule compte lorsque Timeout_Mode est "Screensaver" et "Timeout" n'est pas zéro. |
| ssl_mode | strict | Définit comment le navigateur gère les erreurs de certificat SSL. "Strict" donnera simplement une erreur et empêchera l'accès à l'URL problématique. "ignorer" ignorera silencieusement les erreurs et permettra l'accès. |
| start_url | À propos: vide | L'URL de départ |
| feuille de style | (vide) | Nom de fichier d'une feuille de style QSS-Format à utiliser pour styliser la fenêtre d'application. Voir l'exemple de fichier. |
| temps mort | 0 | Nombre de secondes d'inactivité avant que le navigateur ne se ferme ou se réinitialise. Une valeur de 0 désactive la fonctionnalité. |
| timeout_mode | réinitialiser | L'action a été effectuée sur le délai d'inactivité. Les valeurs peuvent être "réinitialisées" (pour revenir à l'URL de démarrage et à l'historique clair), "fermer" (pour fermer le programme), ou "Écran" (pour afficher l'économiseur d'écran_URL à inactif) |
| liste blanche | (vide) | Une liste de domaines Web ou hôtes pour permettre l'accès à (voir ci-dessous). |
| window_icon | (vide) | Le chemin complet du fichier icône à afficher par le gestionnaire de fenêtres. |
| window_size | "Max" | Faire par défaut la fenêtre à cette taille. Peut être <s largeur> x <hauteur> (par exemple "800x600"), "max" pour maximisé ou "complet" pour l'écran complet. |
| fenêtre | "Navigateur" | Un titre de fenêtre personnalisé à afficher par le gestionnaire de fenêtres. |
| zoom_factor | 1.0 | La quantité de zoom s'appliquait aux pages. .5 est une demi-taille, 2,0 est une double taille, etc. |
Les signets sont créés dans une liste YAML intitulée "Bookmarks" avec ce format:
Bookmarks:
1:
Nom: "Nom de signet"
URL: "http: //bookmark.url/"
Description: "Une brève description du signet, pour l'info-bulle"
2:
Nom: "Un autre nom de signet":
URL: "http://example.com/some_bookmark"
Description: "Une brève description de ce signet"
Les noms de signets peuvent inclure un AmperSand pour spécifier une clé d'accélérateur. Vous pouvez également spécifier des entrées de signets comme tel:
Bookmarks:
"Nom des signets":
URL: "http: //bookmark.url/"
Description: "Une brève description du signet, pour l'info-bulle"
C'est plus compact, mais l'inconvénient est que vous n'avez aucun contrôle sur l'ordre des signets (ils sont commandés par Key, donc il sera alphabétique par son nom). Ce mode est vraiment destiné à la compatibilité en arrière, mais si vous avez beaucoup de signets que vous voulez alphabétisé et que vous souhaitez enregistrer un certain typage, c'est peut-être la voie à suivre.
Si vous autorisez le lancement de contenu externe, le tableau "Content_Handlers" vous permet de spécifier dans quels programmes le contenu externe s'ouvrira par type MIME. La syntaxe ressemble à ceci:
content_handlers: "application / pdf": "xpdf" "application / vnd.oasis.openductument.text": "libreOffice"
Admbrowser téléchargera le fichier dans un répertoire temporaire et le passera comme argument à la commande que vous spécifiez dans la deuxième colonne. Soyez conscient de cela, comme dans certains cas, vous voudrez peut-être écrire un script en wrapper d'une sorte pour gérer certains types de fichiers ou de programmes qui ne traitent pas correctement les arguments.
Le paramètre "Navigation_layout" est une liste d'éléments à placer sur la barre de navigation, s'il s'affiche. Vous pouvez choisir parmi les éléments suivants:
La liste peut être spécifiée dans n'importe quel format de liste YAML valide, mais je recommande de les enfermer en accolades carrées et de séparer avec des virgules. "séparateur" et "espaceur" peuvent être utilisés autant de fois que vous le souhaitez, les autres ne doivent être utilisés qu'une seule fois.
La fonction de liste blanche est ajoutée comme commodité pour aider à verrouiller votre kiosque lorsque vous n'avez pas de contrôle complet sur tous les liens de vos pages de kiosque et que vous souhaitez empêcher les utilisateurs de partir à des sites étranges. Ce n'est pas un pare-feu ou un filtre de contenu, et peut ne pas comporter exactement comment vous vous y attendez; Donc, si vous prévoyez de l'utiliser, veuillez lire un peu ce qu'il fait et ce qu'il ne fait pas.
Si vous ne souhaitez pas utiliser la fonction de liste blanche, commentez-le, laissez la liste vide ou donnez-lui une valeur de "faux".
Vous donnez à la liste blanche une liste de domaines ou hôtes , comme ceci:
Liste blanche: [«Somethost.example.com», «Some-Local-Host», «Mydomain.org»]
Chaque fois que l'utilisateur clique sur un lien ou essaie autrement de naviguer vers une page, le nom d'hôte est extrait de l'URL demandé et correspondant à la liste blanche. S'il y a une correspondance, la page s'affiche; Sinon, le texte d'erreur est affiché.
Certaines choses sont automatiques:
Si vous voulez juste la liste blanche des URL start_url et mettant en signet et rien d'autre, vous pouvez simplement le faire dans le fichier de configuration:
liste blanche: vrai
Lorsque vous composez sur la liste blanche automatique, il est important de comprendre que la chaîne hôte complète de ces URL est la liste blanche. Ainsi, par exemple, si votre start_url est "http://example.com", "example.com" sera ajouté à la liste blanche (et donc à tous les sous-domaines d'exemple.com, telles que foo.example.com, bar.example.com, etc.). Si vous spécifiez "http://www.example.com" en tant que start_url, "www.example.com" est ajouté à la liste blanche. Ainsi, "foo.example.com" ne serait pas sur la liste blanche.
Notez également que si vous avez la liste blanche une URL qui vous transmet simplement vers un autre hôte, vous devez spécifier les deux hôtes dans la liste blanche.
Le mode économiseur d'écran est un mode d'expiration spécial qui vous permet d'afficher une URL donnée uniquement pendant que le navigateur est inactif. Considérez une configuration comme ceci:
start_url: 'http://example.com/kiosk' Timeout: 1800 timeout_mode: ' Screensaver_url: 'http://example.com/slides'
Cette configuration ferait ce qui suit:
L'économiseur d'écran_url pourrait être, par exemple, un rotateur d'image, une page avec des annonces, un message de bienvenue, etc. Cela n'a pas vraiment d'importance, mais gardez à l'esprit que l'utilisateur ne peut pas réellement interagir avec la page d'économiseur d'écran, car dès qu'ils touchent une souris ou un clavier, le start_url se chargera.
Admbrowser vous permettra de définir un hôte (nom ou IP) et le numéro de port pour un proxy HTTP. HTTPS, FTP, chaussettes ou proxy authentifié n'est pas actuellement pris en charge. Vous pouvez définir les paramètres de proxy de trois manières:
Pour définir le serveur proxy, utilisez le port de format: Port, comme dans ces exemples:
proxyserver.mynetwork.local: 3128 LocalHost: 8080 192.168.1.1:8880
Si vous négligez d'inclure un port et que vous placez simplement une adresse IP ou un nom d'hôte, le port 8080 sera utilisé par défaut.
Remarque Cette fonctionnalité peut ne pas fonctionner sur un système d'exploitation. Il s'appuie actuellement sur la définition de la variable d'environnement HTTP_PROXY (quelle que soit la méthode que vous utilisez pour la configurer), qui peut ne pas être respectée sur tous les systèmes. Il fonctionne définitivement sur Linux, et probablement sur n'importe quel système de type Unix.
Admbrowser prend en charge la configuration des paramètres de l'imprimante par défaut et permet d'imprimer sans afficher de boîte de dialogue. Les options sont définies avec la variable print_settings. Par exemple:
print_settings:
Silent: vrai
Marges: [5, 5, 3, 3]
orientation: "paysage"
Les options suivantes sont prises en charge:
| Nom d'option | Valeur par défaut | Explication |
|---|---|---|
| silencieux | FAUX | Lorsqu'il est vrai, Admbrowser imprimera immédiatement sans afficher la boîte de dialogue d'impression. |
| orientation | "portrait" | Spécifie l'impression dans l'orientation du portrait ou du paysage. |
| size_unit | "millimètre" | Spécifie l'unité de mesure utilisée par les variables Paper_Size et Marge. Peut être "millimètre", "point", "pouce", "pica", "didot", "cicéron" ou "devicePixel". |
| marges | (imprimante par défaut) | Spécifie les marges de l'imprimante comme une liste dans la forme: [gauche, haut, droite, bas]. Exemple: [5, 3,5, 6, 2.4]. Les unités sont spécifiées par la variable size_unit. |
| Paper_size | (imprimante par défaut) | Spécifie la taille du papier comme une liste dans la forme: [Largeur, hauteur]. Exemple: [500, 650,5]. Les unités sont spécifiées par la variable size_unit. |
| résolution | (imprimante par défaut) | Spécifie la résolution de l'imprimante dans PPI (pixels par pouce). |
| mode | "écran" | Définit la résolution que l'imprimante utilisera, "écran": la résolution de l'écran (la valeur par défaut) ou "High": la résolution maximale de l'imprimante |
Voici les limitations connues:
Les problèmes suivants se sont présentés avec le port de Qtwebkit à QtwebEgine:
Si vous trouvez des bogues, veuillez les signaler comme un "problème" sur la page GitHub du projet: http://github.com/alandmoore/admbrowser/issues. Si votre "bogue" est vraiment une demande de fonctionnalité, voir ci-dessous.
Admbrowser peut travailler sur un Raspberry Pi, en théorie, mais pas sur Raspbian 10 . Admbrowser a besoin de QtwebEgine, qui (à partir de janvier 2020) n'est pas emballé pour Raspbian 10.
Afin d'utiliser Admbrowser, vous devez utiliser une distribution qui fournit une version de travail de QTWebEgine. En janvier 2020, diverses solutions ont été testées avec les résultats suivants (testés sur PI 3B +):
| Distribuer | Cambre | Travaux? | Explication |
|---|---|---|---|
| OpenSUSE LEAP 15.1 | ARM64 | Oui | Semble fonctionner parfaitement, bien que quelque peu lent. |
| Ubuntu Mate 20.04 Alpha | armer | Oui | Semble fonctionner parfaitement, mais très lent. Plus lent qu'OpenSuse. |
| Ubuntu Mate 18.04 | armer | Presque | Lance, mais se sépare souvent tout en chargeant des pages. |
| Serveur Ubuntu 19.10 | ARM64 | Non | Les scripts PYQT segfault sur la création de Qapplication si qtwebEgineWidgets est importé. |
| Fedberry 27 | armv7 | Non | Segv_maperr lorsque vous essayez d'afficher QwebEngineView |
Voir le numéro 16 pour la discussion en cours sur le support Raspberry Pi.
Les contributions sont les bienvenues, tant qu'elles sont conformes à l'esprit et à l'intention du navigateur - c'est-à-dire qu'ils sont des caractéristiques utiles dans un kiosque, une signalisation ou une autre situation de verrouillage et garder le navigateur simple à configurer. Je préférerais également que les modifications des fonctionnalités ou du comportement soient opt-in (nécessitent un commutateur pour les activer), sauf si cela n'a aucun sens de le faire de cette façon.
Si vous contribuez au code, veuillez suivre ces meilleures pratiques:
S'il y a des fonctionnalités que vous souhaitez voir prises en charge dans ce projet, vous avez trois options pour les voir implémentées:
Admbrowser est libéré en vertu des termes du GNU GPL V3.