mirror of
https://github.com/gryf/wicd.git
synced 2026-01-06 05:44:18 +01:00
Fix bug where encryption keys with non-ascii characters caused crashes.
Only write settings being saved if debug mode is on. Clear keys entered through the GUI when the encryption checkbox is disabled.
This commit is contained in:
@@ -26,14 +26,15 @@ reusable for other purposes as well.
|
|||||||
|
|
||||||
from ConfigParser import RawConfigParser
|
from ConfigParser import RawConfigParser
|
||||||
|
|
||||||
from wicd.misc import stringToNone, Noneify
|
from wicd.misc import stringToNone, Noneify, to_unicode
|
||||||
|
|
||||||
|
|
||||||
class ConfigManager(RawConfigParser):
|
class ConfigManager(RawConfigParser):
|
||||||
""" A class that can be used to manage a given configuration file. """
|
""" A class that can be used to manage a given configuration file. """
|
||||||
def __init__(self, path):
|
def __init__(self, path, debug=False):
|
||||||
RawConfigParser.__init__(self)
|
RawConfigParser.__init__(self)
|
||||||
self.config_file = path
|
self.config_file = path
|
||||||
|
self.debug = debug
|
||||||
self.read(path)
|
self.read(path)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
@@ -57,8 +58,9 @@ class ConfigManager(RawConfigParser):
|
|||||||
"""
|
"""
|
||||||
if not self.has_section(section):
|
if not self.has_section(section):
|
||||||
self.add_section(section)
|
self.add_section(section)
|
||||||
|
if isinstance(value, basestring):
|
||||||
RawConfigParser.set(self, section, str(option), str(value))
|
value = to_unicode(value)
|
||||||
|
RawConfigParser.set(self, section, str(option), value)
|
||||||
if save:
|
if save:
|
||||||
self.write()
|
self.write()
|
||||||
|
|
||||||
@@ -80,11 +82,13 @@ class ConfigManager(RawConfigParser):
|
|||||||
if self.has_option(section, option):
|
if self.has_option(section, option):
|
||||||
ret = RawConfigParser.get(self, section, option)
|
ret = RawConfigParser.get(self, section, option)
|
||||||
if default:
|
if default:
|
||||||
print ''.join(['found ', option, ' in configuration ', ret])
|
if self.debug:
|
||||||
|
print ''.join(['found ', option, ' in configuration ',
|
||||||
|
str(ret)])
|
||||||
else:
|
else:
|
||||||
if default != "__None__":
|
if default != "__None__":
|
||||||
print ''.join(['did not find ', option,
|
if self.debug:
|
||||||
' in configuration, setting default ', str(default)])
|
print 'did not find %s in configuration, setting default %s' % (option, str(default))
|
||||||
self.set(section, option, str(default), save=True)
|
self.set(section, option, str(default), save=True)
|
||||||
ret = default
|
ret = default
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ def get_gettext():
|
|||||||
def to_unicode(x):
|
def to_unicode(x):
|
||||||
""" Attempts to convert a string to utf-8. """
|
""" Attempts to convert a string to utf-8. """
|
||||||
# If this is a unicode string, encode it and return
|
# If this is a unicode string, encode it and return
|
||||||
if type(x) not in [unicode, str]:
|
if not isinstance(x, basestring):
|
||||||
return x
|
return x
|
||||||
if isinstance(x, unicode):
|
if isinstance(x, unicode):
|
||||||
return x.encode('utf-8')
|
return x.encode('utf-8')
|
||||||
|
|||||||
@@ -471,17 +471,16 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
|||||||
if encryption_info[x].get_text() == "":
|
if encryption_info[x].get_text() == "":
|
||||||
error(self, language['encrypt_info_missing'])
|
error(self, language['encrypt_info_missing'])
|
||||||
return False
|
return False
|
||||||
self.set_net_prop(x, noneToString(encryption_info[x].
|
self.set_net_prop(x, noneToString(encryption_info[x].get_text()))
|
||||||
get_text()))
|
|
||||||
elif not self.chkbox_encryption.get_active() and \
|
elif not self.chkbox_encryption.get_active() and \
|
||||||
wireless.GetWirelessProperty(networkid, "encryption"):
|
wireless.GetWirelessProperty(networkid, "encryption"):
|
||||||
error(self, language['enable_encryption'])
|
error(self, language['enable_encryption'])
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
print 'encryption is ' + str(wireless.GetWirelessProperty(networkid,
|
|
||||||
"encryption"))
|
|
||||||
print "no encryption specified..."
|
print "no encryption specified..."
|
||||||
self.set_net_prop("enctype", "None")
|
self.set_net_prop("enctype", "None")
|
||||||
|
for x in self.encryption_info:
|
||||||
|
self.set_net_prop(x, "")
|
||||||
AdvancedSettingsDialog.save_settings(self)
|
AdvancedSettingsDialog.save_settings(self)
|
||||||
|
|
||||||
if self.chkbox_global_settings.get_active():
|
if self.chkbox_global_settings.get_active():
|
||||||
|
|||||||
Reference in New Issue
Block a user