From eb782eaac8f706a005ce18ed0b73fda22ac36113 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 22 十月 2025 10:27:14 +0800
Subject: [PATCH] 日期格式
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/IpWhitelistInterceptor.java | 65 ++++++++++++++++++++++++++------
1 files changed, 52 insertions(+), 13 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/IpWhitelistInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/IpWhitelistInterceptor.java
index 277238a..aa80b2e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/IpWhitelistInterceptor.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/IpWhitelistInterceptor.java
@@ -5,7 +5,6 @@
import com.ruoyi.system.mapper.SysConfigMapper;
import org.apache.commons.net.util.SubnetUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
@@ -13,9 +12,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
@Component
public class IpWhitelistInterceptor implements HandlerInterceptor {
@@ -61,17 +60,8 @@
SysConfig sysConfig = sysConfigMapper.selectConfig(config);
List<String> whitelistIps = Arrays.asList(sysConfig.getConfigValue().split(","));
for (String whitelist : whitelistIps) {
- if (whitelist.contains("/")) {
- // CIDR鏍煎紡
- SubnetUtils subnetUtils = new SubnetUtils(whitelist);
- if (subnetUtils.getInfo().isInRange(ip)) {
- return true;
- }
- } else {
- // 鍗曚釜IP
- if (whitelist.equals(ip)) {
- return true;
- }
+ if (isInRange(ip, whitelist)) {
+ return true;
}
}
} catch (Exception e) {
@@ -79,4 +69,53 @@
}
return false;
}
+
+ /**
+ * 鏅鸿兘楠岃瘉IP鏄惁鍦ㄦ寚瀹氱殑妯″紡鍐�
+ * 鏀寔锛欳IDR鏍煎紡銆侀�氶厤绗︽牸寮忋�佸崟涓狪P
+ */
+ public boolean isInRange(String ip, String pattern) {
+ if (pattern == null || ip == null) {
+ return false;
+ }
+
+ // 1. 濡傛灉鏄疌IDR鏍煎紡锛堝寘鍚�/锛�
+ if (pattern.contains("/")) {
+ try {
+ SubnetUtils utils = new SubnetUtils(pattern);
+ return utils.getInfo().isInRange(ip);
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
+ }
+
+ // 2. 濡傛灉鏄�氶厤绗︽牸寮忥紙鍖呭惈*锛�
+ if (pattern.contains("*")) {
+ return matchesWildcardPattern(ip, pattern);
+ }
+
+ // 3. 濡傛灉鏄崟涓狪P鍦板潃
+ if (isValidIp(pattern)) {
+ return ip.equals(pattern);
+ }
+
+ return false;
+ }
+
+ /**
+ * 閫氶厤绗︽ā寮忓尮閰�
+ */
+ private boolean matchesWildcardPattern(String ip, String wildcardPattern) {
+ // 灏嗛�氶厤绗﹁浆鎹负姝e垯琛ㄨ揪寮�
+ String regex = wildcardPattern.replace(".", "\\.").replace("*", "\\d+");
+
+ return Pattern.matches(regex, ip);
+ }
+
+ /**
+ * 楠岃瘉鏄惁涓哄悎娉旾P鍦板潃
+ */
+ private boolean isValidIp(String ip) {
+ return Pattern.matches("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", ip);
+ }
}
--
Gitblit v1.9.3