欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)及方法與流程

文檔序號:12478417閱讀:518來源:國知局
一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)及方法與流程

本發(fā)明涉及FTP文件傳輸技術領域,特別是一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)及方法。



背景技術:

軟件系統(tǒng)在使用FTP提供文件上傳服務時,為了提升用戶體驗,往往需要在服務器端獲取并顯示文件上傳進度??蒄TP服務器一般不提供獲取文件上傳進度的渠道,除非自行開發(fā)或者改造FTP服務器。而開發(fā)和改造FTP服務器不僅技術難度大研發(fā)成本高,而且穩(wěn)定性、升級維護方面都存在較大的風險。

有鑒于此,本發(fā)明人提出一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)及方法。



技術實現(xiàn)要素:

本發(fā)明為解決上述問題,提供了一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)及方法,通過基于操作系統(tǒng)內(nèi)核鉤子(HOOK)技術,捕獲系統(tǒng)API對FTP目錄下文件的創(chuàng)建、打開、寫操作,實現(xiàn)對FTP服務器端文件上傳進度的監(jiān)控,避免了開發(fā)改造FTP服務器的風險和成本,而且用戶體驗好,實時性和通用性強。

為實現(xiàn)上述目的,本發(fā)明采用的技術方案為:

一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng),包括接口模塊、監(jiān)控模塊和HOOK模塊;接口模塊和HOOK模塊分別與監(jiān)控模塊連接,所述的接口模塊、監(jiān)控模塊和HOOK模塊與FTP服務器部署在同一主機上;

所述接口模塊包括添加監(jiān)控接口、進度通知接口和移除監(jiān)控接口,所述添加監(jiān)控接口、進度通知接口和移除監(jiān)控接口分別與目標系統(tǒng)連接;

所述添加監(jiān)控接口用于接收來自目標系統(tǒng)的待上傳目標文件信息和添加監(jiān)控指令,并將待上傳目標文件信息和添加監(jiān)控指令轉發(fā)至監(jiān)控模塊,還用于從監(jiān)控模塊返回給目標系統(tǒng)受控文件ID,該ID為移除監(jiān)控接口和進度通知接口唯一識別的受控文件參數(shù);所述的目標文件信包括受控文件路徑、大小及名稱信息;

所述進度通知接口用于將來自監(jiān)控模塊的上傳進度信息轉發(fā)給目標系統(tǒng),上傳進度信息包括受控文件ID、上傳進度、已上傳文件大小和當前狀態(tài)信息;

所述移除監(jiān)控接口用于將來自目標系統(tǒng)的移除監(jiān)控指令轉發(fā)至監(jiān)控模塊;

所述監(jiān)控模塊內(nèi)存儲有受控文件信息列表,該受控文件信息表包括了所有已添加監(jiān)控的待上傳的目標文件信息,目標文件信息添加至受控文件信息表后成為受控文件信息,監(jiān)控模塊用于根據(jù)接口模塊提交的添加監(jiān)控和刪除監(jiān)控指令控制受控文件信息表的增、刪操作,還用于根據(jù)HOOK模塊捕獲到的操作狀態(tài)更新維護文件句柄與受控文件信息之間的映射關系,以根據(jù)文件句柄進行文件上傳進度的監(jiān)控和進度信息更新操作;

所述HOOK模塊用于捕獲FTP服務器進程對操作系統(tǒng)文件操作相關內(nèi)核API的調(diào)用信息,并將捕獲的調(diào)用信息上報給監(jiān)控模塊,所述調(diào)用信息包括文件打開、寫入和關閉操作信息;

所述的目標系統(tǒng)是一存儲了待上傳的目標文件信息、可向監(jiān)控模塊發(fā)出添加或移除監(jiān)控指令并接收監(jiān)控模塊文件上傳進度信息、能夠向FTP客戶端發(fā)送目標文件上傳請求的控制系統(tǒng)。

一種監(jiān)控FTP服務器端文件上傳進度方法,通過上述監(jiān)控系統(tǒng)進行監(jiān)控操作,其包括以下步驟:

步驟一,初始化:啟動監(jiān)控系統(tǒng),監(jiān)控模塊根據(jù)FTP服務器進程名稱定時檢測主機進程列表,以獲取FTP服務器進程ID;

