at 16.09-beta 120 lines 5.2 kB view raw
1diff -ruN wicd-1.7.2.4.orig/wicd/wicd-daemon.py wicd-1.7.2.4/wicd/wicd-daemon.py 2--- wicd-1.7.2.4.orig/wicd/wicd-daemon.py 2013-06-22 18:55:02.641242947 +0000 3+++ wicd-1.7.2.4/wicd/wicd-daemon.py 2013-06-22 18:58:33.990244153 +0000 4@@ -69,6 +69,7 @@ 5 wireless_conf = os.path.join(wpath.etc, "wireless-settings.conf") 6 wired_conf = os.path.join(wpath.etc, "wired-settings.conf") 7 dhclient_conf = os.path.join(wpath.etc, "dhclient.conf.template") 8+dhclient_conf_default = os.path.join(wpath.share, "other", "dhclient.conf.template.default") 9 10 class WicdDaemon(dbus.service.Object): 11 """ The main wicd daemon class. 12@@ -910,7 +911,7 @@ 13 14 if not os.path.isfile(dhclient_conf): 15 print "dhclient.conf.template not found, copying..." 16- shutil.copy(dhclient_conf + ".default", dhclient_conf) 17+ shutil.copy(dhclient_conf_default, dhclient_conf) 18 # Hide the files, so the keys aren't exposed. 19 print "chmoding configuration files 0600..." 20 os.chmod(app_conf.get_config(), 0600)diff -ruN wicd-1.7.2.4.orig/wicd/wnettools.py wicd-1.7.2.4/wicd/wnettools.py 21--- wicd-1.7.2.4.orig/wicd/wnettools.py 2013-03-30 21:47:19.804907552 +0000 22+++ wicd-1.7.2.4/wicd/wnettools.py 2013-03-31 08:44:37.572792110 +0000 23@@ -37,6 +37,7 @@ 24 import time 25 from string import maketrans, translate 26 27+import tempfile 28 import wpath 29 import misc 30 from misc import find_path 31@@ -216,6 +217,7 @@ 32 self.flush_tool = None 33 self.link_detect = None 34 self.dhcp_object = None 35+ self.dhclient_conf_path = None; 36 37 def SetDebugMode(self, value): 38 """ If True, verbose output is enabled. """ 39@@ -277,12 +279,6 @@ 40 cmd = "" 41 return (client, cmd) 42 43- # probably /var/lib/wicd/dhclient.conf with defaults 44- dhclient_conf_path = os.path.join( 45- wpath.varlib, 46- 'dhclient.conf' 47- ) 48- 49 client_dict = { 50 "dhclient" : 51 {'connect' : r"%(cmd)s -cf %(dhclientconf)s %(iface)s", 52@@ -307,41 +303,44 @@ 53 } 54 (client_name, cmd) = get_client_name(self.DHCP_CLIENT) 55 56- # cause dhclient doesn't have a handy dandy argument 57- # for specifing the hostname to be sent 58- if client_name == "dhclient" and flavor: 59- if hostname == None: 60- # <hostname> will use the system hostname 61- # we'll use that if there is hostname passed 62- # that shouldn't happen, though 63- hostname = '<hostname>' 64- print 'attempting to set hostname with dhclient' 65- print 'using dhcpcd or another supported client may work better' 66- dhclient_template = \ 67- open(os.path.join(wpath.etc, 'dhclient.conf.template'), 'r') 68- 69- output_conf = open(dhclient_conf_path, 'w') 70- 71- for line in dhclient_template.readlines(): 72- line = line.replace('$_HOSTNAME', hostname) 73- output_conf.write(line) 74- 75- output_conf.close() 76- dhclient_template.close() 77- os.chmod(dhclient_conf_path, 0644) 78- 79 if not client_name or not cmd: 80 print "WARNING: Failed to find a valid dhcp client!" 81 return "" 82 83 if flavor == "connect": 84+ # cause dhclient doesn't have a handy dandy argument 85+ # for specifing the hostname to be sent 86+ if client_name == "dhclient" and flavor: 87+ if hostname == None: 88+ # <hostname> will use the system hostname 89+ # we'll use that if there is hostname passed 90+ # that shouldn't happen, though 91+ hostname = '<hostname>' 92+ print 'attempting to set hostname with dhclient' 93+ print 'using dhcpcd or another supported client may work better' 94+ if not self.dhclient_conf_path: 95+ _,self.dhclient_conf_path = tempfile.mkstemp() 96+ print 'New dhclient conf path: %s ' % self.dhclient_conf_path 97+ dhclient_template = \ 98+ open(os.path.join(wpath.etc, 'dhclient.conf.template'), 'r') 99+ 100+ output_conf = open(self.dhclient_conf_path, 'w') 101+ 102+ for line in dhclient_template.readlines(): 103+ line = line.replace('$_HOSTNAME', hostname) 104+ output_conf.write(line) 105+ 106+ output_conf.close() 107+ dhclient_template.close() 108+ os.chmod(self.dhclient_conf_path, 0644) 109+ 110 if not hostname: 111 hostname = os.uname()[1] 112 return client_dict[client_name]['connect'] % \ 113 { "cmd" : cmd, 114 "iface" : self.iface, 115 "hostname" : hostname, 116- 'dhclientconf' : dhclient_conf_path } 117+ 'dhclientconf' : self.dhclient_conf_path } 118 elif flavor == "release": 119 return client_dict[client_name]['release'] % {"cmd":cmd, "iface":self.iface} 120 else: