增加白名单配置

This commit is contained in:
liulu
2024-12-02 16:51:51 +08:00
parent f64f225b2e
commit 00829ae822
2 changed files with 19 additions and 8 deletions
@@ -39,16 +39,19 @@ import java.util.stream.Collectors;
public class IpFilter extends OncePerRequestFilter implements ApplicationRunner {
public static List<String> whiteIps = new ArrayList<>();
public static Boolean enableWhiteIp = false;
@Resource
private IpWhitelisttMapper ipWhitelisttMapper;
@Resource
private ParamConfMapper paramConfMapper;
private Boolean enableWhiteIp = false;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
if (enableWhiteIp && CollectionUtils.isEmpty(whiteIps)) {
syncWhiteIps();
}
String ip = IpUtils.getIpAddress(request);
if (!enableWhiteIp || CollectionUtils.isEmpty(whiteIps) || whiteIps.contains(ip)) {
chain.doFilter(request, response);
@@ -56,7 +59,7 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
}
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
response.getWriter().println("此ip禁止访问");
response.getWriter().println("this ip is forbidden");
response.getWriter().flush();
}
@@ -71,15 +74,19 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
enableWhiteIp = Objects.equals("true", conf.getValue());
}
if (enableWhiteIp) {
List<IpWhitelist> list = ipWhitelisttMapper.selectList(
new LambdaQueryWrapper<IpWhitelist>()
.eq(IpWhitelist::getScope, "global")
.eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode())
);
whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList());
syncWhiteIps();
}
}, 0L, 5L, TimeUnit.MINUTES);
}
private void syncWhiteIps() {
List<IpWhitelist> list = ipWhitelisttMapper.selectList(
new LambdaQueryWrapper<IpWhitelist>()
.eq(IpWhitelist::getScope, "global")
.eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode())
);
whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList());
}
}