diff options
| author | 2010-03-30 14:07:21 +0200 | |
|---|---|---|
| committer | 2010-03-30 14:07:21 +0200 | |
| commit | aa43045a553e63c7f02cfed9bd1c4a688c0b690a (patch) | |
| tree | 020259d797ce726d20b0ef4dec5e4bdeeea161c6 /module | |
| parent | better config parser (diff) | |
| download | pyload-aa43045a553e63c7f02cfed9bd1c4a688c0b690a.tar.xz | |
config input valadiation
Diffstat (limited to 'module')
| -rw-r--r-- | module/XMLConfigParser.py | 31 | ||||
| -rw-r--r-- | module/config/core_default.xml | 1 | 
2 files changed, 28 insertions, 4 deletions
| diff --git a/module/XMLConfigParser.py b/module/XMLConfigParser.py index 50cc4485d..6396122f4 100644 --- a/module/XMLConfigParser.py +++ b/module/XMLConfigParser.py @@ -119,6 +119,8 @@ class XMLConfigParser():          sectionNode = False          if type(data) == str:              data = {"option": data} +        if not self.checkInput(section, data["option"], value): +            raise Exception("invalid input")          for node in root.childNodes:              if node.nodeType == node.ELEMENT_NODE:                  if section == node.tagName: @@ -178,10 +180,9 @@ class XMLConfigParser():              return "str"      def getInputValues(self, section, option): -        try: -            return self.data[section]["options"][option]["input"].split(";") -        except: +        if not self.data[section]["options"][option]["input"]:              return [] +        return self.data[section]["options"][option]["input"].split(";")      def getDisplayName(self, section, option=None):          try: @@ -202,6 +203,30 @@ class XMLConfigParser():          except:              return False +    def checkInput(self, section, option, value): +        oinput = self.getInputValues(section, option) +        print oinput +        if oinput: +            for i in oinput: +                if i == value: +                    return True +            return False +        otype = self.getType(section, option) +        if not otype: +            return True +        if otype == "int" and (type(value) == int or re.match("^\d+$")): +            return True +        elif otype == "bool" and (type(value) == bool or re.match("^(true|false|True|False)$")): +            return True +        elif otype == "time" and re.match("^[0-2]{0,1}\d:[0-5]{0,1}\d$"): +            return True +        elif otype == "ip" and re.match("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"): +            return True +        elif otype == "str": +            return True +        else: +            return False +      class Config(object):      def __init__(self, parser):          self.parser = parser diff --git a/module/config/core_default.xml b/module/config/core_default.xml index 0aea08325..8223768ec 100644 --- a/module/config/core_default.xml +++ b/module/config/core_default.xml @@ -5,7 +5,6 @@          <listenaddr type="ip" name="Adress">0.0.0.0</listenaddr>          <username type="str" name="Username">admin</username>          <password type="str" name="Password">pwhere</password> -        <test>bla</test>      </remote>      <ssl name="SSL">          <activated type="bool" name="Activated">False</activated> | 
