From 1bebb0bae21f95b7e3d96aa38304328ff3fd92e7 Mon Sep 17 00:00:00 2001 From: imdano <> Date: Tue, 12 Feb 2008 19:40:18 +0000 Subject: [PATCH] Fixed bug where script changes weren't getting saved. Added check to make sure encryption information is entered when it's required. --- configscript.py | 4 +--- gui.py | 61 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/configscript.py b/configscript.py index df95996..b2c8ec7 100755 --- a/configscript.py +++ b/configscript.py @@ -106,11 +106,10 @@ def get_script_info(network, network_type): def write_scripts(network, network_type, script_info): """ Writes script info to disk and loads it into the daemon. """ con = ConfigParser.ConfigParser() - print "writing scripts, type", network_type + print "Writing scripts, type", network_type if network_type == "wired": con.read(wired_conf) if con.has_section(network): - con.add_section(network) con.set(network, "beforescript", script_info["pre_entry"]) con.set(network, "afterscript", script_info["post_entry"]) con.set(network, "disconnectscript", @@ -122,7 +121,6 @@ def write_scripts(network, network_type, script_info): bssid = wireless.GetWirelessProperty(int(network), "bssid") con.read(wireless_conf) if con.has_section(bssid): - con.add_section(bssid) con.set(bssid, "beforescript", script_info["pre_entry"]) con.set(bssid, "afterscript", script_info["post_entry"]) con.set(bssid, "disconnectscript", script_info["disconnect_entry"]) diff --git a/gui.py b/gui.py index a340dc2..a433370 100644 --- a/gui.py +++ b/gui.py @@ -147,6 +147,8 @@ language['stop_showing_chooser'] = _('Stop Showing Autoconnect pop-up temporaril language['display_type_dialog'] = _('Use dBm to measure signal strength') language['scripts'] = _('Scripts') language['invalid_address'] = _('Invalid address in $A entry.') +language['encrypt_info_missing'] = _('Required encryption information is missing.') +language['enable_encryption'] = _('This network requires encryption to be enabled.') language['0'] = _('0') language['1'] = _('1') @@ -1372,10 +1374,21 @@ class appGui: # Now save the settings. if nettype == "wireless": - self.save_wireless_settings(networkid, entry) + if not self.save_wireless_settings(networkid, entry): + return False + + # Copy settings if they're set to be used globally. + if entry.checkGlobalSettings.get_active(): + all_ids = config.FindMatchingEssids( + wireless.GetWirelessProperty(networkid, "essid")) + for network in all_ids: + config.CopySettingsToProfile( + wireless.GetWirelessProperty(networkid, "bssid"), + network) elif nettype == "wired": - self.save_wired_settings(entry) + if not self.save_wired_settings(entry): + return False return True @@ -1407,12 +1420,36 @@ class appGui: wired.SetWiredProperty("dns2", '') wired.SetWiredProperty("dns3", '') config.SaveWiredNetworkProfile(entry.comboProfileNames.get_active_text()) + return True def save_wireless_settings(self, networkid, entry): """ Save wireless network settings. """ + # Check encryption info + if entry.checkboxEncryption.get_active(): + print "setting encryption info..." + encryptionInfo = entry.encryptionInfo + encrypt_methods = misc.LoadEncryptionMethods() + wireless.SetWirelessProperty(networkid, "enctype", + encrypt_methods[entry.comboEncryption. + get_active()][1]) + for x in encryptionInfo: + if encryptionInfo[x].get_text() == "": + misc.error(self.window, language['encrypt_info_missing']) + return False + wireless.SetWirelessProperty(networkid, x, + noneToString(encryptionInfo[x].get_text())) + elif not entry.checkboxEncryption.get_active() and \ + wireless.GetWirelessProperty(networkid, "encryption"): + misc.error(self.window, language['enable_encryption']) + return False + else: + print 'encryption is', wireless.GetWirelessProperty(networkid, "encryption") + print "no encryption specified..." + wireless.SetWirelessProperty(networkid, "enctype", "None") + wireless.SetWirelessProperty(networkid, "automatic", noneToString(entry.checkboxAutoConnect.get_active())) - + # Save IP info if entry.checkboxStaticIP.get_active(): wireless.SetWirelessProperty(networkid, "ip", noneToString(entry.txtIP.get_text())) @@ -1425,7 +1462,8 @@ class appGui: wireless.SetWirelessProperty(networkid, "ip", '') wireless.SetWirelessProperty(networkid, "netmask", '') wireless.SetWirelessProperty(networkid, "gateway", '') - + + # Save DNS info if entry.checkboxStaticDNS.get_active() and \ not entry.checkboxGlobalDNS.get_active(): wireless.SetWirelessProperty(networkid, 'use_static_dns', True) @@ -1446,22 +1484,9 @@ class appGui: wireless.SetWirelessProperty(networkid, 'dns1', '') wireless.SetWirelessProperty(networkid, 'dns2', '') wireless.SetWirelessProperty(networkid, 'dns3', '') - - if entry.checkboxEncryption.get_active(): - print "setting encryption info..." - encryptionInfo = entry.encryptionInfo - encrypt_methods = misc.LoadEncryptionMethods() - wireless.SetWirelessProperty(networkid, "enctype", - encrypt_methods[entry.comboEncryption. - get_active()][1]) - for x in encryptionInfo: - wireless.SetWirelessProperty(networkid, x, - noneToString(encryptionInfo[x].get_text())) - else: - print "no encryption specified..." - wireless.SetWirelessProperty(networkid, "enctype", "None") config.SaveWirelessNetworkProfile(networkid) + return True def edit_advanced(self, widget, event, ttype, networkid, networkentry): """ Display the advanced settings dialog.