鬼佬大哥大
  • / 31
  • 下載費用:30 金幣  

基于中間件插件框架的插件套接字資源控制方法及客戶端.pdf

摘要
申請專利號:

CN201410286907.9

申請日:

2014.06.24

公開號:

CN105204829A

公開日:

2015.12.30

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/44申請日:20140624|||公開
IPC分類號: G06F9/44 主分類號: G06F9/44
申請人: 深圳市茁壯網絡股份有限公司
發明人: 徐佳宏; 張明明; 朱呂亮; 張建國
地址: 518004 廣東省深圳市國威路羅湖高新技術產業第一園區113棟
優先權:
專利代理機構: 深圳市興科達知識產權代理有限公司 44260 代理人: 王翀
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201410286907.9

授權公告號:

||||||

法律狀態公告日:

2018.08.07|||2016.01.27|||2015.12.30

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

一種基于中間件插件框架的插件套接字資源控制方法及客戶端,該方法包括:設置客戶端中的中間件插件框架;當客戶端的一個插件啟動時,插件管理器對該插件進行驗證;當該插件通過驗證時,插件管理器給該插件隨機分配一個插件實例標識符;在該插件運行的過程中,插件單元中的插件框架模塊將該插件實例標識符注冊到插件框架模塊的插件接口中;當該插件進行套接字操作時,插件框架模塊根據預先設置的套接字操作條件和該插件的插件實例標識符,監測該插件的套接字操作;如果該插件的套接字操作符合預先設置的套接字操作條件,則控制執行套接字操作。利用本發明可通過創建的中間件插件框架,控制插件的套接字資源使用情況。

權利要求書

權利要求書
1.  一種基于中間件插件框架的插件套接字資源控制方法,運行于客戶端,其特征在于,該方法包括:
設置客戶端中的中間件插件框架,該中間件插件框架包括中間件單元和插件單元,所述中間件單元包括插件管理器、網頁引擎、及應用程序接口API模塊,所述插件單元包括一個插件庫和一個插件框架模塊,所述插件框架模塊包括插件接口和框架接口;
當客戶端的一個插件啟動時,插件管理器對該插件進行驗證;
當該插件通過驗證時,插件管理器給該插件隨機分配一個插件實例標識符;
在該插件運行的過程中,插件單元中的插件框架模塊將該插件實例標識符注冊到插件框架模塊的插件接口中;
當該插件進行套接字操作時,插件框架模塊根據預先設置的套接字操作條件和該插件的插件實例標識符,監測該插件的套接字操作;
如果該插件的套接字操作符合預先設置的套接字操作條件,則插件框架模塊向插件管理器返回套接字操作成功的信息,然后繼續執行套接字操作;及
如果該插件的套接字操作不符合預先設置的套接字操作條件,則阻止該套接字操作,然后向插件管理器返回套接字操作失敗的信息。

2.  如權利要求1所述的基于中間件插件框架的插件套接字資源控制方法,其特征在于,所述插件管理器與插件單元的插件接口連接,還用于控制插件的校驗、安裝和卸載,所述網頁引擎與插件單元的框架接口連接,用于啟動該插件。

3.  如權利要求1所述的基于中間件插件框架的插件套接字資源控制方法,其特征在于,該方法還包括步驟:
當所述插件接口中的API程序接口被該插件調用時,所述插件管理器將調用的API程序接口映射到中間件單元中的API模塊中相應的API基礎功能函數,調用該相應的API基礎功能函數。

4.  如權利要求1所述的基于中間件插件框架的插件套接字資源 控制方法,其特征在于,所述預先設置的套接字操作條件包括:條件1,套接字連接第一次發送的數據包含自定義頭部信息;條件2,套接字連接的目的地址為指定的復數個IP地址;條件3,同時開啟的套接字連接上限值為第三預設值;
如果該插件的套接字操作同時滿足條件1至條件3,則插件框架模塊判定該插件的套接字操作符合預先設置的套接字操作條件;
如果該插件的套接字操作不滿足條件1至條件3中的任意一條,則插件框架模塊判定該插件的套接字操作不符合預先設置的套接字操作條件。

5.  如權利要求1所述的基于中間件插件框架的插件套接字資源控制方法,其特征在于,所述預先設置的套接字操作條件中固定不變的條件內置于該插件的描述信息中,允許更改的條件注冊至插件框架模塊的插件接口中。

6.  一種基于中間件插件框架的客戶端,其特征在于,該客戶端包括:
中間件插件框架,該中間件插件框架包括中間件單元和插件單元,所述中間件單元包括插件管理器、網頁引擎、及應用程序接口API模塊,所述插件單元包括一個插件庫和一個插件框架模塊,所述插件框架模塊包括插件接口和框架接口;
所述插件管理器用于,當客戶端的一個插件啟動時,對該插件進行驗證;
所述插件管理器還用于,當該插件通過驗證時,給該插件隨機分配一個插件實例標識符;
所述插件框架模塊用于,在該插件運行的過程中,將該插件實例標識符注冊到插件框架模塊的插件接口中;
所述插件框架模塊還用于,當該插件進行套接字操作時,根據預先設置的套接字操作條件和該插件的插件實例標識符,監測該插件的套接字操作;
所述插件框架模塊還用于,如果該插件的套接字操作符合預先設 置的套接字操作條件,則向插件管理器返回套接字操作成功的信息,然后繼續執行套接字操作;及
所述插件框架模塊還用于,如果該插件的套接字操作不符合預先設置的套接字操作條件,則阻止該套接字操作,然后向插件管理器返回套接字操作失敗的信息。

