guacamole 源码_guacamole插件开发
Guacamole手冊:Guacamole手冊
Guacamole是什么?
Apache Guacamole是一個無客戶端的遠程桌面網(wǎng)關(guān)。
它支持VNC,RDP和SSH等標準協(xié)議。
我們稱之為無客戶端,因為不需要插件或客戶端軟件。
感謝HTML5,一旦Guacamole安裝在服務(wù)器上,您訪問桌面所需的只是一個Web瀏覽器。
為什么要用Guacamole?
隨時隨地訪問PC
保持桌面在云端
免費、開源
建立在文檔齊全的API之上
商業(yè)支持
Guacamole架構(gòu)
Guacamole架構(gòu)下,發(fā)起一次遠程桌面請求的流程是:
用戶使用Web瀏覽器,訪問Guacamole客戶端應(yīng)用,使用Guacamole協(xié)議請求一個遠程桌面
Guacamole客戶端應(yīng)用將Guacamole協(xié)議轉(zhuǎn)發(fā)給guacd服務(wù)端
guacd服務(wù)端解釋Guacamole協(xié)議,轉(zhuǎn)換成遠程桌面支持的協(xié)議后,請求到真實的遠程桌面
Guacamole協(xié)議
Guacamole協(xié)議,是一種用于遠程顯示渲染和事件傳輸?shù)膮f(xié)議。Guacamole協(xié)議不同于遠程桌面協(xié)議(VNC或RDP等),它建立在遠程桌面協(xié)議之上,旨在提供跨平臺的遠程桌面功能,不依賴于特定的桌面環(huán)境。由一個中間件,將Guacamole協(xié)議翻譯成具體的遠程桌面協(xié)議。當新增一個遠程桌面協(xié)議時,只需要在中間件上加入新的翻譯轉(zhuǎn)換策略,而不需要修改客戶端應(yīng)用。
guacd
guacd是Guacamole的核心,它動態(tài)加載對遠程桌面協(xié)議(稱為“客戶端插件”)的支持,并根據(jù)從Web應(yīng)用程序收到的指令將它們連接到遠程桌面嗎,也就是上文提到的翻譯中間件。
guacd是一個守護進程,它與Guacamole一起安裝并在后臺運行,偵聽來自Web應(yīng)用程序的TCP連接。 guacd也不了解任何特定的遠程桌面協(xié)議,而是實現(xiàn)了足夠的Guacamole協(xié)議來確定需要加載哪些協(xié)議支持以及必須將哪些參數(shù)傳遞給它。 加載客戶端插件后,它將獨立于guacd運行,并完全控制自身與Web應(yīng)用程序之間的通信,直到客戶端插件終止。
guacd和所有客戶端插件依賴于一個公共庫libguac,它使通過Guacamole協(xié)議的通信更容易,更抽象。
Gucamole客戶端應(yīng)用
用戶實際使用的Guacamole部分是Web應(yīng)用程序。Web應(yīng)用程序不實現(xiàn)任何遠程桌面協(xié)議。 它依賴于guacd,只需要實現(xiàn)一個漂亮的Web界面和身份驗證層。
安裝guacd
官方提供兩種安裝方式,一種是下載源碼,手動編譯安裝;一種是docker鏡像。
官方文檔上由詳細說明:
編譯安裝
docker鏡像
guacamole插件開發(fā)
Guacamole的插件可以:
提供備用身份驗證方法和連接/用戶數(shù)據(jù)源。
提供將在Guacamole執(zhí)行身份驗證和隧道連接等任務(wù)時通知的事件偵聽器。
通過額外的CSS文件和靜態(tài)資源個性化Guacamole。
通過提供將自動加載的JavaScript來擴展Guacamole的JavaScript代碼。
添加其他顯示語言,或更改現(xiàn)有語言的翻譯字符串。
guacamole插件加載方式
Guacamole客戶端應(yīng)用是與插件是分離部署的,客戶端應(yīng)用在啟動階段,動態(tài)加載插件。因此需要理解插件的加載方式,才能開發(fā)出符合自身需求的插件。
因為應(yīng)用與插件是分離部署的,所以Guacamole約定了一個配置路徑,用于存放資源文件,其中就包括插件。客戶端應(yīng)用在啟動時,到配置路徑下查找是否有插件,如果有,則加載到應(yīng)用中。
guacamole配置路徑
guacamole配置路徑稱為GUACAMOLE_HOME,默認情況下位于/etc/guacamole。所有配置文件,插件等都存放在此目錄中。
GUACAMOLE_HOME的結(jié)構(gòu)是嚴格定義的,由以下可選文件組成:
guacamole.properties
Guacamole的主配置文件。此文件中的屬性指示Guacamole將如何連接到guacd,并可能配置已安裝的身份驗證擴展的行為。
logback.xml
Guacamole使用的日志框架是Logback。默認情況下,Guacamole只將日志輸出到控制臺。可以通過提供該文件自定義日志輸出行為。
extensions/
插件存放目錄,Guacamole會在啟動時自動加載此目錄中的所有.jar文件。
lib/
插件依賴jar包存放目錄。如果插件依賴第三方j(luò)ar,例如數(shù)據(jù)庫驅(qū)動程序,就可以放在這個目錄下。
插件格式
插件是一個.jar文件,jar中包含類、資源和guacamole擴展清單。其中,擴展清單是插件的描述文件,需要放在jar文件的根目錄下。Guacamole客戶端應(yīng)用啟動時,讀取擴展清單,來進行動態(tài)加載插件。
擴展清單
擴展清單是一個json文件,文件名約定為guac-mainfest.json。如果你和我一樣,基于maven開發(fā),那么根據(jù)maven對資源文件的約定,擴展清單需要放在resouces文件夾下。擴展清單是一個配置文件,配置項如下:
屬性
是否必填
描述
guacamoleVersion
是
插件依賴的guacamole版本號,如果插件不依賴于特定版本,則可以使用*,將繞過版本兼容性檢查。
name
是
易于閱讀、理解的名字
namespace
是
插件的唯一標識。如果插件中包含靜態(tài)資源,那么這些資源將以該命名空間作為上下文根。
authProviders
否
一組限定類名,這些類是AuthenticationProvider的子類,插件中提供的用于身份驗證的類。
listeners
否
一組限定類名,這些類是Listener的子類,插件中提供的用于監(jiān)聽事件的類。
js
否
一組JavaScript文件路徑,路徑必須是相對路徑。
css
否
一組CSS文件路徑,路徑必須是相對路徑。
html
否
一組HTML文件路徑,路徑必須是相對路徑。
translations
是
一組翻譯文件路徑,路徑必須是相對路徑。此處聲明的翻譯文件將自動添加到可用語言中,如果翻譯文件提供Guacamole中已存在的語言,則其字符串將覆蓋現(xiàn)有翻譯的字符串
resources
否
一個對象,其中每個屬性名稱是Web資源文件的名稱,每個值都是該資源的mimetype,所有路徑都必須是相對路徑。此處聲明的Web資源將在app/ext/NAMESPACE/PATH中提供給應(yīng)用程序,其中NAMESPACE是namespace屬性的值,PATH是聲明的Web資源文件名。
最簡單的擴展清單1
2
3
4
5{
"guacamoleVersion" : "0.9.14",
"name" : "My Extension",
"namespace" : "my-extension"
}
擴展清單1
2
3
4
5
6
7
8
9
10
11
12{
"guacamoleVersion" : "0.9.14",
"name" : "My Extension",
"namespace" : "my-extension",
"css" : [ "theme.css" ],
"html" : [ "loginDisclaimer.html" ],
"resources" : {
"images/logo.png" : "image/png",
"images/cancel.png" : "image/png",
"images/delete.png" : "image/png"
}
}
總結(jié)
以上是生活随笔為你收集整理的guacamole 源码_guacamole插件开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【简●解】[SDOI2008] Sue的
- 下一篇: 静电势能的计算(格林函数思想以及有限元工