00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARSERVERUSERINFO_H
00027 #define ARSERVERUSERINFO_H
00028
00029 #include "Aria.h"
00030
00032
00052 class ArServerUserInfo
00053 {
00054 public:
00056 AREXPORT ArServerUserInfo(const char *baseDirectory = NULL);
00058 AREXPORT ~ArServerUserInfo();
00060 AREXPORT bool readFile(const char *fileName);
00062 AREXPORT void setBaseDirectory(const char *baseDirectory);
00064 AREXPORT bool matchUserPassword(const char *user, unsigned char password[16],
00065 const char *passwordKey,
00066 const char *serverKey) const;
00067 AREXPORT bool doNotUse(void) const;
00069 AREXPORT std::set<std::string, ArStrCaseCmpOp> getUsersGroups(
00070 const char *user) const;
00072 AREXPORT void logUsers(void) const;
00073
00074 protected:
00075 bool v1HeaderCallback(ArArgumentBuilder * arg);
00076 bool v1UserCallback(ArArgumentBuilder * arg);
00077 bool v1DoNotUseCallback(ArArgumentBuilder * arg);
00078 void removeHandlers(void);
00079
00080 ArMutex myDataMutex;
00081 std::map<std::string, std::string, ArStrCaseCmpOp> myPasswords;
00082 std::map<std::string, std::set<std::string, ArStrCaseCmpOp> *,
00083 ArStrCaseCmpOp> myGroups;
00084 ArRetFunctor1C<bool, ArServerUserInfo, ArArgumentBuilder *> myV1HeaderCB;
00085 ArRetFunctor1C<bool, ArServerUserInfo, ArArgumentBuilder *> myV1UserCB;
00086 ArRetFunctor1C<bool, ArServerUserInfo, ArArgumentBuilder *> myV1DoNotUseCB;
00087 std::string myBaseDirectory;
00088 ArFileParser myParser;
00089 bool myGotHeader;
00090 bool myDoNotUse;
00091
00092 };
00093
00094 #endif // ARSERVERUSERINFO_H