120 lines
5.1 KiB
Diff
120 lines
5.1 KiB
Diff
diff -ruN wicd-1.7.2.4.orig/wicd/wicd-daemon.py wicd-1.7.2.4/wicd/wicd-daemon.py
|
|
--- wicd-1.7.2.4.orig/wicd/wicd-daemon.py 2013-06-22 18:55:02.641242947 +0000
|
|
+++ wicd-1.7.2.4/wicd/wicd-daemon.py 2013-06-22 18:58:33.990244153 +0000
|
|
@@ -69,6 +69,7 @@
|
|
wireless_conf = os.path.join(wpath.etc, "wireless-settings.conf")
|
|
wired_conf = os.path.join(wpath.etc, "wired-settings.conf")
|
|
dhclient_conf = os.path.join(wpath.etc, "dhclient.conf.template")
|
|
+dhclient_conf_default = os.path.join(wpath.share, "other", "dhclient.conf.template.default")
|
|
|
|
class WicdDaemon(dbus.service.Object):
|
|
""" The main wicd daemon class.
|
|
@@ -910,7 +911,7 @@
|
|
|
|
if not os.path.isfile(dhclient_conf):
|
|
print "dhclient.conf.template not found, copying..."
|
|
- shutil.copy(dhclient_conf + ".default", dhclient_conf)
|
|
+ shutil.copy(dhclient_conf_default, dhclient_conf)
|
|
# Hide the files, so the keys aren't exposed.
|
|
print "chmoding configuration files 0600..."
|
|
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
|
|
--- 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:
|