Config validator
- config options can have validators - limit maxoutboundconnections to max 8
This commit is contained in:
parent
20e01860cf
commit
f5a143d0b8
|
@ -165,7 +165,7 @@ class Ui_settingsDialog(object):
|
||||||
self.lineEditMaxOutboundConnections.setSizePolicy(sizePolicy)
|
self.lineEditMaxOutboundConnections.setSizePolicy(sizePolicy)
|
||||||
self.lineEditMaxOutboundConnections.setMaximumSize(QtCore.QSize(60, 16777215))
|
self.lineEditMaxOutboundConnections.setMaximumSize(QtCore.QSize(60, 16777215))
|
||||||
self.lineEditMaxOutboundConnections.setObjectName(_fromUtf8("lineEditMaxOutboundConnections"))
|
self.lineEditMaxOutboundConnections.setObjectName(_fromUtf8("lineEditMaxOutboundConnections"))
|
||||||
self.lineEditMaxOutboundConnections.setValidator(QtGui.QIntValidator(0, 4096, self.lineEditMaxOutboundConnections))
|
self.lineEditMaxOutboundConnections.setValidator(QtGui.QIntValidator(0, 8, self.lineEditMaxOutboundConnections))
|
||||||
self.gridLayout_9.addWidget(self.lineEditMaxOutboundConnections, 2, 2, 1, 1)
|
self.gridLayout_9.addWidget(self.lineEditMaxOutboundConnections, 2, 2, 1, 1)
|
||||||
self.gridLayout_4.addWidget(self.groupBox_3, 2, 0, 1, 1)
|
self.gridLayout_4.addWidget(self.groupBox_3, 2, 0, 1, 1)
|
||||||
self.groupBox_2 = QtGui.QGroupBox(self.tabNetworkSettings)
|
self.groupBox_2 = QtGui.QGroupBox(self.tabNetworkSettings)
|
||||||
|
|
|
@ -37,6 +37,8 @@ class BMConfigParser(ConfigParser.SafeConfigParser):
|
||||||
if self._optcre is self.OPTCRE or value:
|
if self._optcre is self.OPTCRE or value:
|
||||||
if not isinstance(value, basestring):
|
if not isinstance(value, basestring):
|
||||||
raise TypeError("option values must be strings")
|
raise TypeError("option values must be strings")
|
||||||
|
if not self.validate(section, option, value):
|
||||||
|
raise ValueError("Invalid value %s" % str(value))
|
||||||
return ConfigParser.ConfigParser.set(self, section, option, value)
|
return ConfigParser.ConfigParser.set(self, section, option, value)
|
||||||
|
|
||||||
def get(self, section, option, raw=False, variables=None):
|
def get(self, section, option, raw=False, variables=None):
|
||||||
|
@ -76,6 +78,20 @@ class BMConfigParser(ConfigParser.SafeConfigParser):
|
||||||
def addresses(self):
|
def addresses(self):
|
||||||
return filter(lambda x: x.startswith('BM-'), BMConfigParser().sections())
|
return filter(lambda x: x.startswith('BM-'), BMConfigParser().sections())
|
||||||
|
|
||||||
|
def read(self, filenames):
|
||||||
|
ConfigParser.ConfigParser.read(self, filenames)
|
||||||
|
for section in self.sections():
|
||||||
|
for option in self.options(section):
|
||||||
|
try:
|
||||||
|
if not self.validate(section, option, ConfigParser.ConfigParser.get(self, section, option)):
|
||||||
|
try:
|
||||||
|
newVal = BMConfigDefaults[section][option]
|
||||||
|
except KeyError:
|
||||||
|
continue
|
||||||
|
ConfigParser.ConfigParser.set(self, section, option, newVal)
|
||||||
|
except ConfigParser.InterpolationError:
|
||||||
|
continue
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
fileName = os.path.join(state.appdata, 'keys.dat')
|
fileName = os.path.join(state.appdata, 'keys.dat')
|
||||||
fileNameBak = fileName + "." + datetime.datetime.now().strftime("%Y%j%H%M%S%f") + '.bak'
|
fileNameBak = fileName + "." + datetime.datetime.now().strftime("%Y%j%H%M%S%f") + '.bak'
|
||||||
|
@ -93,3 +109,18 @@ class BMConfigParser(ConfigParser.SafeConfigParser):
|
||||||
# delete the backup
|
# delete the backup
|
||||||
if fileNameExisted:
|
if fileNameExisted:
|
||||||
os.remove(fileNameBak)
|
os.remove(fileNameBak)
|
||||||
|
|
||||||
|
def validate(self, section, option, value):
|
||||||
|
try:
|
||||||
|
return getattr(self, "validate_%s_%s" % (section, option))(value)
|
||||||
|
except AttributeError:
|
||||||
|
return True
|
||||||
|
|
||||||
|
def validate_bitmessagesettings_maxoutboundconnections(self, value):
|
||||||
|
try:
|
||||||
|
value = int(value)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
if value < 0 or value > 8:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
Reference in New Issue
Block a user