作者: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的條款發布。