URL拦截放宽:下划线分隔的字符串不在非法域名列表则跳过
Auto Release / build (push) Successful in 31s

- ChatFilterManager.shouldBlockUrl(): 下划线分隔的必须命中非法域名后缀才拦截
- 玩家名下划线误匹配(如 player_name)后缀不在黑名单 → 跳过不处罚
- 点分隔域名正常拦截不变
- 改进: onChat + filterLinkInContent 两处调用
This commit is contained in:
2026-07-23 21:58:35 +08:00
parent a1e1e919e1
commit 0d3547dded
2 changed files with 18 additions and 3 deletions
@@ -958,6 +958,21 @@ public class ChatFilterManager {
return false;
}
/**
* 判断URL是否应被拦截
* 下划线分隔的字符串(如 player_name),必须命中非法域名后缀才拦截
* 点分隔或标准URL正常拦截
*/
public boolean shouldBlockUrl(String url) {
if (isWhitelisted(url)) return false;
// 下划线分隔 → 检查是否非法域名,不在列表则跳过(合法玩家名下划线误匹配)
if (url.contains("_")) {
return containsIllegalDomain(url);
}
// 点分隔或标准URL正常拦截
return true;
}
public boolean isLikelyDomain(String url) {
int lastDot = url.lastIndexOf('.');
if (lastDot < 0
+3 -3
View File
@@ -3437,10 +3437,10 @@ public class Main extends JavaPlugin
chatFilter.extractUrls(msg);
if (urls.isEmpty()) return;
// 过滤白名单
// 过滤白名单 + 下划线误匹配(player_name 不在非法域名列表则跳过)
List<String> blocked = new ArrayList<>();
for (String url : urls) {
if (!chatFilter.isWhitelisted(url)) {
if (chatFilter.shouldBlockUrl(url)) {
blocked.add(url);
}
}
@@ -3538,7 +3538,7 @@ public class Main extends JavaPlugin
List<String> blocked = new ArrayList<>();
for (String url : urls) {
if (!chatFilter.isWhitelisted(url)) {
if (chatFilter.shouldBlockUrl(url)) {
blocked.add(url);
}
}