步驟二,目標系統(tǒng)添加監(jiān)控:目標系統(tǒng)調(diào)用添加監(jiān)控接口,將待上傳目標文件信息發(fā)送到監(jiān)控模塊,并返回給目標系統(tǒng)受控文件ID進行保存,如果FTP客戶端應答失敗,則目標系統(tǒng)調(diào)用監(jiān)控系統(tǒng)的移除監(jiān)控接口將目標文件信息從受控文件信息列表中移除,若應答成功,則執(zhí)行步驟三;

步驟三,監(jiān)控執(zhí)行:接口模塊的添加監(jiān)控接口將來自于目標系統(tǒng)的目標文件信息傳遞到監(jiān)控模塊,監(jiān)控模塊遍歷受控文件信息列表,判斷目標文件信息是否已經(jīng)受控,如果已經(jīng)受控,則返回受控文件所對應的受控文件ID至目標系統(tǒng),否則,將目標文件信息添加到受控文件信息列表中成為受控文件信息,再返回一個受控文件ID至目標系統(tǒng),同時添加一個受控文件ID至受控文件信息項的映射;

步驟四,F(xiàn)TP客戶端上傳目標文件:目標系統(tǒng)向FTP發(fā)送目標文件上傳請求,請求中包含F(xiàn)TP服務器地址、上傳路徑以及受控文件信息,F(xiàn)TP客戶端收到請求后向FTP服務器發(fā)送應答,如果應答成功則開始向FTP服務器上傳目標文件;

步驟五,F(xiàn)TP服務器接收文件:FTP客戶端接收并存儲FTP客戶端上傳的目標文件;

步驟六,上傳進度監(jiān)控:HOOK模塊監(jiān)控主機系統(tǒng)內(nèi)核API中打開文件/寫入文件/關閉文件API的調(diào)用,獲取調(diào)用進程的進程ID,將進程ID與FTP服務器進程進行比對,若進程ID與FTP服務器進程相等,則調(diào)用系統(tǒng)內(nèi)核API完成操作后將調(diào)用結果推送給監(jiān)控系統(tǒng)的監(jiān)控模塊后返回;否則,直接調(diào)用系統(tǒng)內(nèi)核API完成操作后返回,監(jiān)控系統(tǒng)監(jiān)控模塊根據(jù)HOOK模塊推送的調(diào)用信息,更新受控文件信息的狀態(tài),并計算受控文件的上傳進度,最后監(jiān)控模塊將計算出的上傳進度通過進度通知接口發(fā)送給目標系統(tǒng)。

所述步驟6更新受控文件信息的狀態(tài)具體操作如下:

當監(jiān)控模塊收到文件打開調(diào)用信息時,根據(jù)調(diào)用信息中的文件路徑匹配受控文件信息列表,找到對應的受控文件,添加文件句柄到受控文件信息項的映射關系,更新文件狀態(tài)為打開;

當監(jiān)控模塊收到文件寫入調(diào)用信息時,根據(jù)文件句柄找到受控文件信息項,并將調(diào)用信息中的寫入數(shù)據(jù)大小累加更新到受控文件信息中,更新文件狀態(tài)為正常,并根據(jù)當前寫入數(shù)據(jù)大小和文件總大小計算上傳進度;

當監(jiān)控模塊收到文件關閉調(diào)用信息時,根據(jù)句柄找到受控文件信息,更新文件狀態(tài)為斷開,同時移除文件句柄與受控文件信息的映射關系。

本發(fā)明的有益效果是:通過基于操作系統(tǒng)內(nèi)核鉤子(HOOK)技術,實時監(jiān)控FTP目錄目標文件的創(chuàng)建、打開和寫入操作,換算成進度信息推送給目標系統(tǒng),實現(xiàn)對FTP服務器端文件上傳進度的監(jiān)控;本發(fā)明不僅避免了開發(fā)改造FTP服務器的風險和成本,而且與具體FTP服務器選型無關,具有進度準確,實時性好,通用性強的特點,適用于所有需要在服務端統(tǒng)計和計算文件上傳進度的場景。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:

圖1為本發(fā)明種監(jiān)控FTP服務器端文件上傳進度的服務器的結構框圖;

圖2是本發(fā)明工作流程簡圖;

圖3受控文件信息表結構圖。

具體實施方式

為了使本發(fā)明所要解決的技術問題、技術方案及有益效果更加清楚、明白,以下結合附圖及實施例對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

如圖1所示,本發(fā)明揭示的一種監(jiān)控FTP服務器端文件上傳進度的系統(tǒng),包括接口模塊、監(jiān)控模塊和HOOK模塊;接口模塊和HOOK模塊分別與監(jiān)控模塊連接,所述的接口模塊、監(jiān)控模塊和HOOK模塊與FTP服務器部署在同一主機上;

