Started implementation of ban list. For now, just gathers the list of banned IPs from

the DHT and is not used to reject IPs yet (the DHT list is, even if DHT is desactivated).
Next steps: GUI with switch controls, exchange of IP ban lists between friends, handling IP ranges.


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8297 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2015-05-26 21:17:09 +00:00
parent 5200f30a32
commit 047977b645
13 changed files with 337 additions and 204 deletions

View file

@ -66,7 +66,7 @@ void bdFilter::writeBannedIpFile()
for( std::map<uint32_t,bdFilteredPeer>::iterator it=mFiltered.begin();it!=mFiltered.end();++it)
{
fprintf(fd, "%s %d %ld %ld\n", bdnet_inet_ntoa(it->second.mAddr.sin_addr).c_str(), it->second.mFilterFlags, it->second.mFilterTS, it->second.mLastSeen) ;
fprintf(fd, "%s %u %lu %lu\n", bdnet_inet_ntoa(it->second.mAddr.sin_addr).c_str(), it->second.mFilterFlags, it->second.mFilterTS, it->second.mLastSeen) ;
#ifdef DEBUG_FILTER
fprintf(stderr, "Storing Peer Address: %s \n", bdnet_inet_ntoa(it->second.mAddr.sin_addr).c_str()) ;
#endif
@ -212,11 +212,11 @@ int bdFilter::addPeerToFilter(const struct sockaddr_in& addr, uint32_t flags)
// mFiltered[saddr] = *it ;
// }
// }
// void bdFilter::getFilteredPeers(std::list<bdFilteredPeer>& peers)
// {
// for(std::map<uint32_t,bdFilteredPeer>::iterator it = mFiltered.begin(); it != mFiltered.end();++it)
// peers.push_back(it->second) ;
// }
void bdFilter::getFilteredPeers(std::list<bdFilteredPeer>& peers)
{
for(std::map<uint32_t,bdFilteredPeer>::iterator it = mFiltered.begin(); it != mFiltered.end();++it)
peers.push_back(it->second) ;
}
/* fast check if the addr is in the structure */
int bdFilter::addrOkay(struct sockaddr_in *addr)
{

View file

@ -40,11 +40,11 @@
class bdFilteredPeer
{
public:
struct sockaddr_in mAddr;
uint32_t mFilterFlags; /* reasons why we are filtering */
time_t mFilterTS;
time_t mLastSeen;
public:
struct sockaddr_in mAddr;
uint32_t mFilterFlags; /* reasons why we are filtering */
time_t mFilterTS;
time_t mLastSeen;
};
class bdFilter
@ -56,7 +56,7 @@ class bdFilter
//bool filtered(std::list<bdFilteredPeer> &answer);
bool filteredIPs(std::list<struct sockaddr_in> &answer);
void loadFilteredPeers(const std::list<bdFilteredPeer>& peers) ;
//void loadFilteredPeers(const std::list<bdFilteredPeer>& peers) ;
void getFilteredPeers(std::list<bdFilteredPeer> &peers);
int checkPeer(const bdId *id, uint32_t peerFlags);

View file

@ -93,10 +93,11 @@ void bdNode::init()
setNodeDhtMode(BITDHT_MODE_TRAFFIC_DEFAULT);
}
//void bdNode::getFilteredPeers(std::list<bdFilteredPeer>& peers)
//{
// mFilterPeers.getFilteredPeers(peers) ;
//}
bool bdNode::getFilteredPeers(std::list<bdFilteredPeer>& peers)
{
mFilterPeers.getFilteredPeers(peers) ;
return true ;
}
//
//void bdNode::loadFilteredPeers(const std::list<bdFilteredPeer>& peers)
//{

View file

@ -149,8 +149,8 @@ class bdNode: public bdNodePublisher
void updateStore();
bool addressBanned(const sockaddr_in &raddr) ;
void getFilteredPeers(std::list<bdFilteredPeer> &peers);
void loadFilteredPeers(const std::list<bdFilteredPeer> &peers);
bool getFilteredPeers(std::list<bdFilteredPeer> &peers);
//void loadFilteredPeers(const std::list<bdFilteredPeer> &peers);
/* simplified outgoing msg functions (for the managers) */
virtual void send_ping(bdId *id); /* message out */