日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

guacamole 源码_guacamole插件开发

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 guacamole 源码_guacamole插件开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Guacamole手冊:Guacamole手冊

Guacamole是什么?

Apache Guacamole是一個無客戶端的遠程桌面網關。

它支持VNC,RDP和SSH等標準協議。

我們稱之為無客戶端,因為不需要插件或客戶端軟件。

感謝HTML5,一旦Guacamole安裝在服務器上,您訪問桌面所需的只是一個Web瀏覽器。

為什么要用Guacamole?

隨時隨地訪問PC

保持桌面在云端

免費、開源

建立在文檔齊全的API之上

商業支持

Guacamole架構

Guacamole架構下,發起一次遠程桌面請求的流程是:

用戶使用Web瀏覽器,訪問Guacamole客戶端應用,使用Guacamole協議請求一個遠程桌面

Guacamole客戶端應用將Guacamole協議轉發給guacd服務端

guacd服務端解釋Guacamole協議,轉換成遠程桌面支持的協議后,請求到真實的遠程桌面

Guacamole協議

Guacamole協議,是一種用于遠程顯示渲染和事件傳輸的協議。Guacamole協議不同于遠程桌面協議(VNC或RDP等),它建立在遠程桌面協議之上,旨在提供跨平臺的遠程桌面功能,不依賴于特定的桌面環境。由一個中間件,將Guacamole協議翻譯成具體的遠程桌面協議。當新增一個遠程桌面協議時,只需要在中間件上加入新的翻譯轉換策略,而不需要修改客戶端應用。

guacd

guacd是Guacamole的核心,它動態加載對遠程桌面協議(稱為“客戶端插件”)的支持,并根據從Web應用程序收到的指令將它們連接到遠程桌面嗎,也就是上文提到的翻譯中間件。

guacd是一個守護進程,它與Guacamole一起安裝并在后臺運行,偵聽來自Web應用程序的TCP連接。 guacd也不了解任何特定的遠程桌面協議,而是實現了足夠的Guacamole協議來確定需要加載哪些協議支持以及必須將哪些參數傳遞給它。 加載客戶端插件后,它將獨立于guacd運行,并完全控制自身與Web應用程序之間的通信,直到客戶端插件終止。

guacd和所有客戶端插件依賴于一個公共庫libguac,它使通過Guacamole協議的通信更容易,更抽象。

Gucamole客戶端應用

用戶實際使用的Guacamole部分是Web應用程序。Web應用程序不實現任何遠程桌面協議。 它依賴于guacd,只需要實現一個漂亮的Web界面和身份驗證層。

安裝guacd

官方提供兩種安裝方式,一種是下載源碼,手動編譯安裝;一種是docker鏡像。

官方文檔上由詳細說明:

編譯安裝

docker鏡像

guacamole插件開發

Guacamole的插件可以:

提供備用身份驗證方法和連接/用戶數據源。

提供將在Guacamole執行身份驗證和隧道連接等任務時通知的事件偵聽器。

通過額外的CSS文件和靜態資源個性化Guacamole。

通過提供將自動加載的JavaScript來擴展Guacamole的JavaScript代碼。

添加其他顯示語言,或更改現有語言的翻譯字符串。

guacamole插件加載方式

Guacamole客戶端應用是與插件是分離部署的,客戶端應用在啟動階段,動態加載插件。因此需要理解插件的加載方式,才能開發出符合自身需求的插件。

因為應用與插件是分離部署的,所以Guacamole約定了一個配置路徑,用于存放資源文件,其中就包括插件。客戶端應用在啟動時,到配置路徑下查找是否有插件,如果有,則加載到應用中。

guacamole配置路徑

guacamole配置路徑稱為GUACAMOLE_HOME,默認情況下位于/etc/guacamole。所有配置文件,插件等都存放在此目錄中。

GUACAMOLE_HOME的結構是嚴格定義的,由以下可選文件組成:

guacamole.properties

Guacamole的主配置文件。此文件中的屬性指示Guacamole將如何連接到guacd,并可能配置已安裝的身份驗證擴展的行為。

logback.xml

Guacamole使用的日志框架是Logback。默認情況下,Guacamole只將日志輸出到控制臺。可以通過提供該文件自定義日志輸出行為。

extensions/

插件存放目錄,Guacamole會在啟動時自動加載此目錄中的所有.jar文件。

lib/

插件依賴jar包存放目錄。如果插件依賴第三方jar,例如數據庫驅動程序,就可以放在這個目錄下。

插件格式

插件是一個.jar文件,jar中包含類、資源和guacamole擴展清單。其中,擴展清單是插件的描述文件,需要放在jar文件的根目錄下。Guacamole客戶端應用啟動時,讀取擴展清單,來進行動態加載插件。

擴展清單

擴展清單是一個json文件,文件名約定為guac-mainfest.json。如果你和我一樣,基于maven開發,那么根據maven對資源文件的約定,擴展清單需要放在resouces文件夾下。擴展清單是一個配置文件,配置項如下:

屬性

是否必填

描述

guacamoleVersion

插件依賴的guacamole版本號,如果插件不依賴于特定版本,則可以使用*,將繞過版本兼容性檢查。

name

易于閱讀、理解的名字

namespace

插件的唯一標識。如果插件中包含靜態資源,那么這些資源將以該命名空間作為上下文根。

authProviders

一組限定類名,這些類是AuthenticationProvider的子類,插件中提供的用于身份驗證的類。

listeners

一組限定類名,這些類是Listener的子類,插件中提供的用于監聽事件的類。

js

一組JavaScript文件路徑,路徑必須是相對路徑。

css

一組CSS文件路徑,路徑必須是相對路徑。

html

一組HTML文件路徑,路徑必須是相對路徑。

translations

一組翻譯文件路徑,路徑必須是相對路徑。此處聲明的翻譯文件將自動添加到可用語言中,如果翻譯文件提供Guacamole中已存在的語言,則其字符串將覆蓋現有翻譯的字符串

resources

一個對象,其中每個屬性名稱是Web資源文件的名稱,每個值都是該資源的mimetype,所有路徑都必須是相對路徑。此處聲明的Web資源將在app/ext/NAMESPACE/PATH中提供給應用程序,其中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"

}

}

總結

以上是生活随笔為你收集整理的guacamole 源码_guacamole插件开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。