FileZilla FTP服務(wù)器源代碼分析(4)
FileZilla FTP服務(wù)器源代碼分析:FileZilla是一款免費(fèi)而且開源的FTP工具。包括FileZilla Client,F(xiàn)ileZilla Server兩個(gè)版本。FileZilla Server只提供了windows系統(tǒng)下的版本,我們要將本地的網(wǎng)站網(wǎng)頁文件上傳到網(wǎng)站服務(wù)器,或從服務(wù)器下載網(wǎng)頁文件,只需FileZilla Client客戶端版本就可以了。FileZilla FTP服務(wù)器源代碼分析
- < typetype="text/javascript"> < srcsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> < typetype="text/javascript">
- < srcsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> WM_FILEZILLA_SERVERMSG:
wParam代表大的分類, 即是何種消息, lParam是附加的信息, 具體根據(jù)wParam的不同而不同。
wParam有以下幾種:
- FSM_STATUSMESSAGE:
記錄當(dāng)前活動(dòng), 并將活動(dòng)信息在admin窗口上顯示, 并且記錄到log文件中(需要設(shè)置相應(yīng)選項(xiàng)),打開admin窗口,上半部分顯示的內(nèi)容就是從里來的。
lParam帶的是t_statusmsg結(jié)構(gòu), 里面記錄了當(dāng)前活動(dòng)的user, ip, time, message等
如:
- (000001) 2006-7-23 16:03:56 - (not logged in) (127.0.0.1)> USER whg
- (000001) 2006-7-23 16:03:59 - (not logged in) (127.0.0.1)> 331 Password required for whg
- (000001) 2006-7-23 16:04:05 - (not logged in) (127.0.0.1)> PASS *
- (000001) 2006-7-23 16:04:11 - robert (127.0.0.1)> 230 Logged on
- FSM_CONNECTIONDATA:
這是跟connection相關(guān)的消息,如新建了連接,用戶登錄成功,用戶退出等等。信息發(fā)送到admin窗口,顯示在admin窗口的下半部分,即ID、Account、IP等內(nèi)容。
lParam帶的是t_connop結(jié)構(gòu), 結(jié)構(gòu)中成員op代表更詳細(xì)的connection分類,可能值有:
- USERCONTROL_CONNOP_ADD
有新用戶進(jìn)行連接(還未登錄)
- USERCONTROL_CONNOP_CHANGEUSER
登錄成功
- USERCONTROL_CONNOP_REMOVE
用戶退出,或者因?yàn)閠ime被強(qiáng)行注銷
- USERCONTROL_CONNOP_TRANSFERINIT
傳輸開始或結(jié)束, 即與客戶端有數(shù)據(jù)通訊,如開始傳輸數(shù)據(jù),ls命令也會(huì)導(dǎo)致數(shù)據(jù)的傳輸。
- USERCONTROL_CONNOP_TRANSFEROFFSETS
顯示傳輸進(jìn)度,如在進(jìn)行文件傳輸?shù)倪^程中,需要向admin窗口顯示當(dāng)前的傳輸字節(jié)數(shù),傳輸速率等
所有的這些信息都會(huì)在admin窗口的下半部分中顯示。
- FSM_THREADCANQUIT:
系統(tǒng)退出時(shí)會(huì)發(fā)出這些消息,系統(tǒng)在處理這個(gè)消息時(shí),會(huì)結(jié)束線程
- FSM_SEND:
系統(tǒng)只要發(fā)送了數(shù)據(jù),都會(huì)發(fā)送這個(gè)消息,并且在admin窗口的狀態(tài)條中顯示當(dāng)前用戶用發(fā)送了多少數(shù)據(jù)
- FSM_RECV:
系統(tǒng)只要接收到數(shù)據(jù),都會(huì)發(fā)送這個(gè)消息,并且在admin窗口的狀態(tài)條中顯示當(dāng)前用戶用收到了多少數(shù)據(jù)
可見,CServer處理的消息應(yīng)該只是一些admin或者status消息,這些消息應(yīng)該在線程listen, accep處理相應(yīng)的ftp請(qǐng)求時(shí)發(fā)出。真正的FTP處理并不在這里。
【編輯推薦】