Mercurial > farol > farolluz
annotate farolluz/parsers/xml.py @ 42:9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
author | Benoît Allard <benoit.allard@greenbone.net> |
---|---|
date | Mon, 29 Dec 2014 15:00:59 +0100 |
parents | |
children |
rev | line source |
---|---|
42
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
2 # Description: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
3 # Methods for parsing CVE XML documents |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
4 # |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
5 # Authors: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
6 # BenoƮt Allard <benoit.allard@greenbone.net> |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
7 # |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
8 # Copyright: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
9 # Copyright (C) 2014 Greenbone Networks GmbH |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
10 # |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
11 # This program is free software; you can redistribute it and/or |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
12 # modify it under the terms of the GNU General Public License |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
13 # as published by the Free Software Foundation; either version 2 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
14 # of the License, or (at your option) any later version. |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
15 # |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
16 # This program is distributed in the hope that it will be useful, |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
19 # GNU General Public License for more details. |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
20 # |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
21 # You should have received a copy of the GNU General Public License |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
22 # along with this program; if not, write to the Free Software |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
23 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
24 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
25 """\ |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
26 Methods for parsing of CVE XML Documents |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
27 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
28 Ref: http://scap.nist.gov/schema/vulnerability/0.4 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
29 """ |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
30 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
31 import re |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
32 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
33 from datetime import datetime, timedelta |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
34 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
35 try: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
36 from datetime import timezone |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
37 except ImportError: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
38 from ..py2 import FixedTimeZone as timezone |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
39 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
40 def parseDate(string): |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
41 m = re.match('(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:([+-])(\d{2}):(\d{2})|(Z))?', string) |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
42 if (m.group(7) is None) or (m.group(7) == 'Z'): |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
43 tzhours = 0 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
44 tzmin = 0 |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
45 else: |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
46 tzhours = int(m.group(8)) |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
47 if m.group(7) == '-': |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
48 tzhours = - tzhours |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
49 tzmin = int(m.group(9)) |
9ed24f48df01
parsers/CVRF: Move the date parsing method to parsers/XML
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
50 return datetime(int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4)), int(m.group(5)), int(m.group(6)), tzinfo=timezone(timedelta(hours=tzhours, minutes=tzmin))) |