7.  如權利要求6所述的基于中間件插件框架的客戶端,其特征在于,所述插件管理器與插件單元的插件接口連接,還用于控制插件的校驗、安裝和卸載,所述網頁引擎與插件單元的框架接口連接,用于啟動該插件。

8.  如權利要求6所述的基于中間件插件框架的客戶端,其特征在于,所述插件管理器還用于:
當所述插件接口中的API程序接口被該插件調用時,將調用的API程序接口映射到中間件單元中的API模塊中相應的API基礎功能函數,調用該相應的API基礎功能函數。

9.  如權利要求6所述的基于中間件插件框架的客戶端,其特征在于,所述預先設置的套接字操作條件包括:條件1,套接字連接第一次發送的數據包含自定義頭部信息;條件2,套接字連接的目的地址為指定的復數個IP地址;條件3,同時開啟的套接字連接上限值為第三預設值;
如果該插件的套接字操作同時滿足條件1至條件3,則插件框架模塊判定該插件的套接字操作符合預先設置的套接字操作條件;
如果該插件的套接字操作不滿足條件1至條件3中的任意一條,則插件框架模塊判定該插件的套接字操作不符合預先設置的套接字操作條件。

10.  如權利要求6所述的基于中間件插件框架的客戶端,其特征在于,所述預先設置的套接字操作條件中固定不變的條件內置于該插件的描述信息中,允許更改的條件注冊至插件框架模塊的插件接口中。

說明書

