diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-12-08 03:52:44 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-12-08 03:52:44 +0100 |
commit | 123ecac86250f7f3dd13a3f94758ed997a48cace (patch) | |
tree | 430de0551946968fbd8b92f35bc8fe192c732894 /src | |
parent | use curl instead of wget (diff) | |
download | xpybar-123ecac86250f7f3dd13a3f94758ed997a48cace.tar.gz xpybar-123ecac86250f7f3dd13a3f94758ed997a48cace.tar.bz2 xpybar-123ecac86250f7f3dd13a3f94758ed997a48cace.tar.xz |
proper multi-home support in ipaddress
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | src/plugins/ipaddress.py | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/src/plugins/ipaddress.py b/src/plugins/ipaddress.py index 7f370d6..0b53800 100644 --- a/src/plugins/ipaddress.py +++ b/src/plugins/ipaddress.py @@ -71,22 +71,23 @@ class IPAddress: for info in infos: if info.startswith(nic + ': '): info = [i.lstrip().split(' ') for i in info.split('\n')[1:]] - info = dict((i[0], i[1]) for i in info) + info = dict((i[0], i[1]) for i in info if len(i) > 1) private = info['inet'] if 'inet' in info else None private6 = info['inet6'] if 'inet6' in info else None state = IPAddress.ISOLATED break if not state == IPAddress.DOWN: self.__isolated = True - public = self.__site_0() - if public is None: public = self.__site_1() - if public is None: public = self.__site_2() - if public is None: public = self.__site_3() - if public is None: public = self.__site_4() - if public is None: public = self.__site_5() - if public is None: public = self.__site_6() - if public is None: public = self.__site_7() - if public is None: public = self.__site_8() + download = lambda page : ('curl', '--interface', nic, page) + public = self.__site_0(download) + if public is None: public = self.__site_1(download) + if public is None: public = self.__site_2(download) + if public is None: public = self.__site_3(download) + if public is None: public = self.__site_4(download) + if public is None: public = self.__site_5(download) + if public is None: public = self.__site_6(download) + if public is None: public = self.__site_7(download) + if public is None: public = self.__site_8(download) if public is not None: state = IPAddress.UP elif not self.__isolated: @@ -109,18 +110,18 @@ class IPAddress: return rc - def __site_0(self): + def __site_0(self, download): try: - data = spawn_read('curl', 'http://checkip.dyndns.org') + data = spawn_read(*download('http://checkip.dyndns.org')) if not data == '': self.__isolated = False return data.split('<body>')[1].split('</body>')[0].split(': ')[1] except: return None - def __site_1(self): + def __site_1(self, download): try: - data = spawn_read('curl', 'http://ipecho.net/plain') + data = spawn_read(*download('http://ipecho.net/plain')) if not data == '': self.__isolated = False data = data.strip() @@ -128,9 +129,9 @@ class IPAddress: except: return None - def __site_2(self): + def __site_2(self, download): try: - data = spawn_read('curl', 'http://www.checkmyipaddress.org') + data = spawn_read(*download('http://www.checkmyipaddress.org')) if not data == '': self.__isolated = False data = [line.strip() for line in data.replace('\r\n', '\n').split('\n') if '</h3>' in line] @@ -140,9 +141,9 @@ class IPAddress: except: return None - def __site_3(self): + def __site_3(self, download): try: - data = spawn_read('curl', 'http://www.ip-address.org') + data = spawn_read(*download('http://www.ip-address.org')) if not data == '': self.__isolated = False data = [line.strip(' \t') for line in data.replace('\r\n', '\n').split('\n') if 'ip += ' in line] @@ -159,9 +160,9 @@ class IPAddress: except: return None - def __site_4(self): + def __site_4(self, download): try: - data = spawn_read('curl', 'http://www.myipnumber.com/my-ip-address.asp') + data = spawn_read(*download('http://www.myipnumber.com/my-ip-address.asp')) if not data == '': self.__isolated = False data = data.replace('\r\n', '\n').split('\nThe IP Address of this machine is:\n')[1] @@ -169,36 +170,36 @@ class IPAddress: except: return None - def __site_5(self): + def __site_5(self, download): try: - data = spawn_read('curl', 'http://www.findipinfo.com') + data = spawn_read(*download('http://www.findipinfo.com')) if not data == '': self.__isolated = False return data.split('Your IP Address Is: ')[1].split('<')[0] except: return None - def __site_6(self): + def __site_6(self, download): try: - data = spawn_read('curl', 'http://what-ip.net') + data = spawn_read(*download('http://what-ip.net')) if not data == '': self.__isolated = False return data.split('Your IP Address is : ')[1].split('<b>')[1].split('</b>')[0] except: return None - def __site_7(self): + def __site_7(self, download): try: - data = spawn_read('curl', 'http://my-ip-address.com') + data = spawn_read(*download('http://my-ip-address.com')) if not data == '': self.__isolated = False return data.split('<input ')[1].split('>')[0].split('value=')[1].split('"')[1] except: return None - def __site_8(self): + def __site_8(self, download): try: - data = spawn_read('curl', 'https://duckduckgo.com?q=what is my ip address') + data = spawn_read(*download('https://duckduckgo.com?q=what is my ip address')) if not data == '': self.__isolated = False return data.split('"Answer":"Your IP address is ')[1].split(' ')[0] |