From 21596662405641de497ac92ba9800094701e3aeb Mon Sep 17 00:00:00 2001 From: Andrew Psaltis Date: Thu, 26 Nov 2009 00:45:59 -0500 Subject: [PATCH 1/2] Make dhcp hostnames optional, and modify wicd-curses to support this. If the no hostname is to be used, then we give dhcp the system hostname instead. --- curses/netentry_curses.py | 20 +++++++++++++++----- wicd/networking.py | 10 ++++++++-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/curses/netentry_curses.py b/curses/netentry_curses.py index 6099a0f..a47e1db 100644 --- a/curses/netentry_curses.py +++ b/curses/netentry_curses.py @@ -59,6 +59,7 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): dns2_t = ('editcp',language['dns']+ ' 2'+':'+' '*8) dns3_t = ('editcp',language['dns']+ ' 3'+':'+' '*8) + use_dhcp_h_t = ("Use DHCP Hostname") dhcp_h_t = ('editcp',"DHCP Hostname:") cancel_t = 'Cancel' @@ -66,9 +67,9 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): self.static_ip_cb = urwid.CheckBox(static_ip_t, on_state_change=self.static_ip_toggle) - self.ip_edit =DynWrap(urwid.Edit(ip_t),False) - self.netmask_edit=DynWrap(urwid.Edit(netmask_t),False) - self.gateway_edit=DynWrap(urwid.Edit(gateway_t),False) + self.ip_edit = DynWrap(urwid.Edit(ip_t),False) + self.netmask_edit = DynWrap(urwid.Edit(netmask_t),False) + self.gateway_edit = DynWrap(urwid.Edit(gateway_t),False) self.static_dns_cb = DynWrap(urwid.CheckBox(use_static_dns_t, @@ -83,7 +84,8 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): self.dns2 = DynWrap(urwid.Edit(dns2_t) ,False) self.dns3 = DynWrap(urwid.Edit(dns3_t) ,False) - self.dhcp_h = urwid.AttrWrap(urwid.Edit(dhcp_h_t),'editbx','editfc') + self.use_dhcp_h = urwid.CheckBox(use_dhcp_h_t,False,on_state_change=self.use_dhcp_h_toggle) + self.dhcp_h = DynWrap(urwid.Edit(dhcp_h_t),False) _blank = urwid.Text('') @@ -96,6 +98,7 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): self.dns_dom_edit,self.search_dom_edit, self.dns1,self.dns2,self.dns3, _blank, + self.use_dhcp_h, self.dhcp_h, _blank ]) @@ -103,10 +106,12 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): self._listbox = urwid.ListBox(walker) - #self._frame = urwid.Frame(self._listbox) self._frame = urwid.Frame(self._listbox) self.__super.__init__(self._frame) + def use_dhcp_h_toggle(self,checkb,new_state,user_data=None): + self.dhcp_h.set_sensitive(new_state) + def static_ip_toggle(self,checkb,new_state,user_data=None): for w in [ self.ip_edit,self.netmask_edit,self.gateway_edit ]: w.set_sensitive(new_state) @@ -173,6 +178,7 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): self.set_net_prop("dns2", '') self.set_net_prop("dns3", '') self.set_net_prop('dhcphostname',self.dhcp_h.get_edit_text()) + self.set_net_prop('usedhcphostname',self.use_dhcp_h.get_state()) # Prevent comboboxes from dying. def ready_widgets(self,ui,body): pass @@ -216,6 +222,8 @@ class WiredSettingsDialog(AdvancedSettingsDialog): if dhcphname is None: dhcphname = os.uname()[1] + self.use_dhcp_h.set_state(bool(wired.GetWiredProperty('usedhcphostname'))) + self.dhcp_h.set_sensitive(self.use_dhcp_h.get_state()) self.dhcp_h.set_edit_text(unicode(dhcphname)) def save_settings(self): @@ -321,6 +329,8 @@ class WirelessSettingsDialog(AdvancedSettingsDialog): dhcphname = wireless.GetWirelessProperty(networkID,"dhcphostname") if dhcphname is None: dhcphname = os.uname()[1] + self.use_dhcp_h.set_state(bool(wireless.GetWirelessProperty(networkID,'usedhcphostname'))) + self.dhcp_h.set_sensitive(self.use_dhcp_h.get_state()) self.dhcp_h.set_edit_text(unicode(dhcphname)) diff --git a/wicd/networking.py b/wicd/networking.py index 0ea258e..6982dd5 100644 --- a/wicd/networking.py +++ b/wicd/networking.py @@ -448,10 +448,16 @@ class ConnectThread(threading.Thread): else: # Run dhcp... self.SetStatus('running_dhcp') + if self.network.get('usedhcphostname') == None: + self.network['usedhcphostname'] = False if self.network.get('dhcphostname') == None: self.network['dhcphostname'] = os.uname()[1] - print "Running DHCP with hostname",self.network["dhcphostname"] - dhcp_status = iface.StartDHCP(self.network["dhcphostname"]) + if not self.network['usedhcphostname']: + hname = os.uname()[1] + else: + hname = self.network['dhcphostname'] + print "Running DHCP with hostname",hname + dhcp_status = iface.StartDHCP(hname) if dhcp_status in ['no_dhcp_offers', 'dhcp_failed']: if self.connect_result != "aborted": self.abort_connection(dhcp_status) From 2dcc230b0bca6c2b4f5807d67d8242f2876a171c Mon Sep 17 00:00:00 2001 From: Andrew Psaltis Date: Thu, 26 Nov 2009 00:48:49 -0500 Subject: [PATCH 2/2] Add whitespace after the dhcp hostname edit label. --- curses/netentry_curses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curses/netentry_curses.py b/curses/netentry_curses.py index a47e1db..0175935 100644 --- a/curses/netentry_curses.py +++ b/curses/netentry_curses.py @@ -60,7 +60,7 @@ class AdvancedSettingsDialog(urwid.WidgetWrap): dns3_t = ('editcp',language['dns']+ ' 3'+':'+' '*8) use_dhcp_h_t = ("Use DHCP Hostname") - dhcp_h_t = ('editcp',"DHCP Hostname:") + dhcp_h_t = ('editcp',"DHCP Hostname: ") cancel_t = 'Cancel' ok_t = 'OK'