[Oval-commits] r42 - in trunk/tools/oval: . parser
Pavel Vinogradov
blaze-guest at alioth.debian.org
Sun Jun 10 17:01:58 UTC 2007
Author: blaze-guest
Date: 2007-06-10 17:01:57 +0000 (Sun, 10 Jun 2007)
New Revision: 42
Added:
trunk/tools/oval/parser/dsa.py
trunk/tools/oval/parser/wml.py
Removed:
trunk/tools/oval/parser/parser.py
Modified:
trunk/tools/oval/__init__.py
trunk/tools/oval/parser/__init__.py
Log:
Modify packages structure
Modified: trunk/tools/oval/__init__.py
===================================================================
--- trunk/tools/oval/__init__.py 2007-06-10 16:53:56 UTC (rev 41)
+++ trunk/tools/oval/__init__.py 2007-06-10 17:01:57 UTC (rev 42)
@@ -7,6 +7,6 @@
#
######################################################################
-__all__ = ['dsa', 'definition']
+__all__ = ['parser', 'definition']
Modified: trunk/tools/oval/parser/__init__.py
===================================================================
--- trunk/tools/oval/parser/__init__.py 2007-06-10 16:53:56 UTC (rev 41)
+++ trunk/tools/oval/parser/__init__.py 2007-06-10 17:01:57 UTC (rev 42)
@@ -7,6 +7,6 @@
#
######################################################################
-__all__ = ['parser']
+__all__ = ['dsa', 'wml']
Copied: trunk/tools/oval/parser/dsa.py (from rev 41, trunk/tools/oval/parser/parser.py)
===================================================================
--- trunk/tools/oval/parser/dsa.py (rev 0)
+++ trunk/tools/oval/parser/dsa.py 2007-06-10 17:01:57 UTC (rev 42)
@@ -0,0 +1,86 @@
+import re
+import os
+import logging
+
+# Format of data files is:
+#<define-tag pagetitle>DSA-###-# PACKAGE</define-tag>
+#<define-tag report_date>yyyy-mm-dd</define-tag>
+#<define-tag secrefs>CAN|CVE-XXXX-XXXX</define-tag>
+#<define-tag packages>PACKAGE</define-tag>
+#<define-tag isvulnerable>yes|no</define-tag>
+#<define-tag fixed>yes|no</define-tag>
+
+def parseDSAFile (path):
+
+ data = {}
+ deb_ver = None
+
+ filename = os.path.basename (path)
+
+ patern = re.compile(r'dsa-(\d+)')
+ result = patern.search(filename)
+ if result:
+ dsa = result.groups()[0]
+ else:
+ logging.log(logging.WARNING, "File %s does not look like a proper DSA, not checking" % filename)
+ return (None)
+
+ logging.log (logging.DEBUG, "Parsing DSA %s from file %s" % (dsa, filename))
+
+ dsaFile = open(path)
+
+ for line in dsaFile:
+ datepatern = re.compile (r'report_date>([\d-]+)</define-tag>')
+ result = datepatern.search (line)
+ if result:
+ data["date"] = result.groups()[0]
+
+ refspatern = re.compile (r'secrefs>(.*?)</define-tag>')
+ result = refspatern.search (line)
+ if result:
+ data["secrefs"] = result.groups()[0]
+ logging.log(logging.DEBUG, "Extracted security references: " + data["secrefs"])
+
+ pakpatern = re.compile (r'packages>(.*?)</define-tag>')
+ result = pakpatern.search (line)
+ if result:
+ data["package"] = result.groups()[0]
+
+ vulpatern = re.compile (r'isvulnerable>(.*?)</define-tag>')
+ result = vulpatern.search (line)
+ if result:
+ data["vulnarable"] = result.groups()[0]
+
+ fixpatern = re.compile (r'fixed>(.*?)</define-tag>')
+ result = fixpatern.search (line)
+ if result:
+ data["fixed"] = result.groups()[0]
+
+ versionpatern = re.compile (r'<h3>Debian GNU/Linux (\d.\d) \((.*?)\)</h3>')
+ result = versionpatern.search (line)
+ if result:
+ deb_ver = result.groups()[0]
+ if data.has_key("packages"):
+ data["packages"][deb_ver] = {}
+ else:
+ data["packages"] = {deb_ver: {}}
+ # Binary packages are pushed into array
+ # Those are prepended by fileurls
+ # TODO: Packages do _NOT_ include epochs
+ # (that should be fixed)
+ if data.has_key("package") and deb_ver:
+ urlpatern = re.compile (r'fileurl [\w:/.]+%s/(.*?)\.deb' % data["package"])
+ result = urlpatern.search (line)
+ if result:
+ (package, version, architecture) = result.groups()[0].split("_")
+
+ if data["packages"][deb_ver].has_key(architecture):
+ if data["packages"][deb_ver][architecture].has_key(package):
+ if not version in data["packages"][deb_ver][architecture][package]:
+ data["packages"][deb_ver][architecture][package].append(version)
+ else:
+ data["packages"][deb_ver][architecture][package] = [version]
+ else:
+ data["packages"][deb_ver][architecture] = {package : [version]}
+
+ return ({dsa : data})
Deleted: trunk/tools/oval/parser/parser.py
===================================================================
--- trunk/tools/oval/parser/parser.py 2007-06-10 16:53:56 UTC (rev 41)
+++ trunk/tools/oval/parser/parser.py 2007-06-10 17:01:57 UTC (rev 42)
@@ -1,86 +0,0 @@
-import re
-import os
-import logging
-
-# Format of data files is:
-#<define-tag pagetitle>DSA-###-# PACKAGE</define-tag>
-#<define-tag report_date>yyyy-mm-dd</define-tag>
-#<define-tag secrefs>CAN|CVE-XXXX-XXXX</define-tag>
-#<define-tag packages>PACKAGE</define-tag>
-#<define-tag isvulnerable>yes|no</define-tag>
-#<define-tag fixed>yes|no</define-tag>
-
-def parseDSAFile (path):
-
- data = {}
- deb_ver = None
-
- filename = os.path.basename (path)
-
- patern = re.compile(r'dsa-(\d+)')
- result = patern.search(filename)
- if result:
- dsa = result.groups()[0]
- else:
- logging.log(logging.WARNING, "File %s does not look like a proper DSA, not checking" % filename)
- return (None)
-
- logging.log (logging.DEBUG, "Parsing DSA %s from file %s" % (dsa, filename))
-
- dsaFile = open(path)
-
- for line in dsaFile:
- datepatern = re.compile (r'report_date>([\d-]+)</define-tag>')
- result = datepatern.search (line)
- if result:
- data["date"] = result.groups()[0]
-
- refspatern = re.compile (r'secrefs>(.*?)</define-tag>')
- result = refspatern.search (line)
- if result:
- data["secrefs"] = result.groups()[0]
- logging.log(logging.DEBUG, "Extracted security references: " + data["secrefs"])
-
- pakpatern = re.compile (r'packages>(.*?)</define-tag>')
- result = pakpatern.search (line)
- if result:
- data["package"] = result.groups()[0]
-
- vulpatern = re.compile (r'isvulnerable>(.*?)</define-tag>')
- result = vulpatern.search (line)
- if result:
- data["vulnarable"] = result.groups()[0]
-
- fixpatern = re.compile (r'fixed>(.*?)</define-tag>')
- result = fixpatern.search (line)
- if result:
- data["fixed"] = result.groups()[0]
-
- versionpatern = re.compile (r'<h3>Debian GNU/Linux (\d.\d) \((.*?)\)</h3>')
- result = versionpatern.search (line)
- if result:
- deb_ver = result.groups()[0]
- if data.has_key("packages"):
- data["packages"][deb_ver] = {}
- else:
- data["packages"] = {deb_ver: {}}
- # Binary packages are pushed into array
- # Those are prepended by fileurls
- # TODO: Packages do _NOT_ include epochs
- # (that should be fixed)
- if data.has_key("package") and deb_ver:
- urlpatern = re.compile (r'fileurl [\w:/.]+%s/(.*?)\.deb' % data["package"])
- result = urlpatern.search (line)
- if result:
- (package, version, architecture) = result.groups()[0].split("_")
-
- if data["packages"][deb_ver].has_key(architecture):
- if data["packages"][deb_ver][architecture].has_key(package):
- if not version in data["packages"][deb_ver][architecture][package]:
- data["packages"][deb_ver][architecture][package].append(version)
- else:
- data["packages"][deb_ver][architecture][package] = [version]
- else:
- data["packages"][deb_ver][architecture] = {package : [version]}
-
- return ({dsa : data})
Added: trunk/tools/oval/parser/wml.py
===================================================================
--- trunk/tools/oval/parser/wml.py (rev 0)
+++ trunk/tools/oval/parser/wml.py 2007-06-10 17:01:57 UTC (rev 42)
@@ -0,0 +1,10 @@
+import re
+import os
+import logging
+
+# Format of wml files is:
+#<define-tag description>DESCRIPTION</define-tag>
+#<define-tag moreinfo>Multiline information</define-tag>
+
+def parseWMLFile (path):
+ pass
\ No newline at end of file
More information about the Oval-commits
mailing list