From c1b701f1f9345aaa2cd35292a8d9455a4208ba97 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:03:37 +0800 Subject: [PATCH] Only check file integrity for images served by H@H URLs returned by non-H@H servers may not contain file hash for resampled images. --- .../main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt index 90781cb21..96356f3a5 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt @@ -219,9 +219,11 @@ class SpiderDen(val info: GalleryInfo) { outFile.openOutputStream().use { response.bodyAsChannel().copyTo(it.channel) } - val expected = FileHashRegex.findAll(url).last().groupValues[1] - val actual = outFile.sha1() - check(expected == actual) { "File hash mismatch: expected $expected, but got $actual\nURL: $url" } + FileHashRegex.find(url)?.let { + val expected = it.groupValues[1] + val actual = outFile.sha1() + check(expected == actual) { "File hash mismatch: expected $expected, but got $actual\nURL: $url" } + } } } @@ -366,7 +368,7 @@ class SpiderDen(val info: GalleryInfo) { private const val TEMP_SUFFIX = ".tmp" private val FileNameRegex = Regex("^\\d{8}\\.\\w{3,4}") -private val FileHashRegex = Regex("/([0-9a-f]{40})(?:-\\d+){3}-\\w+") +private val FileHashRegex = Regex("/h/([0-9a-f]{40})") fun perFilename(index: Int, extension: String = ""): String = "%08d.%s".format(index + 1, extension)