增加白名单配置

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

View File

@ -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());
}
}

View File

@ -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<ParamConfMapper, ParamConf
//白名单通知
else if (IP_WHITELIST_ITEM.equals(paramConf.getItem())
&& IP_WHITELIST_SWITCH.equals(paramConf.getKey())) {
IpFilter.enableWhiteIp = Objects.equals("true", paramConf.getValue());
// iIpWhitelistService.messengerWhitelistUpdate();
}
}