Ticket #239: src__core__manager.cc.diff
| File src__core__manager.cc.diff, 1.8 KB (added by comer, 4 years ago) |
|---|
-
src/core/manager.cc
old new 150 150 } 151 151 } 152 152 153 uint32_t 154 Manager::filter_ip(const sockaddr* sa) { 155 IpRange* r = NULL; 156 // if something's wrong with filter or address it's gonna be allowed 157 if( m_ipFilter && sa ) { 158 const rak::socket_address* socketAddress = rak::socket_address::cast_from(sa); 159 if( socketAddress->is_valid() && (socketAddress->family() == rak::socket_address::af_inet) ) 160 r = m_ipFilter->find_range( socketAddress->sa_inet()->address_h() ); 161 if( r ) 162 m_logComplete.push_front("Address '" + socketAddress->address_str() + "' is rejected by IP filter range '" + r->to_string()); 163 else 164 if( rpc::call_command_value("get_handshake_log") ) 165 m_logComplete.push_front("IP Filter allowed connection with '" + socketAddress->address_str() + "'"); 166 } 167 return (r==NULL); 168 } 169 170 153 171 void 154 172 Manager::push_log(const char* msg) { 155 173 m_logImportant.push_front(msg); … … 173 191 delete m_downloadStore; 174 192 delete m_httpQueue; 175 193 delete m_fileStatusCache; 194 195 set_ip_filter( NULL ); 176 196 } 177 197 178 198 void … … 216 236 m_downloadList->slot_map_erase()["9_delete_tied"] = "d.delete_tied="; 217 237 218 238 torrent::connection_manager()->set_signal_handshake_log(sigc::mem_fun(this, &Manager::handshake_log)); 239 torrent::connection_manager()->set_filter(sigc::mem_fun(this, &Manager::filter_ip)); 219 240 } 220 241 221 242 void … … 547 568 } 548 569 } 549 570 571 void Manager::reload_ip_filter(void) { 572 if( m_ipFilter ) { 573 push_log("Reloading IP filter"); 574 m_ipFilter->reload(); 575 std::stringstream logMsg("IpFilter reloaded with "); 576 logMsg << m_ipFilter->size() << " ranges total. " << m_ipFilter->get_merges() << " ranges were merged."; 577 push_log( logMsg.str().c_str() ); 578 } 579 } 550 580 }
