FTPDaemonCore.h
资源名称:warftpd.zip [点击查看]
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:8k
源码类别:
Ftp客户端
开发平台:
Visual C++
- // This is part of the WAR SOFTWARE SERIES initiated by Jarle Aase
- // Copyright 1996 by Jarle Aase. All rights reserved.
- // See the "War Software Series Licende Agreement" for details concerning
- // use and distribution.
- // ---
- // This source code, executables and programs containing source code or
- // binaries or proprietetary technology from the War Software Series are
- // NOT alloed used, viewed or tested by any governmental agencies in
- // any countries. This includes the government, departments, police,
- // military etc.
- // ---
- // This file is intended for use with Tab space = 2
- // Created and maintained in MSVC Developer Studio
- // ---
- // NAME : FTPDaemonCore.h
- // PURPOSE : General entry point module for War Daemons
- // PROGRAM :
- // DATE : Sept. 19 1996
- // AUTHOR : Jarle Aase
- // ---
- // REVISION HISTORY
- //
- #ifndef __FTPDAEMONCOREH
- #define __FTPDAEMONCOREH
- #ifndef __WARDAEMONH
- #include "WarDaemon.h"
- #endif
- #ifdef DLL_WAR_FTPDAEMON_EXPORT
- #define DLL_WAR_FTPDAEMON_EXPORT_ __declspec(dllexport)
- #else
- #define DLL_WAR_FTPDAEMON_EXPORT_ __declspec(dllimport)
- #endif
- extern "C" AFX_EXT_API void WINAPI InitFTPDaemonCoreDLL();
- class CFTPDCoreCtrlSock;
- class CFTPDFsys;
- ////////////////////////////////////////////////////////////////////
- // FTPD Command parser
- class CFTPDParser : public CCommandParser
- {
- public:
- CFTPDParser();
- virtual ParseCmd(LPCSTR CmdLine, CCmdArgs& Args, int Level, BOOL& DoParseCmdLine);
- };
- /////////////////////////////////////////////////////////////////////////////////
- // FTP server control connection
- class DLL_WAR_FTPDAEMON_EXPORT_ CFTPDCoreCtrlSock : public CTextSock
- {
- public:
- DECLARE_DYNAMIC(CFTPDCoreCtrlSock);
- CFTPDParser m_Parser;
- CString m_ArgSave; // Used to store text from one to the next command.
- int m_PrevCmdID;
- FLEN m_Restart; // File restart marker
- CFTPDFsys *m_Fsys;
- CFTPDataSock *m_DataSock;
- CCmdArgs m_Args; // Current line arguments
- CCmdArgs m_UnixArgs; // Line aguments expanded
- CString m_LastCommandText;
- // FTP transfere options
- int m_FTPmode;
- int m_FTPtype;
- int m_FTPstru;
- int m_FTPform;
- struct sockaddr m_Sockaddr; // Used to connect to remote data socket
- public:
- CFTPDCoreCtrlSock();
- ~CFTPDCoreCtrlSock();
- virtual BOOL OnCommand(LPCSTR Text);
- BOOL OnCommand(int CmdID);
- virtual BOOL CallbackProcessList(int nErrorCode);;
- // CAsyncSocket handlers
- virtual void OnConnect( int nErrorCode );
- virtual void OnClose( int nErrorCode );
- virtual void OnReceive( int nErrorCode );
- virtual void OnSend( int nErrorCode );
- virtual void _OnConnect( int nErrorCode );
- virtual void IncXferCnt(BOOL Add);
- protected:
- virtual void Virgin();
- virtual BOOL ProcessTelnetNegotiation(int ch1, int ch2);
- virtual void InsertPendingText();
- virtual BOOL ExpandMacro(LPSTR *To, LPCSTR MacroName, int AvailBytes);
- protected:
- // FTP server implementation functions
- virtual BOOL OnQuit(CCmdArgs& Args);
- virtual BOOL OnLogin(CCmdArgs& Args);
- virtual BOOL OnAcct(CCmdArgs& Args);
- virtual BOOL OnRein(CCmdArgs& Args);
- virtual BOOL OnPort(CCmdArgs& Args);
- virtual BOOL OnPasv(CCmdArgs& Args);
- virtual BOOL OnType(CCmdArgs& Args);
- virtual BOOL OnStru(CCmdArgs& Args);
- virtual BOOL OnMode(CCmdArgs& Args);
- virtual BOOL OnRetr(CCmdArgs& Args);
- virtual BOOL OnStor(CCmdArgs& Args);
- virtual BOOL OnAppe(CCmdArgs& Args);
- virtual BOOL OnAllo(CCmdArgs& Args);
- virtual BOOL OnRest(CCmdArgs& Args);
- virtual BOOL OnRnFr(CCmdArgs& Args);
- virtual BOOL OnRnTo(CCmdArgs& Args);
- virtual BOOL OnAbor(CCmdArgs& Args);
- virtual BOOL OnDele(CCmdArgs& Args);
- virtual BOOL OnCwd(CCmdArgs& Args);
- virtual BOOL OnList(CCmdArgs& Args);
- virtual BOOL OnNlst(CCmdArgs& Args);
- virtual BOOL OnSite(CCmdArgs& Args);
- virtual BOOL OnStat(CCmdArgs& Args);
- virtual BOOL OnHelp(CCmdArgs& Args);
- virtual BOOL OnNoop(CCmdArgs& Args);
- virtual BOOL OnMkd(CCmdArgs& Args);
- virtual BOOL OnRmd(CCmdArgs& Args);
- virtual BOOL OnPwd(CCmdArgs& Args);
- virtual BOOL OnCdUp(CCmdArgs& Args);
- virtual BOOL OnStou(CCmdArgs& Args);
- virtual BOOL OnSmnt(CCmdArgs& Args);
- virtual BOOL OnSyst(CCmdArgs& Args);
- virtual BOOL OnSize(CCmdArgs& Args);
- virtual BOOL OnMdtm(CCmdArgs& Args);
- // Support functions
- virtual BOOL ProcessList(LPCSTR LineArguments, CCmdArgs& Args);
- virtual BOOL DoChdir(LPCSTR Path);
- virtual BOOL DoRetr(CCmdArgs& Args, DWORD Flags);
- virtual BOOL DoStor(CCmdArgs& Args, DWORD Flags);
- virtual BOOL DoDele(CCmdArgs& Args);
- virtual BOOL MkUniquePath(CString& cFnameBuf);
- virtual BOOL DoMkDir(CCmdArgs& Args);
- // SITE
- virtual BOOL OnSiteChmod(CCmdArgs &Args);
- virtual BOOL OnSiteFsysstat(CCmdArgs &Args);
- };
- #define XMITF_TEMP 0x00000001 // Tmp file
- #define XMITF_APPE 0x00000002 // Append
- #define XMITF_UNIQUE 0x00000004 // Stor unique
- /////////////////////////////////////////////////////////////////////////////////
- // FTP server listen socket
- class CFTPDCoreListenSock : public CDaemonServiceSocket
- {
- public:
- virtual void OnAccept( int nErrorCode );
- virtual void _OnAccept( int nErrorCode );
- virtual BOOL Initialize(int PortNumber, LPCSTR ServiceName, LPCSTR ListenIP = NULL);
- };
- class DLL_WAR_FTPDAEMON_EXPORT_ CFtpDaemonCore
- {
- public:
- CFTPDaemonCoreOptions m_Options; // Basic FTP server options
- CFTPDCoreListenSock m_Listen; // Listening socket
- CLog *m_Log;
- static CFtpDaemonCore *m_pCFtpDaemonCore;
- public:
- CFtpDaemonCore();
- ~CFtpDaemonCore();
- virtual BOOL Create(LPCSTR IniFile, CLog *Log);
- virtual void LogMsg(int flag, LPCSTR Format, ...);
- static CFtpDaemonCore *GetFtpSvr() {return m_pCFtpDaemonCore;}
- };
- //////////////////////////////////////////////////////////////////////////////////////////
- // CFTPDFsys
- class DLL_WAR_FTPDAEMON_EXPORT_ CFTPDFsys : public CUserFsys
- {
- public:
- CFTPDFsys(LPVOID *pRef);
- BOOL Create(CFTPDCoreCtrlSock *Sock); // Create user fsys
- // Data members
- CFTPDCoreCtrlSock *m_pSock;
- DWORD m_AsyncSelectMaskSaved;
- DWORD m_StateSaved;
- DWORD m_CallbackID;
- enum // Callback ID's
- {
- CB_CHDIR, // Normal CHDIR
- CB_SIZE, // SIZE
- CB_MDTM, // MDTM
- };
- LPARAM m_lParam; // Storage of data
- // Hight level functions
- public:
- BOOL PrepereCommandLine(int CmdIDtoRemember);
- CString GetFullPath(LPCSTR Path, DWORD AccessFlags);
- BOOL RenamePath(LPCSTR OldName, LPCSTR NewName);
- BOOL CheckPermission(LPCSTR Path, BOOL IsDir, int PermsWanted);
- BOOL DeletePath(LPCSTR Path);
- BOOL MkDir(LPCSTR Path);
- BOOL ChDir(LPCSTR Path);
- BOOL List();
- BOOL Mdtm(LPCSTR Path);
- BOOL Size(LPCSTR Path);
- // Callback functions
- protected:
- virtual BOOL SetOnHold(); // Called when a callback needs to wait...
- // Return FALSE to abort the operation
- virtual void ReleaseHold(); // Release hold state - callback is not called.
- virtual void CheckForZombie(); // Release resources and throw an execpion
- virtual BOOL OnCreate(int nErrorCode); // Called after Create()
- virtual BOOL OnChdir(int nErrorCode); // Called for all ChDir's
- virtual BOOL CallbackChDir(int nErrorCode); // Called after FTP cmd CWD
- virtual BOOL OnPrpCmdLine(int nErrorCode);
- virtual BOOL OnList(int nErrorCode);
- virtual BOOL OnChmod(int nErrorCode);
- virtual BOOL OnFsysStat(int nErrorCode);
- virtual BOOL OnCreateDirectory(int nErrorCode);
- virtual BOOL OnDeleteDirectory(int nErrorCode);
- virtual BOOL OnDeleteFile(int nErrorCode);
- virtual BOOL OnDeleteGeneric(int nErrorCode);
- BOOL OnDelete(int nErrorCode);
- virtual BOOL OnMoveFile(int nErrorCode);
- virtual BOOL OnStat(int nErrorCode);
- BOOL OnStatSize(int nErrorCode);
- BOOL OnStatMDTM(int nErrorCode);
- };
- #endif __FTPDAEMONCOREH