mirror of
https://gitee.com/dromara/MaxKey.git
synced 2026-05-18 22:38:09 +08:00
v1.4.0 GA
This commit is contained in:
@@ -1,80 +0,0 @@
|
||||
package org.maxkey.web.filter;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import org.maxkey.config.ApplicationConfig;
|
||||
import org.maxkey.domain.IpAddrFilter;
|
||||
import org.maxkey.web.WebContext;
|
||||
import org.maxkey.web.filter.ipaddress.IpAddressCache;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
||||
|
||||
public class IpAddressFilter implements Filter {
|
||||
private static final Logger _logger = LoggerFactory.getLogger(IpAddressFilter.class);
|
||||
|
||||
@Autowired
|
||||
@Qualifier("applicationConfig")
|
||||
private ApplicationConfig applicationConfig;
|
||||
|
||||
boolean whiteList = false;
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
||||
throws IOException, ServletException {
|
||||
if (applicationConfig == null) {
|
||||
_logger.info("applicationConfig init .");
|
||||
applicationConfig = WebApplicationContextUtils.getWebApplicationContext(
|
||||
request.getServletContext())
|
||||
.getBean("applicationConfig", ApplicationConfig.class);
|
||||
}
|
||||
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
|
||||
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
|
||||
HttpSession session = httpServletRequest.getSession();
|
||||
String ipAddress = WebContext.getRequestIpAddress(httpServletRequest);
|
||||
_logger.trace("IpAddress " + ipAddress);
|
||||
// 黑名单地址
|
||||
if (IpAddressCache.ipAddressBlackListMap.containsKey(ipAddress)) {
|
||||
IpAddrFilter ipAddrFilter = IpAddressCache.ipAddressBlackListMap.get(ipAddress);
|
||||
|
||||
_logger.info("You IpAddress in Black List " + ipAddrFilter);
|
||||
RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
|
||||
dispatcher.forward(request, response);
|
||||
return;
|
||||
|
||||
}
|
||||
// 白名单地址
|
||||
if (whiteList && !IpAddressCache.ipAddressWhiteListMap.containsKey(ipAddress)) {
|
||||
_logger.info("You IpAddress not in White List " + ipAddress);
|
||||
RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
|
||||
dispatcher.forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package org.maxkey.web.filter.ipaddress;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.maxkey.cache.AbstractCache;
|
||||
import org.maxkey.domain.IpAddrFilter;
|
||||
|
||||
public class IpAddressCache extends AbstractCache{
|
||||
|
||||
JdbcIpAddressService jdbcIpAddressService;
|
||||
|
||||
public static HashMap<String,IpAddrFilter> ipAddressBlackListMap=new HashMap<String,IpAddrFilter>();
|
||||
|
||||
public static HashMap<String,IpAddrFilter> ipAddressWhiteListMap=new HashMap<String,IpAddrFilter>();
|
||||
|
||||
@Override
|
||||
public void business() {
|
||||
List<IpAddrFilter> ipAddrFilterList=jdbcIpAddressService.queryAll();
|
||||
if(ipAddrFilterList!=null){
|
||||
ipAddressBlackListMap.clear();
|
||||
ipAddressWhiteListMap.clear();
|
||||
for(IpAddrFilter ipAddrFilter :ipAddrFilterList){
|
||||
if(ipAddrFilter.getFilter()==IpAddrFilter.FILTER.BLACKLIST){
|
||||
ipAddressBlackListMap.put(ipAddrFilter.getIpAddr(), ipAddrFilter);
|
||||
}else{
|
||||
ipAddressWhiteListMap.put(ipAddrFilter.getIpAddr(), ipAddrFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setJdbcIpAddressService(JdbcIpAddressService jdbcIpAddressService) {
|
||||
this.jdbcIpAddressService = jdbcIpAddressService;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package org.maxkey.web.filter.ipaddress;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.maxkey.domain.IpAddrFilter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
|
||||
|
||||
public class JdbcIpAddressService {
|
||||
private static final Logger _logger = LoggerFactory.getLogger(JdbcIpAddressService.class);
|
||||
|
||||
private static final String DEFAULT_ALL_SELECT_STATEMENT = "SELECT ID, IPADDR,FILTER,DESCRIPTION FROM IPADDRFILTER WHERE STATUS = 1";
|
||||
|
||||
private static final String DEFAULT_FILTER_SELECT_STATEMENT = "SELECT ID, IPADDR,FILTER,DESCRIPTION FROM IPADDRFILTER WHERE FILTER = ? AND STATUS = 1";
|
||||
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
public JdbcIpAddressService(JdbcTemplate jdbcTemplate) {
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
}
|
||||
|
||||
|
||||
public List<IpAddrFilter> queryAll() {
|
||||
List<IpAddrFilter> listIpAddrFilter=jdbcTemplate.query(DEFAULT_ALL_SELECT_STATEMENT, new RowMapper<IpAddrFilter>() {
|
||||
public IpAddrFilter mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
IpAddrFilter ipAddrFilter=new IpAddrFilter();
|
||||
ipAddrFilter.setId(rs.getString(1));
|
||||
ipAddrFilter.setIpAddr(rs.getString(2));
|
||||
ipAddrFilter.setFilter(rs.getInt(3));
|
||||
ipAddrFilter.setDescription(rs.getString(4));
|
||||
return ipAddrFilter;
|
||||
}
|
||||
});
|
||||
_logger.debug("ListIpAddrFilter "+listIpAddrFilter);
|
||||
return (listIpAddrFilter.size()>0)?listIpAddrFilter:null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author Crystal.Sea
|
||||
*
|
||||
*/
|
||||
package org.maxkey.web.filter.ipaddress;
|
||||
Reference in New Issue
Block a user