DaemonAPI.h
资源名称:warftpd.zip [点击查看]
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:6k
源码类别:
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 : DaemonAPI.h
- // PURPOSE : Daemon extention dll base class
- // PROGRAM :
- // DATE : Febr 16 1997
- // AUTHOR : Jarle Aase
- // ---
- // REVISION HISTORY
- //
- #ifndef __WARDAPIH
- #define __WARDAPIH
- class CDaemonBase;
- class CDaemonAPI;
- class CSocketAPI;
- class CRemoteInterface;
- class CUserDialog;
- class CDllInfo;
- class CFuncList;
- struct SFUNC
- {
- int (*pFunc)(LPVOID,int,WPARAM,LPARAM);
- CDaemonAPI *pOrigin;
- };
- struct SFUNCREF
- {
- SFUNC *pFunc;
- int Index;
- CFuncList *pList;
- };
- // Simple base class for extention functions
- class DLL_WAR_SOFTWARE_ CFuncList : public CLinkedList
- {
- public:
- LPVOID Alloc(CDllInfo *pDLL, int Index, CDaemonAPI *pAPI, int (*pCallFunc)(LPVOID,int,WPARAM,LPARAM));
- int Process(int nEvent, WPARAM wParam, LPARAM lParam);
- BOOL AddFirst(CDllInfo *pDLL, int Index, CDaemonAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
- BOOL AddLast(CDllInfo *pDLLC, int Index, CDaemonAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
- BOOL AddFirst(CDllInfo *pDLL, int Index, CSocketAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
- BOOL AddLast(CDllInfo *pDLL, int Index, CSocketAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
- enum // Return values for Process
- {
- OkContinue, // Go on with processing
- OkNoNext, // Don't pass on to next dll
- OkAllDone, // All processing done. No dll or default processing required
- AbortError, // Error, stop all processing
- SuggestNo, // Process other plugins, but return AbortError
- // unless OkAllDone or SuggestYes is returned by
- // another plugin.
- SuggestYes, // Process other plugins. Return OkContinue
- // unless OkAllDone or SuggestNo is returned by
- // another plugin.
- };
- };
- class DLL_WAR_SOFTWARE_ CSocketAPI : public CObject
- {
- public:
- CSocketAPI();
- ~CSocketAPI();
- CSock *pSock;
- };
- #ifndef CC_CLIENT
- class DLL_WAR_DAEMON_ CDaemonAPI : public CObject, public COptions
- {
- public:
- CDaemonAPI();
- ~CDaemonAPI();
- virtual void InitializeCOptions();
- int GetModuleID() { return m_ModuleNum; }
- CString GetModuleName() {return m_ModuleName; }
- int Register(LPCSTR Name);
- virtual int ApiInitInstance(int Event = 0, WPARAM wParam = 0, LPARAM lParam = 0);
- virtual int ApiExitInstance(int Event = 0, WPARAM wParam = 0, LPARAM lParam = 0);
- LogMsg(int Type, LPCSTR Format, ...);
- virtual CDaemonAPI *GetPtr();
- CDllInfo *GetDLLInfo();
- private:
- static m_ModuleCnt; // COptions ID counter
- int m_ModuleNum; // COptions numeric identifier
- CString m_ModuleName; // Module name
- public:
- int m_Error; // Error code
- CLog *m_pLog; // Log handle
- CDaemonBase *m_pBase; // Daemon pointer
- };
- #endif //CC_CLIENT
- enum // Error codes
- {
- WDAPIE_NO_ERROR, // No error
- WDAPIE_NAME_EXIST, // The name of the module is in use
- WDAPIE_ERROR, // Unknown error
- };
- class DLL_WAR_SOFTWARE_ CDllInfo : public CObject
- {
- public:
- CString m_Name;
- CString m_Description;
- CString m_ServerPath;
- CString m_ManagerPath;
- CString m_TempPath;
- CString m_IniPath;
- int m_OptionNum;
- HINSTANCE m_pHI;
- CLinkedList m_Refs; // SFUNCREF * to all functions used
- CDaemonAPI *m_pAPI;
- };
- class DLL_WAR_SOFTWARE_ CAPIHandler : public COptions
- {
- public:
- CAPIHandler();
- ~CAPIHandler();
- static CAPIHandler *GetPtr() {return m_pMe; }
- BOOL LoadExtentions();
- BOOL DoLoadModule(LPCSTR IniName, BOOL DoLoad);
- static CString ListAll();
- void Unload(CDaemonAPI *pAPI);
- void Unload(CSocketAPI *pSockAPI);
- BOOL EnableDll(LPCSTR Cmd);
- CString m_ScanDir; // Directory to scan for .emod files
- public:
- static CAPIHandler *m_pMe;
- static CDaemonAPI *m_pCurrentLoadingModule;
- static int m_CurrentLoadingModuleNum;
- enum // Function location in KnownFuncNames[] and m_Funcs
- {
- ApiInitInstance,
- ApiExitInstance,
- OnLogin,
- OnLogout,
- OnPassword,
- OnNewSocket,
- OnNewTextSocket,
- OnNewFTPDataSocket,
- OnFTPDCoreCtrlSock,
- OnPreFTPDAccept,
- OnPostFTPDAccept,
- OnFsysCheckPermission,
- invalid
- };
- CFuncList m_Funcs[invalid];
- CLinkedList m_Plugins; // CDLLInfo
- };
- struct LOGINPRMS
- {
- int LoginMode;
- LPCSTR UserID;
- LPCSTR Password;
- CTextSock *Sock;
- };
- struct CHKPRMS
- {
- int User;
- LPCSTR RootPath;
- BOOL IsDir;
- int PermsWanted;
- };
- struct SNDCTLMSG
- {
- int Rcode;
- LPCSTR Text;
- BOOL More;
- BOOL CrLf;
- };
- #define PrcExt(FuncID, Event, wParam, lParam)
- CAPIHandler::m_pMe ? CAPIHandler::m_pMe->m_Funcs[FuncID].Process(Event,wParam,lParam) : 0
- /////////////////////////////////////////////////////////////////////
- // Client side support
- #ifdef CC_CLIENT
- class DLL_WAR_CLIENT_ CWarClientAPI : public CObject
- {
- public:
- CWarClientAPI();
- ~CWarClientAPI();
- BOOL SyncWithDaemon(CRemoteInterface *pRemote);
- CDllInfo *LookupDllInfo(LPCSTR Name);
- BOOL InitializeDll(CDllInfo *pDLL);
- void RunFunctions(LPCSTR Name, WPARAM wParam, LPARAM lParam);
- CLinkedList m_Plugins; // CDllInfo
- };
- // Base class for user dialog tabs
- class DLL_WAR_CLIENT_ CWarUserDlgTemplate : public CDialog
- {
- public:
- CWarUserDlgTemplate(UINT Resource, CWnd* pParent);
- CUserDialog *m_pUserDlg;
- };
- #endif // CC_CLIENT
- #endif __WARDAPIH