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)))
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)