00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_ServerBannedh_INCLUDE__)
00022 #define __INCLUDE_ServerBannedh_INCLUDE__
00023
00024 #include <set>
00025 #include <map>
00026 #include <list>
00027 #include <lang/LangString.h>
00028 #include <time.h>
00029
00030 class ServerBanned
00031 {
00032 public:
00033 ServerBanned();
00034 virtual ~ServerBanned();
00035
00036 enum BannedType
00037 {
00038 NotBanned,
00039 Banned,
00040 Muted,
00041 Flagged
00042 };
00043 struct BannedEntry
00044 {
00045 time_t bantime;
00046 LangString name;
00047 std::string uniqueid;
00048 std::string SUI;
00049 std::string adminname;
00050 std::string reason;
00051 BannedType type;
00052 };
00053 struct BannedRange
00054 {
00055 unsigned int mask;
00056 std::map<unsigned int, BannedEntry> ips;
00057 };
00058
00059 std::list<BannedRange> &getBannedIps();
00060 BannedType getBanned(const char *unqiueid, const char *SUI);
00061 BannedType getBanned(unsigned int ip);
00062 void addBanned(unsigned int ip,
00063 const LangString &name,
00064 const char *uniqueId,
00065 const char *SUI,
00066 BannedType type,
00067 const char *adminname,
00068 const char *reason);
00069 bool save();
00070 bool load(bool force = false);
00071
00072 static const char *getBannedTypeStr(BannedType type);
00073
00074 protected:
00075 std::list<BannedRange> bannedIps_;
00076 std::map<std::string, BannedEntry> bannedIds_;
00077 std::map<std::string, BannedEntry> bannedSUIs_;
00078 time_t lastReadTime_;
00079
00080 void addBannedEntry(unsigned int ip, unsigned int mask,
00081 const LangString &name, const char *unqiueId, const char *SUid, unsigned int bantime,
00082 BannedType type, const char *adminname, const char *reason);
00083
00084 };
00085
00086 #endif // __INCLUDE_ServerBannedh_INCLUDE__
00087