This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java
2018-12-06 15:00:05 +08:00

205 lines
7.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nis.web.service.configuration;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists;
import com.nis.domain.Page;
import com.nis.domain.configuration.IpReusePolicyCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.StringUtils;
import com.nis.web.dao.configuration.IpMultiplexDao;
import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.SpringContextHolder;
import com.nis.web.service.basics.SysDictInfoService;
@Service
public class IpMultiplexService extends BaseService{
@Autowired
private IpMultiplexDao ipMultiplexDao;
public Page<IpReusePolicyCfg> findPage(Page<IpReusePolicyCfg> page, IpReusePolicyCfg entity) {
entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r"));
entity.setPage(page);
List<IpReusePolicyCfg> list=ipMultiplexDao.findPage(entity);
page.setList(list);
return page;
}
public IpReusePolicyCfg getPolicyCfg(Long cfgId, Integer isValid) {
List<IpReusePolicyCfg> list=ipMultiplexDao.findList(cfgId,isValid);
IpReusePolicyCfg policyCfg=null;
if(list != null && list.size()>0){
policyCfg=list.get(0);
}
return policyCfg;
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveOrUpdate(IpReusePolicyCfg entity, HttpServletRequest request, HttpServletResponse response) {
Date time = new Date();
entity.setIsValid(0);
entity.setIsAudit(0);
setAreaEffectiveIds(entity);
if("VPN".equals(entity.getUserType())){
entity.setIpType(null);
entity.setIpPattern(null);
entity.setSrcIpAddress("");
}else{
entity.setUserName("");
}
// 更新策略信息
if(entity.getCfgId() == null){
entity.initDefaultValue();
entity.setCreateTime(time);
entity.setCreatorId(UserUtils.getUser().getId());
//调用服务接口获取compileId
try {
List<Integer> compileIds = ConfigServiceUtil.getId(1,1);
if(compileIds != null && compileIds.size() > 0 ){
entity.setCompileId(compileIds.get(0));
}
} catch (Exception e) {
e.printStackTrace();
logger.info("获取编译ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
ipMultiplexDao.savePolicyCfg(entity);
}else{
entity.setEditorId(UserUtils.getUser().getId());
entity.setEditTime(time);
ipMultiplexDao.updatePolicyCfg(entity);
}
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void delete(Integer isValid, String ids, Integer functionId) {
String[] idArray = ids.split(",");
for(String id :idArray){
IpReusePolicyCfg entity = new IpReusePolicyCfg();
entity.setCfgId(Long.valueOf(id));
entity.setFunctionId(functionId);
entity.setIsValid(isValid);
entity.setEditorId(UserUtils.getUser().getId());
entity.setEditTime(new Date());
ipMultiplexDao.updatePolicyCfg(entity);
}
}
/**
* 策略配置审核
* @param ids
* @param cfg
* @param auditTime
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void auditSnatPolicy(Integer isAudit, Integer isValid, Integer functionId, String id, Date auditTime) {
// 更新配置审核状态
IpReusePolicyCfg cfg = new IpReusePolicyCfg();
cfg.setCfgId(Long.valueOf(id));
cfg.setIsValid(isValid);
cfg.setIsAudit(isAudit);
cfg.setAuditorId(UserUtils.getUser().getId());
cfg.setAuditTime(auditTime);
ipMultiplexDao.updatePolicyAuditStatus(cfg);
SysDictInfoService sysDictInfoService = SpringContextHolder.getBean(SysDictInfoService.class);
// 获取配置信息
cfg = this.getPolicyCfg(cfg.getCfgId(), null);
String json="";
if(cfg.getIsAudit() == Constants.AUDIT_YES){
String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0";
Map<String, Object> params = new HashMap<String,Object>();
params.put("configId", cfg.getCompileId());
params.put("addrPoolId", cfg.getAddrPoolId());
params.put("userType", cfg.getUserType());
params.put("userId", keywordsEscape(StringUtils.isNotBlank(cfg.getUserName())?cfg.getUserName():cfg.getSrcIpAddress()));
params.put("doLog", cfg.getDoLog());
params.put("action", cfg.getAction());
params.put("service", cfg.getServiceId());
params.put("isValid", 1);
params.put("opTime", auditTime);
params.put("translateParam", "byconn=10");
params.put("effectiveRange", areaEffectiveIds);
List list = Lists.newArrayList();
list.add(params);
//调用服务接口下发配置数据
json=gsonToJson(list);
logger.info("SNAT策略配置下发参数"+json);
//调用服务接口下发配置
try {
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
if(result!=null){
logger.info("SNAT策略配置下发响应信息"+result.getMsg());
}
} catch (Exception e) {
logger.error("SNAT策略配置下发失败",e);
throw e;
}
}else if(cfg.getIsAudit() == Constants.AUDIT_NOT_YES){
String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0";
Map<String, Object> params = new HashMap<String,Object>();
params.put("configId", cfg.getCompileId());
params.put("addrPoolId", cfg.getAddrPoolId());
params.put("userType", cfg.getUserType());
params.put("userId", keywordsEscape(StringUtils.isNotBlank(cfg.getUserName())?cfg.getUserName():cfg.getSrcIpAddress()));
params.put("doLog", cfg.getDoLog());
params.put("action", cfg.getAction());
params.put("service", cfg.getServiceId());
params.put("isValid", 0);
params.put("opTime", auditTime);
params.put("translateParam", "byconn=10");
params.put("effectiveRange", areaEffectiveIds);
List list = Lists.newArrayList();
list.add(params);
//调用服务接口取消配置
json=gsonToJson(list);
logger.info("SNAT策略配置下发参数"+json);
//调用服务接口取消配置
try {
ToMaatResult result = ConfigServiceUtil.put(json, 2);
logger.info("SNAT策略配置响应信息"+result.getMsg());
} catch (Exception e) {
e.printStackTrace();
logger.info("SNAT策略配置配置失败");
throw e;
}
}
}
/**
* 校验地址池是否被策略引用
* @param addrPoolId
* @return
*/
public List<IpReusePolicyCfg> checkAddrPoolIsUsed(String addrPoolId) {
return ipMultiplexDao.checkAddrPoolIsUsed(addrPoolId);
}
}