DaemonAPI.h
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:6k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // This is part of the WAR SOFTWARE SERIES initiated by Jarle Aase
  2. // Copyright 1996 by Jarle Aase. All rights reserved.
  3. // See the "War Software Series Licende Agreement" for details concerning 
  4. // use and distribution.
  5. // ---
  6. // This source code, executables and programs containing source code or
  7. // binaries or proprietetary technology from the War Software Series are
  8. // NOT alloed used, viewed or tested by any governmental agencies in
  9. // any countries. This includes the government, departments, police, 
  10. // military etc.
  11. // ---
  12. // This file is intended for use with Tab space = 2
  13. // Created and maintained in MSVC Developer Studio
  14. // ---
  15. // NAME : DaemonAPI.h
  16. // PURPOSE : Daemon extention dll base class
  17. // PROGRAM : 
  18. // DATE : Febr 16 1997
  19. // AUTHOR : Jarle Aase
  20. // ---
  21. // REVISION HISTORY
  22. // 
  23. #ifndef __WARDAPIH
  24. #define __WARDAPIH
  25. class CDaemonBase;
  26. class CDaemonAPI;
  27. class CSocketAPI;
  28. class CRemoteInterface;
  29. class CUserDialog;
  30. class CDllInfo;
  31. class CFuncList;
  32. struct SFUNC
  33. {
  34. int (*pFunc)(LPVOID,int,WPARAM,LPARAM);
  35. CDaemonAPI *pOrigin;
  36. };
  37. struct SFUNCREF
  38. {
  39. SFUNC *pFunc; 
  40. int Index;
  41. CFuncList *pList;
  42. };
  43. // Simple base class for extention functions
  44. class DLL_WAR_SOFTWARE_ CFuncList : public CLinkedList
  45. {
  46. public:
  47. LPVOID Alloc(CDllInfo *pDLL, int Index, CDaemonAPI *pAPI, int (*pCallFunc)(LPVOID,int,WPARAM,LPARAM));
  48. int Process(int nEvent, WPARAM wParam, LPARAM lParam);
  49. BOOL AddFirst(CDllInfo *pDLL, int Index, CDaemonAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
  50. BOOL AddLast(CDllInfo *pDLLC, int Index, CDaemonAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
  51. BOOL AddFirst(CDllInfo *pDLL, int Index, CSocketAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
  52. BOOL AddLast(CDllInfo *pDLL, int Index, CSocketAPI *pAPI, int (*pFunc)(LPVOID,int,WPARAM,LPARAM));
  53. enum // Return values for Process
  54. {
  55. OkContinue, // Go on with processing
  56. OkNoNext, // Don't pass on to next dll
  57. OkAllDone, // All processing done. No dll or default processing required
  58. AbortError, // Error, stop all processing
  59. SuggestNo, // Process other plugins, but return AbortError
  60.  // unless OkAllDone or SuggestYes is returned by
  61.  // another plugin.
  62. SuggestYes, // Process other plugins. Return OkContinue
  63.  // unless OkAllDone or SuggestNo is returned by
  64.  // another plugin.
  65. };
  66. };
  67. class DLL_WAR_SOFTWARE_ CSocketAPI : public CObject
  68. {
  69. public:
  70. CSocketAPI();
  71. ~CSocketAPI();
  72. CSock *pSock;
  73. };
  74. #ifndef CC_CLIENT
  75. class DLL_WAR_DAEMON_ CDaemonAPI : public CObject, public COptions
  76. {
  77. public:
  78. CDaemonAPI();
  79. ~CDaemonAPI();
  80. virtual void InitializeCOptions();
  81. int GetModuleID() { return m_ModuleNum; }
  82. CString GetModuleName() {return m_ModuleName; }
  83. int Register(LPCSTR Name);
  84. virtual int ApiInitInstance(int Event = 0, WPARAM wParam = 0, LPARAM lParam = 0);
  85. virtual int ApiExitInstance(int Event = 0, WPARAM wParam = 0, LPARAM lParam = 0);
  86. LogMsg(int Type, LPCSTR Format, ...);
  87. virtual CDaemonAPI *GetPtr();
  88. CDllInfo *GetDLLInfo();
  89. private:
  90. static m_ModuleCnt; // COptions ID counter
  91. int m_ModuleNum; // COptions numeric identifier
  92. CString m_ModuleName; // Module name
  93. public:
  94. int m_Error; // Error code
  95. CLog *m_pLog; // Log handle
  96. CDaemonBase *m_pBase; // Daemon pointer
  97. };
  98. #endif //CC_CLIENT
  99. enum // Error codes
  100. {
  101. WDAPIE_NO_ERROR,  // No error
  102. WDAPIE_NAME_EXIST, // The name of the module is in use
  103. WDAPIE_ERROR, // Unknown error
  104. };
  105. class DLL_WAR_SOFTWARE_ CDllInfo : public CObject
  106. {
  107. public:
  108. CString m_Name;
  109. CString m_Description;
  110. CString m_ServerPath;
  111. CString m_ManagerPath;
  112. CString m_TempPath;
  113. CString m_IniPath;
  114. int m_OptionNum;
  115. HINSTANCE m_pHI;
  116. CLinkedList m_Refs; // SFUNCREF * to all functions used
  117. CDaemonAPI *m_pAPI;
  118. };
  119. class DLL_WAR_SOFTWARE_ CAPIHandler : public COptions
  120. {
  121. public:
  122. CAPIHandler();
  123. ~CAPIHandler();
  124. static CAPIHandler *GetPtr() {return m_pMe; }
  125. BOOL LoadExtentions();
  126. BOOL DoLoadModule(LPCSTR IniName, BOOL DoLoad);
  127. static CString ListAll();
  128. void Unload(CDaemonAPI *pAPI);
  129. void Unload(CSocketAPI *pSockAPI);
  130. BOOL EnableDll(LPCSTR Cmd);
  131. CString m_ScanDir; // Directory to scan for .emod files
  132. public:
  133. static CAPIHandler *m_pMe;
  134. static CDaemonAPI *m_pCurrentLoadingModule;
  135. static int m_CurrentLoadingModuleNum;
  136. enum // Function location in  KnownFuncNames[] and m_Funcs
  137. {
  138. ApiInitInstance,
  139. ApiExitInstance,
  140. OnLogin,
  141. OnLogout,
  142. OnPassword,
  143. OnNewSocket,
  144. OnNewTextSocket,
  145. OnNewFTPDataSocket,
  146. OnFTPDCoreCtrlSock,
  147. OnPreFTPDAccept,
  148. OnPostFTPDAccept,
  149. OnFsysCheckPermission,
  150. invalid
  151. };
  152. CFuncList m_Funcs[invalid];
  153. CLinkedList m_Plugins; // CDLLInfo
  154. };
  155. struct LOGINPRMS
  156. {
  157. int LoginMode;
  158. LPCSTR UserID;
  159. LPCSTR Password;
  160. CTextSock *Sock;
  161. };
  162. struct CHKPRMS
  163. {
  164. int User;
  165. LPCSTR RootPath;
  166. BOOL IsDir;
  167. int PermsWanted;
  168. };
  169. struct SNDCTLMSG
  170. {
  171. int Rcode;
  172. LPCSTR Text;
  173. BOOL More;
  174. BOOL CrLf;
  175. };
  176. #define PrcExt(FuncID, Event, wParam, lParam)
  177. CAPIHandler::m_pMe ? CAPIHandler::m_pMe->m_Funcs[FuncID].Process(Event,wParam,lParam) : 0
  178. /////////////////////////////////////////////////////////////////////
  179. // Client side support
  180. #ifdef CC_CLIENT
  181. class DLL_WAR_CLIENT_ CWarClientAPI : public CObject
  182. {
  183. public:
  184. CWarClientAPI();
  185. ~CWarClientAPI();
  186. BOOL SyncWithDaemon(CRemoteInterface *pRemote);
  187. CDllInfo *LookupDllInfo(LPCSTR Name);
  188. BOOL InitializeDll(CDllInfo *pDLL);
  189. void RunFunctions(LPCSTR Name, WPARAM wParam, LPARAM lParam);
  190. CLinkedList m_Plugins; // CDllInfo
  191. };
  192. // Base class for user dialog tabs
  193. class DLL_WAR_CLIENT_ CWarUserDlgTemplate : public CDialog
  194. {
  195. public:
  196. CWarUserDlgTemplate(UINT Resource, CWnd* pParent);
  197. CUserDialog *m_pUserDlg;
  198. };
  199. #endif // CC_CLIENT
  200. #endif __WARDAPIH