Ticket #239: src__core__manager.cc.diff

File src__core__manager.cc.diff, 1.8 KB (added by comer, 4 years ago)

changes to src/core/manager.cc

  • src/core/manager.cc

    old new  
    150150  } 
    151151} 
    152152 
     153uint32_t 
     154Manager::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 
    153171void 
    154172Manager::push_log(const char* msg) { 
    155173  m_logImportant.push_front(msg); 
     
    173191  delete m_downloadStore; 
    174192  delete m_httpQueue; 
    175193  delete m_fileStatusCache; 
     194 
     195  set_ip_filter( NULL ); 
    176196} 
    177197 
    178198void 
     
    216236  m_downloadList->slot_map_erase()["9_delete_tied"]   = "d.delete_tied="; 
    217237 
    218238  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)); 
    219240} 
    220241 
    221242void 
     
    547568  } 
    548569} 
    549570 
     571void 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} 
    550580}