From 73949d514ec7ccb185821ce5a99bd3b70d3270c4 Mon Sep 17 00:00:00 2001 From: Snd-R <76580768+Snd-R@users.noreply.github.com> Date: Thu, 30 Jun 2022 11:53:28 +0300 Subject: [PATCH] fix: use zip64 for archive downloads fixes an issue with series or read list archives that contain an entry over 4GB At this point every archiver should support zip64 so it should be fine to always use it --- .../org/gotson/komga/interfaces/api/rest/ReadListController.kt | 2 ++ .../org/gotson/komga/interfaces/api/rest/SeriesController.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/ReadListController.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/ReadListController.kt index 5f962c0cf..8fa343063 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/ReadListController.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/ReadListController.kt @@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Content import io.swagger.v3.oas.annotations.media.Schema import io.swagger.v3.oas.annotations.responses.ApiResponse import mu.KotlinLogging +import org.apache.commons.compress.archivers.zip.Zip64Mode import org.apache.commons.compress.archivers.zip.ZipArchiveEntry import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream import org.apache.commons.io.IOUtils @@ -398,6 +399,7 @@ class ReadListController( ZipArchiveOutputStream(responseStream).use { zipStream -> zipStream.setMethod(ZipArchiveOutputStream.DEFLATED) zipStream.setLevel(Deflater.NO_COMPRESSION) + zipStream.setUseZip64(Zip64Mode.Always) books.forEach { (index, book) -> val file = FileSystemResource(book.path) if (!file.exists()) { diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/SeriesController.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/SeriesController.kt index 7333a9b71..8d6dcf5b3 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/SeriesController.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/api/rest/SeriesController.kt @@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Content import io.swagger.v3.oas.annotations.media.Schema import io.swagger.v3.oas.annotations.responses.ApiResponse import mu.KotlinLogging +import org.apache.commons.compress.archivers.zip.Zip64Mode import org.apache.commons.compress.archivers.zip.ZipArchiveEntry import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream import org.apache.commons.io.IOUtils @@ -649,6 +650,7 @@ class SeriesController( ZipArchiveOutputStream(responseStream).use { zipStream -> zipStream.setMethod(ZipArchiveOutputStream.DEFLATED) zipStream.setLevel(Deflater.NO_COMPRESSION) + zipStream.setUseZip64(Zip64Mode.Always) books.forEach { book -> val file = FileSystemResource(book.path) if (!file.exists()) {