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/DnsIpCfgService.java

100 lines
3.7 KiB
Java
Raw Normal View History

2018-03-22 14:41:10 +08:00
package com.nis.web.service.configuration;
import java.util.ArrayList;
import java.util.List;
2018-03-27 19:00:57 +08:00
import org.apache.commons.lang3.StringUtils;
2018-03-22 14:41:10 +08:00
import org.springframework.stereotype.Service;
2018-03-27 19:00:57 +08:00
import org.springframework.transaction.annotation.Transactional;
2018-03-22 14:41:10 +08:00
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
2018-03-22 14:41:10 +08:00
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.maat.DnsIpRecvData;
import com.nis.domain.maat.FromMaatBean;
import com.nis.domain.maat.MaatDnsIpCfg;
import com.nis.domain.maat.ToMaatDnsIpBean;
import com.nis.main.ConvertTool;
import com.nis.util.Collections3;
import com.nis.util.StringUtil;
2018-03-22 14:41:10 +08:00
import com.nis.web.dao.configuration.DnsIpCfgDao;
import com.nis.web.service.CrudService;
@Service
public class DnsIpCfgService extends CrudService<DnsIpCfgDao, DnsIpCfg>{
@Override
2018-03-27 19:00:57 +08:00
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
2018-03-22 14:41:10 +08:00
public void save(DnsIpCfg dnsIpCfg) {
dao.insert(dnsIpCfg);
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
//组织要发送的json
ToMaatDnsIpBean toMaatBean = new ToMaatDnsIpBean();
List<MaatDnsIpCfg> ipCfgList = new ArrayList<MaatDnsIpCfg>();
MaatDnsIpCfg ipCfg = new MaatDnsIpCfg();
List<DnsIpCfg> d1 = new ArrayList<DnsIpCfg>();
d1.add(dnsIpCfg);
ipCfg.setIpCfg(d1);
ipCfgList.add(ipCfg);
toMaatBean.setServiceCfg(ipCfgList);
String sendJson = gson.toJson(toMaatBean);
logger.info("准备下发配置:" + sendJson);
//下发配置、接收结果
String recvJson = "";
try {
recvJson = new ConvertTool().saveDNSIPConfig(sendJson);
logger.info("收到结果:" + recvJson);
} catch (Throwable e) {
logger.error("欺骗ip配置新增下发失败,cfgId=" + dnsIpCfg.getCfgId(), e);
throw new RuntimeException("欺骗ip配置新增下发失败:通讯异常");
}
2018-03-27 19:00:57 +08:00
if (StringUtils.isBlank(recvJson)) {
logger.error("新增欺骗ip配置失败:收到空的返回结果,cfgId:" + dnsIpCfg.getCfgId());
throw new RuntimeException("新增欺骗ip配置失败:收到空的返回结果");
}
logger.info("结果接收成功");
FromMaatBean fromMaatBean = gson.fromJson(recvJson, FromMaatBean.class);
List<DnsIpRecvData> data = fromMaatBean.getData();
if (!Collections3.isEmpty(data)) {
DnsIpRecvData dnsIpRecvData = data.get(0);
if (dnsIpRecvData.getFakeId() != null && dnsIpRecvData.getCfgId() != null
&& dnsIpRecvData.getCfgId().longValue() == dnsIpCfg.getCfgId().longValue()) {
dnsIpCfg.setFakeId(dnsIpRecvData.getFakeId());
dao.update(dnsIpCfg);
}
2018-03-22 14:41:10 +08:00
} else {
logger.error("新增欺骗ip配置失败:收到空的返回结果,cfgId:" + dnsIpCfg.getCfgId());
throw new RuntimeException("新增欺骗ip配置失败:收到空的返回结果");
2018-03-22 14:41:10 +08:00
}
}
public void delete(String cfgIds) {
2018-03-27 19:00:57 +08:00
if(cfgIds.endsWith(","))cfgIds=cfgIds.substring(0,cfgIds.lastIndexOf(","));
2018-03-22 14:41:10 +08:00
String[] cfgIdsArr = cfgIds.split(",");
for (String cfgId : cfgIdsArr) {
DnsIpCfg d = new DnsIpCfg();
d.setCfgId(Long.valueOf(cfgId));
dao.delete(d);
}
//给配置转换层发送、接收结果
String sendJson = "{\"fakeId\":[" + cfgIds + "]}";
logger.info("准备下发配置:" + sendJson);
Boolean recv = true;
try {
recv = new ConvertTool().invalidDNSIPConfig(sendJson);
} catch (Throwable e) {
logger.error("欺骗ip配置删除失败:通讯异常,cfgIds:" + cfgIds, e);
throw new RuntimeException("欺骗ip配置删除失败:通讯失败");
}
if (!recv) {
logger.error("欺骗ip配置删除失败,收到结果 " + recv + " ,cfgIds:" + cfgIds);
throw new RuntimeException("欺骗ip配置删除失败");
}
2018-03-22 14:41:10 +08:00
}
}