]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/bancache.h
Roadmap item "Fix jointhrottle to not try 'throttle' clients during a netmerge (requi...
[user/henk/code/inspircd.git] / include / bancache.h
index 2c58c72454e4c4e27f12af859946c13a0ec980e2..2ae740ece32cb19cb393deda9b7f7f4d52124235 100644 (file)
 class CoreExport BanCacheHit : public classbase
 {
  private:
+       InspIRCd *ServerInstance;
  public:
-       const std::string Type;
-       const std::string Reason;
-       const bool Banned;
-       const time_t Duration;
-       const time_t Creation;
+       std::string Type;
+       std::string Reason;
+       std::string IP;
+
+       BanCacheHit(InspIRCd *Instance, const std::string &ip, const std::string &type, const std::string &reason)
+       {
+               ServerInstance = Instance;
+               this->Type = type;
+               this->Reason = reason;
+               this->IP = ip;
+       }
 };
 
 // must be defined after class BanCacheHit.
+#ifndef WIN32
 typedef nspace::hash_map<std::string, BanCacheHit *, nspace::hash<std::string> > BanCacheHash;
+#else
+typedef nspace::hash_map<std::string, BanCacheHit*, nspace::hash_compare<string, less<string> > > BanCacheHash;
+#endif
 
 class CoreExport BanCacheManager : public classbase
 {
@@ -36,14 +47,23 @@ class CoreExport BanCacheManager : public classbase
        BanCacheHash *BanHash;
        InspIRCd *ServerInstance;
  public:
-       BanCacheHit *AddHit(const std::string &ip, bool banned, const std::string &reason);
+
+       /** Creates and adds a Ban Cache item.
+        * @param ip The IP the item is for.
+        * @param type The type of ban cache item. std::string. .empty() means it's a negative match (user is allowed freely).
+        * @param reason The reason for the ban. Left .empty() if it's a negative match.
+        */
+       BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason);
        BanCacheHit *GetHit(const std::string &ip);
+       bool RemoveHit(BanCacheHit *b);
 
        BanCacheManager(InspIRCd *Instance)
        {
                this->ServerInstance = Instance;
                this->BanHash = new BanCacheHash();
        }
+
+       void RehashCache();
 };
 
 #endif