mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2026-07-12 06:21:15 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 363c603bbb |
@@ -65,7 +65,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.postgresql</groupId>
|
<groupId>org.postgresql</groupId>
|
||||||
<artifactId>postgresql</artifactId>
|
<artifactId>postgresql</artifactId>
|
||||||
<version>42.7.11</version>
|
<version>42.7.12</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -188,16 +188,9 @@ public class Ye2Tool extends PanBase {
|
|||||||
|
|
||||||
private Future<String> resolveTokenFuture() {
|
private Future<String> resolveTokenFuture() {
|
||||||
MultiMap auths = (MultiMap) shareLinkInfo.getOtherParam().get("auths");
|
MultiMap auths = (MultiMap) shareLinkInfo.getOtherParam().get("auths");
|
||||||
if (auths != null) {
|
if (auths != null && auths.contains("token")) {
|
||||||
String raw = null;
|
String providedToken = auths.get("token");
|
||||||
if (auths.contains("token")) {
|
|
||||||
raw = auths.get("token");
|
|
||||||
} else if (auths.contains("Authorization")) {
|
|
||||||
raw = auths.get("Authorization");
|
|
||||||
}
|
|
||||||
String providedToken = normalizeBearerToken(raw);
|
|
||||||
if (StringUtils.isNotEmpty(providedToken)) {
|
if (StringUtils.isNotEmpty(providedToken)) {
|
||||||
log.info("使用配置token,前8位: {}...", providedToken.substring(0, Math.min(8, providedToken.length())));
|
|
||||||
TokenCache.putToken(cacheKey, providedToken);
|
TokenCache.putToken(cacheKey, providedToken);
|
||||||
return Future.succeededFuture(providedToken);
|
return Future.succeededFuture(providedToken);
|
||||||
}
|
}
|
||||||
@@ -210,17 +203,6 @@ public class Ye2Tool extends PanBase {
|
|||||||
return Future.succeededFuture(cached);
|
return Future.succeededFuture(cached);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String normalizeBearerToken(String raw) {
|
|
||||||
if (StringUtils.isBlank(raw)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
String token = raw.trim();
|
|
||||||
if (token.regionMatches(true, 0, "Bearer ", 0, 7)) {
|
|
||||||
token = token.substring(7).trim();
|
|
||||||
}
|
|
||||||
return StringUtils.isNotEmpty(token) ? token : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Future<String> loginAndGetToken() {
|
private Future<String> loginAndGetToken() {
|
||||||
MultiMap auths = (MultiMap) shareLinkInfo.getOtherParam().get("auths");
|
MultiMap auths = (MultiMap) shareLinkInfo.getOtherParam().get("auths");
|
||||||
if (auths == null) {
|
if (auths == null) {
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
package cn.qaiu.parser.impl;
|
|
||||||
|
|
||||||
import cn.qaiu.entity.ShareLinkInfo;
|
|
||||||
import io.vertx.core.MultiMap;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ye2Tool token 解析验证测试
|
|
||||||
* 验证 Authorization 字段和 ******
|
|
||||||
*/
|
|
||||||
public class Ye2ToolTokenValidationTest {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
System.out.println("========================================");
|
|
||||||
System.out.println(" Ye2Tool Token 解析验证测试");
|
|
||||||
System.out.println("========================================\n");
|
|
||||||
|
|
||||||
testNormalizeBearerToken();
|
|
||||||
testYe2ToolWithTokenField();
|
|
||||||
testYe2ToolWithAuthorizationField();
|
|
||||||
testYe2ToolWithoutAuth();
|
|
||||||
|
|
||||||
System.out.println("\n========================================");
|
|
||||||
System.out.println(" 所有验证通过! ✓");
|
|
||||||
System.out.println("========================================");
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 独立验证 normalizeBearerToken 逻辑(内联实现与 Ye2Tool 保持一致)*/
|
|
||||||
private static String normalizeBearerToken(String raw) {
|
|
||||||
if (raw == null || raw.trim().isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
String token = raw.trim();
|
|
||||||
if (token.regionMatches(true, 0, "Bearer ", 0, 7)) {
|
|
||||||
token = token.substring(7).trim();
|
|
||||||
}
|
|
||||||
return token.isEmpty() ? null : token;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testNormalizeBearerToken() {
|
|
||||||
System.out.println("=== 验证 normalizeBearerToken 逻辑 ===");
|
|
||||||
|
|
||||||
assertNormalize("testtoken123abc", "testtoken123abc", "纯 token 不变");
|
|
||||||
assertNormalize("Bearer testtoken123abc", "testtoken123abc", "******");
|
|
||||||
assertNormalize("bearer testtoken123abc", "testtoken123abc", "小写 bearer 前缀被去掉");
|
|
||||||
assertNormalize("BEARER testtoken123abc", "testtoken123abc", "大写 BEARER 前缀被去掉");
|
|
||||||
assertNormalize(" Bearer testtoken123abc ", "testtoken123abc", "前后空格被 trim");
|
|
||||||
assertNormalizeNull(null, "null 输入返回 null");
|
|
||||||
assertNormalizeNull("", "空字符串返回 null");
|
|
||||||
assertNormalizeNull(" ", "纯空格返回 null");
|
|
||||||
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void assertNormalize(String input, String expected, String desc) {
|
|
||||||
String actual = normalizeBearerToken(input);
|
|
||||||
if (!expected.equals(actual)) {
|
|
||||||
throw new AssertionError("FAIL [" + desc + "]: expected='" + expected + "', actual='" + actual + "'");
|
|
||||||
}
|
|
||||||
System.out.println("✓ " + desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void assertNormalizeNull(String input, String desc) {
|
|
||||||
String actual = normalizeBearerToken(input);
|
|
||||||
if (actual != null) {
|
|
||||||
throw new AssertionError("FAIL [" + desc + "]: expected null, actual='" + actual + "'");
|
|
||||||
}
|
|
||||||
System.out.println("✓ " + desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testYe2ToolWithTokenField() {
|
|
||||||
System.out.println("=== 测试 Ye2Tool(token 字段)===");
|
|
||||||
try {
|
|
||||||
MultiMap auths = MultiMap.caseInsensitiveMultiMap();
|
|
||||||
auths.set("token", "testtoken123abc");
|
|
||||||
|
|
||||||
Map<String, Object> otherParam = new HashMap<>();
|
|
||||||
otherParam.put("auths", auths);
|
|
||||||
|
|
||||||
ShareLinkInfo shareLinkInfo = ShareLinkInfo.newBuilder()
|
|
||||||
.type("YE")
|
|
||||||
.panName("123网盘")
|
|
||||||
.shareKey("test_key_token")
|
|
||||||
.shareUrl("https://www.123pan.com/s/test123")
|
|
||||||
.build();
|
|
||||||
shareLinkInfo.setOtherParam(otherParam);
|
|
||||||
|
|
||||||
Ye2Tool ye2Tool = new Ye2Tool(shareLinkInfo);
|
|
||||||
System.out.println("✓ Ye2Tool 实例创建成功(token 字段)\n");
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("✗ Ye2Tool(token 字段)测试失败: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testYe2ToolWithAuthorizationField() {
|
|
||||||
System.out.println("=== 测试 Ye2Tool(Authorization 字段,带 Bearer)===");
|
|
||||||
try {
|
|
||||||
MultiMap auths = MultiMap.caseInsensitiveMultiMap();
|
|
||||||
auths.set("Authorization", "Bearer testtoken123abc");
|
|
||||||
|
|
||||||
Map<String, Object> otherParam = new HashMap<>();
|
|
||||||
otherParam.put("auths", auths);
|
|
||||||
|
|
||||||
ShareLinkInfo shareLinkInfo = ShareLinkInfo.newBuilder()
|
|
||||||
.type("YE")
|
|
||||||
.panName("123网盘")
|
|
||||||
.shareKey("test_key_auth")
|
|
||||||
.shareUrl("https://www.123pan.com/s/test456")
|
|
||||||
.build();
|
|
||||||
shareLinkInfo.setOtherParam(otherParam);
|
|
||||||
|
|
||||||
Ye2Tool ye2Tool = new Ye2Tool(shareLinkInfo);
|
|
||||||
System.out.println("✓ Ye2Tool 实例创建成功(Authorization 字段)\n");
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("✗ Ye2Tool(Authorization 字段)测试失败: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testYe2ToolWithoutAuth() {
|
|
||||||
System.out.println("=== 测试 Ye2Tool(无认证配置)===");
|
|
||||||
try {
|
|
||||||
ShareLinkInfo shareLinkInfo = ShareLinkInfo.newBuilder()
|
|
||||||
.type("YE")
|
|
||||||
.panName("123网盘")
|
|
||||||
.shareKey("test_key_noauth")
|
|
||||||
.shareUrl("https://www.123pan.com/s/test789")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
Ye2Tool ye2Tool = new Ye2Tool(shareLinkInfo);
|
|
||||||
System.out.println("✓ Ye2Tool 实例创建成功(无认证)\n");
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("✗ Ye2Tool(无认证)测试失败: " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<parserVersion>10.2.5</parserVersion>
|
<parserVersion>10.2.5</parserVersion>
|
||||||
<jackson.version>2.18.6</jackson.version>
|
<jackson.version>2.18.6</jackson.version>
|
||||||
<!-- Logback 最新稳定版 -->
|
<!-- Logback 最新稳定版 -->
|
||||||
<logback.version>1.5.32</logback.version>
|
<logback.version>1.5.33</logback.version>
|
||||||
<junit.version>4.13.2</junit.version>
|
<junit.version>4.13.2</junit.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user