作者:Alan D Moore(http://www.alandmoore.com,电子邮件me_at_alandmoore_dot_com)
贡献者:
ADMBROWSER是专门用于Web信息亭的浏览器。它基于Pyqt5和Qtwebengine(Chromium/Blink),旨在使锁定非常简单且无痛。
它最初是在图书馆目录终端中使用的,当时很明显,具有不断增长的功能列表(例如Firefox和Chrome)的浏览器太多工作,无法正确锁定。它也被设计为可以使用简单的文本文件易于配置,该文件可以在慢速WAN上手工编辑的SSH终端编辑,因此在这里没有数据库,XML或疯狂的二进制文件。
Admbrowser是WCGBrowser的叉子,具有这些主要差异:
WCGBrowser中的许多功能仅仅是因为Qtwebengine的作用与QTWebkit不同。
它应该在任何平台上使用,但仅在Arch Linux,Debian和Ubuntu上进行了测试。
随附的admbrowser.yaml文件显示了记录的示例配置。要使用它,请将其复制到/etc/admbrowser.yaml,〜/.admbrowser.yaml,或用-c(-config-file)开关指定它。您可以使Admbrowser.py可执行文件或使用Python启动,就像这样:
Python Admbrowser.py
至少,您需要使用配置文件或-L交换机指定start_url,否则浏览器并不多。高级配置可能是在配置文件中完成的,但是使用这些交换机可以在命令行启用或禁用许多基本功能:
| 转变 | 描述 |
|---|---|
| - debug_log | 将调试输出发送到指定文件 |
| - 尺寸 | 将初始窗口大小设置为“ <width> x <height>”(例如“ 800x600”),“最大化”或最大化的“最大值”,或为全屏进行“完整”。 |
| -proxy_server | 将代理服务器主机和端口设置为<主机>:<port> |
| -c, - config-file | 指定要使用的配置文件 |
| -d, - debug | 向Stdout提供调试输出 |
| -e,-allow_external | 允许浏览器通过MIME类型在外部程序中打开内容 |
| -g,-allow_plugins | 允许使用诸如Flash,Java等的插件。 |
| -h, - 螺旋 | 在命令行语法上显示快速帮助 |
| -i, - icon-theme | 要使用的图标主题。您需要自己安装这些主题 |
| -l, - url | 浏览器的“开始位置”。这是它将加载的初始URL,重置时将返回的位置。 |
| -n, - 无行动 | 关闭导航面板(向后,向前,家庭,快捷方式等)。 |
| -p, - popups | 单击在新窗口中打开的链接时,启用创建新窗口,或者JavaScript试图打开一个窗口 |
| -t,-pimeout | 无活动监视器的超时。经过这么多秒的不活动,重置浏览器 |
| -u, - 用户 | 设置网站请求身份验证时要发送的默认用户名 |
| -w, - password | 设置网站请求身份验证时要发送的默认密码 |
| -Z, - Zoom | 内容的默认缩放因子。 0忽略这个。 1是默认值,2个是双尺寸,0.5为半尺寸,等等。 |
AddBrowser还接受内置的QT命令行参数,该参数提供了一些低级覆盖。这些开关的文档可以在https://doc.qt.io/qt-5/qapplication.html#qapplication上找到。
示例配置文件已充分评论,如果您只能阅读它,则应该很容易配置。如果您只想从头开始,以下是当前的配置选项可用于应用程序。
| 选项名称 | 默认值 | 解释 |
|---|---|---|
| laster_external_content | 错误的 | 是否允许非HTML内容,例如PDF文件。如果这是正确的,则需要指定哑剧类型或404错误,“网络错误”的内容处理程序,或者可能会向用户显示空白页。 |
| 允许_plugins | 错误的 | 如果为true,则可以使用诸如Flash,Java,等等之类的插件。 |
| 允许_POPUPS | 错误的 | 是否允许需要打开新浏览器窗口的导航,例如JavaScript Window.open()呼叫或带有“ _blank”目标的链接。如果是错误的,则将忽略导航。如果为true,将按预期创建一个新窗口。 |
| force_js_confirm | “问” | 如果设置为“接受”或“拒绝”,则将覆盖任何JavaScript,即您是您愿意的对话框,并带有指定的答案,如果设置为“ ask”(默认)每次都会询问用户。 |
| 抑制_alerts | 错误的 | 如果为true,则会阻止JavaScript弹出警报出现,或者在false时显示它们。 |
| 允许_PRINTING | 错误的 | 从上下文菜单或工具栏上启用网页打印。 |
| print_settings | (空的) | 指定默认打印机设置,请参见下文。 |
| default_password | (空的) | 默认密码在页面请求身份验证时发送 |
| default_user | (空的) | 页面请求身份验证时要发送的默认用户名 |
| icon_theme | (QT5默认) | 用于导航图标的图标主题 |
| 导航 | 真的 | 在顶部显示导航栏(后部/向前/重新加载/书签/退出) |
| navigation_layout | (见下文) | 设置导航栏的布局。请参阅下面的详细说明。 |
| network_down_html | (空的) | 当前_将包含HTML的文件的完整路径破裂,该文件将在无法加载start_url页面时显示,这可能表示某种网络错误。 |
| page_unavailable_html | (空的) | 当前_将包含HTML的文件的完整路径破裂,该文件将在无法加载页面时显示,因为它无法访问或被安全限制阻止。 |
| privacy_mode | 真的 | 启用或禁用私人浏览模式 |
| user_agent | (QT5默认) | 覆盖默认用户代理字符串。 |
| proxy_server | (空的) | 为HTTP代理设置代理服务器字符串。使用表单主机:端口,或者如果要使用8080的默认端口,则只需主机。 |
| quit_button_mode | 重置 | 就像timeout_mode一样,只有按下退出按钮时采取的操作(相同的选项) |
| quit_button_text | “我和完成” | 在退出/重置按钮上显示要显示的文本。可以包括加速器指示器(&)。 |
| screensaver_url | 关于:空白 | 闲置时访问的网址。只有当TimeOut_mode为“ ScreenSaver”和“ TimeOut”为非零时,才会很重要。 |
| ssl_mode | 严格的 | 定义浏览器如何处理SSL证书错误。 “严格”只会出现错误并阻止访问有问题的URL。 “忽略”将默默地忽略错误并允许访问。 |
| start_url | 关于:空白 | 起始URL |
| 样式表 | (空的) | QSS-Format样式表的文件名,用于设计应用程序窗口。请参阅示例文件。 |
| 暂停 | 0 | 浏览器之前关闭或重置的秒数秒数。值为0禁用该功能。 |
| timeout_mode | 重置 | 对无活动超时执行的动作。值可以是“重置”(要返回开始URL和清晰的历史记录),“关闭”(关闭程序)或“ ScreenSaver”(在空闲时显示ScreenSaver_url) |
| 白名单 | (空的) | Web域或主机列表允许访问(请参见下文)。 |
| window_icon | (空的) | 窗口管理器将显示的图标文件的完整路径。 |
| window_size | “最大限度” | 使窗口默认为此大小。可以是<width> x <高度>(例如“ 800x600”),“最大化”或“最大化”,也可以为全屏幕提供“完整”。 |
| window_title | “浏览器” | 窗口管理器显示的自定义窗口标题。 |
| zoom_factor | 1.0 | 应用于页面的变焦量。 .5是一半,2.0是双重大小,等等。 |
书签是在使用此格式的名为“书签”列表中创建的:
书签:
1:
名称:“书签名”
URL:“ http://bookmark.url/”
描述:“书提示的书签的简短描述”
2:
名称:“另一个书签名”:
URL:“ http://example.com/some_bookmark”
描述:“此书签的简短描述”
书签名称可以包括一个and和以指定加速器密钥。您还可以指定类似的书签条目:
书签:
“书签名”:
URL:“ http://bookmark.url/”
描述:“书提示的书签的简短描述”
这更紧凑,但缺点是您无法控制书签的顺序(它们是按钥匙订购的,因此按名称为字母)。此模式确实是为了向后兼容,但是如果您有很多书签,这些书签需要字母顺序排列并想要保存一些打字,那么这可能是一定的选择。
如果您允许启动外部内容,则“ content_handlers”数组允许您指定使用MIME类型的外部内容的程序。语法看起来像这样:
content_handlers: “ application/pdf”:“ xpdf” “应用程序/vnd.oasis.opendocument.text”:“ libreoffice”
Admbrowser将将文件下载到临时目录,并将其作为参数传递给您在第二列中指定的任何命令。请注意这一点,因为在某些情况下,您可能想编写某种包装脚本来处理某些类型的文件或程序,而这些文件或程序无法正确处理参数。
“ navigation_layout”参数是显示在导航栏上的项目列表,如果显示的话。您可以从以下选择中选择:
该列表可以以任何有效的YAML列表格式指定,但我建议将其封闭在方形括号中并与逗号分开。 “分离器”和“垫片”可以按照您的意愿多次使用,其他次数只能使用一次。
当您无法完全控制售货亭页面上的所有链接并希望防止用户进入奇怪的网站时,添加了白名单功能,以方便锁定售货亭。它不是防火墙或内容过滤器,并且可能不会完全表现您的期望。因此,如果您打算使用它,请阅读一些有关它的作用和不做的事情。
如果您不想使用白名单功能,只需将其注释,将列表空白或给它一个“ false”的值。
您为白名单列出了域名或主机的列表,例如:
白名单:[“ somehost.example.com”,“ some local-host”,“ mydomain.org”]
每当用户单击链接或以其他方式试图导航到页面时,就会从请求的URL中提取主机名并与白名单匹配。如果有匹配项,则显示页面;如果没有,则显示错误文本。
有些事情是自动的:
如果您只想将start_url和Bookmark URL和其他任何内容进行书签,那么您可以在配置文件中执行此操作:
白名单:是的
在依靠自动白名单时,重要的是要了解这些URL的完整主机字符串是白名单的。因此,例如,如果您的start_url为“ http://example.com”,则将“ example.com”添加到flyelist(因此,example.com的所有子域,例如foo.example.com,bar.example.com等)。如果将“ http://www.example.com”指定为start_url,则将“ www.example.com”添加到白名单中。因此,“ foo.example.com”不会被列入白名单。
另请注意,如果您将您的URL变形为将您转发到另一个主机,则需要在白名单中指定两个主机。
屏幕保护程序模式是一种特殊的超时模式,可让您仅在浏览器空闲时显示给定的URL。考虑这样的配置:
start_url:'http://example.com/kiosk' 超时:1800 timeout_mode:'ScreenSaver' screensaver_url:'http://example.com/slides'
此配置将执行以下操作:
Screenaver_url可能是一个图像旋转器,带有广告的页面,欢迎消息等。这并不重要,但是请记住,用户实际上无法与屏幕保护程序页面进行交互,因为一旦触摸鼠标或键盘,start_url就会加载start_url。
ADMBROWSER将允许您为HTTP代理设置主机(名称或IP)和端口号。目前不支持HTTP,FTP,袜子或身份验证的代理。您可以将代理设置设置为以下三种方式之一:
要设置代理服务器,请使用格式主机:端口,如以下示例:
Proxyserver.mynetwork.local:3128 Localhost:8080 192.168.1.1:8880
如果您忽略了包括端口,而只是放置一个IP地址或主机名,则默认情况下将使用端口8080。
请注意,此功能在某些操作系统上可能无法使用。目前,它依赖于设置HTTP_Proxy环境变量(无论您使用哪种方法配置它),这可能在所有系统上均可受到尊重。它肯定在Linux上可以使用,并且可能在任何类似Unix的系统上都可以使用。
Admbrowser支持配置默认打印机设置并允许打印而无需显示对话框。使用print_settings变量设置选项。例如:
print_settings:
沉默:是的
利润:[5,5,3,3]
方向:“风景”
支持以下选项:
| 选项名称 | 默认值 | 解释 |
|---|---|---|
| 沉默的 | 错误的 | 如果是的,则ADMBROWSER将立即打印而不显示“打印对话框”。 |
| 方向 | “肖像” | 指定肖像或景观方向的印刷。 |
| size_unit | “毫米” | 指定Paper_size和边距变量使用的测量单位。可以是“毫米”,“点”,“英寸”,“ pica”,“ didot”,“ cicero”或“ devicepixel”。 |
| 利润 | (打印机默认) | 将打印机边距指定为形式的列表:[左,顶,右,底部]。示例:[5,3.5,6,2.4]。单位由size_unit变量指定。 |
| paper_size | (打印机默认) | 将纸张尺寸指定为形式的列表:[宽度,高度]。示例:[500,650.5]。单位由size_unit变量指定。 |
| 解决 | (打印机默认) | 指定打印机在PPI中的分辨率(每英寸像素)。 |
| 模式 | “屏幕” | 设置打印机将使用的分辨率“屏幕”:屏幕的分辨率(默认)或“高”:打印机的最大分辨率 |
以下是已知的局限性:
从Qtwebkit到Qtwebengine的港口出现了以下问题:
如果发现错误,请在项目的GitHub页面上报告为“问题”:http://github.com/alandmoore/admbrowser/issues。如果您的“错误”实际上是功能请求,请参见下文。
从理论上讲,Admbrowser可以在Raspberry Pi上工作,但不能从事Raspbian 10 。 Admbrowser需要Qtwebengine,该Qtwebengine(截至2020年1月)未打包用于Raspbian 10。
为了使用AdmBrowser,您需要使用提供QTWebengine的工作版本的发行版。截至2020年1月,已经测试了各种解决方案的结果(在PI 3B+上进行了测试):
| 发行版 | 拱 | 作品? | 解释 |
|---|---|---|---|
| Opensuse Leap 15.1 | ARM64 | 是的 | 似乎完美无缺,尽管有些慢。 |
| Ubuntu Mate 20.04 Alpha | Armhf | 是的 | 似乎完美无缺,但非常缓慢。比Opensuse慢。 |
| Ubuntu Mate 18.04 | Armhf | 几乎 | 启动,但加载页面时经常经常进行segfault。 |
| Ubuntu服务器19.10 | ARM64 | 不 | PYQT脚本Segfault在创建Qapplication时,如果导入了QTweBengineWidgets。 |
| FEDBERRY 27 | ARMV7 | 不 | segv_maperr试图显示qwebengineview |
有关Raspberry Pi支持的持续讨论,请参见第16期。
欢迎贡献,只要它们与浏览器的精神和意图一致 - 也就是说,它们是在售货亭,标牌或其他锁定情况下有用的功能,并且使浏览器易于配置。我还希望选择更改功能或行为是选择加入的(需要开关以启用它们),除非这样做是没有意义的。
如果您要贡献代码,请遵循以下最佳实践:
如果您想在此项目中看到一些功能,则您有三个选项可以看到它们实现:
Admbrowser按GNU GPL V3的条款发布。