Enabling updates to /etc/resolve.conf either manually or using DHCP supplied DNS
IP
diff --git a/netman.py b/netman.py
index e2b89ca..90cb022 100755
--- a/netman.py
+++ b/netman.py
@@ -245,6 +245,42 @@
rc = call(["systemctl", "restart", "systemd-networkd.service"])
return rc
+ #string of nameservers
+ @dbus.service.method(DBUS_NAME,"s", "s")
+ def SetNameServers (self, nameservers):
+ dns_entry = nameservers.split()
+ fail_msg = ''
+ dhcp_auto = False
+ file_opened = False
+ if len(dns_entry) > 0:
+ for dns in dns_entry:
+ if not self._isvalidip (socket.AF_INET, dns):
+ if dns == "DHCP_AUTO=":
+ #This DNS is supplied by DHCP.
+ dhcp_auto = True
+ else:
+ print "Malformed DNS Address [" + dns + "]"
+ fail_msg = fail_msg + '[' + dns + ']'
+ else:
+ #Only over write on a first valid input
+ if file_opened == False:
+ resolv_conf = open("/etc/resolv.conf",'w')
+ file_opened = True
+ if dhcp_auto == True:
+ resolv_conf.write("### Generated automatically via DHCP ###\n")
+ else:
+ resolv_conf.write("### Generated manually via dbus settings ###\n")
+ dns_ip = 'nameserver ' + dns + '\n'
+ resolv_conf.write(dns_ip)
+ if file_opened == True:
+ resolv_conf.close()
+ else:
+ raise ValueError, "Invalid DNS entry"
+ if len(fail_msg) > 0:
+ return 'Failures encountered processing' + fail_msg
+ else:
+ return "DNS entries updated Successfully"
+
def main():
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()