User.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 : User.h
  16. // PURPOSE : User management
  17. // PROGRAM : 
  18. // DATE : Sept. 28 1996
  19. // AUTHOR : Jarle Aase
  20. // ---
  21. // REVISION HISTORY
  22. // 
  23. #ifndef __USERH
  24. #define __USERH
  25. class CLog;
  26. class CTextSock;
  27. #ifdef CC_CLIENT
  28. /////////////////////////////////////////////////////////////////////////////////
  29. /////////////////////////////////////////////////////////////////////////////////
  30. // C L I E N T   S I D E   A P I - all non-server applications without direct
  31. // access to the database must use these API calls.
  32. /////////////////////////////////////////////////////////////////////////////////
  33. /////////////////////////////////////////////////////////////////////////////////
  34. class DLL_WAR_CLIENT_ CRemoteUsr
  35. {
  36. public:
  37. CRemoteUsr();
  38. BOOL Create(LPVOID Remote, int timeout, CLog *Log, void (*OnError)(int nErrorNum, CRemoteUsr *Object));
  39. void LogMsg(int flag, LPCSTR Format, ...);
  40. USER AddUser(int UserType, LPCSTR UserID, BOOL Protect = FALSE, int PrivLevel = 0);
  41. LPCSTR FindUser(USER UserNo, CString& cBuf);
  42. USER FindUser(int UserType, LPCSTR UserID);
  43. BOOL SetParam(USER UserNum, LPCSTR Key, LPCSTR Value);
  44. BOOL SetParam(USER UserNum, LPCSTR Key, int Value);
  45. BOOL GetParam(USER UserNum, LPCSTR Key, int& Value, int DefValue);
  46. BOOL GetParam(USER UserNum, LPCSTR Key, CString& Value, LPCSTR DefValue);
  47. BOOL CreateAlias(LPCSTR Name, LPCSTR Alias);
  48. int GetType(USER UserNum);
  49. BOOL DeleteUser(LPCSTR UserName);
  50. BOOL RenameUser(LPCSTR UserID, LPCSTR NewName);
  51. // Higher level functions
  52. BOOL IsAdmin(USER User);
  53. int GetUserClass(USER User);
  54. BOOL ListUsers(int Type, LPCSTR Pattern, CLinkedList& List);
  55. BOOL ListUserParams(USER User, CString& Params);
  56. BOOL ListUsers(int Type, int System, int Class, int Group, CLinkedList& List);
  57. BOOL ParseUserList(CString& cSvrReply, CLinkedList& List);
  58. BOOL ParseUserParams(CString& cSvrReply, CString& cReturnBuf);
  59. CRemoteInterface *m_Remote;
  60. CLog *m_Log;
  61. void (*m_OnError)(int nErrorNum, CRemoteUsr *Object);
  62. int m_Timeout;
  63. };
  64. class DLL_WAR_CLIENT_ CUserInfo
  65. {
  66. public:
  67. CString m_Name;
  68. USER m_User;
  69. int m_Type;
  70. BOOL m_IsAdmin;
  71. BOOL m_FTPAccess;
  72. BOOL m_RAAccess;
  73. BOOL m_Protected;
  74. int m_PasswordMode;
  75. USER m_AliasFor; // Alias for user #
  76. USER m_Group;
  77. USER m_Class;
  78. USER m_System;
  79. CString m_VirtualIP; // only allowed on this IP number
  80. CUserInfo();
  81. };
  82. #ifndef _EDITUSEROPTIONH
  83. #include "edituseroption.h"
  84. #endif
  85. #else // CC_CLIENT - This is the server implementation
  86. /////////////////////////////////////////////////////////////////////////////////
  87. /////////////////////////////////////////////////////////////////////////////////
  88. // S E R V E R   S I D E   A P I
  89. /////////////////////////////////////////////////////////////////////////////////
  90. /////////////////////////////////////////////////////////////////////////////////
  91. // The public data common among all user implementations
  92. // Used for users, groups, classes and default
  93. class CUserBase
  94. {
  95. public:
  96. USER m_UserNum; // User number (unique identifier)
  97. CString m_UserID; // Nickname (unique identifier)
  98. BOOL m_Protect; // System defined user, dont delete!
  99. int m_PrivLevel; // Anonymous, user, admin
  100. };
  101. // User implementation in servers
  102. class DLL_WAR_DAEMON_ CUsr
  103. {
  104. public:
  105. static int m_NextUserNum; // Next user number to use
  106. static CUsr *m_pUserMngr; // Get pointer to user handle
  107. static LPCSTR m_pIniFile; // Get pointer to ini file
  108. static CLog *m_Log;
  109. public:
  110. CUsr();
  111. ~CUsr();
  112. BOOL Create(CLog *Log);
  113. static void LogMsg(int flag, LPCSTR Format, ...);
  114. static USER AddUser(int UserType, LPCSTR UserID, BOOL Protect = FALSE, int PrivLevel = 0);
  115. static LPCSTR FindUser(USER UserNo, CString& cBuf);
  116. static USER FindUser(int UserType, LPCSTR UserID);
  117. static void SetParam(USER UserNum, LPCSTR Key, LPCSTR Value);
  118. static void SetParam(USER UserNum, LPCSTR Key, int Value);
  119. static int GetParam(USER UserNum, LPCSTR Key, int DefValue);
  120. static LPCSTR GetParam(USER UserNum, LPCSTR Key, LPCSTR DefValue, CString& cBuf);
  121. static BOOL CreateAlias(LPCSTR Name, LPCSTR Alias);
  122. static BOOL DeleteUser(LPCSTR UserName);
  123. static BOOL DeleteAlias(LPCSTR AliasName);
  124. static BOOL RenameUser(LPCSTR UserID, LPCSTR NewName);
  125. static USER MapUser(USER User);
  126. static LPCSTR GetRecursiveParam(USER UserNum, LPCSTR Key, LPCSTR DefValue, CString& cBuf);
  127. static int GetRecursiveParam(USER UserNum, LPCSTR Key, int DefValue);
  128. // Higher level functions
  129. static int Login(int LoginMode, LPCSTR UserID, LPCSTR Password, CTextSock *Sock);
  130. static BOOL IsAdmin(USER User);
  131. static USER GetUserClass(USER User);
  132. static USER GetUserGroup(USER User);
  133. static USER GetUserSystem(USER User);
  134. static BOOL HasPermission(USER User, LPCSTR Option);
  135. static int GetType(USER User);
  136. static BOOL ListUsers(int Type, LPCSTR Pattern, CString& cBuf, BOOL IsInteractive);
  137. static BOOL ListUserParams(int Type, LPCSTR Pattern, CString& cBuf);
  138. static BOOL SetUserOption(int Type, LPCSTR Option);
  139. static BOOL GetUserOption(int Type, LPCSTR Option, CString& cReturnValue);
  140. };
  141. #endif // CC_CLIENT
  142. enum // m_PrivLevel
  143. {
  144. USERPRI_ANON,
  145. USERPRI_USER,
  146. USERPRI_ADMIN,
  147. USERPRI_INVALID
  148. };
  149. enum // User types
  150. {
  151. UT_USER, UT_GROUP, UT_CLASS, UT_SYSTEM, UT_INVALID
  152. };
  153. enum // Password mode (PWmode)
  154. {
  155. PW_NONE,
  156. PW_EMAIL,
  157. PW_NORMAL
  158. };
  159. // Clipboard format
  160. #define WAR_USER_CLPFORMAT "WarUserClp"
  161. #endif __USERH