aboutsummaryrefslogtreecommitdiffstats
path: root/.i3/py3status/backup/ns_checker.py
diff options
context:
space:
mode:
Diffstat (limited to '.i3/py3status/backup/ns_checker.py')
-rw-r--r--.i3/py3status/backup/ns_checker.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/.i3/py3status/backup/ns_checker.py b/.i3/py3status/backup/ns_checker.py
new file mode 100644
index 0000000..4a332b1
--- /dev/null
+++ b/.i3/py3status/backup/ns_checker.py
@@ -0,0 +1,57 @@
+import dns.resolver
+import socket
+
+
+class Py3status:
+ """
+ This module launch a simple query on each nameservers for the specified domain.
+ Nameservers are dynamically retrieved. The FQDN is the only one mandatory parameter.
+ It's also possible to add additional nameservers by appending them in nameservers list.
+
+ The default resolver can be overwritten with my_resolver.nameservers parameter.
+
+ Written and contributed by @nawadanp
+ """
+ def __init__(self):
+ self.domain = 'google.com'
+ self.lifetime = 0.3
+ self.resolver = []
+ self.nameservers = []
+
+ def ns_checker(self, i3status_output_json, i3status_config):
+ response = {'full_text': '', 'name': 'ns_checker'}
+ position = 0
+ counter = 0
+ error = False
+ nameservers = []
+
+ my_resolver = dns.resolver.Resolver()
+ my_resolver.lifetime = self.lifetime
+ if self.resolver:
+ my_resolver.nameservers = self.resolver
+
+ my_ns = my_resolver.query(self.domain, 'NS')
+
+ # Insert each NS ip address in nameservers
+ for ns in my_ns:
+ nameservers.append(str(socket.gethostbyname(str(ns))))
+ for ns in self.nameservers:
+ nameservers.append(str(ns))
+
+ # Perform a simple DNS query, for each NS servers
+ for ns in nameservers:
+ my_resolver.nameservers = [ns]
+ counter += 1
+ try:
+ my_resolver.query(self.domain, 'A')
+ except:
+ error = True
+
+ if error:
+ response['full_text'] = str(counter) + ' NS NOK'
+ response['color'] = i3status_config['color_bad']
+ else:
+ response['full_text'] = str(counter) + ' NS OK'
+ response['color'] = i3status_config['color_good']
+
+ return (position, response)