仿冒功能

仿冒地址池ip
来函和任务修改
样例新增界面增加631业务
This commit is contained in:
段冬梅
2018-12-17 00:21:27 +08:00
parent 23bfe1c136
commit f3e4844f92
33 changed files with 2076 additions and 99 deletions

View File

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg;
@@ -58,7 +59,9 @@ public class InterceptController extends CommonController{
certificateList=pxyObjKeyringService.findPxyObjKeyrings(null, 1, 1, "domain");
}
model.addAttribute("certificateList", certificateList);
//IP地址仿冒策略使用策略组
List<PolicyGroupInfo> policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(6);
model.addAttribute("policyGroups", policyGroups);
return "/cfg/intercept/interceptList";
}
@RequestMapping(value = {"/interceptIpForm","interceptDomainForm","interceptIpPayloadForm"})
@@ -80,6 +83,10 @@ public class InterceptController extends CommonController{
model.addAttribute("certificateList", certificateList);
model.addAttribute("_cfg", entity);
//IP地址仿冒策略使用策略组
List<PolicyGroupInfo> policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(6);
model.addAttribute("policyGroups", policyGroups);
return "/cfg/intercept/interceptForm";
}
@RequestMapping(value = {"/ip/saveOrUpdate","/domain/saveOrUpdate","/ippayload/SaveOrUpdate"})
@@ -173,7 +180,6 @@ public class InterceptController extends CommonController{
try {
auditAll(auditPage,isValid , cfg);
addMessage(redirectAttributes,"success", "audit_success");
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {

View File

@@ -0,0 +1,201 @@
package com.nis.web.controller.configuration.proxy;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.KeyStore;
import java.security.Principal;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
import com.nis.exceptions.MultiPartNewException;
import com.nis.util.ConfigDictUtils;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
/**
* 拦截策略
* @author ddm
*
*/
@Controller
@RequestMapping("${adminPath}/proxy/spoofing/pool")
public class PxyObjSpoofingIpPoolController extends BaseController {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@RequestMapping(value = {"/form"})
@RequiresPermissions(value={"proxy:spoofing:pool:config"})
public String from(Model model,
HttpServletRequest request,
HttpServletResponse response,
String ids,
@ModelAttribute("cfg")PxyObjSpoofingIpPool cfg
,RedirectAttributes redirectAttributes){
if(cfg == null){
cfg=new PxyObjSpoofingIpPool();
}
if(!StringUtil.isEmpty(ids)){
cfg = pxyObjSpoofingIpPoolService.getPxyObjSpoofingIpPool(Long.valueOf(ids));
initFormCondition(model, cfg);
model.addAttribute("isAdd", false);
}else{
initFormCondition(model, cfg);
model.addAttribute("isAdd", true);
}
List<PolicyGroupInfo> groups=policyGroupInfoService.findPolicyGroupInfosByType(6);
List<PolicyGroupInfo> policyGroups = new ArrayList();
//解决目前一个分组只能有一个生效IP
for(PolicyGroupInfo group:groups){
PxyObjSpoofingIpPool entity = new PxyObjSpoofingIpPool();
entity.setGroupId(group.getGroupId());
entity.setCfgId(cfg.getCfgId());
List<PxyObjSpoofingIpPool> spoofingIpPool = pxyObjSpoofingIpPoolService.findPxyObjSpoofingIpPools(entity);
if(spoofingIpPool==null || spoofingIpPool.size()==0){
policyGroups.add(group);
}
}
model.addAttribute("policyGroups", policyGroups);
model.addAttribute("_cfg", cfg);
return "/cfg/proxy/spoofingIpPool/form";
}
@RequestMapping(value = {"/saveOrUpdate"})
@RequiresPermissions(value={"proxy:spoofing:pool:config"})
public String saveOrUpdate(Model model,HttpServletRequest request,HttpServletResponse response,
@ModelAttribute("cfg")PxyObjSpoofingIpPool cfg,
RedirectAttributes redirectAttributes){
try{
pxyObjSpoofingIpPoolService.saveOrUpdate(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
e.printStackTrace();
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
}
}
return "redirect:" + adminPath +"/proxy/spoofing/pool/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"/list"})
@RequiresPermissions(value={"proxy:spoofing:pool:config"})
public String list(Model model,HttpServletRequest request,HttpServletResponse response
,@ModelAttribute("cfg")PxyObjSpoofingIpPool entity
,RedirectAttributes redirectAttributes){
//查询时left join policyGroup
Page<PxyObjSpoofingIpPool> page = pxyObjSpoofingIpPoolService.findPage(new Page<PxyObjSpoofingIpPool>(request, response,"r"), entity);
model.addAttribute("page", page);
initPageCondition(model,entity);
return "/cfg/proxy/spoofingIpPool/list";
}
@RequestMapping(value = {"/delete"})
@RequiresPermissions(value={"proxy:spoofing:pool:config"})
public String delete(Integer isAudit,Integer isValid,String ids,Integer functionId
,Model model,HttpServletRequest request
,HttpServletResponse response
,RedirectAttributes redirectAttributes){
if(!StringUtil.isEmpty(ids)){
pxyObjSpoofingIpPoolService.delete(isAudit,isValid,ids,functionId);
}
return "redirect:" + adminPath +"/proxy/spoofing/pool/list?functionId="+functionId;
}
@RequestMapping(value = {"/audit"})
@RequiresPermissions(value={"proxy:spoofing:pool:confirm"})
public String audit(Model model,@ModelAttribute("cfg")PxyObjSpoofingIpPool cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
for(String id :idArray){
try {
pxyObjSpoofingIpPoolService.audit(isAudit,isValid,functionId,id,auditTime);
} catch (MaatConvertException e) {
logger.error(e);
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
logger.error(e);
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}else {
/*Page<PxyObjSpoofingIpPool> searchPage=new Page<PxyObjSpoofingIpPool>(request,response,"r");
Page<PxyObjSpoofingIpPool> auditPage=new Page<PxyObjSpoofingIpPool>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg,redirectAttributes);*/
}
return "redirect:" + adminPath +"/proxy/spoofing/pool/list?functionId="+functionId;
}
}