diff --git a/chsm-common/src/main/java/com/sunyard/chsm/config/IpFilter.java b/chsm-common/src/main/java/com/sunyard/chsm/config/IpFilter.java index a0bb06f..7bc4c3d 100644 --- a/chsm-common/src/main/java/com/sunyard/chsm/config/IpFilter.java +++ b/chsm-common/src/main/java/com/sunyard/chsm/config/IpFilter.java @@ -39,16 +39,19 @@ import java.util.stream.Collectors; public class IpFilter extends OncePerRequestFilter implements ApplicationRunner { public static List 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 list = ipWhitelisttMapper.selectList( - new LambdaQueryWrapper() - .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 list = ipWhitelisttMapper.selectList( + new LambdaQueryWrapper() + .eq(IpWhitelist::getScope, "global") + .eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode()) + ); + whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList()); + } + } diff --git a/chsm-web-manage/src/main/java/com/sunyard/ssp/modules/sysconf/paramconf/serviceimpl/ParamConfServiceImpl.java b/chsm-web-manage/src/main/java/com/sunyard/ssp/modules/sysconf/paramconf/serviceimpl/ParamConfServiceImpl.java index 13aad10..f4d9ac7 100644 --- a/chsm-web-manage/src/main/java/com/sunyard/ssp/modules/sysconf/paramconf/serviceimpl/ParamConfServiceImpl.java +++ b/chsm-web-manage/src/main/java/com/sunyard/ssp/modules/sysconf/paramconf/serviceimpl/ParamConfServiceImpl.java @@ -2,6 +2,7 @@ package com.sunyard.ssp.modules.sysconf.paramconf.serviceimpl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sunyard.chsm.config.IpFilter; import com.sunyard.chsm.mapper.ParamConfMapper; import com.sunyard.chsm.model.entity.ParamConf; import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService; @@ -19,6 +20,7 @@ import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import static com.sunyard.chsm.constant.ParamConfKeyConstant.APPROVAL_TRUE; @@ -138,6 +140,8 @@ public class ParamConfServiceImpl extends ServiceImpl