劉曉光,劉劍鋒,蘭潔
(上海航天控制技術(shù)研究所 上海 201109)
基于Openfire服務(wù)器的用戶行為審計(jì)插件設(shè)計(jì)與實(shí)現(xiàn)
劉曉光,劉劍鋒,蘭潔
(上海航天控制技術(shù)研究所上海 201109)
針對Openfire用戶線上行為監(jiān)測與審計(jì)的實(shí)際需求,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)基于Openfire服務(wù)器的用戶行為審計(jì)插件actionAuditor。插件由3大模塊組成,能實(shí)現(xiàn)用戶行為記錄、查詢、存儲(chǔ)、備份、導(dǎo)出、排序、統(tǒng)計(jì)分析以及免審計(jì)用戶設(shè)置等功能,插件具有體積小、部署靈活、使用簡單的特點(diǎn)。文章對插件的功能、架構(gòu)、數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)做了詳細(xì)說明和闡釋,并就典型模塊做了重點(diǎn)分析。插件已投入實(shí)際運(yùn)行,效果良好,符合預(yù)期。
Openfire;用戶行為;監(jiān)測與審計(jì);插件;設(shè)計(jì)與實(shí)現(xiàn)
Openfire EIM(Enterprise Instant Messaging)是一個(gè)面向企業(yè)終端用戶通信的開源軟件,支持SPARK、RTX、QICQ等常用客戶端軟件,具有功能擴(kuò)展性好、符合技術(shù)趨勢、客戶端選擇余地大等特點(diǎn),能實(shí)現(xiàn)包括文本、圖片、語音、視頻等內(nèi)容的交互,滿足終端用戶兩人或多人之間的實(shí)時(shí)溝通交流之需求,在企業(yè)中有較為廣泛的應(yīng)用[1-3]。上海航天控制技術(shù)研究所目前即使用該軟件作為員工日常工作交流和協(xié)同的工具,然而,該所是國防軍工涉密單位,根據(jù)保密法及軍工武器單位資格審查認(rèn)證管理辦法規(guī)定,單位所有涉密信息系統(tǒng)或軟件均須具備安全審計(jì)功能。然而,Openfire只提供了滿足用戶通訊服務(wù)的基礎(chǔ)功能,無法實(shí)現(xiàn)對用戶線上行為監(jiān)測與審計(jì),鑒于此,該單位開發(fā)了基于Openfire服務(wù)器的用戶行為審計(jì)插件。根據(jù)要求,該插件須能對Openfire EIM終端用戶的線上指定行為進(jìn)行監(jiān)測與記錄,并能對這些行為記錄進(jìn)行統(tǒng)計(jì)分析,同時(shí),對于一些特殊用戶或賬號,還須提供免審計(jì)功能。本文將對該插件的設(shè)計(jì)與實(shí)現(xiàn)做詳細(xì)闡述與說明。
根據(jù)該單位對Openfire EIM用戶行為審計(jì)的要求及實(shí)際情況,設(shè)計(jì)了本插件功能并將其分為了3大類,如圖1所示。

