v1.4.0 GA

This commit is contained in:
shimingxy
2020-04-26 17:48:33 +08:00
parent 9fa72d8aae
commit 965fb2c7c0
16 changed files with 81 additions and 829 deletions

View File

@@ -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
}
}

View File

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

View File

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

View File

@@ -1,8 +0,0 @@
/**
*
*/
/**
* @author Crystal.Sea
*
*/
package org.maxkey.web.filter.ipaddress;