[modules/publicip] add default route monitor
(re)add a separate thread that monitors the default route and updates the module immediately, if the default route changes. fixes #909
This commit is contained in:
parent
062506f467
commit
a7dba79664
1 changed files with 27 additions and 24 deletions
|
@ -53,6 +53,18 @@ class Module(core.module.Module):
|
|||
# By default show: <ip> (<2 letter country code>)
|
||||
self._format = self.parameter("format", "{ip} ({country_code})")
|
||||
|
||||
self.__monitor = threading.Thread(target=self.monitor, args=())
|
||||
self.__monitor.start()
|
||||
|
||||
def monitor(self):
|
||||
current_default_route = None
|
||||
default_route = None
|
||||
while threading.main_thread().is_alive():
|
||||
current_default_route = netifaces.gateways()["default"][2]
|
||||
if current_default_route != default_route:
|
||||
self.update()
|
||||
time.sleep(1)
|
||||
|
||||
def publicip(self, widget):
|
||||
if widget.get("public_ip") == None:
|
||||
return "n/a"
|
||||
|
@ -70,17 +82,8 @@ class Module(core.module.Module):
|
|||
def update(self):
|
||||
widget = self.widget()
|
||||
|
||||
self.__current_default_route = netifaces.gateways()["default"][2]
|
||||
|
||||
try:
|
||||
# Updates public ip information if a change to default route is detected
|
||||
if self.__current_default_route != self.__previous_default_route:
|
||||
# Sets __previous_default_route in preparation for next change check
|
||||
self.__previous_default_route = self.__current_default_route
|
||||
|
||||
# Refresh location information
|
||||
util.location.reset()
|
||||
|
||||
# Fetch fresh location information
|
||||
__info = util.location.location_info()
|
||||
|
||||
|
|
Loading…
Reference in a new issue