[Buildroot] [PATCH 11/17] Support/scripts/cpedb.py: Convert to Python 3
Heiko Thiery
heiko.thiery at gmail.com
Wed Oct 7 09:12:22 UTC 2020
Hi Gregory, Hi Matt,
Am Di., 6. Okt. 2020 um 15:43 Uhr schrieb Gregory CLEMENT
<gregory.clement at bootlin.com>:
>
> Switch the script to be used with pyhton 3
I tried to use the cpe-report script with python 3 but get some errors
with the urllib3. It seems that this lib does not provide the urlopen
methods compared to the urllib2.
I added a new function that replaces the download, decompress and xml
parse stuff and now it works for me with python3.
--- [snip ---
def _get_cpedb(self, url):
print("CPE: Fetching xml manifest from [" + url + "]")
c = urllib3.PoolManager()
try:
rsp = c.request('GET', url)
except urllib3.exceptions.HTTPError:
print("CPE: HTTP Error: %s" % url)
sys.exit(1)
print("CPE: Unzipping xml manifest...")
nist_cpe_file = gzip.decompress(rsp.data)
print("CPE: Converting xml manifest to dict...")
all_cpedb = xmltodict.parse(nist_cpe_file)
return all_cpedb
--- [snip ---]
> Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
> ---
> support/scripts/cpedb.py | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/support/scripts/cpedb.py b/support/scripts/cpedb.py
> index 0369536f6f..6e48772b5e 100644
> --- a/support/scripts/cpedb.py
> +++ b/support/scripts/cpedb.py
> @@ -1,9 +1,9 @@
> import sys
> -import urllib2
> +import urllib3
> from collections import OrderedDict
> import xmltodict
> import gzip
> -from StringIO import StringIO
> +from io import StringIO
> import os
> import pickle
>
> @@ -65,7 +65,7 @@ class CPEDB:
> def get_new_xml_dict(self, url):
> print("CPE: Fetching xml manifest from [" + url + "]")
> try:
> - compressed_cpe_file = urllib2.urlopen(url)
> + compressed_cpe_file = urllib3.urlopen(url)
> print("CPE: Unzipping xml manifest...")
> nist_cpe_file = gzip.GzipFile(fileobj=StringIO(compressed_cpe_file.read())).read()
> print("CPE: Converting xml manifest to dict...")
> @@ -113,10 +113,10 @@ class CPEDB:
> # latest version in the NIST dict)
> self.all_cpes_no_version.update({cpe_str_no_version: item})
>
> - except urllib2.HTTPError:
> + except urllib3.HTTPError:
> print("CPE: HTTP Error: %s" % url)
> sys.exit(1)
> - except urllib2.URLError:
> + except urllib3.URLError:
> print("CPE: URL Error: %s" % url)
> sys.exit(1)
>
> @@ -156,7 +156,7 @@ class CPEDB:
>
> def get_nvd_url(self, cpe_str):
> return "https://nvd.nist.gov/products/cpe/search/results?keyword=" + \
> - urllib2.quote(cpe_str) + \
> + urllib3.quote(cpe_str) + \
> "&status=FINAL&orderBy=CPEURI&namingFormat=2.3"
>
> def get_cpe_no_version(self, cpe):
> --
> 2.28.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
More information about the buildroot
mailing list