package com.nis.web.service.configuration; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; import com.google.gson.Gson; import com.google.gson.GsonBuilder; 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; import com.nis.web.dao.configuration.DnsIpCfgDao; import com.nis.web.service.CrudService; @Service public class DnsIpCfgService extends CrudService{ @Override public void save(DnsIpCfg dnsIpCfg) { dao.insert(dnsIpCfg); Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); //组织要发送的json ToMaatDnsIpBean toMaatBean = new ToMaatDnsIpBean(); List ipCfgList = new ArrayList(); MaatDnsIpCfg ipCfg = new MaatDnsIpCfg(); List d1 = new ArrayList(); 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配置新增下发失败:通讯异常"); } if (!StringUtil.isEmpty(recvJson)) { logger.error("新增欺骗ip配置失败:收到空的返回结果,cfgId:" + dnsIpCfg.getCfgId()); throw new RuntimeException("新增欺骗ip配置失败:收到空的返回结果"); } logger.info("结果接收成功"); FromMaatBean fromMaatBean = gson.fromJson(recvJson, FromMaatBean.class); List 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); } } else { logger.error("新增欺骗ip配置失败:收到空的返回结果,cfgId:" + dnsIpCfg.getCfgId()); throw new RuntimeException("新增欺骗ip配置失败:收到空的返回结果"); } } public void delete(String cfgIds) { 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配置删除失败"); } } }