1
0
mirror of https://github.com/gryf/wicd.git synced 2025-12-25 07:32:29 +01:00

Correctly flush resolvconf DNS records

This commit is contained in:
David Paleino
2012-11-01 17:22:59 +01:00
parent 20e02cd191
commit 4b9a79a462
2 changed files with 28 additions and 0 deletions

View File

@@ -222,6 +222,7 @@ class Controller(object):
iface.ReleaseDHCP()
iface.SetAddress('0.0.0.0')
iface.FlushRoutes()
iface.FlushDNS()
iface.Down()
iface.Up()
misc.ExecuteScripts(wpath.postdisconnectscripts, self.debug,
@@ -464,6 +465,17 @@ class ConnectThread(threading.Thread):
self.abort_connection(dhcp_status)
return
@abortable
def flush_dns_addresses(self, iface):
""" Flush the added DNS address(es).
This is only useful when using resolvconf, since we effectively have no
foolproof way of removing added DNS addresses from a non-resolvconf
setup.
"""
iface.FlushDNS()
@abortable
def set_dns_addresses(self, iface):
""" Set the DNS address(es).
@@ -908,6 +920,7 @@ class WirelessConnectThread(ConnectThread):
self.reset_ip_addresses(wiface)
self.stop_wpa(wiface)
self.flush_routes(wiface)
self.flush_dns_addresses(wiface)
wiface.SetMode(self.network['mode'])
wiface.SetBitrate(self.bitrate, self.allow_lower_bitrates)
@@ -983,6 +996,7 @@ class WirelessConnectThread(ConnectThread):
# Clean up before aborting.
iface.SetAddress('0.0.0.0')
iface.FlushRoutes()
iface.FlushDNS()
if hasattr(iface, "StopWPA"):
iface.StopWPA()
self.abort_connection('association_failed')
@@ -1162,6 +1176,7 @@ class WiredConnectThread(ConnectThread):
self.reset_ip_addresses(liface)
self.stop_wpa(liface)
self.flush_routes(liface)
self.flush_dns_addresses(liface)
# Bring up interface.
self.put_iface_up(liface)

View File

@@ -643,6 +643,19 @@ class BaseInterface(object):
if self.verbose: print cmd
misc.Run(cmd)
@neediface(False)
def FlushDNS(self):
""" Remove added DNS servers from system resolv.conf.
Only useful for resolvconf-based setups.
"""
if self.resolvconf_cmd:
cmd = [self.resolvconf_cmd, '-d', self.iface + '.wicd']
if self.verbose: print cmd
p = misc.Run(cmd, include_stderr=True, return_obj=True)
p.communicate()
@neediface(False)
def SetDNS(self, dns1=None, dns2=None, dns3=None,
dns_dom=None, search_dom=None):