Ticket #2861: deluge-libtorrent-1.1-geoip.patch

File deluge-libtorrent-1.1-geoip.patch, 2.9 KB (added by XRevan86, 8 years ago)
  • deluge/core/preferencesmanager.py

    a b from deluge.event import ConfigValueChan 
    2222 
    2323log = logging.getLogger(__name__) 
    2424 
     25try: 
     26    import GeoIP 
     27except ImportError: 
     28    GeoIP = None 
     29 
    2530DEFAULT_PREFS = { 
    2631    "send_info": False, 
    2732    "info_sent": 0.0, 
    class PreferencesManager(component.Compo 
    124129        self.core = component.get("Core") 
    125130        self.session = component.get("Core").session 
    126131        self.new_release_timer = None 
     132        self.geoip_instance = None 
    127133 
    128134    def start(self): 
    129135        # Set the initial preferences on start-up 
    def _on_set_geoip_db_location(self, key, value): 
    446452        if geoip_db: 
    447453            try: 
    448454                self.session.load_country_db(str(geoip_db)) 
    449             except RuntimeError as ex: 
    450                 log.error("Unable to load geoip database!") 
    451                 log.exception(ex) 
    452             except AttributeError: 
    453                 log.warning("GeoIP Unavailable") 
     455            except (AttributeError, RuntimeError): 
     456                try: 
     457                    self.geoip_instance = GeoIP.open(geoip_db, GeoIP.GEOIP_STANDARD) 
     458                except AttributeError: 
     459                    log.warning("GeoIP Unavailable") 
     460                except Exception as ex: 
     461                    log.error("Unable to load geoip database!") 
     462                    log.exception(ex) 
    454463 
    455464    def _on_set_cache_size(self, key, value): 
    456465        log.debug("%s: %s", key, value) 
  • deluge/core/torrent.py

    a b class Torrent(object): 
    792792                continue 
    793793 
    794794            client = decode_string(str(peer.client)) 
     795 
     796            try: 
     797                country = peer.country 
     798            except AttributeError: 
     799                country = "" 
     800 
     801            gi = component.get("PreferencesManager").geoip_instance 
     802            if gi: 
     803                try: 
     804                    country = gi.country_code_by_addr(peer.ip[0]) 
     805                except: 
     806                    pass 
     807 
    795808            # Make country a proper string 
    796             country = str() 
    797             for char in peer.country: 
     809            country_tmp = str() 
     810            for char in country: 
    798811                if not char.isalpha(): 
    799                     country += " " 
     812                    country_tmp += " " 
    800813                else: 
    801                     country += char 
     814                    country_tmp += char 
     815            country = country_tmp 
    802816 
    803817            ret.append({ 
    804818                "client": client, 
  • deluge/ui/gtkui/peers_tab.py

    a b class PeersTab(Tab): 
    214214        component.get("SessionProxy").get_torrent_status(torrent_id, ["peers"]).addCallback(self._on_get_torrent_status) 
    215215 
    216216    def get_flag_pixbuf(self, country): 
    217         if country == "  ": 
     217        if not country.strip(): 
    218218            return None 
    219219 
    220220        if country not in self.cached_flag_pixbufs: