增加白名单配置
This commit is contained in:
parent
f64f225b2e
commit
00829ae822
@ -39,16 +39,19 @@ import java.util.stream.Collectors;
|
|||||||
public class IpFilter extends OncePerRequestFilter implements ApplicationRunner {
|
public class IpFilter extends OncePerRequestFilter implements ApplicationRunner {
|
||||||
|
|
||||||
public static List<String> whiteIps = new ArrayList<>();
|
public static List<String> whiteIps = new ArrayList<>();
|
||||||
|
public static Boolean enableWhiteIp = false;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IpWhitelisttMapper ipWhitelisttMapper;
|
private IpWhitelisttMapper ipWhitelisttMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ParamConfMapper paramConfMapper;
|
private ParamConfMapper paramConfMapper;
|
||||||
private Boolean enableWhiteIp = false;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
|
||||||
|
if (enableWhiteIp && CollectionUtils.isEmpty(whiteIps)) {
|
||||||
|
syncWhiteIps();
|
||||||
|
}
|
||||||
String ip = IpUtils.getIpAddress(request);
|
String ip = IpUtils.getIpAddress(request);
|
||||||
if (!enableWhiteIp || CollectionUtils.isEmpty(whiteIps) || whiteIps.contains(ip)) {
|
if (!enableWhiteIp || CollectionUtils.isEmpty(whiteIps) || whiteIps.contains(ip)) {
|
||||||
chain.doFilter(request, response);
|
chain.doFilter(request, response);
|
||||||
@ -56,7 +59,7 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
|
|||||||
}
|
}
|
||||||
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
||||||
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
|
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
|
||||||
response.getWriter().println("此ip禁止访问");
|
response.getWriter().println("this ip is forbidden");
|
||||||
response.getWriter().flush();
|
response.getWriter().flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,15 +74,19 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
|
|||||||
enableWhiteIp = Objects.equals("true", conf.getValue());
|
enableWhiteIp = Objects.equals("true", conf.getValue());
|
||||||
}
|
}
|
||||||
if (enableWhiteIp) {
|
if (enableWhiteIp) {
|
||||||
List<IpWhitelist> list = ipWhitelisttMapper.selectList(
|
syncWhiteIps();
|
||||||
new LambdaQueryWrapper<IpWhitelist>()
|
|
||||||
.eq(IpWhitelist::getScope, "global")
|
|
||||||
.eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode())
|
|
||||||
);
|
|
||||||
whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
}, 0L, 5L, TimeUnit.MINUTES);
|
}, 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());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.sunyard.ssp.modules.sysconf.paramconf.serviceimpl;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.sunyard.chsm.config.IpFilter;
|
||||||
import com.sunyard.chsm.mapper.ParamConfMapper;
|
import com.sunyard.chsm.mapper.ParamConfMapper;
|
||||||
import com.sunyard.chsm.model.entity.ParamConf;
|
import com.sunyard.chsm.model.entity.ParamConf;
|
||||||
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
|
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
|
||||||
@ -19,6 +20,7 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static com.sunyard.chsm.constant.ParamConfKeyConstant.APPROVAL_TRUE;
|
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())
|
else if (IP_WHITELIST_ITEM.equals(paramConf.getItem())
|
||||||
&& IP_WHITELIST_SWITCH.equals(paramConf.getKey())) {
|
&& IP_WHITELIST_SWITCH.equals(paramConf.getKey())) {
|
||||||
|
|
||||||
|
IpFilter.enableWhiteIp = Objects.equals("true", paramConf.getValue());
|
||||||
// iIpWhitelistService.messengerWhitelistUpdate();
|
// iIpWhitelistService.messengerWhitelistUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user