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(":", "");
}