diff options
Diffstat (limited to 'plugins/python/androperms/manifest.py')
-rw-r--r-- | plugins/python/androperms/manifest.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/plugins/python/androperms/manifest.py b/plugins/python/androperms/manifest.py new file mode 100644 index 0000000..63536b2 --- /dev/null +++ b/plugins/python/androperms/manifest.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from defs import * +from reader import AXMLReader +from parser import AXMLParser + + +class AndroidManifest(): + + + def __init__(self, data): + + self._buffer = "" + + reader = AXMLReader(data) + parser = AXMLParser(reader) + + has_ns = False + empty = False + + while 1 : + + tag = parser.next() + + if tag == START_DOCUMENT : + self._buffer += '<?xml version="1.0" encoding="utf-8"?>\n' + + elif tag == START_TAG: + + if empty: + self._buffer += '>\n' + + self._buffer += ' ' * (parser._namespaces.getDepth() - 2) + self._buffer += "<%s%s" % (parser.getTagPrefix(), parser.getTagName()) + + if not has_ns: + self._buffer += ' xmlns:%s="%s"' % (parser.getNamespacePrefix(0), parser.getNamespaceUri(0)) + has_ns = True + + for i in range(0, parser.countAttributes()): + self._buffer += ' %s%s="%s"' % (parser.getAttribPrefix(i), parser.getAttribName(i), parser.getAttribValue(i)) + + empty = True + + elif tag == END_TAG: + + if empty: + self._buffer += '/>\n' + empty = False + + else: + self._buffer += ' ' * (parser._namespaces.getDepth() - 2) + self._buffer += "</%s%s>\n" % (parser.getTagPrefix(), parser.getTagName()) + + elif tag == TEXT: + + if empty: + self._buffer += '>\n' + empty = False + + self._buffer += ' ' * (parser._namespaces.getDepth() - 1) + self._buffer += "%s\n" % parser.getText() + + elif tag == END_DOCUMENT : + break + + else: + break + + + def getXML(self): + """Provide the XML content.""" + + return self._buffer |