def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.commands = [ u2b_if_py2(x) for x in self.commands ]
     self.contexts = [ u2b_if_py2(x) for x in self.contexts ]
     self.users = [ u2b_if_py2(x) for x in self.users ]
Exemple #2
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.commands = [u2b_if_py2(x) for x in self.commands]
     self.contexts = [u2b_if_py2(x) for x in self.contexts]
     self.users = [u2b_if_py2(x) for x in self.users]
Exemple #3
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.destination = [u2b_if_py2(m) for m in self.destination]
Exemple #4
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.destination = [u2b_if_py2(m) for m in self.destination]
Exemple #5
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.ports = [(u2b_if_py2(po),u2b_if_py2(pr)) for (po,pr) in self.ports]
     self.modules = [u2b_if_py2(m) for m in self.modules]
     self.destination = {u2b_if_py2(k):u2b_if_py2(v) for k,v in self.destination.items()}
     self.protocols = [u2b_if_py2(pr) for pr in self.protocols]
Exemple #6
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.ports = [(u2b_if_py2(po),u2b_if_py2(pr)) for (po,pr) in self.ports]
     self.modules = [u2b_if_py2(m) for m in self.modules]
     self.destination = {u2b_if_py2(k):u2b_if_py2(v) for k,v in self.destination.items()}
     self.protocols = [u2b_if_py2(pr) for pr in self.protocols]
Exemple #7
0
    def endElement(self, name):
        IO_Object_ContentHandler.endElement(self, name)

        if name == "rule":
            if self._element:
                # add arguments
                self._rule.append([ u2b_if_py2(x) for x in splitArgs(self._element) ])
                self.item.add_rule(*self._rule)
            else:
                log.error("Error: rule does not have any arguments, ignoring.")
            self._rule = None
        elif name == "passthrough":
            if self._element:
                # add arguments
                self._passthrough.append([ u2b_if_py2(x) for x in splitArgs(self._element) ])
                self.item.add_passthrough(*self._passthrough)
            else:
                log.error("Error: passthrough does not have any arguments, " +
                         "ignoring.")
            self._passthrough = None
Exemple #8
0
    def endElement(self, name):
        IO_Object_ContentHandler.endElement(self, name)

        if name == "rule":
            if self._element:
                # add arguments
                self._rule.append([ u2b_if_py2(x) for x in splitArgs(self._element) ])
                self.item.add_rule(*self._rule)
            else:
                log.error("Error: rule does not have any arguments, ignoring.")
            self._rule = None
        elif name == "passthrough":
            if self._element:
                # add arguments
                self._passthrough.append([ u2b_if_py2(x) for x in splitArgs(self._element) ])
                self.item.add_passthrough(*self._passthrough)
            else:
                log.error("Error: passthrough does not have any arguments, " +
                         "ignoring.")
            self._passthrough = None
Exemple #9
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.type = u2b_if_py2(self.type)
     self.options = {u2b_if_py2(k):u2b_if_py2(v) for k,v in self.options.items()}
     self.entries = [u2b_if_py2(e) for e in self.entries]
Exemple #10
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.module = u2b_if_py2(self.module)
     self.family = u2b_if_py2(self.family)
     self.ports = [(u2b_if_py2(po),u2b_if_py2(pr)) for (po,pr) in self.ports]
Exemple #11
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.module = u2b_if_py2(self.module)
     self.family = u2b_if_py2(self.family)
     self.ports = [(u2b_if_py2(po),u2b_if_py2(pr)) for (po,pr) in self.ports]
Exemple #12
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.type = u2b_if_py2(self.type)
     self.options = { u2b_if_py2(k):u2b_if_py2(v)
                      for k, v in self.options.items() }
     self.entries = [ u2b_if_py2(e) for e in self.entries ]
Exemple #13
0
    def startElement(self, name, attrs):
        IO_Object_ContentHandler.startElement(self, name, attrs)
        self.item.parser_check_element_attrs(name, attrs)

        if name == "direct":
            if self.direct:
                raise FirewallError(errors.PARSE_ERROR,
                                    "More than one direct tag.")
            self.direct = True

        elif name == "chain":
            if not self.direct:
                log.error("Parse Error: chain outside of direct")
                return
            ipv = attrs["ipv"]
            table = attrs["table"]
            chain = attrs["chain"]
            self.item.add_chain(u2b_if_py2(ipv), u2b_if_py2(table),
                                u2b_if_py2(chain))

        elif name == "rule":
            if not self.direct:
                log.error("Parse Error: rule outside of direct")
                return
            ipv = attrs["ipv"]
            if ipv not in ["ipv4", "ipv6", "eb"]:
                raise FirewallError(errors.INVALID_IPV,
                                    "'%s' not from {'ipv4'|'ipv6'|'eb'}" % ipv)
            table = attrs["table"]
            chain = attrs["chain"]
            try:
                priority = int(attrs["priority"])
            except ValueError:
                log.error("Parse Error: %s is not a valid priority" %
                          attrs["priority"])
                return
            self._rule = [
                u2b_if_py2(ipv),
                u2b_if_py2(table),
                u2b_if_py2(chain), priority
            ]

        elif name == "passthrough":
            if not self.direct:
                log.error("Parse Error: command outside of direct")
                return
            ipv = attrs["ipv"]
            self._passthrough = [u2b_if_py2(ipv)]

        else:
            log.error('Unknown XML element %s' % name)
            return