說明書基于中間件插件框架的插件套接字資源控制方法及客戶端
技術領域
本發明涉及一種中間件設計系統及方法,尤其涉及一種基于中間件插件框架的插件套接字資源控制方法及客戶端。
背景技術
傳統的插件開發需要大量技術人員來完成,且開發的插件與中間件(如iPanel中間件)的耦合性太高,安全性偏低,無法通過插件對相應底層設備進行控制。同時,現有的中間件無法對插件狀態和資源使用情況進行控制。
從現在發展趨勢看,中間件的功能擴展已經非常復雜,維護起來需要大量的資源,而中間件本身特有內容的維護時間卻相對較少,嚴重影響產品各方面質量。同時,現有的中間件缺少必要的靈活性,功能擴展性較差,給開發及維護人員帶來很大負擔。
特別地,現有的中間件對Socket(套接字)資源控制只是通過預設一個較大的閥值,不超過該閥值則允許插件操作,這種控制方法可能給中間件帶來風險。另外,現有的中間件對Socket資源管理只是針對某一固定的應用程序(一個實例)進行控制,當插件運行由頁面觸發時,可能會出現同一插件的多個實例,現有的中間件無法對多實例進行控制。
發明內容
鑒于以上內容,有必要提供一種基于中間件插件框架的插件套接字資源控制方法及客戶端,其可通過創建的中間件插件框架,快速開發出自定義的功能插件,并運行于中間件上,利用中間件控制插件的套接字資源使用情況。
一種基于中間件插件框架的插件套接字資源控制方法,運行于客戶端,該方法包括:設置客戶端中的中間件插件框架,該中間件插件 框架包括中間件單元和插件單元,所述中間件單元包括插件管理器、Web引擎、及應用程序接口API模塊,所述插件單元包括一個插件庫和一個插件框架模塊,所述插件框架模塊包括插件接口和框架接口;當客戶端的一個插件啟動時,插件管理器對該插件進行驗證;當該插件通過驗證時,插件管理器給該插件隨機分配一個插件實例標識符;在該插件運行的過程中,插件單元中的插件框架模塊將該插件實例標識符注冊到插件框架模塊的插件接口中;當該插件進行套接字操作時,插件框架模塊根據預先設置的套接字操作條件和該插件的插件實例標識符,監測該插件的套接字操作;如果該插件的套接字操作符合預先設置的套接字操作條件,則插件框架模塊向插件管理器返回套接字操作成功的信息,然后繼續執行套接字操作;如果該插件的套接字操作不符合預先設置的套接字操作條件,則阻止該套接字操作,然后向插件管理器返回套接字操作失敗的信息。
一種基于中間件插件框架的客戶端,該客戶端包括:中間件插件框架,該中間件插件框架包括中間件單元和插件單元,所述中間件單元包括插件管理器、Web引擎、及應用程序接口API模塊,所述插件單元包括一個插件庫和一個插件框架模塊,所述插件框架模塊包括插件接口和框架接口;所述插件管理器用于,當客戶端的一個插件啟動時,對該插件進行驗證;所述插件管理器還用于,當該插件通過驗證時,給該插件隨機分配一個插件實例標識符;所述插件框架模塊用于,在該插件運行的過程中,將該插件實例標識符注冊到插件框架模塊的插件接口中;所述插件框架模塊還用于,當該插件進行套接字操作時,根據預先設置的套接字操作條件和該插件的插件實例標識符,監測該插件的套接字操作;所述插件框架模塊還用于,如果該插件的套接字操作符合預先設置的套接字操作條件,則向插件管理器返回套接字操作成功的信息,然后繼續執行套接字操作;所述插件框架模塊還用于,如果該插件的套接字操作不符合預先設置的套接字操作條件,則阻止該套接字操作,然后向插件管理器返回套接字操作失敗的信息。
相較于現有技術,上述基于中間件插件框架的插件套接字資源控制方法及客戶端,通過創建的中間件插件框架,快速開發出自定義的功能插件,并運行于中間件上,利用中間件控制插件的套接字資源使用情況。
本發明在插件管理器中設置了一個Socket(套接字)資源控制部分,在插件驗證通過后讀取插件下載時的xml描述文件,其中包括當前插件需要的資源數。Socket資源控制部分在記錄下當前插件需要的資源數的同時,在插件運行時會根據此插件的標識符classid隨機生成一個插件實例標識符pluginid,該插件實例標識符pluginid被注冊到插件所使用的資源相關接口中對Socket資源進行控制。如果再有一個此插件的實例產生,再生成一個pluginid以控制此插件的Socket資源。在本發明中,Socket資源控制部分會在插件運行時通過此pluginid來記錄和判斷每一個插件實例的Socket資源是否使用得當。
本發明可以防止第三方插件占用太多Socket資源導致中間件運行緩慢甚至于死機等情況的發生。合理的Socket資源管理可以有效的限制第三方插件的操作權限,同時部分默認的附加條件(如:自定義頭部信息)也將第三方插件的操作限制在一個可控范圍內,從而保證中間件的順利運行。
本發明滿足快速增長的用戶個性化業務需求,第三方開發者可以根據中間件插件框架提供的插件接口快速開發出個性化的插件應用程序,然后由中間件進行控制運行,從而降低了第三方插件功能開發的難度,提高了中間件的可擴展性,減少了中間件技術人員與第三方插件開發者在溝通交流確認等繁瑣事務上的時間。
附圖說明
圖1是本發明中間件插件框架設計系統的主體示意圖。
圖2是本發明中間件插件框架設計系統的應用環境示意圖。
圖3是本發明中間件插件框架設計方法的主體流程圖。
圖4是插件單元中的插件框架模塊與中間件單元中的API模塊的 關聯圖。
圖5是本發明基于中間件插件框架的插件狀態控制方法的主體流程圖。
圖6是插件包制作流程示意圖。
圖7是對第一插件列表和第二插件列表中的字段說明。
圖8是本發明基于中間件插件框架的插件內存資源控制方法的主體流程圖。
圖9是本發明基于中間件插件框架的插件文檔資源控制方法的主體流程圖。
圖10是本發明基于中間件插件框架的插件Socket資源控制方法的主體流程圖。
圖11是本發明基于中間件插件框架的插件安全控制方法中插件安全發布流程圖。
圖12是本發明基于中間件插件框架的插件安全控制方法中插件下載校驗流程圖。
圖13是本發明基于中間件插件框架的插件安全控制方法中插件運行校驗流程圖。
具體實施方式
如圖1所示,是本發明中間件插件框架設計系統的主體示意圖。在本發明中,所述中間件插件框架設計系統20包括中間件單元21和插件單元22。其中,所述中間件單元21包括插件管理器(PluginManager)210、Web引擎(即網頁引擎)211、及API(ApplicationProgramInterface,應用程序接口)模塊213。例如,所述中間件單元21可以為iPanel中間件。
在本實施例中,所述Web引擎211為WebCore引擎,所述API模塊213包括多個中間件基礎功能函數,如Timer(時鐘)相關函數、Socket(套接字)處理函數、線程處理函數、圖形圖像處理函數、文件操作函數、事件處理函數、私有Java腳本對象注冊函數、字體操 作函數、及繪圖(Graphics)相關函數等。
所述插件單元22包括一個插件庫220和一個插件框架(FrameWork)模塊221。所述插件庫220包括一個或多個插件應用程序(插件App,以下簡稱為“插件”),所述插件框架模塊221進一步包括插件接口2210和框架接口2212。
所述框架接口2212由中間件(如中間件單元21)實現供插件庫220中的插件調用,達到插件單元22向中間件單元21的單向通信目的,插件單元22通過此框架接口2212獲取諸如:時鐘、線程、socket、graphics、文件管理等中間件單元21的系統資源,如內存資源,文檔資源(如文本、圖片、聲音、視頻等),及Socket資源等。所述插件接口2210由插件實現供中間件單元21調用,達到中間件單元21向插件單元22的單向通信目的,中間件單元21通過插件接口2210調用插件所實現的功能,如讀取插件處理數據等。
在本實施例中,所述插件管理器210與插件單元22的插件接口2210連接,用于控制插件的校驗、安裝(包括下載、加載等)和卸載等操作。所述Web引擎211與插件單元22的框架接口2212連接,用于當插件通過插件管理器210的校驗后,啟動該插件。所述插件接口2210包括一個或多個API程序接口,所述框架接口2212提供一個插件基礎框架,該插件基礎框架可以是NP(Netscape,網景)插件框架,包括插件從加載到銷毀整個生命周期的框架。
一個插件基礎框架的例子如下:


在上述插件基礎框架的例子中,其所定義的函數指針已基本包含一個插件所有可執行程序的應有接口。基于上述插件基礎框架,可以構造一個或多個插件接口2210(如API程序接口)。
根據上述插件基礎框架構造的一個繪圖應用程序接口的例子如下:

當所述插件接口2210中的API程序接口被插件調用時,插件管理器210將調用的API程序接口映射到中間件單元21中的API模塊213中相應的API基礎功能函數,調用該相應的API基礎功能函數,如繪圖相關函數等,以完成相應的插件功能。插件框架模塊221與中間件單元21中的API模塊213的關聯關系參閱圖4所示。當一個插件需要中間件單元21中的API模塊213提供的API基礎功能函數時,插件管理器210將插件接口2210中相應的API程序接口填充到所述框架接口2212。當所述插件接口2210中的API程序接口被該插件調用時,將調用的API程序接口映射到中間件單元21中的API模塊213 中相應的API基礎功能函數,調用該相應的API基礎功能函數,以完成該插件的功能。
例如,當一個插件需要顯示圖片時,需要中間件單元21中的API模塊213提供的圖片處理函數(如圖片解碼函數)提供支持,則插件管理器210將插件接口2210中的圖片程序接口填充到框架接口2212,并將圖片程序接口映射到API模塊213中的圖片處理函數,調用該圖片處理函數來顯示圖片。
參閱圖2所示,所述中間件插件框架設計系統20應用于客戶端2,所述客戶端2可以是數字機頂盒等電子裝置。第三方開發者可以根據插件接口2210提供的一個或多個API程序接口,開發出相應的插件,并通過打包加密工具10將開發出的插件上傳至服務端1,該打包加密工具10可以由客戶端2提供。插件管理器210與服務端1通訊連接,可以通過HTTP(HypertextTransferProtocol,超文本傳輸協議)或其它網絡傳輸協議從服務端1下載插件的加密數據包,并將下載的插件存儲于插件單元22的插件庫220。
需要說明的是,上述服務端1和客戶端2還包括其他必要的硬件資源和軟件系統,如顯示屏幕、輸入設備、存儲器、處理器和操作系統等。所述服務端1和客戶端2可以提供一個或多個模塊,所述一個或多個模塊被存儲在所述服務端1和客戶端2的存儲器中并被配置成由服務端1和客戶端2的處理器執行,以完成本發明。本發明所稱的模塊是完成一特定功能的計算機程序段,比程序更適合于描述軟件在服務端1和客戶端2中的執行過程。
當客戶端2啟動時,所述插件管理器210會檢測插件庫220中插件的合法性,例如,檢測插件庫220中的插件版本與服務端1中的插件版本是否一致,檢測插件庫220中的插件內容與服務端1中的插件內容是否一致等。
所述插件管理器210還用于控制插件的安裝、更新、及卸載等操作,具體描述參閱圖5至圖7的說明。
以下結合圖3進一步描述中間件插件框架設計系統20(以下簡 稱為“中間件插件框架20”)的運作流程。
如圖3所示,是本發明中間件插件框架設計方法的主體流程圖。
步驟S101,設置客戶端2中的中間件插件框架20,包括中間件單元21和插件單元22。
步驟S102,當客戶端2接收到一個插件請求時,中間件單元21的插件管理器210根據該插件請求中的插件標識符(記為“classid”)查找對應的插件。在本實施例中,所述插件標識符為一個字符串,一個插件對應唯一的插件標識符。參閱圖2所示,一個插件可以通過HTML(HypertextMarkupLanguage,超文本鏈接標示語言)頁面向客戶端2觸發一個插件請求(頁面觸發),該插件請求包括該插件的唯一標識符classid。插件管理器210根據該插件標識符classid對該插件進行統一管理。
步驟S103,當查找到對應的插件后,插件管理器210將插件單元22的插件框架模塊221中的框架接口2212注冊到中間件單元21的Web引擎211,以啟動該插件。在其他實施例中,該插件也可以在客戶端2開機后自動從后臺啟動,并由插件管理器210觸發管理。
步驟S104,插件管理器210給該插件隨機分配一個插件實例標識符(記為“pluginid”),并建立上述插件標識符classid與該插件實例標識符pluginid的關聯。插件的運行需要創建一個插件實例,通過該插件實例完成相應的插件操作,例如,如果插件為Flash播放器,則插件實例可以是正在播放的Flash播放器,多實例就是同時開啟多個Flash播放器同時進行播放,每一個在播放的Flash播放器都是一個插件實例。在本實施例中,所述插件實例標識符可以是一個隨機整數,一個插件實例對應唯一的插件實例標識符。
步驟S105,在該插件運行的過程中,插件單元22中的插件框架模塊221根據上述插件實例標識符控制該插件的資源使用情況。在本實施例中,資源使用情況的控制包括,但不限于,內存資源使用控制機制、文檔資源使用控制機制、Socket資源使用控制機制,具體描述參閱圖8至圖10的描述。
進一步地,所述中間件插件框架設計系統20設置有插件安全機制,用于加密和校驗第三方開發的插件,整個加密體系包括三個方面的流程,安全發布流程、下載校驗流程和運行校驗流程,具體描述參閱圖11至圖13的說明。
在本實施例中,所述中間件插件框架設計系統20具有以下特性:
(1)可靠性和安全性
中間件插件框架設計系統20充分考慮插件的安全機制:在插件包制作過程中進行簽名和加密處理,在發布、下載、運行三個階段進行多層校驗,確保插件的整個生命周期中軟件程序的安全可控。
(2)與中間件的低耦合性
插件的下載、加載由插件管理器210管理,運行由插件框架模塊221控制,而這兩者都是從中間件中剝離出來可以獨立構成的模塊,具有獨立的流程數據行為,兩者與中間件的唯一交互通道就是框架接口2212在Web引擎211中的提供給外部模塊使用的接口。插件作為單獨的功能模塊,相互之間獨立運行,通過統一接口與中間件單元21進行通信,無直接關聯。
(3)開發實現的高效性
根據插件的一般功能性需求,中間件插件框架設計系統20整合了中間件軟件結構,搭建出插件開發基本框架,第三方開發者只需根據插件接口2210提供的一個或多個API程序接口,開發出相應的插件,即可實現一個可被中間件單元21識別的合法插件。
各個功能模塊(如中間單元21、插件單元22)可以并行開發,有效縮短開發周期。由于具體的功能細化到插件,功能剝離后整個中間件單元21結構更清晰,降低了系統設計復雜度,同時降低了功能變化帶來的風險,實現中間件功能組件的“即插即用”。
(4)插件運行可控性
鑒于中間件單元21在客戶端2的主導作用,在本實施例中,通過插件的校驗和插件資源使用情況的控制,插件的行為被適當約束,包括禁止加載非法未授權的插件、監控合法插件的操作行為、合理控 制插件申請和使用中間件單元21的系統資源等,防止中間件單元21負荷過載而無法正常運行。
以下結合圖5至圖7的描述具體介紹所述插件管理器210控制插件的安裝、更新、及卸載等操作。
參閱圖5所示,是本發明基于中間件插件框架的插件狀態控制方法的主體流程圖。該方法基于上述的中間件插件框架。
步驟S201,客戶端2開機時,中間件單元21中的插件管理器210獲取客戶端2中已經安裝的插件,生成第一插件列表。在本實施例中,所述第一插件列表為XML(ExtensibleMarkupLanguage,可擴展標記語言)格式文件。所述第一插件列表中存儲有所獲取插件的插件標識符和版本號等信息。
參閱圖6所示,在本實施例中,一個插件在開發完成后,需要使用客戶端2提供的打包加密工具10,對插件應用程序(*.so文件)和插件描述信息(*.json文件)進行加密打包生成加密插件包(*.zip)上傳至服務端1。其中*.json格式的插件描述信息中包含了插件的標識符(classid)、版本(Version)、加密參數(key、MD5)等基本信息。終端中間件在安裝該插件前,需要使用上述插件描述信息對其合法性進行校驗。
步驟S202,插件管理器210將該第一插件列表與狀態獲取請求一同發送至服務端1,并接收服務端1返回的與該第一插件列表對應的第二插件列表。在本實施例中,所述第二插件列表為XML格式文件,所述第二插件列表中存儲有通過服務端1校驗的插件的插件標識符和每個通過校驗的插件的狀態信息。所述狀態信息包括,但不限于,安裝狀態、更新狀態、及卸載狀態。例如,如果第一插件列表中的插件版本號與服務端1中最新的版本號不一致,則判定插件需要更新(更新狀態)。
在本實施例中,所述插件管理器210通過HTTPPOST方式向服務端1發送狀態獲取請求。當服務端1接收到該狀態獲取請求時,先對第一插件列表中存儲的插件標識符進行校驗。例如,所述校驗包括: 驗證第一插件列表中存儲的插件標識符是否與服務端1存儲的插件標識符一致。
如果第一插件列表中存儲的插件標識符與服務端1存儲的插件標識符一致,則判定校驗通過。如果第一插件列表中存儲的插件標識符與服務端1存儲的插件標識符不一致(如第一插件列表中存儲的插件標識符中服務端1中不存在),則判定校驗不通過。
當第一插件列表中存儲的插件標識符通過驗證時,服務端1獲取通過校驗的插件的狀態信息,并將通過校驗的插件的插件標識符和每個通過校驗的插件的狀態信息寫入第二插件列表,返回響應第一插件列表的第二插件列表至客戶端1,即該第二插件列表根據第一插件列表生成。
舉例而言,假設客戶端2的第一插件列表包括以下XML格式的內容:

