(1)dns策略Id类型修复,解决不能copy value
(2)导入模板验证是否合法,根据title判断,如果不同语言的导入模板,也会被判定不合法。 (3)注掉部分废弃导入方法
This commit is contained in:
@@ -91,12 +91,12 @@ public class ComplexkeywordCfg extends BaseCfg<ComplexkeywordCfg>{
|
||||
/**
|
||||
* copy属性使用
|
||||
*/
|
||||
protected Integer dnsStrategyId;
|
||||
protected Long dnsStrategyId;
|
||||
|
||||
public Integer getDnsStrategyId() {
|
||||
public Long getDnsStrategyId() {
|
||||
return dnsStrategyId;
|
||||
}
|
||||
public void setDnsStrategyId(Integer dnsStrategyId) {
|
||||
public void setDnsStrategyId(Long dnsStrategyId) {
|
||||
this.dnsStrategyId = dnsStrategyId;
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -14,13 +14,13 @@ import com.nis.util.excel.ExcelField;
|
||||
* @Description: excel导入DNS字符串类配置
|
||||
*/
|
||||
public class DnsComplexStringTemplate extends ComplexStringAllTemplate {
|
||||
private Integer dnsStrategyId;
|
||||
private Long dnsStrategyId;
|
||||
|
||||
@ExcelField(title="policy_name",align=2,sort=2)
|
||||
public Integer getDnsStrategyId() {
|
||||
public Long getDnsStrategyId() {
|
||||
return dnsStrategyId;
|
||||
}
|
||||
public void setDnsStrategyId(Integer dnsStrategyId) {
|
||||
public void setDnsStrategyId(Long dnsStrategyId) {
|
||||
this.dnsStrategyId = dnsStrategyId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
@@ -29,6 +30,10 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.nis.domain.configuration.template.ComplexStringAllTemplate;
|
||||
import com.nis.domain.configuration.template.IpAllTemplate;
|
||||
import com.nis.domain.configuration.template.StringAllTemplate;
|
||||
import com.nis.exceptions.ServiceException;
|
||||
import com.nis.util.DictUtils;
|
||||
import com.nis.util.Reflections;
|
||||
|
||||
@@ -280,7 +285,7 @@ public class ImportExcel {
|
||||
* @param cls 导入对象类型
|
||||
* @param groups 导入分组
|
||||
*/
|
||||
public <E> List<E> getDataList(Class<E> cls, int... groups) throws InstantiationException, IllegalAccessException{
|
||||
public <E> List<E> getDataList(Class<E> cls,Properties props, int... groups) throws InstantiationException, IllegalAccessException{
|
||||
List<Object[]> annotationList = Lists.newArrayList();
|
||||
// Get annotation field
|
||||
// Field[] fs = cls.getDeclaredFields();
|
||||
@@ -338,22 +343,76 @@ public class ImportExcel {
|
||||
}
|
||||
}
|
||||
}
|
||||
//log.debug("Import column count:"+annotationList.size());
|
||||
// Get excel data
|
||||
List<E> dataList = Lists.newArrayList();
|
||||
Row header = this.getRow(headerNum);
|
||||
List<Object[]> annotationListCopy=Lists.newArrayList();
|
||||
for(int i=header.getFirstCellNum();i<=header.getLastCellNum();i++) {
|
||||
Object value=this.getCellValue(header, i);
|
||||
for(Object[] os:annotationList) {
|
||||
ExcelField ef = (ExcelField)os[0];
|
||||
String title=ef.title();
|
||||
if(props.getProperty(title).equals(value.toString())) {
|
||||
annotationListCopy.add(os);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(annotationListCopy.size()==0) {
|
||||
throw new ServiceException(props.getProperty("template_error"));
|
||||
}
|
||||
if(IpAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("IpAllTemplate")) {
|
||||
boolean has=false;
|
||||
for(Object[] os:annotationListCopy) {
|
||||
ExcelField ef = (ExcelField)os[0];
|
||||
if(ef.title().equals("client_ip")||ef.title().equals("server_ip")) {
|
||||
has=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!has) {
|
||||
throw new ServiceException(props.getProperty("template_error"));
|
||||
}
|
||||
}else if(StringAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("StringAllTemplate")){
|
||||
boolean has=false;
|
||||
for(Object[] os:annotationListCopy) {
|
||||
ExcelField ef = (ExcelField)os[0];
|
||||
if(ef.title().equals("key_word")) {
|
||||
has=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!has) {
|
||||
throw new ServiceException(props.getProperty("template_error"));
|
||||
}
|
||||
}else if(ComplexStringAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("ComplexStringAllTemplate")){
|
||||
boolean has=false;
|
||||
for(Object[] os:annotationListCopy) {
|
||||
ExcelField ef = (ExcelField)os[0];
|
||||
if(ef.title().equals("key_word")) {
|
||||
has=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!has) {
|
||||
throw new ServiceException(props.getProperty("template_error"));
|
||||
}
|
||||
}
|
||||
// Field sorting
|
||||
Collections.sort(annotationList, new Comparator<Object[]>() {
|
||||
Collections.sort(annotationListCopy, new Comparator<Object[]>() {
|
||||
public int compare(Object[] o1, Object[] o2) {
|
||||
return new Integer(((ExcelField)o1[0]).sort()).compareTo(
|
||||
new Integer(((ExcelField)o2[0]).sort()));
|
||||
};
|
||||
});
|
||||
//log.debug("Import column count:"+annotationList.size());
|
||||
// Get excel data
|
||||
List<E> dataList = Lists.newArrayList();
|
||||
annotationList.clear();
|
||||
for (int i = this.getDataRowNum(); i < this.getLastDataRowNum(); i++) {
|
||||
E e = (E)cls.newInstance();
|
||||
int column = 0;
|
||||
Row row = this.getRow(i);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Object[] os : annotationList){
|
||||
for (Object[] os : annotationListCopy){
|
||||
Object val = this.getCellValue(row, column++);
|
||||
if (val != null){
|
||||
ExcelField ef = (ExcelField)os[0];
|
||||
|
||||
@@ -1033,9 +1033,9 @@ public class BaseController {
|
||||
BeanUtils.copyProperties(list.get(i), baseStringCfg);
|
||||
if (regionDict.getRegionType().equals(3)) {
|
||||
if(regionDict.getFunctionId().equals(7)) {
|
||||
Integer dnsStrategyId=baseStringCfg.getDnsStrategyId();
|
||||
Long dnsStrategyId=baseStringCfg.getDnsStrategyId();
|
||||
if(dnsStrategyId!=null) {
|
||||
List<DnsResStrategy> dnsStrategys=dnsResStrategyService.findDnsResStrategys(Long.valueOf(dnsStrategyId), Constants.VALID_YES, Constants.AUDIT_YES);
|
||||
List<DnsResStrategy> dnsStrategys=dnsResStrategyService.findDnsResStrategys(dnsStrategyId, Constants.VALID_YES, Constants.AUDIT_YES);
|
||||
if(dnsStrategys==null||dnsStrategys.size()==0) {
|
||||
errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("dns_res_strategy"))+";");
|
||||
}
|
||||
@@ -1054,8 +1054,7 @@ public class BaseController {
|
||||
//baseStringCfg.setDistrict(dirtrictP.split(",")[0]);
|
||||
errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("district")+" ")+";");
|
||||
}
|
||||
}
|
||||
if(dirtrictP.indexOf(district)==-1) {
|
||||
}else if(dirtrictP.indexOf(district)==-1) {
|
||||
errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("district")+" ")+";");
|
||||
}
|
||||
}
|
||||
@@ -2930,37 +2929,37 @@ public class BaseController {
|
||||
if (regionDict.getRegionType().equals(1)) {//IP
|
||||
if (regionDict.getFunctionId().equals(5)) {
|
||||
if (serviceDict.getAction().equals(64)) {
|
||||
List<IpRateLimitTemplate> list = ei.getDataList(IpRateLimitTemplate.class);
|
||||
List<IpRateLimitTemplate> list = ei.getDataList(IpRateLimitTemplate.class,this.getMsgProp());
|
||||
ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list);
|
||||
}else {
|
||||
List<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class);
|
||||
List<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class,this.getMsgProp());
|
||||
ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list);
|
||||
}
|
||||
}else if(regionDict.getFunctionId().equals(212)) {
|
||||
List<IpPayloadTemplate> list = ei.getDataList(IpPayloadTemplate.class);
|
||||
List<IpPayloadTemplate> list = ei.getDataList(IpPayloadTemplate.class,this.getMsgProp());
|
||||
ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list);
|
||||
}else if(regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())){ //P2p IP
|
||||
List<P2pIpTemplate> list = ei.getDataList(P2pIpTemplate.class);
|
||||
List<P2pIpTemplate> list = ei.getDataList(P2pIpTemplate.class,this.getMsgProp());
|
||||
ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list);
|
||||
}else {
|
||||
List<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class);
|
||||
List<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class,this.getMsgProp());
|
||||
ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list);
|
||||
}
|
||||
}else if(regionDict.getRegionType().equals(2)) {//字符串类
|
||||
if(regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())){ //P2p hash
|
||||
List<P2pHashStringTemplate> list = ei.getDataList(P2pHashStringTemplate.class);
|
||||
List<P2pHashStringTemplate> list = ei.getDataList(P2pHashStringTemplate.class,this.getMsgProp());
|
||||
stringCfgs=this.checkStringCfg(serviceDict, regionDict, list);
|
||||
}else{
|
||||
List<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class);
|
||||
List<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class,this.getMsgProp());
|
||||
stringCfgs=this.checkStringCfg(serviceDict, regionDict, list);
|
||||
}
|
||||
|
||||
}else if(regionDict.getRegionType().equals(3)) {//增强字符串类
|
||||
if(regionDict.getFunctionId().equals(7)) {
|
||||
List<DnsComplexStringTemplate> list = ei.getDataList(DnsComplexStringTemplate.class);
|
||||
List<DnsComplexStringTemplate> list = ei.getDataList(DnsComplexStringTemplate.class,this.getMsgProp());
|
||||
complexkeywordCfgs=this.checkComplexStringCfg(serviceDict, regionDict, list);
|
||||
}else {
|
||||
List<ComplexStringAllTemplate> list = ei.getDataList(ComplexStringAllTemplate.class);
|
||||
List<ComplexStringAllTemplate> list = ei.getDataList(ComplexStringAllTemplate.class,this.getMsgProp());
|
||||
complexkeywordCfgs=this.checkComplexStringCfg(serviceDict, regionDict, list);
|
||||
}
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ public class CommonController extends BaseController {
|
||||
addMessage(redirectAttributes, "audit_failed");
|
||||
}
|
||||
}
|
||||
public void _importIp(RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg) {
|
||||
/*public void _importIp(RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg) {
|
||||
try {
|
||||
ImportExcel ei = new ImportExcel(file, 0, 0);
|
||||
List<IpCfgTemplate> list = ei.getDataList(IpCfgTemplate.class);
|
||||
@@ -251,8 +251,8 @@ public class CommonController extends BaseController {
|
||||
addMessage(redirectAttributes, e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void _importIp(String cfgName,RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg,Class clazz) {
|
||||
}*/
|
||||
/*public void _importIp(String cfgName,RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg,Class clazz) {
|
||||
redirectAttributes.addAttribute("cfgName", cfgName);
|
||||
try {
|
||||
ImportExcel ei = new ImportExcel(file, 0, 0);
|
||||
@@ -279,7 +279,7 @@ public class CommonController extends BaseController {
|
||||
addMessage(redirectAttributes, e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
public void _importFileTemplate(HttpServletRequest request,HttpServletResponse response,
|
||||
RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) {
|
||||
this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode);
|
||||
|
||||
@@ -91,14 +91,14 @@ public class IpMultiplexController extends CommonController {
|
||||
return "redirect:" + adminPath +"/manipulation/ipmulitiplex/list?functionId="+cfg.getFunctionId();
|
||||
}
|
||||
//ip配置导入
|
||||
@RequestMapping(value = "/import", method=RequestMethod.POST)
|
||||
/*@RequestMapping(value = "/import", method=RequestMethod.POST)
|
||||
public String importIp(String cfgName,RedirectAttributes redirectAttributes,
|
||||
@RequestParam("file") MultipartFile file,IpPortCfg cfg) {
|
||||
this._importIp(cfgName,redirectAttributes, file,cfg,IpMultiplexPolicyTemplate.class);
|
||||
redirectAttributes.addAttribute("urlPrefix","/manipulation/ipmulitiplex");
|
||||
redirectAttributes.addAttribute("requiresPermissionPrefix","ip:mulitiplex");
|
||||
return "redirect:" + adminPath +"/manipulation/ipmulitiplex/list?functionId="+cfg.getFunctionId();
|
||||
}
|
||||
}*/
|
||||
//ip模板下载
|
||||
@RequestMapping(value = "import/template")
|
||||
public void importFileTemplate(HttpServletRequest request,HttpServletResponse response,
|
||||
|
||||
@@ -113,14 +113,14 @@ public class RatelimitController extends CommonController {
|
||||
return "redirect:" + adminPath +"/manipulation/ratelimit/domain/list?functionId="+cfg.getFunctionId();
|
||||
}
|
||||
//ip配置导入
|
||||
@RequestMapping(value = "/ip/import", method=RequestMethod.POST)
|
||||
/*@RequestMapping(value = "/ip/import", method=RequestMethod.POST)
|
||||
public String importIp(String cfgName,RedirectAttributes redirectAttributes,
|
||||
@RequestParam("file") MultipartFile file,IpPortCfg cfg) {
|
||||
this._importIp(cfgName,redirectAttributes, file,cfg,IpRateLimitTemplate.class);
|
||||
redirectAttributes.addAttribute("urlPrefix","/manipulation/ratelimit/ip");
|
||||
redirectAttributes.addAttribute("requiresPermissionPrefix","ip:ratelimit");
|
||||
return "redirect:" + adminPath +"/manipulation/ratelimit/ip/list?functionId="+cfg.getFunctionId();
|
||||
}
|
||||
}*/
|
||||
@RequestMapping(value = "/ip/import/template")
|
||||
public void importFileTemplate(HttpServletRequest request,HttpServletResponse response,
|
||||
RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) {
|
||||
|
||||
@@ -413,7 +413,7 @@ public class WebsiteController extends BaseController{
|
||||
this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode);
|
||||
}
|
||||
//http配置导入
|
||||
@RequestMapping(value = "importHttp", method=RequestMethod.POST)
|
||||
/*@RequestMapping(value = "importHttp", method=RequestMethod.POST)
|
||||
public String importHttpFile(HttpServletRequest request,Model model,HttpServletResponse response, RedirectAttributes redirectAttributes,
|
||||
@RequestParam("file") MultipartFile file,CfgIndexInfo cfgIndex,Integer protocolId) {
|
||||
try {
|
||||
@@ -518,7 +518,7 @@ public class WebsiteController extends BaseController{
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+cfgIndex.getFunctionId();
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -234,12 +234,12 @@ public class WhiteListController extends CommonController{
|
||||
return "redirect:" + adminPath +"/ntc/whitelist/domain/list?functionId="+functionId;
|
||||
}
|
||||
//ip配置导入
|
||||
@RequestMapping(value = "ip/import", method=RequestMethod.POST)
|
||||
/*@RequestMapping(value = "ip/import", method=RequestMethod.POST)
|
||||
public String importIp(String cfgName,RedirectAttributes redirectAttributes,
|
||||
@RequestParam("file") MultipartFile file,IpPortCfg cfg) {
|
||||
this._importIp(cfgName,redirectAttributes, file,cfg,WhiteListIpTemplate.class);
|
||||
return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+cfg.getFunctionId();
|
||||
}
|
||||
}*/
|
||||
//ip模板下载
|
||||
@RequestMapping(value = "ip/import/template")
|
||||
public void importFileTemplate(HttpServletRequest request,HttpServletResponse response,
|
||||
|
||||
@@ -152,7 +152,7 @@ public class SpecificServiceHostCfgController extends BaseController {
|
||||
}
|
||||
return "redirect:"+adminPath+"/specific/specificServiceHostCfg/list";
|
||||
}
|
||||
@RequiresPermissions("specific:serviceIp:edit")
|
||||
/*@RequiresPermissions("specific:serviceIp:edit")
|
||||
@RequestMapping(value = "import", method=RequestMethod.POST)
|
||||
public String importFile(HttpServletRequest request,Model model,HttpServletResponse response, RedirectAttributes redirectAttributes,
|
||||
@RequestParam("file") MultipartFile file) {
|
||||
@@ -195,7 +195,7 @@ public class SpecificServiceHostCfgController extends BaseController {
|
||||
}
|
||||
return "redirect:"+adminPath+"/specific/specificServiceHostCfg/list";
|
||||
// return renderString(response,errorInfos);
|
||||
}
|
||||
}*/
|
||||
/**
|
||||
* 校验spec_service_id重复
|
||||
* @param newId
|
||||
|
||||
@@ -1287,4 +1287,5 @@ http_keyword=Website Keyword
|
||||
http_keyword_monit=Website Keyword Monit
|
||||
http_keyword_reject=Website Keyword Reject
|
||||
has_invisible_char=%s has invisible characters
|
||||
not_multiple=%s do not support multiple keywords
|
||||
not_multiple=%s do not support multiple keywords
|
||||
template_error=The import template is incorrect. Pleace choose a proper template which has the same language with the system and the same configure type.
|
||||
@@ -1282,4 +1282,5 @@ http_keyword=\u7F51\u9875\u5173\u952E\u5B57
|
||||
http_keyword_monit=\u7F51\u9875\u5173\u952E\u5B57\u76D1\u6D4B
|
||||
http_keyword_reject=\u7F51\u9875\u5173\u952E\u5B57\u963B\u65AD
|
||||
has_invisible_char=%s\u5305\u542B\u4E0D\u53EF\u89C1\u5B57\u7B26
|
||||
not_multiple=%s\u4E0D\u652F\u6301\u591A\u4E2A\u5173\u952E\u5B57
|
||||
not_multiple=%s\u4E0D\u652F\u6301\u591A\u4E2A\u5173\u952E\u5B57
|
||||
template_error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF.\u8BF7\u9009\u62E9\u4E0E\u7CFB\u7EDF\u8BED\u8A00\u4E00\u81F4\uFF0C\u5E76\u4E14\u914D\u7F6E\u7C7B\u578B\u4E00\u81F4\u7684\u6A21\u677F\u5BFC\u5165.
|
||||
Reference in New Issue
Block a user