Exemple #14
0
    def startElement(self, name, attrs):
        IO_Object_ContentHandler.startElement(self, name, attrs)
        self.item.parser_check_element_attrs(name, attrs)

        if name == "direct":
            if self.direct:
                raise FirewallError(errors.PARSE_ERROR,
                                    "More than one direct tag.")
            self.direct = True

        elif name == "chain":
            if not self.direct:
                log.error("Parse Error: chain outside of direct")
                return
            ipv = attrs["ipv"]
            table = attrs["table"]
            chain = attrs["chain"]
            self.item.add_chain(u2b_if_py2(ipv), u2b_if_py2(table),
                                u2b_if_py2(chain))

        elif name == "rule":
            if not self.direct:
                log.error("Parse Error: rule outside of direct")
                return
            ipv = attrs["ipv"]
            if ipv not in [ "ipv4", "ipv6", "eb" ]:
                raise FirewallError(errors.INVALID_IPV,
                                    "'%s' not from {'ipv4'|'ipv6'|'eb'}" % ipv)
            table = attrs["table"]
            chain = attrs["chain"]
            try:
                priority = int(attrs["priority"])
            except ValueError:
                log.error("Parse Error: %s is not a valid priority" % 
                          attrs["priority"])
                return
            self._rule = [ u2b_if_py2(ipv), u2b_if_py2(table),
                           u2b_if_py2(chain), priority ]

        elif name == "passthrough":
            if not self.direct:
                log.error("Parse Error: command outside of direct")
                return
            ipv = attrs["ipv"]
            self._passthrough = [ u2b_if_py2(ipv) ]

        else:
            log.error('Unknown XML element %s' % name)
            return
Exemple #15
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.target = u2b_if_py2(self.target)
     self.services = [u2b_if_py2(s) for s in self.services]
     self.ports = [(u2b_if_py2(po), u2b_if_py2(pr))
                   for (po, pr) in self.ports]
     self.protocols = [u2b_if_py2(pr) for pr in self.protocols]
     self.icmp_blocks = [u2b_if_py2(i) for i in self.icmp_blocks]
     self.forward_ports = [(u2b_if_py2(p1), u2b_if_py2(p2), u2b_if_py2(p3),
                            u2b_if_py2(p4))
                           for (p1, p2, p3, p4) in self.forward_ports]
     self.source_ports = [(u2b_if_py2(po), u2b_if_py2(pr))
                          for (po, pr) in self.source_ports]
     self.interfaces = [u2b_if_py2(i) for i in self.interfaces]
     self.sources = [u2b_if_py2(s) for s in self.sources]
     self.rules = [u2b_if_py2(s) for s in self.rules]
Exemple #16
0
 def encode_strings(self):
     """ HACK. I haven't been able to make sax parser return
         strings encoded (because of python 2) instead of in unicode.
         Get rid of it once we throw out python 2 support."""
     self.version = u2b_if_py2(self.version)
     self.short = u2b_if_py2(self.short)
     self.description = u2b_if_py2(self.description)
     self.target = u2b_if_py2(self.target)
     self.services = [u2b_if_py2(s) for s in self.services]
     self.ports = [(u2b_if_py2(po),u2b_if_py2(pr)) for (po,pr) in self.ports]
     self.protocols = [u2b_if_py2(pr) for pr in self.protocols]
     self.icmp_blocks = [u2b_if_py2(i) for i in self.icmp_blocks]
     self.forward_ports = [(u2b_if_py2(p1),u2b_if_py2(p2),u2b_if_py2(p3),u2b_if_py2(p4)) for (p1,p2,p3,p4) in self.forward_ports]
     self.interfaces = [u2b_if_py2(i) for i in self.interfaces]
     self.sources = [u2b_if_py2(s) for s in self.sources]
     self.rules = [u2b_if_py2(s) for s in self.rules]