Skip to content

Commit dc8e0b5

Browse files
Merge pull request #17 from MAVRICK-1/uncompress_ripe_rpki
RIPE RPKI archive format changed (.xz) #14
2 parents a06fb26 + 4ce2416 commit dc8e0b5

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

rov/__init__.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import shutil
1313
import sys
1414
import csv
15+
import lzma
16+
from io import BytesIO
1517

1618
import urllib
1719
import urllib.request as request
@@ -64,11 +66,12 @@
6466
'https://rpki.gin.ntt.net/api/export.json'
6567
]
6668
RPKI_ARCHIVE_URLS = [
67-
'https://ftp.ripe.net/ripe/rpki/afrinic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv',
68-
'https://ftp.ripe.net/ripe/rpki/apnic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv',
69-
'https://ftp.ripe.net/ripe/rpki/arin.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv',
70-
'https://ftp.ripe.net/ripe/rpki/lacnic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv',
71-
'https://ftp.ripe.net/ripe/rpki/ripencc.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv',
69+
'https://ftp.ripe.net/rpki/afrinic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv.xz',
70+
'https://ftp.ripe.net/rpki/apnic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv.xz',
71+
'https://ftp.ripe.net/rpki/arin.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv.xz',
72+
'https://ftp.ripe.net/rpki/lacnic.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv.xz',
73+
'https://ftp.ripe.net/rpki/ripencc.tal/{year:04d}/{month:02d}/{day:02d}/roas.csv.xz',
74+
7275
]
7376
DEFAULT_DELEGATED_URLS = [
7477
'https://www.nro.net/wp-content/uploads/delegated-stats/nro-extended-stats'
@@ -459,17 +462,25 @@ def download_databases(self, overwrite=True):
459462

460463
# all files from RIPE's RPKI archive have the same name
461464
# 'roas.csv', change it with the tal name
462-
if fname == 'roas.csv':
463-
fname = guess_ta_name(url)+'.csv'
465+
if fname == 'roas.csv.xz':
466+
fname = guess_ta_name(url)+".csv"
464467

465468
if os.path.exists(folder+fname) and not overwrite:
466469
continue
467470

468471
sys.stderr.write(f'Downloading: {url}\n')
472+
469473
try:
470-
with closing(request.urlopen(url)) as r:
471-
with open(folder+fname, 'wb') as f:
472-
shutil.copyfileobj(r, f)
474+
# to separete csv.xz file to decompress
475+
if "roas.csv.xz" in url:
476+
with closing(request.urlopen(url)) as response:
477+
with lzma.open(BytesIO(response.read())) as r:
478+
with open(folder+fname, 'wb') as f:
479+
shutil.copyfileobj(r,f)
480+
else:
481+
with closing(request.urlopen(url)) as r:
482+
with open(folder+fname, 'wb') as f:
483+
shutil.copyfileobj(r, f)
473484
except urllib.error.URLError:
474485
sys.stderr.write(f'Error {url} is not available.\n')
475-
486+

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
readme = f.read()
55

66
setup(
7-
version = '0.4.0',
7+
version = '0.5.0',
88
name = 'rov',
99
author = 'Romain Fontugne',
1010
author_email = 'romain.fontugne@gmail.com',
@@ -17,7 +17,7 @@
1717
install_requires=[
1818
'appdirs',
1919
'py-radix',
20-
'portion',
20+
'portion'
2121
],
2222
entry_points={'console_scripts':
2323
['rov = rov.__main__:main']},

0 commit comments

Comments
 (0)