所述接口模塊包括添加監(jiān)控接口、進度通知接口和移除監(jiān)控接口,所述添加監(jiān)控接口、進度通知接口和移除監(jiān)控接口分別與目標系統(tǒng)連接;

所述添加監(jiān)控接口用于接收來自目標系統(tǒng)的待上傳目標文件信息和添加監(jiān)控指令,并將待上傳目標文件信息和添加監(jiān)控指令轉發(fā)至監(jiān)控模塊,還用于從監(jiān)控模塊返回給目標系統(tǒng)受控文件ID,該ID為移除監(jiān)控接口和進度通知接口唯一識別的受控文件參數(shù);所述的目標文件信包括受控文件路徑、大小及名稱信息;

所述進度通知接口用于將來自監(jiān)控模塊的上傳進度信息轉發(fā)給目標系統(tǒng),上傳進度信息包括受控文件ID、上傳進度、已上傳文件大小和當前狀態(tài)信息;

所述移除監(jiān)控接口用于將來自目標系統(tǒng)的移除監(jiān)控指令轉發(fā)至監(jiān)控模塊;

所述監(jiān)控模塊內(nèi)存儲有受控文件信息列表,該受控文件信息表包括了所有已添加監(jiān)控的待上傳的目標文件信息,目標文件信息添加至受控文件信息表后成為受控文件信息,監(jiān)控模塊用于根據(jù)接口模塊提交的添加監(jiān)控和刪除監(jiān)控指令控制受控文件信息表的增、刪操作,還用于根據(jù)HOOK模塊捕獲到的操作狀態(tài)更新維護文件句柄與受控文件信息之間的映射關系,以根據(jù)文件句柄進行文件上傳進度的監(jiān)控和進度信息更新操作;

所述HOOK模塊用于捕獲FTP服務器進程對操作系統(tǒng)文件操作相關內(nèi)核API的調(diào)用信息,并將捕獲的調(diào)用信息上報給監(jiān)控模塊,所述調(diào)用信息包括文件打開、寫入和關閉操作信息;

所述的目標系統(tǒng)是一存儲了待上傳的目標文件信息、可向監(jiān)控模塊發(fā)出添加或移除監(jiān)控指令并接收監(jiān)控模塊文件上傳進度信息、能夠向FTP客戶端發(fā)送目標文件上傳請求的控制系統(tǒng)。

所述受控文件信息表的增加操作指監(jiān)控模塊搜索受控文件信息列表,判斷目標文件信息是否已經(jīng)受控,如果已經(jīng)受控,則返回受控文件所對應的受控文件ID至目標系統(tǒng),否則,將目標文件信息添加到受控文件信息列表中成為受控文件信息,再返回一個受控文件ID至目標系統(tǒng),同時添加一個受控文件ID至受控文件信息的映射;

所述受控文件信息表的刪除操作是指監(jiān)控模塊根據(jù)接口模塊移除監(jiān)控指令中的受控文件ID,搜索受控文件ID與受控文件信息的映射,找到對應的映射關系并刪除,同時將受控文件ID對應的受控文件信息項從受控文件信息表中刪除;

所述受控文件信息表的進度信息更新操作是指監(jiān)控模塊接受HOOK模塊上報的文件操作通知,根據(jù)文件操作通知中的文件句柄、文件路徑信息,更新對應的文件信息表項的文件上傳狀態(tài)和進度。

所述更新文件信息表項的文件上傳狀態(tài)和進度是指,如果是文件打開操作,則根據(jù)文件路徑搜索受控文件信息表,找到對應受控文件信息,更新文件上傳狀態(tài)為打開,并添加文件句柄到受控文件信息表的映射關系;如果是文件寫入操作,則根據(jù)文件句柄和文件句柄與受控文件信息表的映射關系,找到對應文件信息表,更新文件上傳狀態(tài)為寫入,同時更新寫入的數(shù)據(jù)量、當前文件大小和當前進度;如果是文件關閉操作,則根據(jù)文件句柄與受控文件信息表的映射關系,更新文件上傳狀態(tài)為關閉,同時刪除文件句柄和文件句柄與受控文件信息表的映射關系。

如圖2所示,采用上述監(jiān)控FTP服務器端文件上傳進度的系統(tǒng)執(zhí)行的監(jiān)控FTP服務器端文件上傳進度方法,其包括以下步驟:

