Changeset 618


Ignore:
Timestamp:
11/04/08 11:23:55 (11 years ago)
Author:
Eoin
Message:

Port randomization and router model reporting added.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r616 r618  
    168168    CONTROL         "Enable DHT Extentions",HAL_BC_DHT_EXT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,120,90,10 
    169169    CONTROL         "to",HAL_BC_PORTCHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,29,40,12 
     170    CONTROL         "Select random port within this range.",HAL_BITT_RANDOMIZE_PORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,29,40,12 
    170171    LTEXT           "Select the (TCP) port (or range) on which to listen for incoming connections.",HAL_BITT_SELECT_TEXT,12,17,300,11,SS_WORDELLIPSIS | SS_CENTERIMAGE 
    171172    GROUPBOX        "Distributed Hash Tables",HAL_BITT_GDHT,5,108,260,39 
     
    181182    CONTROL         "UnPlug and Play",HAL_BITT_GPORTFORWARD_UPNG,"Button",BS_AUTOCHECKBOX,284,83,16,11 
    182183    CONTROL         "NAT-PMG",HAL_BIT_GPORTFORWARD_NATPMP,"Button",BS_AUTOCHECKBOX,284,93,16,11 
     184    LTEXT           "UPnP router model (if recognised).",HAL_BIT_GPORTFORWARD_MODEL,12,17,300,11,SS_WORDELLIPSIS | SS_CENTERIMAGE        
     185    EDITTEXT        HAL_BIT_GPORTFORWARD_MODELTEXT,135,29,65,12,ES_AUTOHSCROLL 
    183186    PUSHBUTTON      "Test",HAL_BITT_GPORTFORWARD_TEST,207,46,51,11,NOT WS_VISIBLE 
    184187 
  • trunk/sln/Halite/Halite.vcproj

    r616 r618  
    13391339                                </File> 
    13401340                                <File 
    1341                                         RelativePath="..\..\src\global\string_conv.hpp" 
    1342                                         > 
    1343                                 </File> 
    1344                                 <File 
    13451341                                        RelativePath="..\..\src\advtabs\ThemeTestDialog.hpp" 
    13461342                                        > 
     
    13671363                                > 
    13681364                                <File 
    1369                                         RelativePath="..\..\src\WTLx\GenericAddListView.hpp" 
    1370                                         > 
    1371                                 </File> 
    1372                                 <File 
    13731365                                        RelativePath="..\..\src\global\ini.hpp" 
    13741366                                        > 
     
    13761368                                <File 
    13771369                                        RelativePath="..\..\src\global\logger.hpp" 
     1370                                        > 
     1371                                </File> 
     1372                                <File 
     1373                                        RelativePath="..\..\src\global\string_conv.hpp" 
    13781374                                        > 
    13791375                                </File> 
     
    14441440                                <File 
    14451441                                        RelativePath="..\..\src\WTLx\GenericAddDialog.hpp" 
     1442                                        > 
     1443                                </File> 
     1444                                <File 
     1445                                        RelativePath="..\..\src\WTLx\GenericAddListView.hpp" 
    14461446                                        > 
    14471447                                </File> 
  • trunk/src/ConfigOptions.hpp

    r542 r618  
    7474#define HAL_CGLOBAL_SHARETIMET          ID_CONFIG_BEGIN + 64 
    7575#define HAL_CGLOBAL_SHARETIME           ID_CONFIG_BEGIN + 65 
     76#define HAL_BITT_RANDOMIZE_PORT         ID_CONFIG_BEGIN + 66 
     77#define HAL_BIT_GPORTFORWARD_MODELTEXT          ID_CONFIG_BEGIN + 67 
     78#define HAL_BIT_GPORTFORWARD_MODEL      ID_CONFIG_BEGIN + 68 
     79 
    7680 
    7781#ifndef RC_INVOKED 
     
    268272    BEGIN_DDX_MAP(thisClass) 
    269273        DDX_CHECK(HAL_BC_PORTCHECK, hal::config().use_port_range_) 
     274        DDX_CHECK(HAL_BITT_RANDOMIZE_PORT, hal::config().randomize_port_) 
    270275        DDX_INT(HAL_BC_PORTFROM, hal::config().port_range_.first) 
    271276        DDX_INT(HAL_BC_PORTTO, hal::config().port_range_.second)                 
     
    282287                WMB_ROW(_auto,  HAL_BITT_SELECT_TEXT, _r, _r, _r), \ 
    283288                WMB_ROW(_auto,  HAL_BITT_OPENPORT, HAL_BC_PORTFROM, HAL_BC_PORTCHECK, HAL_BC_PORTTO), \ 
     289                WMB_ROW(_auto,  0, HAL_BITT_RANDOMIZE_PORT, _r, _r), \ 
    284290                WMB_ROW(_auto,  HAL_BC_HALFCONN_CHECK, _r, HAL_BC_HALFCONN_NUM), \ 
    285291        WMB_END() 
     
    294300        WMB_HEAD(WMB_COL(_gap), WMB_COLNOMAX(_exp|50), WMB_COLNOMAX(_exp), WMB_COL(_gap)), \ 
    295301                WMB_ROW(_gap|3, HAL_BITT_GPORTFORWARDING, _r, _r, _r),\ 
    296                 WMB_ROW(_auto,  _d, HAL_BITT_GPORTFORWARD_UPNG, HAL_BITT_GPORTFORWARD_TEST), \ 
    297                 WMB_ROW(_auto,  _d, HAL_BIT_GPORTFORWARD_NATPMP, _r), \ 
     302                WMB_ROW(_auto,  _d, HAL_BITT_GPORTFORWARD_UPNG, HAL_BIT_GPORTFORWARD_MODEL), \ 
     303                WMB_ROW(_auto,  _d, HAL_BIT_GPORTFORWARD_NATPMP, HAL_BIT_GPORTFORWARD_MODELTEXT), \ 
    298304                WMB_ROW(_gap,   _d), \ 
    299305        WMB_END() 
     
    326332                onDHTCheck(0, 0, GetDlgItem(HAL_BC_DHT)); 
    327333 
     334                SetDlgItemText(HAL_BIT_GPORTFORWARD_MODELTEXT, hal::bittorrent().upnp_router_model().c_str()); 
     335 
    328336                autosizeClass::CtrlsArrange(); 
    329337                return retval; 
     
    363371                { 
    364372                        ::EnableWindow(GetDlgItem(HAL_BC_PORTTO), true); 
     373                        ::EnableWindow(GetDlgItem(HAL_BITT_RANDOMIZE_PORT), true); 
    365374                } 
    366375                else 
    367376                { 
    368377                        ::EnableWindow(GetDlgItem(HAL_BC_PORTTO), false); 
    369                         boost::array<wchar_t, MAX_PATH> buffer; 
    370                         GetDlgItemText(HAL_BC_PORTFROM, buffer.elems, MAX_PATH); 
    371                         SetDlgItemText(HAL_BC_PORTTO, buffer.elems); 
     378                        ::EnableWindow(GetDlgItem(HAL_BITT_RANDOMIZE_PORT), false); 
     379 
     380                        hal::win_c_str<std::wstring> str(MAX_PATH); 
     381                        GetDlgItemText(HAL_BC_PORTFROM, str, str.size()); 
     382                        SetDlgItemText(HAL_BC_PORTTO, str); 
    372383                } 
    373384        } 
  • trunk/src/HaliteListView.cpp

    r617 r618  
    378378                }; 
    379379        } 
     380 
     381        halWindow_.issueUiUpdate(); 
    380382         
    381383        return 0; 
  • trunk/src/halConfig.cpp

    r569 r618  
    3131        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Applying BitTorrent session settings.")));         
    3232 
    33         bittorrent().set_mapping(mapping_upnp_, mapping_nat_pmp_);       
     33        bittorrent().set_mapping(mapping_upnp_, mapping_nat_pmp_); 
    3434 
    35         event_log.post(shared_ptr<EventDetail>(new EventMsg( 
    36                         hal::wform(L"Trying port in range %1% - %2%.") % port_range_.first % port_range_.second))); 
    3735        try 
     36        {                
     37 
     38        if (randomize_port_) 
    3839        { 
    39         bool success = bittorrent().listen_on(port_range_); 
    40         if (!success) 
     40                std::srand(GetTickCount()); 
     41 
     42                for (int i=0, e=10; i!=e; ++i) 
     43                { 
     44                        unsigned range = port_range_.second - port_range_.first; 
     45                        unsigned port = port_range_.first + (range * std::rand())/RAND_MAX; 
     46 
     47                        event_log.post(shared_ptr<EventDetail>(new EventMsg( 
     48                                        hal::wform(L"Attempting port %1%.") % port))); 
     49 
     50                        bool success = bittorrent().listen_on(std::make_pair(port,port)); 
     51                        if (success) break; 
     52                } 
     53        } 
     54        else 
    4155        { 
    42                 hal::event_log.post(boost::shared_ptr<hal::EventDetail>( 
    43                         new hal::EventDebug(event_logger::critical, L"settingsThread, Init"))); 
    44                  
    45                 return false; 
     56                event_log.post(shared_ptr<EventDetail>(new EventMsg( 
     57                                hal::wform(L"Trying port in range %1% - %2%.") % port_range_.first % port_range_.second))); 
     58 
     59                bool success = bittorrent().listen_on(port_range_); 
     60                if (!success) 
     61                { 
     62                        hal::event_log.post(boost::shared_ptr<hal::EventDetail>( 
     63                                new hal::EventDebug(event_logger::critical, L"settingsThread, Listen"))); 
     64                         
     65                        return false; 
     66                } 
    4667        } 
     68 
    4769        } 
    4870        catch(const std::exception& e) 
    4971        { 
    5072                hal::event_log.post(boost::shared_ptr<hal::EventDetail>( 
    51                         new hal::EventStdException(event_logger::critical, e, L"settingsThread, Init")));  
     73                        new hal::EventStdException(event_logger::critical, e, L"settingsThread, Listen")));  
    5274                 
    5375                return false; 
    5476        } 
     77 
    5578 
    5679        event_log.post(shared_ptr<EventDetail>(new EventMsg(hal::wform(L"Opened listen port; %1%.") % bittorrent().is_listening_on()))); 
  • trunk/src/halConfig.hpp

    r573 r618  
    3131                port_range_(6881,6881), 
    3232                use_port_range_(false), 
     33                randomize_port_(false), 
    3334                enable_dht_(true), 
    3435                dht_settings_(), 
     
    6465                        & make_nvp("use_move_to", use_move_to_) 
    6566                        & make_nvp("save_prompt", save_prompt_) 
     67                        & make_nvp("randomize_port", randomize_port_)                    
    6668                        & make_nvp("torrent_defaults", torrent_defaults_) 
    6769                        & make_nvp("queue_settings", queue_settings_) 
     
    140142        std::pair<int, int> port_range_; 
    141143        bool use_port_range_; 
     144        bool randomize_port_; 
    142145 
    143146        hal::connections torrent_defaults_; 
  • trunk/src/halSession.hpp

    r614 r618  
    2424#       include <libtorrent/entry.hpp> 
    2525#       include <libtorrent/bencode.hpp> 
     26#       include <libtorrent/upnp.hpp> 
     27#       include <libtorrent/natpmp.hpp> 
    2628#       include <libtorrent/session.hpp> 
    2729#       include <libtorrent/ip_filter.hpp> 
     
    389391                { 
    390392                        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Starting UPnP mapping."))); 
    391                         session_.start_upnp(); 
     393 
     394                        upnp_ = session_.start_upnp(); 
    392395                } 
    393396                else 
    394397                { 
    395398                        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Stopping UPnP mapping."))); 
     399 
    396400                        session_.stop_upnp(); 
     401                        upnp_ = NULL; 
    397402                } 
    398403 
     
    400405                { 
    401406                        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Starting NAT-PMP mapping."))); 
    402                         session_.start_natpmp(); 
     407 
     408                        natpmp_ = session_.start_natpmp(); 
    403409                } 
    404410                else 
    405411                { 
    406412                        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Stopping NAT-PMP mapping."))); 
     413 
    407414                        session_.stop_natpmp(); 
    408                 } 
     415                        natpmp_ = NULL; 
     416                } 
     417        } 
     418 
     419        std::wstring upnp_router_model() 
     420        { 
     421                if (upnp_) 
     422                        return to_wstr_shim(upnp_->router_model()); 
     423                else 
     424                        return L"UPnP not started"; 
    409425        } 
    410426 
     
    10551071        libt::dht_settings dht_settings_; 
    10561072        libt::entry dht_state_;  
     1073 
     1074        libt::upnp* upnp_; 
     1075        libt::natpmp* natpmp_; 
    10571076}; 
    10581077 
  • trunk/src/halTorrent.cpp

    r616 r618  
    141141{ 
    142142        pimpl->set_mapping(upnp, nat_pmp); 
     143} 
     144 
     145std::wstring bit::upnp_router_model() 
     146{ 
     147        return pimpl->upnp_router_model(); 
    143148} 
    144149 
  • trunk/src/halTorrent.hpp

    r617 r618  
    809809 
    810810        void set_mapping(bool upnp, bool nat_pmp); 
     811        std::wstring upnp_router_model(); 
    811812 
    812813        void ip_v4_filter_block(boost::asio::ip::address_v4 first, boost::asio::ip::address_v4 last); 
Note: See TracChangeset for help on using the changeset viewer.