InspIRCd  2.0
 All Classes Namespaces Functions Variables Typedefs Enumerations
bancache.h
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  * Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
5  * Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
6  *
7  * This file is part of InspIRCd. InspIRCd is free software: you can
8  * redistribute it and/or modify it under the terms of the GNU General Public
9  * License as published by the Free Software Foundation, version 2.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14  * details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 
21 #ifndef BANCACHE_H
22 #define BANCACHE_H
23 
31 class CoreExport BanCacheHit
32 {
33  public:
36  std::string Type;
39  std::string Reason;
42  std::string IP;
45  time_t Expiry;
46 
47  BanCacheHit(const std::string &ip, const std::string &type, const std::string &reason)
48  {
49  this->Type = type;
50  this->Reason = reason;
51  this->IP = ip;
52  this->Expiry = ServerInstance->Time() + 86400; // a day. this might seem long, but entries will be removed as glines/etc expire.
53  }
54 
55  // overridden to allow custom time
56  BanCacheHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds)
57  {
58  this->Type = type;
59  this->Reason = reason;
60  this->IP = ip;
61  this->Expiry = ServerInstance->Time() + seconds;
62  }
63 };
64 
65 /* A container of ban cache items.
66  * must be defined after class BanCacheHit.
67  */
68 typedef nspace::hash_map<std::string, BanCacheHit*, nspace::hash<std::string> > BanCacheHash;
69 
72 class CoreExport BanCacheManager
73 {
74  private:
75  BanCacheHash* BanHash;
76  public:
77 
83  BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason);
84 
85  // Overridden to allow an optional number of seconds before expiry
86  BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds);
87  BanCacheHit *GetHit(const std::string &ip);
88  bool RemoveHit(BanCacheHit *b);
89 
94  unsigned int RemoveEntries(const std::string &type, bool positive);
95 
97  {
98  this->BanHash = new BanCacheHash();
99  }
100  ~BanCacheManager();
101  void RehashCache();
102 };
103 
104 #endif
Definition: bancache.h:31
time_t Time()
Definition: inspircd.h:477
std::string IP
Definition: bancache.h:42
time_t Expiry
Definition: bancache.h:45
Definition: bancache.h:72
std::string Type
Definition: bancache.h:36
std::string Reason
Definition: bancache.h:39