OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -48,6 +48,7 @@
import java.io.IOException;
import java.text.ParseException;
import java.util.*;
import java.util.regex.Pattern;
import static kr.wisestone.owl.domain.enumType.CustomFieldType.*;
@@ -364,7 +365,7 @@
                    } else {
                        urls.add(useValue);
                    }
                    condition.setUrl(urls);
                    condition.setUrls(urls);
                    companyFields = this.companyFieldService.find(condition);
                    if(companyFields != null && companyFields.size() > 0) {
@@ -485,6 +486,38 @@
        return null;
    }
    /**
     * url 정규식 표현
     * @param url String
     */
    private boolean verifyUrl(String url) {
        boolean urlChk = false;
        if (!StringUtils.isEmpty(url)) {
            String reg = "^((http|https)://)?(www.)?([a-zA-Z0-9]+)\\.[a-z]+([a-zA-z0-9.?#]+)?";
            if(Pattern.matches(reg, url)) {
                urlChk = true;
            }
        }
        return urlChk;
    }
    /**
     * ip 정규식 표현
     * @param ip String
     * @return boolean
     */
    private boolean verifyIp(String ip) {
        boolean ipChk = false;
        if (!StringUtils.isEmpty(ip)) {
            if (Pattern.matches("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" +
                    ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", ip)) {
                ipChk = true;
            }
        }
        return ipChk;
    }
    // 중복된 상위 이슈 검색
    private List<Issue> findIssue(IssueApiForm issueApiform, IssueForm issueForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
        List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues();
@@ -518,7 +551,7 @@
                            useValue = useValue.replace(" ","");
                        }
                        if (customFieldApiOverlap.getCustomField().getCustomFieldType().equals(IP_ADDRESS)) {
                        if (this.verifyIp(useValue)) {
                            long ip = ConvertUtil.ipToLong(useValue);
                            customFieldType = IP_ADDRESS.toString();
                            if (cntIp == 0){
@@ -527,7 +560,24 @@
                            cntIp ++;
                        }
                        if(customFieldApiOverlap.getCustomField().getCustomFieldType().equals(SITE)) {
                        if (this.verifyUrl(useValue)) {
                            customFieldType = SITE.toString();
                            if (cntSite == 0) {
                                condition.setUrl(useValue);
                            }
                            cntSite ++;
                        }
                        /*if (customFieldApiOverlap.getCustomField().getCustomFieldType().equals(IP_ADDRESS)) {
                            long ip = ConvertUtil.ipToLong(useValue);
                            customFieldType = IP_ADDRESS.toString();
                            if (cntIp == 0){
                                condition.setIp(ip);
                            }
                            cntIp ++;
                        }*/
                        /*if(customFieldApiOverlap.getCustomField().getCustomFieldType().equals(SITE)) {
                            customFieldType = SITE.toString();
                            String[] urlArr = null;
                            List<String> urls = Lists.newArrayList();
@@ -541,7 +591,7 @@
                                condition.setUrl(urls);
                            }
                            cntSite ++;
                        }
                        }*/
                        if (useIdx > 0) {
                            concatUseValue = concatUseValue.concat(comma);
@@ -553,7 +603,9 @@
            }
            // 추가 할 url or ip에 포함되어있는 파트너 찾기
            this.findPartner(condition, issueCompanyFields, issueIspFields, issueHostingFields);
            if ((condition.getIp() > 0) || (condition.getUrl() != null && !condition.getUrl().equals(""))) {
                this.findPartner(condition, issueCompanyFields, issueIspFields, issueHostingFields);
            }
            issueForm.setIssueCompanyFields(issueCompanyFields);
            issueForm.setIssueIspFields(issueIspFields);