圖1 插件功能示意圖
1.1記錄功能
記錄用戶如下行為:上線、下線、創(chuàng)建聊天室、登入聊天室、登出聊天室、銷毀聊天室、修改聊天室主題、修改用戶昵稱、新增用戶、刪除用戶、修改用戶信息。
記錄用戶行為發(fā)生的時(shí)間、客戶端名稱及版本、JabberID、用戶IP及所在物理位置(與樓宇系統(tǒng)集成,可定位到用戶所在樓宇房間的具體座位)。
1.2挖掘功能
查詢:對現(xiàn)行記錄與歷史記錄按時(shí)間(段)、行為類型、用戶名等條件進(jìn)行單一或復(fù)合查詢,查找符合指定特征的行為記錄。
存儲(chǔ):在數(shù)據(jù)備份服務(wù)器不可用或發(fā)生故障時(shí),將符合特征條件的查詢結(jié)果以Excel文件形式存儲(chǔ)于Openfire服務(wù)器指定位置。
導(dǎo)出:為遠(yuǎn)程web登陸管理員提供了下載指定特征記錄到本地excel文件的功能,導(dǎo)出的文件符合指定格式。
備份:為防止行為記錄長時(shí)間大量累積達(dá)到存儲(chǔ)上限,管理員需要手工即時(shí)或定期自動(dòng)備份數(shù)據(jù)到歷史倉庫,以保護(hù)數(shù)據(jù)安全。
排序:對現(xiàn)行庫、歷史庫、人員庫及展示記錄等按指定條件(如用戶名或時(shí)間等)進(jìn)行排序,使感興趣的信息顯示在突出位置。
統(tǒng)計(jì)分析:對現(xiàn)行庫及歷史倉庫中的記錄,按用戶名、部門、行為類型、時(shí)間(段)、地點(diǎn)和客戶端名稱進(jìn)行單一或復(fù)合條件下的歸類統(tǒng)計(jì),以餅圖、二維表、曲線等形式直觀展示。
1.3免審功能
免審設(shè)置:插件支持對一些特殊用戶或賬號免于審計(jì)。Openfire EIM管理員既可以在全部用戶列表中選擇免審用戶,也可以通過用戶名模糊搜索進(jìn)行免審設(shè)置。
免審用(賬)戶展示:以列表視圖的方式顯示免于審計(jì)的用戶或賬戶。
面審用戶信息查看:顯示免于審計(jì)用戶的賬戶狀態(tài)及個(gè)人詳細(xì)信息。
2.1插件體系架構(gòu)
根據(jù)設(shè)計(jì)的功能及Openfire插件開發(fā)的技術(shù)特點(diǎn)[4-6],并結(jié)合MVC軟件設(shè)計(jì)模式[7],設(shè)計(jì)了如圖2所示的插件體系架構(gòu)。
從圖2可以看出,actionAuditor插件軟件架構(gòu)分為5層,從上到下依次為視圖層、控制層、服務(wù)層、模型層/資源層、以及數(shù)據(jù)庫層,層間通過TCP/IP協(xié)議通信。

圖2 插件架構(gòu)體系
視圖層:是本插件功能的web展示及人機(jī)交互層,用以顯示用戶行為記錄,以及用戶查詢、備份、存儲(chǔ)、統(tǒng)計(jì)分析等的結(jié)果,同時(shí),該層還是本插件的人機(jī)交互入口。根據(jù)設(shè)計(jì),本層文件包括 actionAuditor-backuplist.jsp、actionAuditor-export. jsp、actionAuditor_filelist.jsp等共計(jì)12個(gè)。
控制層:是本插件的業(yè)務(wù)邏輯控制層,控制諸如行為記錄、數(shù)據(jù)備份、數(shù)據(jù)分析等功能的業(yè)務(wù)邏輯實(shí)現(xiàn),路由和決定了信息在各業(yè)務(wù)模塊及流程中的走向。該層控制用戶輸入,從視圖層讀取數(shù)據(jù),調(diào)用并向服務(wù)層發(fā)送這些數(shù)據(jù),并將服務(wù)層執(zhí)行結(jié)果返回給視圖層。本插件的控制器為ActionManager.java。
服務(wù)層:是業(yè)務(wù)邏輯的具體實(shí)現(xiàn),由控制層調(diào)用。該層獲取控制層傳遞的參數(shù)和數(shù)據(jù)后,進(jìn)行加工處理,并將部分處理結(jié)果經(jīng)由控制層返回給視圖層。本插件中,該層更多的是實(shí)現(xiàn)對數(shù)據(jù)庫的查詢、修改、更新和新增等功能。本插件服務(wù)層包括 ActionAuditorService.java、ActionAuditorServiceImpl.java和ExcelUtilServlet.java。
模型層與資源層:模型層定義了視圖展示層用到的POJO對象,對象的屬性與數(shù)據(jù)庫字段對應(yīng)。本插件模型層包含Action.java與ActionFiles.java兩個(gè)文件。
資源層是本插件用到的各種腳本、圖片、lib庫等的集合,是視圖層、控制層與服務(wù)層的支持層。本插件資源層包括諸如jquery.easyui.min.js、wdatepicker.js、error-16x16.jif、servlet. jar、及jasper-complier.jar等各類支持性文件。
數(shù)據(jù)庫層:位于最低層,定義和建立了插件中的數(shù)據(jù)庫庫及表,存儲(chǔ)插件運(yùn)行時(shí)獲取和處理的各類數(shù)據(jù)。本插件定義了actionAuditor-mysql.sql腳本,在插件編譯時(shí)靜態(tài)生成諸如ofOperatin,ofbackupStoreTbl,ofMucCreation_Temp等表,而在插件運(yùn)行時(shí),一次性動(dòng)態(tài)生成諸ofOperation_bak_2015091013 0325等表。
插件運(yùn)行時(shí),這5層聯(lián)動(dòng)配合,實(shí)現(xiàn)了業(yè)務(wù)和數(shù)據(jù)的有序流動(dòng),最終以視圖和文件的形式加以展現(xiàn)。
2.2關(guān)鍵類架構(gòu)
圖3展示了為本插件設(shè)計(jì)的關(guān)鍵類及其間關(guān)系。
ActionAuditor是本插件的核心類,實(shí)現(xiàn)了 Plugin、MUCEventListener、UserEventListener和SessionEventListener 等4個(gè)接口,完成了插件環(huán)境管理、用戶行為及聊天室相關(guān)信息的記錄功能。具體地:
1)ActionAuditor類實(shí)現(xiàn)了Plugin接口的initializePlugin和destroyPlugin兩個(gè)方法,完成了插件加載時(shí)的環(huán)境初始化及插件銷毀時(shí)的資源清理工作。例如在initializePlugin(PluginManager manager,File pluginDirectory)方法中,使用Dispatcher實(shí)現(xiàn)類MUCEventDispatcher、SessionEventDispatcher 和UserEventDispatcher的addListener()方法完成了目標(biāo)事件監(jiān)聽器的注冊。

