InspIRCd  3.0
bancache.h
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  * Copyright (C) 2008 Craig Edwards <[email protected]>
5  * Copyright (C) 2007 Robin Burchell <[email protected]>
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 #pragma once
22 
30 class CoreExport BanCacheHit
31 {
32  public:
35  std::string Type;
38  std::string Reason;
41  time_t Expiry;
42 
43  BanCacheHit(const std::string& type, const std::string& reason, time_t seconds);
44 
45  bool IsPositive() const { return (!Reason.empty()); }
46 };
47 
50 class CoreExport BanCacheManager
51 {
54  typedef TR1NS::unordered_map<std::string, BanCacheHit*, TR1NS::hash<std::string> > BanCacheHash;
55 
56  BanCacheHash BanHash;
57  bool RemoveIfExpired(BanCacheHash::iterator& it);
58 
59  public:
60 
67  BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds = 0);
68  BanCacheHit *GetHit(const std::string &ip);
69 
74  void RemoveEntries(const std::string& type, bool positive);
75 
76  ~BanCacheManager();
77 };
Definition: bancache.h:30
time_t Expiry
Definition: bancache.h:41
Definition: bancache.h:50
std::string Type
Definition: bancache.h:35
std::string Reason
Definition: bancache.h:38