From 6e132f102877bf1d7008ed801de360242bbfef5f Mon Sep 17 00:00:00 2001 From: Adam Blackburn Date: Mon, 27 Jul 2009 21:09:18 -0500 Subject: [PATCH 1/7] moved 55wicd to 91wicd --- in/{other=55wicd.in => other=91wicd.in} | 0 setup.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename in/{other=55wicd.in => other=91wicd.in} (100%) diff --git a/in/other=55wicd.in b/in/other=91wicd.in similarity index 100% rename from in/other=55wicd.in rename to in/other=91wicd.in diff --git a/setup.py b/setup.py index ed56e4e..fbdd0c6 100755 --- a/setup.py +++ b/setup.py @@ -526,7 +526,7 @@ try: data.append((wpath.resume, ['other/80-wicd-connect.sh' ])) data.append((wpath.suspend, ['other/50-wicd-suspend.sh' ])) if not wpath.no_install_pmutils: - data.append((wpath.pmutils, ['other/55wicd' ])) + data.append((wpath.pmutils, ['other/91wicd' ])) print 'Using pid path', os.path.basename(wpath.pidfile) print 'Language support for', for language in os.listdir('translations/'): From d684bac0ab68cf40a7c8f07850012c0f133cfc78 Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Sat, 1 Aug 2009 18:57:00 -0400 Subject: [PATCH 2/7] Fix some minor formatting issues Don't save wired profiles that have only whitespace in their names. --- wicd/wicd-daemon.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/wicd/wicd-daemon.py b/wicd/wicd-daemon.py index ae38208..52f8619 100644 --- a/wicd/wicd-daemon.py +++ b/wicd/wicd-daemon.py @@ -84,7 +84,7 @@ class WicdDaemon(dbus.service.Object): self._debug_mode = bool(self.config.get("Settings", "debug_mode")) self.wifi = networking.Wireless(debug=self._debug_mode) self.wired = networking.Wired(debug=self._debug_mode) - self.wired_bus= WiredDaemon(bus_name, self, wired=self.wired) + self.wired_bus = WiredDaemon(bus_name, self, wired=self.wired) self.wireless_bus = WirelessDaemon(bus_name, self, wifi=self.wifi) self.forced_disconnect = False self.need_profile_chooser = False @@ -518,7 +518,7 @@ class WicdDaemon(dbus.service.Object): # 1 = default profile # 2 = show list # 3 = last used profile - self.config.set("Settings","wired_connect_mode", int(method), + self.config.set("Settings", "wired_connect_mode", int(method), write=True) self.wired_connect_mode = int(method) self.wired_bus.connect_mode = int(method) @@ -856,7 +856,7 @@ class WicdDaemon(dbus.service.Object): """ b_wired = self.wired_bus b_wifi = self.wireless_bus - app_conf= self.config + app_conf = self.config # Load the backend. be_def = 'external' self.SetBackend(app_conf.get("Settings", "backend", default=be_def)) @@ -880,7 +880,7 @@ class WicdDaemon(dbus.service.Object): dns1 = app_conf.get("Settings", "global_dns_1", default='None') dns2 = app_conf.get("Settings", "global_dns_2", default='None') dns3 = app_conf.get("Settings", "global_dns_3", default='None') - dns_dom =app_conf.get("Settings", "global_dns_dom", default='None') + dns_dom = app_conf.get("Settings", "global_dns_dom", default='None') search_dom = app_conf.get("Settings", "global_search_dom", default='None') self.SetGlobalDNS(dns1, dns2, dns3, dns_dom, search_dom) self.SetAutoReconnect(app_conf.get("Settings", "auto_reconnect", @@ -1448,7 +1448,7 @@ class WiredDaemon(dbus.service.Object): if self.config.has_section(profilename): return False - for option in ["ip", "broadcast", "netmask","gateway", "search_domain", + for option in ["ip", "broadcast", "netmask", "gateway", "search_domain", "dns_domain", "dns1", "dns2", "dns3", "beforescript", "afterscript", "predisconnectscript", "postdisconnectscript"]: @@ -1506,8 +1506,10 @@ class WiredDaemon(dbus.service.Object): if not self.config.has_option(prof, script): self.config.set(prof, script, None) - if profilename == "": + profilename = profilename.strip() + if not profilename: self.config.write() + print "Warning: Bad wired profile name given, ignoring." return "500: Bad Profile name" if self.debug_mode: print "saving wired profile %s" % profilename From 08fc68a459e3f6b505f0fb467b5cf10b1dd20f19 Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Sat, 1 Aug 2009 19:05:24 -0400 Subject: [PATCH 3/7] Enforce valid wired profile names at the GUI level. --- wicd/netentry.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/wicd/netentry.py b/wicd/netentry.py index 979832d..44bfa10 100644 --- a/wicd/netentry.py +++ b/wicd/netentry.py @@ -655,17 +655,16 @@ class WiredNetworkEntry(NetworkEntry): def add_profile(self, widget): """ Add a profile to the profile list. """ - print "adding profile" - response = string_input("Enter a profile name", "The profile name " + "will not be used by the computer. It " + "allows you to " + "easily distinguish between different network " + - "profiles.", "Profile name:") + "profiles.", "Profile name:").strip() # if response is "" or None if not response: - return + error(None, "Invalid profile name", block=True) + return False profile_name = response profile_list = wired.GetWiredProfileList() From 0467dd8fce2e36f5598b8d03826b143d23a44b15 Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Sat, 1 Aug 2009 21:25:58 -0400 Subject: [PATCH 4/7] Fix crash when trying to use an unavaiable locale. --- wicd/translations.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wicd/translations.py b/wicd/translations.py index 3c65f65..396bd92 100644 --- a/wicd/translations.py +++ b/wicd/translations.py @@ -44,11 +44,10 @@ def get_gettext(): lc, encoding = locale.getdefaultlocale(envvars=('LC_MESSAGES', 'LC_ALL', 'LANG', 'LANGUAGE')) + langs += [lc] except ValueError, e: print str(e) print "Default locale unavailable, falling back to en_US" - if (lc): - langs += [lc] langs += ["en_US"] lang = gettext.translation('wicd', local_path, languages=langs, fallback=True) From 43ce229465620fa94eb5533f4cc90a26274d4019 Mon Sep 17 00:00:00 2001 From: Andrew Psaltis Date: Sun, 2 Aug 2009 23:53:25 -0400 Subject: [PATCH 5/7] Prevent empty or whitespace-only wired profile names in wicd-curses. Did some code cleanup in curses/curses_misc.py --- curses/curses_misc.py | 39 +++------------------------------------ curses/wicd-curses.py | 31 +++++++++++++++++++------------ 2 files changed, 22 insertions(+), 48 deletions(-) diff --git a/curses/curses_misc.py b/curses/curses_misc.py index e8feefe..c2159ff 100644 --- a/curses/curses_misc.py +++ b/curses/curses_misc.py @@ -33,10 +33,6 @@ def error(ui,parent,message): dialog = TextDialog(message,6,40,('important',"ERROR")) return dialog.run(ui,parent) -# My savior. :-) -# Although I could have made this myself pretty easily, just want to give credit -# where it's due. -# http://excess.org/urwid/browser/contrib/trunk/rbreu_filechooser.py class SelText(urwid.Text): """A selectable text widget. See urwid.Text.""" @@ -253,7 +249,7 @@ class ComboBoxException(Exception): # I based this off of the code found here: # http://excess.org/urwid/browser/contrib/trunk/rbreu_menus.py # This is a hack/kludge. It isn't without quirks, but it more or less works. -# We need to wait for changes in urwid's Canvas controls before we can actually +# We need to wait for changes in urwid's Canvas API before we can actually # make a real ComboBox. class ComboBox(urwid.WidgetWrap): """A ComboBox of text objects""" @@ -333,9 +329,8 @@ class ComboBox(urwid.WidgetWrap): str,trash = self.label.get_text() self.overlay = None - #w,sensitive=True,attrs=('editbx','editnfc'),focus_attr='editfc') self.cbox = DynWrap(SelText(self.DOWN_ARROW),attrs=attrs,focus_attr=focus_attr) - # Unicode will kill me sooner or later. ^_^ + # Unicode will kill me sooner or later. if label != '': w = urwid.Columns([('fixed',len(str),self.label),self.cbox],dividechars=1) else: @@ -344,10 +339,9 @@ class ComboBox(urwid.WidgetWrap): # We need this to pick our keypresses self.use_enter = use_enter - # The Focus + self.focus = focus - # The callback and friends self.callback = callback self.user_args = user_args @@ -442,11 +436,6 @@ class Dialog2(urwid.WidgetWrap): urwid.Divider()] ) w = self.frame self.view = w - - # pad area around listbox - #w = urwid.Padding(w, ('fixed left',2), ('fixed right',2)) - #w = urwid.Filler(w, ('fixed top',1), ('fixed bottom',1)) - #w = urwid.AttrWrap(w, 'body') # buttons: tuple of name,exitcode def add_buttons(self, buttons): @@ -503,8 +492,6 @@ class Dialog2(urwid.WidgetWrap): class TextDialog(Dialog2): def __init__(self, text, height, width, header=None,align='left'): l = [urwid.Text(text)] - #for line in text: - # l.append( urwid.Text( line,align=align)) body = urwid.ListBox(l) body = urwid.AttrWrap(body, 'body') @@ -596,7 +583,6 @@ class OptCols(urwid.WidgetWrap): else: key += part - #theText = urwid.Text([(attrs[0],cmd[0]),(attrs[1],cmd[1])]) if debug: callback = self.debugClick args = cmd[1] @@ -608,9 +594,6 @@ class OptCols(urwid.WidgetWrap): ('fixed',len(key)+1,urwid.Text((attrs[0],key+':')) ), urwid.AttrWrap(urwid.Text(cmd[1]),attrs[1])], callback,args) - #if i != len(tuples)-1: - # textList.append(('fixed',maxlen,col)) - #else: # The last one textList.append(col) i+=1 if debug: @@ -625,19 +608,3 @@ class OptCols(urwid.WidgetWrap): def mouse_event(self,size,event,button,x,y,focus): # Widgets are evenly long (as of current), so... return self._w.mouse_event(size,event,button,x,y,focus) - """ - if self.debug: - if x > size[0]-10: - return - widsize = (size[0]-10)/len(self.callbacks) - else: - widsize = size[0]/len(self.callbacks) - widnum = x/widsize - if self.debug: - text = str(widnum) - if self.callbacks[widnum] == None: - text += " None" - self.debug.set_text(text) - elif self.callbacks[widnum] != None: - self.callbacks[widnum]() - """ diff --git a/curses/wicd-curses.py b/curses/wicd-curses.py index 4a0c041..220a635 100755 --- a/curses/wicd-curses.py +++ b/curses/wicd-curses.py @@ -383,18 +383,25 @@ class WiredComboBox(ComboBox): def keypress(self,size,key): prev_focus = self.get_focus()[1] - key = self.__super.keypress(size,key) - if self.get_focus()[1] == len(self.list)-1: - dialog = InputDialog(('header',language["add_new_wired_profile"]),7,30) - - exitcode,name = dialog.run(ui,self.parent) - if exitcode == 0: - wired.CreateWiredNetworkProfile(name,False) - self.set_list(wired.GetWiredProfileList()) - self.rebuild_combobox() - self.set_focus(prev_focus) - else: - wired.ReadWiredNetworkProfile(self.get_selected_profile()) + key = ComboBox.keypress(self,size,key) + if key == ' ': + if self.get_focus()[1] == len(self.list)-1: + dialog = InputDialog(('header',language["add_new_wired_profile"]),7,30) + exitcode,name = dialog.run(ui,self.parent) + if exitcode == 0: + name = name.strip() + if not name: + error(ui,self.parent,'Invalid profile name') + self.set_focus(prev_focus) + return key + + wired.CreateWiredNetworkProfile(name,False) + self.set_list(wired.GetWiredProfileList()) + self.rebuild_combobox() + self.set_focus(prev_focus) + else: + print "updating..." + wired.ReadWiredNetworkProfile(self.get_selected_profile()) if key == 'delete': if len(self.theList) == 1: error(self.ui,self.parent,language["no_delete_last_profile"]) From f3d9a3b6da987fc8d841a5da45320d7285790cdf Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Mon, 3 Aug 2009 19:29:18 -0400 Subject: [PATCH 6/7] Actually display the error messag we get when scanning fails in the ioctl backend. Make sure we actually abort the connection attempt when authentication validation fails. --- wicd/backends/be-ioctl.py | 2 +- wicd/networking.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/wicd/backends/be-ioctl.py b/wicd/backends/be-ioctl.py index 3d16486..a51db1b 100644 --- a/wicd/backends/be-ioctl.py +++ b/wicd/backends/be-ioctl.py @@ -288,7 +288,7 @@ class WirelessInterface(Interface, BaseWirelessInterface): try: results = self.scan_iface.Scan() except iwscan.error, e: - print "ERROR: %s" + print "ERROR: %s" % e return [] return filter(None, [self._parse_ap(cell) for cell in results]) diff --git a/wicd/networking.py b/wicd/networking.py index 13ec635..1269e5c 100644 --- a/wicd/networking.py +++ b/wicd/networking.py @@ -866,7 +866,8 @@ class WirelessConnectThread(ConnectThread): if self.network.get('enctype'): self.SetStatus('validating_authentication') if not wiface.ValidateAuthentication(time.time()): - if not self.connect_result: + print "connect result is %s" % self.connect_result + if not self.connect_result or self.connect_result == 'Failed': self.abort_connection('bad_pass') # Set up gateway, IP address, and DNS servers. From 4839e7e7bb7315d18ddb83b1f6de55aaac34c868 Mon Sep 17 00:00:00 2001 From: Adam Blackburn Date: Wed, 5 Aug 2009 21:27:24 -0500 Subject: [PATCH 7/7] commit fix from https://bugs.launchpad.net/wicd/+bug/388116/comments/3 --- wicd/wicd-daemon.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wicd/wicd-daemon.py b/wicd/wicd-daemon.py index 52f8619..28f9c76 100644 --- a/wicd/wicd-daemon.py +++ b/wicd/wicd-daemon.py @@ -1201,6 +1201,8 @@ class WirelessDaemon(dbus.service.Object): if cur_network["hidden"]: if cur_network.get("essid") in ["", "Hidden", "", None]: cur_network["essid"] = "" + else: + cur_network['essid'] = self.config.get(section, 'essid') return "100: Loaded Profile" @dbus.service.method('org.wicd.daemon.wireless')