圖3 插件關(guān)鍵類架構(gòu)
2)AcitonAuditor類實(shí)現(xiàn)了 MUCEventListener接口的roomCreated(JIDroomJID)、roomDestroyed(JIDroomJID)、occupantJoined(JID roomJID,JID user,String nickname)、occupantLeft(JID roomJID,JID user)、messageReceived(JID roomJID,JIDuser,Stringnickname,Messagemessage)、roomSubjectChanged(JID roomJID,JID user,String newSubject)等方法,完成了對聊天室新建、銷毀、人員進(jìn)出、人員昵稱修改、消息接收、聊天室主題修改等在內(nèi)的各類事件的監(jiān)聽及信息的記錄。例如在重載的occupantJoined(JID roomJID,JID user,String nickname)方法中,插件通過解析roomJID參數(shù)攜帶的聊天室信息、user參數(shù)攜帶的用戶信息、以及nickname參數(shù)攜帶的用戶昵稱等信息,截獲用戶登入聊天室這一行為,經(jīng)過序列化處理后,將相關(guān)信息傳入ActionManager類的行為存儲(chǔ)業(yè)務(wù)模塊。
3)ActionAuditor類實(shí)現(xiàn)了 UserEventListener接口的userCreated(Useruser,Map
4)ActionAuditor類實(shí)現(xiàn)了SessionEventListener接口的sessionCreated(Sessionsession)、sessionDestroyed(Session session)、anonymousSessionCreated、anonymousSessionDestroyed (Session session)、resourceBound(Session session)等方法,用于監(jiān)聽并記錄注冊用戶上下線、游客上下線、session終端綁定等行為。例如在重載的sessionCreated(Session session)函數(shù)中,插件在分析并序列化處理了參數(shù)session攜帶的用戶ip、服務(wù)器ip、最近登錄時(shí)間等等信息后,將其傳入ActionManager類的行為存儲(chǔ)業(yè)務(wù)模塊。
此外,ActionAuditor類繼承于WebManger,具有豐富的屬性與方法,能取得包括XMPPServer、UserManager、GroupManager、LockOutManager、SecurityAuditManager、RosterManager等在內(nèi)的眾多實(shí)用類,借助其中方法,本插件能進(jìn)一步拓展并實(shí)現(xiàn)更為豐富的業(yè)務(wù)功能。
ActionManager類是本插件的業(yè)務(wù)路由器,繼承于WebBean類,接收并加工ActionAuditor類及前臺(tái)頁面?zhèn)鱽淼男畔ⅲ刂菩畔⒑蜆I(yè)務(wù)流程的走向。該類定義了getActionsCountOfToday()、LogResults(Collection
ActionAuditorServiceImpl類是本插件的實(shí)現(xiàn)類和功能執(zhí)行主體,其中定義的方法是ActionManager業(yè)務(wù)邏輯的具體實(shí)現(xiàn),這些方法接收并處理ActionManager實(shí)例調(diào)用中傳來的參數(shù),處理過程中,與數(shù)據(jù)庫進(jìn)行讀寫交互,進(jìn)而實(shí)現(xiàn)行為數(shù)據(jù)持久化。
ExcelUtilServlet類也是插件業(yè)務(wù)實(shí)現(xiàn)類,用于行為記錄的導(dǎo)出。該類在重載的HttpServlet類doGet方法中,生成用戶行為IO數(shù)據(jù)流并寫入緩存,當(dāng)用戶在前臺(tái)頁面執(zhí)行導(dǎo)出操作時(shí),瀏覽器即刻截取該request并調(diào)用該類,隨之將緩存中的數(shù)據(jù)流寫入Excel文件。
Action和ActionFiles是POJO類,輔助ActionAuditorServ iceImpl類實(shí)現(xiàn)行為記錄的web顯示。這兩個(gè)類的屬性名稱和類型與視圖及數(shù)據(jù)庫中的相應(yīng)字段一致。根據(jù)需要,這兩個(gè)類均實(shí)現(xiàn)了其中屬性的get/set方法。
上圖展示了本插件的6個(gè)關(guān)鍵類,這些類在實(shí)例中定義了業(yè)務(wù)邏輯和實(shí)現(xiàn)方法,在實(shí)例間建立了繼承、實(shí)現(xiàn)、依賴、關(guān)聯(lián)等關(guān)系,它們相互配合實(shí)現(xiàn)了本插件功能。
基于本插件功能、實(shí)現(xiàn)技術(shù)與算法,結(jié)合Openfire服務(wù)器軟件架構(gòu)[8,9],設(shè)計(jì)了ofOperation、ofOperation_bak_yyyymmdd_h hhmmss、ofBackupStoreTbl、ofMucCD_temp、ofNotAudit_bak、ofN otAudit等共計(jì)6個(gè)(類)數(shù)據(jù)表。其中:
ofOperation:存儲(chǔ)用戶行為現(xiàn)行記錄,字段包括記錄ID,行為類型、用戶名、用戶IP、行為發(fā)生時(shí)間及用戶終端資源等,該表通過 OPERATION和解析的 MUCNAME值分別與表ofOperation_bak_yyyymmdd_hhmmss及ofMucCD_temp相關(guān)聯(lián)。
ofOperation_bak_yyyymmdd_hhmmss:用戶行為備份表,存儲(chǔ)自上次備份以來的所有現(xiàn)行記錄,每次備份單獨(dú)成一表,表名由字符串“ofOperation_bak”加備份時(shí)間組成,時(shí)間精確到時(shí)分秒hhmmss。該(類)表在執(zhí)行備份操作時(shí)由系統(tǒng)動(dòng)態(tài)生成。
ofBackupStoreTbl:行為備份記錄表,存儲(chǔ)每個(gè)備份的備份表名、記錄數(shù)和備份日期。
ofMucCD_temp:臨時(shí)表,為配合聊天室相關(guān)功能而建,其初始數(shù)據(jù)來自于ofMucRoom。當(dāng)聊天室創(chuàng)建或銷毀行為發(fā)生時(shí),該表存儲(chǔ)創(chuàng)建或銷毀的聊天室名稱、JID、標(biāo)識(shí)(創(chuàng)建:1,銷毀:0)等信息,當(dāng)創(chuàng)建或銷毀行為被存入ofOperation表后,該表中的相關(guān)記錄被刪除。
ofNotAudit:存儲(chǔ)免審計(jì)用戶,表字段包括用戶名及其免審狀態(tài)。該表初始數(shù)據(jù)來自ofUser表。
ofNotAudit_bak:免審計(jì)用戶臨時(shí)存儲(chǔ)表,字段同ofNotAudit。當(dāng)用戶免審計(jì)狀態(tài)設(shè)置成功后,該表即被清空。
本插件用于對Openfire EIM用戶線上行為進(jìn)行監(jiān)控和審計(jì),因此,用戶行為記錄是該插件的基礎(chǔ)性功能,是插件對用戶行為進(jìn)行審計(jì)與統(tǒng)計(jì)分析的源頭。根據(jù)功能規(guī)劃,行為記錄模塊要記錄用戶的上線、下線、創(chuàng)建聊天室、登入聊天室、登出聊天室、銷毀聊天室、修改聊天室主題、修改用戶昵稱、新增用戶、刪除用戶、修改用戶等行為,同時(shí)要記錄這些行為相關(guān)的人員、時(shí)間、地點(diǎn)、終端等信息。本節(jié)將對該模塊的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行分析。
4.1模塊結(jié)構(gòu)
根據(jù)Openfire插件開發(fā)與部署的技術(shù)特點(diǎn),同時(shí)結(jié)合OOD(Object-Oriented Design)[10-13]及SD(Structured Design)[14,15]設(shè)計(jì)方法,為便于實(shí)現(xiàn),將本模塊劃分為了5個(gè)子模塊,其中:
環(huán)境初始化及清理子模塊:插件運(yùn)行前環(huán)境實(shí)例構(gòu)造及初始變量定義,同時(shí)在插件卸載時(shí),運(yùn)行環(huán)境清理及資源釋放。
注冊監(jiān)聽器子模塊:環(huán)境實(shí)例及初始變量定義完成后,為監(jiān)聽的幾類事件注冊監(jiān)聽器。
監(jiān)聽并獲取用戶行為記錄子模塊:當(dāng)監(jiān)聽事件一經(jīng)發(fā)生,便即刻觸發(fā)本模塊捕獲事件及行為信息。根據(jù)事件及行為不同,本模塊主體功能在不同的接口重載函數(shù)中實(shí)現(xiàn)。
解析行為記錄子模塊:從捕獲的事件及行為信息中解析目標(biāo)數(shù)據(jù),對于無法通過解析直接得到的數(shù)據(jù),則通過前臺(tái)與后臺(tái)運(yùn)算相結(jié)合的方式獲得。
記入數(shù)據(jù)庫子模塊:對于通過解析能直接獲取的目標(biāo)數(shù)據(jù),本模塊直接將其寫入數(shù)據(jù)庫,而對于無法直接獲取的數(shù)據(jù),則待前后臺(tái)運(yùn)算后結(jié)束后補(bǔ)寫入庫,從而實(shí)現(xiàn)某一行為數(shù)據(jù)的完整記錄。
4.2主要函數(shù)及其關(guān)系
圖4是本模塊主要函數(shù)交互圖,反映了模塊主要函數(shù)間的相互調(diào)用關(guān)系及信息在其間的流轉(zhuǎn)情況。首先,ActionAuditor對象調(diào)用initializePlugin函數(shù)完成插件初始化。隨后,初始化成功后的 監(jiān)聽 器對 象 在 sessionCreated(Session session)、sessionDestroyed(Session session)、roomCreated(JID roomJID)、roomDestroyed(JID roomJID)等函數(shù)中捕獲用戶上線、下線、創(chuàng)建聊天室、銷毀聊天室等目標(biāo)信息,并同步將這些信息回傳給ActionAuditor對象。ActionAuditor對象在接收到這些信息后利用 getRoomNames(int cdFlag)、queryIPbyUserName(Collection< Map

圖4 典型模塊主要函數(shù)關(guān)系圖
4.3難點(diǎn)
本模塊中,聊天室創(chuàng)建行為的記錄獲取是難點(diǎn)之一。這是由于在聊天室創(chuàng)建事件捕獲中,僅能得到聊天室JID及創(chuàng)建時(shí)間,而創(chuàng)建人JID及其終端信息卻無法直接獲得。此外,與普通用戶在客戶端創(chuàng)建聊天室不同,管理員通過前臺(tái)Web創(chuàng)建聊天室時(shí),Openfire沒有將管理員信息記入相關(guān)表中,這又無形中增加了記錄獲取難度。鑒于此,為實(shí)現(xiàn)對所有用戶聊天室創(chuàng)建行為的全記錄,本插件采用了前臺(tái)操作觸發(fā)與后臺(tái)查找關(guān)聯(lián)相結(jié)合的策略,間接獲得了聊天室創(chuàng)建人JID及其終端信息,從而完整的記錄了聊天室創(chuàng)建行為信息。具體算法如圖5所示。

圖5 典型模塊聊天室創(chuàng)建行為記錄算法
當(dāng)用戶創(chuàng)建聊天室時(shí),插件首先捕獲到的是聊天室JID及創(chuàng)建時(shí)間,在通過合法性檢查后,將這兩個(gè)信息存入ofOperation表中作為此次創(chuàng)建行為記錄的一部分。隨后,當(dāng)用戶在前臺(tái)將光標(biāo)焦點(diǎn)落在本插件首頁時(shí),將觸發(fā)插件進(jìn)行信息補(bǔ)全機(jī)制,插件將通過查找、合法性檢查、數(shù)據(jù)解析、角色判斷等一系列計(jì)算,將此次聊天室創(chuàng)建行為的其余信息補(bǔ)寫入先前記錄。
配置plugin.xml文件,在IDE eclipse中編譯,最終生成用戶行為審計(jì)插件actionAuditor。目前,該插件已上線運(yùn)行10個(gè)多月,如圖6所示。自運(yùn)行以來,插件已累計(jì)記錄用戶各類行為8萬余條,備份3次,生成存儲(chǔ)記錄2個(gè),統(tǒng)計(jì)查詢50余次,設(shè)置免審計(jì)用戶20人次。actionAuditor插件已成為本單位Openfire EIM管理員監(jiān)測與統(tǒng)計(jì)分析用戶線上行為的主要工具。

圖6 插件運(yùn)行示意圖
Openfire是基于XMPP協(xié)議的EIM服務(wù)器端的一個(gè)實(shí)現(xiàn),是實(shí)時(shí)的基于web的即時(shí)消息傳輸平臺(tái),能為企業(yè)用戶提供溝通服務(wù)。Openfire插件式開發(fā)和部署體系靈活高效,為企業(yè)開發(fā)個(gè)性化業(yè)務(wù)功能提供了良好技術(shù)支撐。
本文針對上海航天控制技術(shù)研究所對Openfire EIM用戶線上行為的監(jiān)測與審計(jì)需求,基于Openfire服務(wù)器設(shè)計(jì)和開發(fā)了用戶行為審計(jì)插件actionAuditor。運(yùn)行結(jié)果表明,插件能實(shí)時(shí)記錄用戶線上行為,能幫助Openfire EIM管理員查詢、備份、存儲(chǔ)、統(tǒng)計(jì)分析用戶行為數(shù)據(jù),能查詢和設(shè)置免審計(jì)用戶,插件滿足了該單位的功能預(yù)期,提升了Openfire EIM監(jiān)管水平和效率,促進(jìn)了Openfire軟件在企業(yè)員工溝通交流中發(fā)揮更大作用。
此外,本插件的設(shè)計(jì)與實(shí)現(xiàn)還說明,基于openfire服務(wù)器開發(fā)的插件能極大豐富openfire應(yīng)用生態(tài)圈,能拓展這一即時(shí)通訊軟件的業(yè)務(wù)應(yīng)用范圍,使其在企業(yè)中發(fā)揮更大作用,而不僅僅只是一個(gè)即時(shí)消息傳輸平臺(tái)。下一步將在本插件已有功能基礎(chǔ)上設(shè)計(jì)和實(shí)現(xiàn)消息審計(jì)功能。
[1]Dave Cridland.Openfire 3.10.3[EB/OL].[2015-12-20].http:// www.igniterealtime.org/builds/openfire/docs/latest/documenttation/index.html.
[2]付莎.基于XMPP協(xié)議企業(yè)級IM的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2009.
[3]苑為,陶卓彬.Openfire二次開發(fā)問題分析及解決[J].電腦編程技巧與維護(hù),2011(6):53-55.
[4]潘鳳,王華軍,苗放,等.基于XMPP協(xié)議和Openfire的即時(shí)通信系統(tǒng)的開發(fā)[J].計(jì)算機(jī)時(shí)代,2008(3):85-87.
[5]Mayank Sharma.Openfire Administration:A practical stepby-step guide to rolling out a secure Instant Messaging service over your network by Mayank Sharma[M].Birmingham: packt publishing,2008.
[6]周家賢.基于XMPP協(xié)議和Openfire框架的輕量級即時(shí)通信系統(tǒng)服務(wù)端設(shè)計(jì)與實(shí)現(xiàn)[D].昆明:云南大學(xué),2014.
[7]戴克(Paul Deck).Spring MVC學(xué)習(xí)指南[M].林儀明,崔毅,譯.北京:人民郵電出版社,2015.
[8]高翔龍.高性能的RTC服務(wù)器OpenFire[EB/OL].(2015-11-07). http://gao-xianglong.iteye.com/blog/1944234..
[9]hjm306846213.openfire處理消息流程及openfire詳細(xì)信息[EB/OL].[2015-11-22].http://wenku.baidu.com/linkurl= lZbrqpSh1MmBfHEc84BJnvVMSgMeN3SjNj7dEB--bAzhdo1Zj_MQV0aT4bMz5DriaIvI1Uak4g2EW-9HNVXNPpz-ZveOLGE-wJrm_psXKAdK..
[10]Grady Booch,Robert A.Maksimchuk,Michael W.Engle,等.面向?qū)ο蠓治雠c設(shè)計(jì)[M].3版.王海鵬,潘加宇,譯.北京:電子工業(yè)出版社,2012.
[11]楊貞萍,劉海峰,何曉苑,等.面向?qū)ο笏枷朐跓o線電系統(tǒng)設(shè)計(jì)中的應(yīng)用[J].軟件導(dǎo)刊,2015(2):31-34.
[12]李萍.城市地下管線信息管理系統(tǒng)設(shè)計(jì)與開發(fā)[J].南京郵電大學(xué)學(xué)報(bào),2013(4):8-11.
[13]譚大海,劉興勇.面向?qū)ο蠓治雠c設(shè)計(jì)[J].科技信息,2014 (10):160.
[14]魯?shù)拢幊踢壿嬇c結(jié)構(gòu)化程序設(shè)計(jì)(原書第三版)[M].杜大鵬,龔小平,管英強(qiáng),等譯.北京:水利水電出版社,2004.
[15]張緒玉.結(jié)構(gòu)化面試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶:重慶理工大學(xué),2013.
Design and implementation of users'action monitoring and auditing plugin based-on openfire server
LIU Xiao-guang,LIU Jian-feng,LAN Jie
(Shanghai Institute of Spaceflight Control Technology,Shanghai 201109,China)
Aimed on the demand of monitoring and auditing Openfire EIM users'action,designed and implemented one plugin actionAuditor to satisfy it.The plugin was composed of 3 modules,and could write-in,search,save,backup,expose,sort and statically analyze the actions,and also could set not-audited accounts.The plugin had advantages of small-size,simple deployment and easy-to-use interface.A long time of usage verified its stability and correctness.In this paper,its function design, architecture design,database design were detailed and elaborated,and one typical module was specially analyzed.
openfire;users'action;monitoring and auditing;plugin;design and implementation
TN91
A
1674-6236(2016)13-0007-06
2016-02-04稿件編號:201602017
國家科技重大專項(xiàng)資助項(xiàng)目(2011ZX04004-071)
劉曉光(1976—),男,山西祁縣人,博士,工程師。研究方向:企業(yè)信息化、信息系統(tǒng)開發(fā)技術(shù)。