則服務端1返回的包含插件狀態信息的第二插件列表包括以下XML格式的內容:
<?xmlversion="1.0"encoding="gb2312"?>
<PLUGINS_RESPOND>
<ITEM>
<ID>e050f85d58cd047b</ID>
<STATUS>install</STATUS>
</ITEM>
<ITEM>
<ID>d165a44405d7f99c</ID>
<STATUS>uninstall</STATUS>
</ITEM>
<ITEM>
<ID>11bb9bc710cc8bc6</ID>
<STATUS>update</STATUS>
</ITEM>
</PLUGINS_RESPOND>
關于上述舉例中第一插件列表和第二插件列表中各字段的說明參閱圖7的描述。例如,“install”代表安裝,“uninstall”代表卸載,“update”代表更新。其中,<ID>字段代表第一插件列表和第二插件列表中的插件標識符。在本實施例中,所述<ID>字段為插件標識符classid,在其他實施例中,所述<ID>字段也可以為插件實例標識符pluginid。
步驟S203,當客戶端1接收到第二插件列表后,客戶端1中的插件管理器210從第二插件列表中依次讀取每個通過校驗的插件的狀態信息,并根據插件標識符控制該通過校驗的插件的狀態,具體流程包括步驟S204至步驟S206。
步驟S204,如果該通過校驗的插件的狀態信息為第一預設字符(如“install”),則插件管理器210根據插件標識符控制該通過校驗的插件進行安裝。
步驟S205,如果該通過校驗的插件的狀態信息為第二預設字符(如“update”),則插件管理器210根據插件標識符控制通過校驗的插件進行更新。具體而言,插件管理器210先刪除客戶端1本地舊 版本的插件,然后從服務端1下載新版本的插件,新版本的插件校驗通過后,安裝于客戶端1本地。
步驟S206,如果該通過校驗的插件的狀態信息為第三預設字符(如“uninstall”),則插件管理器210根據插件標識符控制通過校驗的插件進行卸載。
在其他實施例中,插件管理器210也可以每隔預設間隔時間(如24小時),向服務端1發送狀態獲取請求,獲取插件最新的狀態信息,以達到實時更新插件狀態的目的。
以下結合圖8至圖10的描述具體介紹所述插件單元22中的插件框架模塊221根據插件實例標識符控制插件操作的資源使用情況,包括內存操作、文檔操作、及Socket(套接字)操作等。
參閱圖8所示,是本發明基于中間件插件框架的插件內存資源控制方法的主體流程圖。該方法基于上述的中間件插件框架。
步驟S301,當客戶端2的一個插件啟動時,插件管理器210對該插件進行驗證。例如,驗證該插件的插件標識符classid是否在插件庫220中存在,如果存在,則驗證通過,執行步驟S302。
步驟S302,當該插件通過驗證時,插件管理器210給該插件隨機分配一個插件實例標識符pluginid,并建立該插件的插件標識符classid與該插件實例標識符pluginid的關聯。
在本實施例中,所述插件實例標識符pluginid代表一個具體的插件實例,該插件實例由Web引擎211從插件單元22開始啟動。插件運行期間的各API應用程序的調用均需攜帶pluginid通過插件管理器210映射到中間件單元21的API模塊213中。
步驟S303,在該插件運行的過程中,插件單元22中的插件框架模塊221將該插件實例標識符pluginid注冊到插件框架模塊221的插件接口2210中。
在該插件進行內存操作時(如內存讀寫),其資源的申請將受到基于pluginid注冊所在插件實例的預先設置的內存操作條件控制,符合預先設置的內存操作條件的插件接口可以成功的申請到中間件單 元21的系統資源,否則資源申請將失敗。需要說明的是,插件實例標識符pluginid在插件銷毀的同時將被銷毀。
步驟S304,當該插件進行內存操作時,插件框架模塊221根據預先設置的內存操作條件和該插件的插件實例標識符,監測該插件的內存操作。
舉例而言,假設步驟S302隨機分配的插件實例標識符pluginid為9527,則插件框架模塊221監測pluginid為9527的插件實例的內存操作是否符合預先設置的內存操作條件。
步驟S305,插件框架模塊221判斷該插件的內存操作是否符合預先設置的內存操作條件。如果符合預先設置的內存操作條件,則執行步驟S306;如果不符合預先設置的內存操作條件,則執行步驟S307。
舉例而言,在本實施例中,所述預先設置的內存操作條件包括:內存申請大小上限值為第一預設值。假設所述第一預設值為3M,如果該插件的內存申請大小小于或等于3M,則插件框架模塊221判定該插件的內存操作符合預先設置的內存操作條件,即該插件的內存操作合法。如果該插件的內存申請大小大于3M,則插件框架模塊221判定該插件的內存操作不符合預先設置的內存操作條件,即該插件的內存操作不合法。在其他實施例中,所述內存操作條件還可以包括默認的附加條件(如:系統操作路徑),以便將第三方插件的操作限制在一個可控范圍內,從而保證中間件單元21的順利運行。
需要說明的是,所述預先設置的內存操作條件可以在步驟S303跟隨pluginid注冊到插件框架模塊221的插件接口2210中,也可以內置于插件的描述信息中(無需注冊),甚至可以一部分條件內置于插件的描述信息中(如不允許用戶自行更改的固定不變的條件),另一部分條件注冊到插件框架模塊221的插件接口2210中(如允許用戶自行更改的條件)。
步驟S306,插件框架模塊221向插件管理器210返回內存操作成功的信息,然后繼續執行內存操作。
步驟S307,插件框架模塊221阻止該內存操作,然后向插件管理器210返回內存操作失敗的信息。
參閱圖9所示,是本發明基于中間件插件框架的插件文檔資源控制方法的主體流程圖。該方法基于上述的中間件插件框架。
步驟S311,當客戶端2的一個插件啟動時,插件管理器210對該插件進行驗證。例如,驗證該插件的插件標識符classid是否在插件庫220中存在,如果存在,則驗證通過,執行步驟S312。
步驟S312,當該插件通過驗證時,插件管理器210給該插件隨機分配一個插件實例標識符pluginid,并建立該插件的插件標識符classid與該插件實例標識符pluginid的關聯。
在本實施例中,所述插件實例標識符pluginid代表一個具體的插件實例,該插件實例由Web引擎211從插件單元22開始啟動。插件運行期間的各API應用程序的調用均需攜帶pluginid通過插件管理器210映射到中間件單元21的API模塊213中。
步驟S313,在該插件運行的過程中,插件單元22中的插件框架模塊221將該插件實例標識符pluginid注冊到插件框架模塊221的插件接口2210中。
在該插件進行文檔操作時(如打開文檔),其資源的申請將受到基于pluginid注冊所在插件實例的預先設置的文檔操作條件控制,符合預先設置的文檔操作條件的插件接口可以成功的申請到中間件單元21的系統資源,否則資源申請將失敗。需要說明的是,插件實例標識符pluginid在插件銷毀的同時將被銷毀。
步驟S314,當該插件進行文檔操作時,插件框架模塊221根據預先設置的文檔操作條件和該插件的插件實例標識符,監測該插件的文檔操作。
舉例而言,假設步驟S312隨機分配的插件實例標識符pluginid為12138,則插件框架模塊221監測pluginid為12138的插件實例的文檔操作是否符合預先設置的文檔操作條件。
步驟S315,插件框架模塊221判斷該插件的文檔操作是否符合 預先設置的文檔操作條件。如果符合預先設置的文檔操作條件,則執行步驟S316;如果不符合預先設置的文檔操作條件,則執行步驟S317。
舉例而言,在本實施例中,所述預先設置的文檔操作條件包括:(2.1)每個插件的操作路徑為預設路徑(如/root/ipanel/FS_ROOT);(2.2)每個插件不能操作中間件單元21的系統文件;(2.3)同時開啟的文檔數量上限值為第二預設值等。
假設所述第二預設值為5,如果該插件的文檔操作同時開啟的文檔數量小于或等于5,且滿足第(2.1)條件和第(2.2)條件,則插件框架模塊221判定該插件的文檔操作符合預先設置的文檔操作條件,即該插件的文檔操作合法。如果上述三個條件有一條不滿足(如同時開啟的文檔數量大于5),則插件框架模塊221判定該插件的文檔操作不符合預先設置的文檔操作條件,即該插件的文檔操作不合法。
在本實施例中,可以通過打開的文件句柄的數量判定同時開啟的文檔數量。例如,如果同時打開的文件句柄數量為5,則判定同時開啟的文件數量為5。
需要說明的是,所述預先設置的文檔操作條件可以在步驟S313跟隨pluginid注冊到插件框架模塊221的插件接口2210中,也可以內置于插件的描述信息中(無需注冊),甚至可以一部分條件內置于插件的描述信息中,如不允許用戶自行更改的固定不變的條件(如上述條件2.1和2.2),另一部分條件注冊到插件框架模塊221的插件接口2210中,如允許用戶自行更改的條件(如上述條件2.3)。
步驟S316,插件框架模塊221向插件管理器210返回文檔操作成功的信息,然后繼續執行文檔操作。
步驟S317,插件框架模塊221阻止該文檔操作,然后向插件管理器210返回文檔操作失敗的信息。
參閱圖10所示,是本發明基于中間件插件框架的插件Socket資源控制方法的主體流程圖。該方法基于上述的中間件插件框架。
步驟S321,當客戶端2的一個插件啟動時,插件管理器210對該插件進行驗證。例如,驗證該插件的插件標識符classid是否在插件庫220中存在,如果存在,則驗證通過,執行步驟S322。
步驟S322,當該插件通過驗證時,插件管理器210給該插件隨機分配一個插件實例標識符pluginid,并建立該插件的插件標識符classid與該插件實例標識符pluginid的關聯。
在本實施例中,所述插件實例標識符pluginid代表一個具體的插件實例,該插件實例由Web引擎211從插件單元22開始啟動。插件運行期間的各API應用程序的調用均需攜帶pluginid通過插件管理器210映射到中間件單元21的API模塊213中。
步驟S323,在該插件運行的過程中,插件單元22中的插件框架模塊221將該插件實例標識符pluginid注冊到插件框架模塊221的插件接口2210中。
在該插件進行Socket操作時(如連接操作),其資源的申請將受到基于pluginid注冊所在插件實例的預先設置的Socket操作條件控制,符合預先設置的Socket操作條件的插件接口可以成功的申請到中間件單元21的系統資源,否則資源申請將失敗。需要說明的是,插件實例標識符pluginid在插件銷毀的同時將被銷毀。
步驟S324,當該插件進行Socket操作時,插件框架模塊221根據預先設置的Socket操作條件和該插件的插件實例標識符,監測該插件的Socket操作。
舉例而言,假設步驟S322隨機分配的插件實例標識符pluginid為1314,則插件框架模塊221監測pluginid為1314的插件實例的Socket操作是否符合預先設置的Socket操作條件。
步驟S325,插件框架模塊221判斷該插件的Socket操作是否符合預先設置的Socket操作條件。如果符合預先設置的Socket操作條件,則執行步驟S326;如果不符合預先設置的Socket操作條件,則執行步驟S327。
舉例而言,在本實施例中,所述預先設置的Socket操作條件包 括:(3.1)Socket連接第一次發送的數據包含自定義頭部信息(3.2)Socket連接的目的地址為指定的復數個IP地址(如運營商服務器的IP地址);(3.3)同時開啟的Socket連接上限值為第三預設值等。
假設所述第三預設值為3,如果該插件的Socket操作同時開啟的Socket連接小于或等于3,且滿足第(3.1)條件和第(3.2)條件,則插件框架模塊221判定該插件的Socket操作符合預先設置的Socket操作條件,即該插件的Socket操作合法。如果上述三個條件有一條不滿足(如同時開啟的Socket連接大于3),則插件框架模塊221判定該插件的Socket操作不符合預先設置的Socket操作條件,即該插件的Socket操作不合法。
需要說明的是,所述預先設置的Socket操作條件可以在步驟S323跟隨pluginid注冊到插件框架模塊221的插件接口2210中,也可以內置于插件的描述信息中(無需注冊),甚至可以一部分條件內置于插件的描述信息中,如不允許用戶自行更改的固定不變的條件(如上述條件3.1),另一部分條件注冊到插件框架模塊221的插件接口2210中,如允許用戶自行更改的條件(如上述條件3.2和3.3)。
步驟S326,插件框架模塊221向插件管理器210返回Socket操作成功的信息,然后繼續執行Socket操作。
步驟S327,插件框架模塊221阻止該Socket操作,然后向插件管理器210返回Socket操作失敗的信息。
以上圖8至圖10的描述具體介紹了插件單元22中的插件框架模塊221根據插件實例標識符控制插件內存操作、文檔操作、及Socket操作的資源控制方法,可以理解的是,其他插件操作也可以參考上述資源控制方法,方法是:預先設置相應的插件操作條件,并根據預先設置的插件操作條件,監測插件的相應操作。
以下結合圖11至圖13的描述具體介紹所述中間件插件框架設計系統20的插件安全機制,包括:安全發布流程、下載校驗流程和運行校驗流程。
參閱圖11所示,是本發明基于中間件插件框架的插件安全控制 方法中插件安全發布流程圖。該方法基于上述的中間件插件框架。
步驟S401,服務端1生成一個隨機密鑰,并利用該隨機密鑰對插件文件進行加密,得到加密后的插件文件(如*.so文件)。
例如,利用3DES(TripleDataEncryptionAlgorithm,三重數據加密算法)對插件文件進行加密。在本實施例中,一個插件文件代表一個插件。
步驟S402,服務端1對該插件文件的初始摘要內容進行加密得到該插件文件的數字簽名,并利用服務端的私鑰對該數字簽名進行加密,得到加密后的數字簽名。
具體而言,服務端1首先利用預設的摘要生成算法對該插件文件進行計算,如利用哈希算法對該插件文件進行哈希運算,得到該插件文件的初始摘要內容(即服務端1的本地初始摘要內容)。然后,服務端1利用預設的加密算法,如MD5(MessageDigestAlgorithm5,消息摘要算法第5版)加密算法,對該初始摘要內容進行加密得到該插件文件的數字簽名。
步驟S403,利用服務端1的私鑰對該插件文件的配置參數進行加密,得到加密后的配置參數。在本實施例中,所述配置參數包括,但不限于,插件標識符classid和版本號等界面輸入參數或命令行參數。
步驟S404,利用服務端1的私鑰對上述隨機密鑰進行加密,得到加密后的隨機密鑰。
步驟S405,將加密后的隨機密鑰、加密后的配置參數和上述加密后的數字簽名作為插件描述信息(如*.json文件),附在加密后的插件文件上(如*.so文件),生成一個插件壓縮包(如*.zip文件)。
參閱圖12所示,是本發明基于中間件插件框架的插件安全控制方法中插件下載校驗流程圖。該方法基于上述的中間件插件框架。
步驟S411,當客戶端2從服務端1下載一個插件壓縮包時,客戶端2中的插件管理器210啟動對該插件壓縮包的校驗流程。
如上所述,該插件壓縮包包括:加密后的插件文件及插件描述信 息,所述插件描述信息包括:加密后的隨機密鑰、加密后的配置參數、加密后的數字簽名,所述加密后的配置參數包括:加密后的插件標識符classid、加密后的版本號等信息。
步驟S412,客戶端2中的插件管理器210利用客戶端2的公鑰對加密后的隨機密鑰進行解密,得到解密后的隨機密鑰,即服務端1生成的隨機密鑰。
步驟S413,插件管理器210利用該隨機密鑰對該加密后的插件文件進行解密,得到解密后的插件文件。
步驟S414,插件管理器210利用與服務端1相同的摘要生成算法(即上述預設的摘要生成算法)對該解密后的插件文件再進行一次計算,如利用相同的哈希算法對該解密后的插件文件再進行一次哈希運算,得到一個新的摘要內容(即客戶端的摘要內容)。
步驟S415,插件管理器210利用客戶端2的公鑰對該加密后的數字簽名進行解密,得到解密后的插件文件的摘要內容。
步驟S416,插件管理器210判斷新的摘要內容是否與解密出來的摘要內容一致。
步驟S417,如果新的摘要內容與解密出來的摘要內容一致,則插件管理器210判定校驗通過,控制該插件文件進行安裝。
步驟S418,如果新的摘要內容與解密出來的摘要內容不一致,插件管理器210判定校驗失敗,阻止該插件文件的安裝。
在本實施例中,所述插件下載校驗執行于客戶端2,即執行第一次下載校驗。在其他實施例中,所述插件下載校驗還可以執行于服務端1,即執行兩次插件下載校驗,進一步提高插件校驗的安全性。如果插件下載校驗執行于服務端1,以下稱為第二次下載校驗。
第二次下載校驗包括:插件管理器210將客戶端2解密出來的摘要內容發送至服務端1,服務端1利用該解密出來的摘要內容與本地初始摘要內容進行校驗并返回校驗結果至客戶端2。如果該解密出來的摘要內容與本地初始摘要內容一致,則服務端1判定校驗通過;如果該解密出來的摘要內容與本地初始摘要內容不一致,則服務端1判 定校驗失敗。如果第一次下載校驗(客戶端校驗流程)和第二次下載校驗(服務端校驗流程)的校驗結果都通過,則執行步驟S417。如果第一次下載校驗或第二次下載校驗的校驗結果失敗,則執行步驟S418。
參閱圖13所示,是本發明基于中間件插件框架的插件安全控制方法中插件運行校驗流程圖。該方法基于上述的中間件插件框架。
步驟S421,當客戶端2的一個插件啟動時,插件管理器210啟動對該插件的校驗流程。在本實施例中,一個插件文件代表一個插件。
步驟S422,插件管理器210從插件單元22的插件接口2210中獲取該插件的本地插件標識符。
如前所述,每一個插件唯一分配一個插件標識符,記為classid,分別被:打包進插件壓縮包的插件描述信息中以及插件開發者實現的API接口(插件接口2210)中。插件開發者需要在插件相關API接口中正確引用該classid,因為插件運行過程中將基于該classid進行對比,以校驗插件的合法性。
步驟S423,插件管理器210利用客戶端2的公鑰對插件壓縮包中加密后的插件標識符的進行解密,得到該插件解密后的插件標識符。
步驟S424,插件管理器210判定解密后的插件標識符是否與本地插件標識符一致。
步驟S425,如果解密后的插件標識符與本地插件標識符一致,則插件管理器210判定校驗通過,控制該插件正常運行。
步驟S426,如果解密后的插件標識符與本地插件標識符不一致,則插件管理器210判定校驗失敗,阻止該插件的運行。
在其他實施例中,所述插件運行校驗流程還可以在插件運行過程中,每隔預設的間隔時間(如10分鐘)執行一次。
綜上所述,以上僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。

關 鍵 詞:
基于 中間件 插件 框架 套接 資源 控制 方法 客戶端
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:基于中間件插件框架的插件套接字資源控制方法及客戶端.pdf
鏈接地址:http://www.wwszu.club/p-6405611.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大