102 lines
4 KiB
Diff
102 lines
4 KiB
Diff
|
diff -ruN wicd-1.7.2.4.orig/wicd/wnettools.py wicd-1.7.2.4/wicd/wnettools.py
|
||
|
--- wicd-1.7.2.4.orig/wicd/wnettools.py 2013-03-30 21:47:19.804907552 +0000
|
||
|
+++ wicd-1.7.2.4/wicd/wnettools.py 2013-03-31 08:44:37.572792110 +0000
|
||
|
@@ -37,6 +37,7 @@
|
||
|
import time
|
||
|
from string import maketrans, translate
|
||
|
|
||
|
+import tempfile
|
||
|
import wpath
|
||
|
import misc
|
||
|
from misc import find_path
|
||
|
@@ -216,6 +217,7 @@
|
||
|
self.flush_tool = None
|
||
|
self.link_detect = None
|
||
|
self.dhcp_object = None
|
||
|
+ self.dhclient_conf_path = None;
|
||
|
|
||
|
def SetDebugMode(self, value):
|
||
|
""" If True, verbose output is enabled. """
|
||
|
@@ -277,12 +279,6 @@
|
||
|
cmd = ""
|
||
|
return (client, cmd)
|
||
|
|
||
|
- # probably /var/lib/wicd/dhclient.conf with defaults
|
||
|
- dhclient_conf_path = os.path.join(
|
||
|
- wpath.varlib,
|
||
|
- 'dhclient.conf'
|
||
|
- )
|
||
|
-
|
||
|
client_dict = {
|
||
|
"dhclient" :
|
||
|
{'connect' : r"%(cmd)s -cf %(dhclientconf)s %(iface)s",
|
||
|
@@ -307,41 +303,44 @@
|
||
|
}
|
||
|
(client_name, cmd) = get_client_name(self.DHCP_CLIENT)
|
||
|
|
||
|
- # cause dhclient doesn't have a handy dandy argument
|
||
|
- # for specifing the hostname to be sent
|
||
|
- if client_name == "dhclient" and flavor:
|
||
|
- if hostname == None:
|
||
|
- # <hostname> will use the system hostname
|
||
|
- # we'll use that if there is hostname passed
|
||
|
- # that shouldn't happen, though
|
||
|
- hostname = '<hostname>'
|
||
|
- print 'attempting to set hostname with dhclient'
|
||
|
- print 'using dhcpcd or another supported client may work better'
|
||
|
- dhclient_template = \
|
||
|
- open(os.path.join(wpath.etc, 'dhclient.conf.template'), 'r')
|
||
|
-
|
||
|
- output_conf = open(dhclient_conf_path, 'w')
|
||
|
-
|
||
|
- for line in dhclient_template.readlines():
|
||
|
- line = line.replace('$_HOSTNAME', hostname)
|
||
|
- output_conf.write(line)
|
||
|
-
|
||
|
- output_conf.close()
|
||
|
- dhclient_template.close()
|
||
|
- os.chmod(dhclient_conf_path, 0644)
|
||
|
-
|
||
|
if not client_name or not cmd:
|
||
|
print "WARNING: Failed to find a valid dhcp client!"
|
||
|
return ""
|
||
|
|
||
|
if flavor == "connect":
|
||
|
+ # cause dhclient doesn't have a handy dandy argument
|
||
|
+ # for specifing the hostname to be sent
|
||
|
+ if client_name == "dhclient" and flavor:
|
||
|
+ if hostname == None:
|
||
|
+ # <hostname> will use the system hostname
|
||
|
+ # we'll use that if there is hostname passed
|
||
|
+ # that shouldn't happen, though
|
||
|
+ hostname = '<hostname>'
|
||
|
+ print 'attempting to set hostname with dhclient'
|
||
|
+ print 'using dhcpcd or another supported client may work better'
|
||
|
+ if not self.dhclient_conf_path:
|
||
|
+ _,self.dhclient_conf_path = tempfile.mkstemp()
|
||
|
+ print 'New dhclient conf path: %s ' % self.dhclient_conf_path
|
||
|
+ dhclient_template = \
|
||
|
+ open(os.path.join(wpath.etc, 'dhclient.conf.template'), 'r')
|
||
|
+
|
||
|
+ output_conf = open(self.dhclient_conf_path, 'w')
|
||
|
+
|
||
|
+ for line in dhclient_template.readlines():
|
||
|
+ line = line.replace('$_HOSTNAME', hostname)
|
||
|
+ output_conf.write(line)
|
||
|
+
|
||
|
+ output_conf.close()
|
||
|
+ dhclient_template.close()
|
||
|
+ os.chmod(self.dhclient_conf_path, 0644)
|
||
|
+
|
||
|
if not hostname:
|
||
|
hostname = os.uname()[1]
|
||
|
return client_dict[client_name]['connect'] % \
|
||
|
{ "cmd" : cmd,
|
||
|
"iface" : self.iface,
|
||
|
"hostname" : hostname,
|
||
|
- 'dhclientconf' : dhclient_conf_path }
|
||
|
+ 'dhclientconf' : self.dhclient_conf_path }
|
||
|
elif flavor == "release":
|
||
|
return client_dict[client_name]['release'] % {"cmd":cmd, "iface":self.iface}
|
||
|
else:
|