libktorrent  2.2.0
accessmanager.h
1 /***************************************************************************
2  * Copyright (C) 2008 by Joris Guisson and Ivan Vasic *
3  * joris.guisson@gmail.com *
4  * ivasic@gmail.com *
5  * *
6  * This program is free software; you can redistribute it and/or modify *
7  * it under the terms of the GNU General Public License as published by *
8  * the Free Software Foundation; either version 2 of the License, or *
9  * (at your option) any later version. *
10  * *
11  * This program is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14  * GNU General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU General Public License *
17  * along with this program; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
20  ***************************************************************************/
21 #ifndef BTACCESSMANAGER_H
22 #define BTACCESSMANAGER_H
23 
24 #include <QStringList>
25 #include <net/address.h>
26 #include <ktorrent_export.h>
27 
28 namespace bt
29 {
30  class BlockListInterface;
31  class BadPeersList;
32 
40  class KTORRENT_EXPORT AccessManager
41  {
42  AccessManager();
43  public:
44  virtual ~AccessManager();
45 
47  static AccessManager& instance();
48 
50  void addBlockList(BlockListInterface* bl);
51 
53  void removeBlockList(BlockListInterface* bl);
54 
56  bool allowed(const net::Address& addr) const;
57 
59  void banPeer(const QString& addr);
60 
62  void addExternalIP(const QString& addr);
63 
64  private:
65  bool isOurOwnAddress(const net::Address& addr) const;
66 
67  private:
68  QList<BlockListInterface*> blocklists;
69  BadPeersList* banned;
70  QStringList external_addresses;
71  };
72 
73 }
74 
75 #endif
net::Address
Definition: address.h:59
bt::BadPeersList
Definition: badpeerslist.h:53