diff --git a/README.md b/README.md index 066605b..4acb11f 100644 --- a/README.md +++ b/README.md @@ -457,7 +457,7 @@ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtow > 注意: netdisk-fast-download.service中的ExecStart的路径改为实际路径 ```shell cd ~ -wget -O netdisk-fast-download.zip https://github.com/qaiu/netdisk-fast-download/releases/download/v0.4.2/netdisk-fast-download-linux-amd64.zip +wget -O netdisk-fast-download.zip https://github.com/qaiu/netdisk-fast-download/releases/download/v0.4.5/netdisk-fast-download-linux-amd64.zip unzip netdisk-fast-download.zip cd netdisk-fast-download bash service-install.sh diff --git a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java index 6bf4c8b..3cd5abc 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java @@ -162,13 +162,18 @@ public class CommonUtil { try (var is = CommonUtil.class.getClassLoader().getResourceAsStream("app.properties")) { if (is != null) { properties.load(is); - if (!properties.isEmpty()) { - appVersion = properties.getProperty("app.version") + "build" + properties.getProperty("build"); + String version = properties.getProperty("app.version"); + String build = properties.getProperty("build"); + if (version != null && !version.contains("${")) { + appVersion = version + "build" + (build == null || build.contains("${") ? "" : build); } } - } catch (IOException e) { + } catch (Exception e) { LOGGER.error("读取app.properties失败", e); } + if (appVersion == null) { + appVersion = "unknown"; + } } return appVersion; } diff --git a/parser/pom.xml b/parser/pom.xml index 2a55f4d..50dee03 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -63,7 +63,7 @@ 1.18.38 2.0.16 3.18.0 - 2.18.6 + 2.18.9 1.5.32 4.13.2 diff --git a/parser/src/main/java/cn/qaiu/parser/PanBase.java b/parser/src/main/java/cn/qaiu/parser/PanBase.java index 5b230ff..4bbf28c 100644 --- a/parser/src/main/java/cn/qaiu/parser/PanBase.java +++ b/parser/src/main/java/cn/qaiu/parser/PanBase.java @@ -368,9 +368,12 @@ public abstract class PanBase implements IPanTool, Closeable { // 检查响应头中的Content-Encoding是否为gzip String contentEncoding = res.getHeader("Content-Encoding"); try { - if ("gzip".equalsIgnoreCase(contentEncoding)) { + if ("gzip".equalsIgnoreCase(contentEncoding) && res.body() instanceof Buffer gzipBody + && gzipBody.length() >= 2 + && (gzipBody.getByte(0) & 0xff) == 0x1f + && (gzipBody.getByte(1) & 0xff) == 0x8b) { // 如果是gzip压缩的响应体,解压(只解压一次,缓存结果) - String decompressed = decompressGzip((Buffer) res.body()); + String decompressed = decompressGzip(gzipBody); return new JsonObject(decompressed); } else { return res.bodyAsJsonObject(); diff --git a/parser/src/main/java/cn/qaiu/util/HttpResponseHelper.java b/parser/src/main/java/cn/qaiu/util/HttpResponseHelper.java index 33d9bce..8925b02 100644 --- a/parser/src/main/java/cn/qaiu/util/HttpResponseHelper.java +++ b/parser/src/main/java/cn/qaiu/util/HttpResponseHelper.java @@ -119,8 +119,18 @@ public class HttpResponseHelper { }; } + private static boolean looksLikeGzip(Buffer compressed) { + return compressed != null && compressed.length() >= 2 + && (compressed.getByte(0) & 0xff) == 0x1f + && (compressed.getByte(1) & 0xff) == 0x8b; + } + // -------------------- gzip -------------------- private static String decompressGzip(Buffer compressed) throws IOException { + // Vert.x 可能已解压但仍带 Content-Encoding: gzip,再走 GZIPInputStream 会变成 ZipException + if (!looksLikeGzip(compressed)) { + return compressed.toString(StandardCharsets.UTF_8); + } try (ByteArrayInputStream bais = new ByteArrayInputStream(compressed.getBytes()); GZIPInputStream gzis = new GZIPInputStream(bais); InputStreamReader isr = new InputStreamReader(gzis, StandardCharsets.UTF_8); diff --git a/pom.xml b/pom.xml index a8c287c..a0c35cc 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ - 0.4.4 + 0.4.5 17 17 17 diff --git a/web-front/package.json b/web-front/package.json index e0de842..9de737b 100644 --- a/web-front/package.json +++ b/web-front/package.json @@ -1,6 +1,6 @@ { "name": "nfd-web", - "version": "0.4.2", + "version": "0.4.5", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/web-service/pom.xml b/web-service/pom.xml index b677e9f..597206b 100644 --- a/web-service/pom.xml +++ b/web-service/pom.xml @@ -30,6 +30,16 @@ cn.qaiu parser + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + org.projectlombok lombok diff --git a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java index 45ffb7c..8a8c920 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java @@ -463,11 +463,14 @@ public class ParserApi { // 获取版本号 @RouteMapping("/build-version") public String getVersion() { - return CommonUtil.getAppVersion() + String version = CommonUtil.getAppVersion(); + if (version == null || version.isBlank()) { + return "unknown"; + } + return version .replace("-", "") .replace("Z", "") .replace("T", "_") - .replace("-", "") .replace(":", ""); }