diff --git a/docs/file_format.rst b/docs/file_format.rst index eb63e890..ccb04bf1 100644 --- a/docs/file_format.rst +++ b/docs/file_format.rst @@ -45,6 +45,8 @@ The .gns3p or .gns3project It's a zipped version of the .gns3 and all files require for a topology. The images could be included inside but are optionnals. +The zip could be a ZIP64 if the project is too big for standard +zip file. The .gns3a or .gns3appliance ############################# diff --git a/gns3server/controller/export_project.py b/gns3server/controller/export_project.py index e95eb513..2098eb3f 100644 --- a/gns3server/controller/export_project.py +++ b/gns3server/controller/export_project.py @@ -43,7 +43,7 @@ def export_project(project, temporary_dir, include_images=False, keep_compute_id if project.is_running(): raise aiohttp.web.HTTPConflict(text="Running topology could not be exported") - z = zipstream.ZipFile() + z = zipstream.ZipFile(allowZip64=True) # First we process the .gns3 in order to be sure we don't have an error for file in os.listdir(project._path): diff --git a/gns3server/controller/topology.py b/gns3server/controller/topology.py index cc3fad01..e3700985 100644 --- a/gns3server/controller/topology.py +++ b/gns3server/controller/topology.py @@ -465,7 +465,7 @@ def _convert_snapshots(topo_dir): if is_gns3_topo: snapshot_arc = os.path.join(new_snapshots_dir, snapshot + ".gns3project") - with zipfile.ZipFile(snapshot_arc, 'w') as myzip: + with zipfile.ZipFile(snapshot_arc, 'w', allowZip64=True) as myzip: for root, dirs, files in os.walk(snapshot_dir): for file in files: myzip.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), snapshot_dir), compress_type=zipfile.ZIP_DEFLATED)