步驟一,初始化:啟動監(jiān)控系統(tǒng),監(jiān)控模塊根據(jù)FTP服務器進程名稱定時檢測主機進程列表,以獲取FTP服務器進程ID;

步驟二,目標系統(tǒng)添加監(jiān)控:目標系統(tǒng)調(diào)用添加監(jiān)控接口,將待上傳目標文件信息發(fā)送到監(jiān)控模塊,并返回給目標系統(tǒng)受控文件ID進行保存,如果FTP客戶端應答失敗,則目標系統(tǒng)調(diào)用監(jiān)控系統(tǒng)的移除監(jiān)控接口將目標文件信息從受控文件信息列表中移除,若應答成功,則執(zhí)行步驟三;

步驟三,監(jiān)控執(zhí)行:接口模塊的添加監(jiān)控接口將來自于目標系統(tǒng)的目標文件信息傳遞到監(jiān)控模塊,監(jiān)控模塊遍歷受控文件信息列表,判斷目標文件信息是否已經(jīng)受控,如果已經(jīng)受控,則返回受控文件所對應的受控文件ID至目標系統(tǒng),否則,將目標文件信息添加到受控文件信息列表中成為受控文件信息,再返回一個受控文件ID至目標系統(tǒng),同時添加一個受控文件ID至受控文件信息項的映射;參照3所示,為受控文件信息列表的結構圖;

步驟四,F(xiàn)TP客戶端上傳目標文件:目標系統(tǒng)向FTP發(fā)送目標文件上傳請求,請求中包含F(xiàn)TP服務器地址、上傳路徑以及受控文件信息,F(xiàn)TP客戶端收到請求后向FTP服務器發(fā)送應答,如果應答成功則開始向FTP服務器上傳目標文件;

步驟五,F(xiàn)TP服務器接收文件:FTP客戶端接收并存儲FTP客戶端上傳的目標文件;

步驟六,上傳進度監(jiān)控:HOOK模塊監(jiān)控主機系統(tǒng)內(nèi)核API中打開文件/寫入文件/關閉文件API的調(diào)用,獲取調(diào)用進程的進程ID,將進程ID與FTP服務器進程進行比對,若進程ID與FTP服務器進程相等,則調(diào)用系統(tǒng)內(nèi)核API完成操作后將調(diào)用結果推送給監(jiān)控系統(tǒng)的監(jiān)控模塊后返回;否則,直接調(diào)用系統(tǒng)內(nèi)核API完成操作后返回,監(jiān)控系統(tǒng)監(jiān)控模塊根據(jù)HOOK模塊推送的調(diào)用信息,更新受控文件信息的狀態(tài),并計算受控文件的上傳進度,最后監(jiān)控模塊將計算出的上傳進度通過進度通知接口發(fā)送給目標系統(tǒng)。

所述步驟6更新受控文件信息的狀態(tài)具體操作如下:

當監(jiān)控模塊收到文件打開調(diào)用信息時,根據(jù)調(diào)用信息中的文件路徑匹配受控文件信息列表,找到對應的受控文件,添加文件句柄到受控文件信息項的映射關系,更新文件狀態(tài)為打開;

當監(jiān)控模塊收到文件寫入調(diào)用信息時,根據(jù)文件句柄找到受控文件信息項,并將調(diào)用信息中的寫入數(shù)據(jù)大小累加更新到受控文件信息中,更新文件狀態(tài)為正常,并根據(jù)當前寫入數(shù)據(jù)大小和文件總大小計算上傳進度;

當監(jiān)控模塊收到文件關閉調(diào)用信息時,根據(jù)句柄找到受控文件信息,更新文件狀態(tài)為斷開,同時移除文件句柄與受控文件信息的映射關系。

上述說明示出并描述了本發(fā)明的優(yōu)選實施例,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文發(fā)明構想范圍內(nèi),通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權利要求的保護范圍內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
遵化市| 法库县| 莱州市| 晋州市| 寻甸| 城口县| 垣曲县| 广安市| 葵青区| 炉霍县| 桐庐县| 建德市| 陵川县| 台南市| 富民县| 梅州市| 进贤县| 津南区| 临澧县| 台南县| 自贡市| 嘉义市| 车险| 陈巴尔虎旗| 西昌市| 敦化市| 天津市| 嘉义市| 株洲县| 山阳县| 佛坪县| 龙川县| 建瓯市| 大同市| 陕西省| 扬州市| 揭西县| 泽普县| 汽车| 华阴市| 济南市|