From 22bbbef3dd0bbec0384956ab805be8f84bff3cd1 Mon Sep 17 00:00:00 2001 From: shangguan Date: Thu, 8 Sep 2022 17:25:48 +0800 Subject: 初始化项目 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 65 +++++++++ .../com/example/nis/FjTransformApiApplication.java | 13 ++ src/main/java/com/example/nis/common/Code.java | 28 ++++ .../java/com/example/nis/common/ResponseData.java | 72 ++++++++++ .../com/example/nis/common/TsgServiceImpl.java | 141 ++++++++++++++++++ .../com/example/nis/configure/StartedUpRunner.java | 39 +++++ .../com/example/nis/controller/FqdnController.java | 150 ++++++++++++++++++++ .../com/example/nis/controller/IpController.java | 120 ++++++++++++++++ .../com/example/nis/controller/UrlController.java | 150 ++++++++++++++++++++ src/main/java/com/example/nis/domain/IpObject.java | 19 +++ src/main/java/com/example/nis/domain/IpSource.java | 14 ++ .../com/example/nis/domain/KeywordsObject.java | 18 +++ .../com/example/nis/domain/KeywordsSource.java | 15 ++ src/main/java/com/example/nis/util/Constant.java | 157 +++++++++++++++++++++ .../java/com/example/nis/util/ToTsgSystemUtil.java | 110 +++++++++++++++ src/main/resources/application.yml | 25 ++++ src/main/resources/log4j.properties | 7 + src/main/resources/logback-spring.xml | 56 ++++++++ .../nis/FjTransformApiApplicationTests.java | 13 ++ 19 files changed, 1212 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/com/example/nis/FjTransformApiApplication.java create mode 100644 src/main/java/com/example/nis/common/Code.java create mode 100644 src/main/java/com/example/nis/common/ResponseData.java create mode 100644 src/main/java/com/example/nis/common/TsgServiceImpl.java create mode 100644 src/main/java/com/example/nis/configure/StartedUpRunner.java create mode 100644 src/main/java/com/example/nis/controller/FqdnController.java create mode 100644 src/main/java/com/example/nis/controller/IpController.java create mode 100644 src/main/java/com/example/nis/controller/UrlController.java create mode 100644 src/main/java/com/example/nis/domain/IpObject.java create mode 100644 src/main/java/com/example/nis/domain/IpSource.java create mode 100644 src/main/java/com/example/nis/domain/KeywordsObject.java create mode 100644 src/main/java/com/example/nis/domain/KeywordsSource.java create mode 100644 src/main/java/com/example/nis/util/Constant.java create mode 100644 src/main/java/com/example/nis/util/ToTsgSystemUtil.java create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/log4j.properties create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/test/java/com/example/nis/FjTransformApiApplicationTests.java diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..7fad404 --- /dev/null +++ b/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.5.4 + + + com.example + FJ-Transform-Api + 0.0.1-SNAPSHOT + FJ-Transform-Api + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.projectlombok + lombok + true + + + + cn.hutool + hutool-all + 5.7.7 + + + + org.apache.commons + commons-lang3 + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + FJ-Transform-Api + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/com/example/nis/FjTransformApiApplication.java b/src/main/java/com/example/nis/FjTransformApiApplication.java new file mode 100644 index 0000000..b82450e --- /dev/null +++ b/src/main/java/com/example/nis/FjTransformApiApplication.java @@ -0,0 +1,13 @@ +package com.example.nis; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class FjTransformApiApplication { + + public static void main(String[] args) { + SpringApplication.run(FjTransformApiApplication.class, args); + } + +} diff --git a/src/main/java/com/example/nis/common/Code.java b/src/main/java/com/example/nis/common/Code.java new file mode 100644 index 0000000..62eb6e5 --- /dev/null +++ b/src/main/java/com/example/nis/common/Code.java @@ -0,0 +1,28 @@ +package com.example.nis.common; + + +public enum Code { + + SUCCESS(200, "success"), + ERROR(999, "error"); + + + + + + private Integer code; + public Integer getCode() { + return code; + } + + private String msg; + public String getMsg() { + return msg; + } + + + private Code(Integer code, String msg) { + this.code = code; + this.msg = msg; + } +} diff --git a/src/main/java/com/example/nis/common/ResponseData.java b/src/main/java/com/example/nis/common/ResponseData.java new file mode 100644 index 0000000..33a4216 --- /dev/null +++ b/src/main/java/com/example/nis/common/ResponseData.java @@ -0,0 +1,72 @@ +package com.example.nis.common; + +import cn.hutool.json.JSONObject; + +import java.util.HashMap; + + +public class ResponseData extends HashMap { + private static final long serialVersionUID = 1L; + + + public ResponseData() { + put("code", Code.SUCCESS.getCode()); + put("msg", Code.SUCCESS.getMsg()); + } + + public static ResponseData ok(String msg) { + ResponseData r = new ResponseData(); + r.put("msg", msg); + return r; + } + + public static ResponseData ok() { + return new ResponseData(); + } + + public static ResponseData ok(Object data) { + ResponseData r = new ResponseData(); + r.put("data", data); + return r; + } + public static ResponseData ok(Integer code, String msg ) { + ResponseData r = new ResponseData(); + r.put("code", code); + r.put("msg", msg); + r.put("data", new JSONObject()); + return r; + } + public static ResponseData ok(Integer code, String msg ,Object data) { + ResponseData r = new ResponseData(); + r.put("code", code); + r.put("msg", msg); + r.put("data", data); + return r; + } + + public static ResponseData error() { + + return error(Code.ERROR.getCode(), Code.ERROR.getMsg()); + } + + public static ResponseData error(Code code) { + ResponseData r = new ResponseData(); + r.put("code", code.getCode()); + r.put("msg", code.getMsg()); + return r; + } + public static ResponseData error(String msg) { + ResponseData r = new ResponseData(); + r.put("code", Code.ERROR.getCode()); + r.put("msg", msg); + return r; + } + + public static ResponseData error(Integer code, String msg) { + ResponseData r = new ResponseData(); + r.put("code", code); + r.put("msg", msg); + r.put("data", new JSONObject()); + return r; + } +} diff --git a/src/main/java/com/example/nis/common/TsgServiceImpl.java b/src/main/java/com/example/nis/common/TsgServiceImpl.java new file mode 100644 index 0000000..5985539 --- /dev/null +++ b/src/main/java/com/example/nis/common/TsgServiceImpl.java @@ -0,0 +1,141 @@ +package com.example.nis.common; + +import cn.hutool.http.Header; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.example.nis.util.Constant; +import com.example.nis.util.ToTsgSystemUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +public class TsgServiceImpl { + + private static Integer httpTimeOut; + @Value("${tsg.system.httpTimeOut}") + public void setTsgUrl(Integer timeOut) { + httpTimeOut = timeOut; + } + + /** + * 查询 item 数据 + * @param objectId + * @param itemType 必填 + * @param itemIds + * @return + */ + public JSONArray getItemList(Integer objectId, String itemType,Integer itemId, Integer[] itemIds, + String ip,String port,String keywords) throws Exception { + Map paramMap = new HashMap<>(); + paramMap.put(Constant.TSG_PAGE_NO, 1); + paramMap.put(Constant.TSG_PAGE_SIZE, -1); + paramMap.put(Constant.TSG_IS_VALID, 1); + if (StringUtils.isNotEmpty(itemType)) { + paramMap.put(Constant.TSG_ITEM_TYPE, itemType); + } else { + log.error("itemType参数不能为空"); + throw new RuntimeException("itemType参数不能为空"); + } + if (StringUtils.isNotEmpty(ip)) { + paramMap.put(Constant.TSG_ITEM_IP, ip); + } + if (StringUtils.isNotEmpty(port)) { + paramMap.put(Constant.TSG_ITEM_PORT, port); + } + if (StringUtils.isNotEmpty(keywords)) { + paramMap.put(Constant.TSG_ITEM_KEYWORDS, keywords); + } + if (objectId !=null) { + paramMap.put(Constant.TSG_OBJECT_ID, objectId); + } + if (itemId !=null) { + paramMap.put(Constant.TSG_ITEM_ID, itemId); + } + if (itemIds !=null && itemIds.length>0) { + paramMap.put(Constant.TSG_ITEM_IDS, itemIds); + } + JSONArray result ; + try { + String token = ToTsgSystemUtil.sendLoginRequest(); + String result1 = HttpRequest.get(ToTsgSystemUtil.TSG_URL+"v1/policy/items") + .header(Header.AUTHORIZATION, token) + .form(paramMap) + .timeout(httpTimeOut) + .execute().body(); + + if (StringUtils.isNotBlank(result1)) { + JSONObject jsonObject = JSONUtil.parseObj(result1); + if (Constant.TSG_SUCCESS_CODE.equals(jsonObject.get(Constant.TSG_CODE).toString())) { + String str = JSONUtil.parseObj(jsonObject.get(Constant.TSG_DATA)).get(Constant.TSG_LIST).toString(); + result = JSONUtil.parseArray(str); + log.info("item查询成功"); + } else { + log.error("item查询失败!Response:{}", result1); + throw new RuntimeException("item查询失败!"); + } + } else { + log.error("item查询失败!Response:{}", result1); + throw new RuntimeException("item查询失败!"); + } + } catch (Exception e) { + log.error("item查询失败!", e); + throw e; + } + return result; + } + + /** + * 对象 修改 + * @param objectList + * @return + */ + public boolean updateObject(JSONArray objectList) throws Exception { + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.set(Constant.TSG_RETURN_DATA, 1); + jsonObject1.set(Constant.TSG_OP_ACTION, Constant.TSG_UPDATE); + if (objectList !=null && objectList.size()>0) { + jsonObject1.set(Constant.TSG_OBJECT_LIST, objectList); + } else { + log.error("对象修改失败!objectList参数不能为空"); + throw new RuntimeException("对象修改失败!objectList参数不能为空"); + } + boolean result; + try { + // 修改 + String token = ToTsgSystemUtil.sendLoginRequest(); + String result1 = HttpRequest.put(ToTsgSystemUtil.TSG_URL+"v1/policy/object") + .header(Header.AUTHORIZATION, token) + .header(Header.CONTENT_TYPE, Constant.TSG_APPLICATION_JSON) + .body(jsonObject1.toString()) + .timeout(httpTimeOut) + .execute().body(); + if (StringUtils.isNotBlank(result1)) { + JSONObject jsonObject = JSONUtil.parseObj(result1); + if (Constant.TSG_SUCCESS_CODE.equals(jsonObject.get(Constant.TSG_CODE).toString())) { + result = true; + log.info("对象修改成功"); + } else { + log.error("对象修改失败!Response:{}", result1); + throw new RuntimeException("对象修改失败!"); + } + } else { + log.error("对象修改失败!Response:{}", result1); + throw new RuntimeException("对象修改失败!"); + } + } catch (Exception e) { + log.error("对象修改失败!", e); + throw e; + } + return result; + } + +} diff --git a/src/main/java/com/example/nis/configure/StartedUpRunner.java b/src/main/java/com/example/nis/configure/StartedUpRunner.java new file mode 100644 index 0000000..011d274 --- /dev/null +++ b/src/main/java/com/example/nis/configure/StartedUpRunner.java @@ -0,0 +1,39 @@ +package com.example.nis.configure; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +@Component +public class StartedUpRunner implements ApplicationRunner { + + private final ConfigurableApplicationContext context; + private final Environment environment; + + @Autowired + public StartedUpRunner(ConfigurableApplicationContext context, Environment environment) { + this.context = context; + this.environment = environment; + } + + private static void printSystemUpBanner(Environment environment) { + String banner = "-----------------------------------------\n" + + "服务启动成功,时间:" + LocalDateTime.now() + "\n" + + "服务名称:" + environment.getProperty("spring.application.name") + "\n" + + "端口号:" + environment.getProperty("server.port") + "\n" + + "-----------------------------------------"; + System.out.println(banner); + } + + @Override + public void run(ApplicationArguments args) { + if (context.isActive()) { + printSystemUpBanner(environment); + } + } +} diff --git a/src/main/java/com/example/nis/controller/FqdnController.java b/src/main/java/com/example/nis/controller/FqdnController.java new file mode 100644 index 0000000..eeac860 --- /dev/null +++ b/src/main/java/com/example/nis/controller/FqdnController.java @@ -0,0 +1,150 @@ +package com.example.nis.controller; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.example.nis.common.ResponseData; +import com.example.nis.common.TsgServiceImpl; +import com.example.nis.domain.KeywordsObject; +import com.example.nis.domain.KeywordsSource; +import com.example.nis.util.Constant; +import com.example.nis.util.ToTsgSystemUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/v1/fqdn") +public class FqdnController { + + private final TsgServiceImpl tsgService; + + @GetMapping + public ResponseData get(KeywordsObject object) { + try { + if (object !=null) { + Integer[] itemIds = null; + if (StringUtils.isNotEmpty(object.getItemIds())) { + String[] split = object.getItemIds().split(","); + itemIds = new Integer[split.length]; + for (int i =0;i list = new ArrayList<>(); + if (itemList!=null && itemList.size()>0) { + for (int i = 0;i list1 = JSONUtil.toList(jsonObject.get(Constant.TSG_POLICY_KEYWORDARRAY).toString(), String.class); + if (list1!=null && list1.size()>0) { + List newKeyword = new ArrayList<>(); + newKeyword.add(list1.get(0).substring(1)); + fqdnObject.setKeywordArray(newKeyword); + } + list.add(fqdnObject); + } + } + return ResponseData.ok(list); + }else { + return ResponseData.error(); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseData.error(); + } + } + + @PutMapping + public ResponseData put(@RequestBody KeywordsSource source) { + try { + JSONArray array =new JSONArray(); + JSONObject jsonObject = new JSONObject(); + jsonObject.set(Constant.TSG_OBJECT_ID,ToTsgSystemUtil.fqdnObjectId); + jsonObject.set(Constant.TSG_OBJECT_TYPE,Constant.TSG_FQDN_OBJECT); + jsonObject.set(Constant.TSG_OBJECT_NAME,ToTsgSystemUtil.fqdnObjectName); + jsonObject.set(Constant.TSG_IS_BUILTIN,0); + jsonObject.set(Constant.TSG_IS_EXCLUSION,0); + jsonObject.set(Constant.TSG_IS_VALID,1); + if (source.getAddItemList()!=null && source.getAddItemList().size()>0) { + for (KeywordsObject obj :source.getAddItemList()) { + if (obj.getKeywordArray().size()>1) { + log.error("KeywordArray的长度只能为1"); + return ResponseData.error("KeywordArray的长度只能为1"); + } + updateKeywordArray(obj); + } + JSONArray jsonArray = JSONUtil.parseArray(source.getAddItemList()); + for (int i =0;i0) { + for (KeywordsObject obj :source.getUpdateItemList()) { + if (obj.getKeywordArray().size()>1) { + log.error("KeywordArray的长度只能为1"); + return ResponseData.error("KeywordArray的长度只能为1"); + } + updateKeywordArray(obj); + } + JSONArray jsonArray = JSONUtil.parseArray(source.getUpdateItemList()); + for (int i =0;i0) { + JSONArray jsonArray = JSONUtil.parseArray(source.getDeleteItemList()); + Integer[] deleteItemIds = new Integer[source.getDeleteItemList().size()]; + for (int i =0;i newKeyword = new ArrayList<>(); + List keywordArray = obj.getKeywordArray(); + if (keywordArray!=null && keywordArray.size()>0) { + for (String str: keywordArray){ + newKeyword.add("$"+str); + } + obj.setKeywordArray(newKeyword); + } + } + +} diff --git a/src/main/java/com/example/nis/controller/IpController.java b/src/main/java/com/example/nis/controller/IpController.java new file mode 100644 index 0000000..93d86b9 --- /dev/null +++ b/src/main/java/com/example/nis/controller/IpController.java @@ -0,0 +1,120 @@ +package com.example.nis.controller; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.example.nis.common.ResponseData; +import com.example.nis.common.TsgServiceImpl; +import com.example.nis.domain.IpObject; +import com.example.nis.domain.IpSource; +import com.example.nis.domain.KeywordsObject; +import com.example.nis.util.Constant; +import com.example.nis.util.ToTsgSystemUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + + +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/v1/ip") +public class IpController { + + private final TsgServiceImpl tsgService; + + @GetMapping + public ResponseData get(IpObject object) { + try { + if (object !=null) { + Integer[] itemIds = null; + if (StringUtils.isNotEmpty(object.getItemIds())) { + String[] split = object.getItemIds().split(","); + itemIds = new Integer[split.length]; + for (int i =0;i list = new ArrayList<>(); + if (itemList!=null && itemList.size()>0) { + for (int i = 0;i0) { + JSONArray jsonArray = JSONUtil.parseArray(source.getAddItemList()); + for (int i =0;i0) { + JSONArray jsonArray = JSONUtil.parseArray(source.getUpdateItemList()); + for (int i =0;i0) { + JSONArray jsonArray = JSONUtil.parseArray(source.getDeleteItemList()); + Integer[] deleteItemIds = new Integer[source.getDeleteItemList().size()]; + for (int i =0;i list = new ArrayList<>(); + if (itemList!=null && itemList.size()>0) { + for (int i = 0;i list1 = JSONUtil.toList(jsonObject.get(Constant.TSG_POLICY_KEYWORDARRAY).toString(), String.class); + if (list1!=null && list1.size()>0) { + List newKeyword = new ArrayList<>(); + newKeyword.add(list1.get(0).substring(1)); + urlObject.setKeywordArray(newKeyword); + } + list.add(urlObject); + } + } + return ResponseData.ok(list); + }else { + return ResponseData.error(); + } + } catch (Exception e) { + e.printStackTrace(); + return ResponseData.error(); + } + } + + @PutMapping + public ResponseData put(@RequestBody KeywordsSource source) { + try { + JSONArray array =new JSONArray(); + JSONObject jsonObject = new JSONObject(); + jsonObject.set(Constant.TSG_OBJECT_ID,ToTsgSystemUtil.urlObjectId); + jsonObject.set(Constant.TSG_OBJECT_TYPE,Constant.TSG_URL_OBJECT); + jsonObject.set(Constant.TSG_OBJECT_NAME,ToTsgSystemUtil.urlObjectName); + jsonObject.set(Constant.TSG_IS_BUILTIN,0); + jsonObject.set(Constant.TSG_IS_EXCLUSION,0); + jsonObject.set(Constant.TSG_IS_VALID,1); + if (source.getAddItemList()!=null && source.getAddItemList().size()>0) { + for (KeywordsObject obj :source.getAddItemList()) { + if (obj.getKeywordArray().size()>1) { + log.error("KeywordArray的长度只能为1"); + return ResponseData.error("KeywordArray的长度只能为1"); + } + updateKeywordArray(obj); + } + JSONArray jsonArray = JSONUtil.parseArray(source.getAddItemList()); + for (int i =0;i0) { + for (KeywordsObject obj :source.getUpdateItemList()) { + if (obj.getKeywordArray().size()>1) { + log.error("KeywordArray的长度只能为1"); + return ResponseData.error("KeywordArray的长度只能为1"); + } + updateKeywordArray(obj); + } + JSONArray jsonArray = JSONUtil.parseArray(source.getUpdateItemList()); + for (int i =0;i0) { + JSONArray jsonArray = JSONUtil.parseArray(source.getDeleteItemList()); + Integer[] deleteItemIds = new Integer[source.getDeleteItemList().size()]; + for (int i =0;i newKeyword = new ArrayList<>(); + List keywordArray = obj.getKeywordArray(); + if (keywordArray!=null && keywordArray.size()>0) { + for (String str: keywordArray){ + newKeyword.add("$"+str); + } + obj.setKeywordArray(newKeyword); + } + } +} diff --git a/src/main/java/com/example/nis/domain/IpObject.java b/src/main/java/com/example/nis/domain/IpObject.java new file mode 100644 index 0000000..c488f26 --- /dev/null +++ b/src/main/java/com/example/nis/domain/IpObject.java @@ -0,0 +1,19 @@ +package com.example.nis.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class IpObject implements Serializable { + + + private Integer itemId; + @JsonIgnore + private String itemIds; + private String ip; + private String port; + + +} diff --git a/src/main/java/com/example/nis/domain/IpSource.java b/src/main/java/com/example/nis/domain/IpSource.java new file mode 100644 index 0000000..0da5928 --- /dev/null +++ b/src/main/java/com/example/nis/domain/IpSource.java @@ -0,0 +1,14 @@ +package com.example.nis.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class IpSource implements Serializable { + + private List addItemList; + private List updateItemList; + private List deleteItemList; +} diff --git a/src/main/java/com/example/nis/domain/KeywordsObject.java b/src/main/java/com/example/nis/domain/KeywordsObject.java new file mode 100644 index 0000000..02fa798 --- /dev/null +++ b/src/main/java/com/example/nis/domain/KeywordsObject.java @@ -0,0 +1,18 @@ +package com.example.nis.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class KeywordsObject implements Serializable { + + private Integer itemId; + @JsonIgnore + private String itemIds; + @JsonIgnore + private String keywords; + private List keywordArray; +} diff --git a/src/main/java/com/example/nis/domain/KeywordsSource.java b/src/main/java/com/example/nis/domain/KeywordsSource.java new file mode 100644 index 0000000..f17f196 --- /dev/null +++ b/src/main/java/com/example/nis/domain/KeywordsSource.java @@ -0,0 +1,15 @@ +package com.example.nis.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class KeywordsSource implements Serializable { + + + private List addItemList; + private List updateItemList; + private List deleteItemList; +} diff --git a/src/main/java/com/example/nis/util/Constant.java b/src/main/java/com/example/nis/util/Constant.java new file mode 100644 index 0000000..2f5b6c1 --- /dev/null +++ b/src/main/java/com/example/nis/util/Constant.java @@ -0,0 +1,157 @@ +package com.example.nis.util; + +import org.springframework.stereotype.Component; + +/** + * 常量 + * + * @author Mark sunlightcs@gmail.com + */ +@Component +public class Constant { + /** + * 超级管理员ID + */ + public static final int SUPER_ADMIN = 1; + + + /** + * TSG 通用字段名称 + */ + public static String TSG_SUCCESS_CODE = "200"; + public static String TSG_CODE = "code"; + public static String TSG_DATA = "data"; + public static String TSG_LIST = "list"; + public static String TSG_ADD = "add"; + public static String TSG_UPDATE = "update"; + public static String TSG_PAGE_NO = "pageNo"; + public static String TSG_PAGE_SIZE = "pageSize"; + public static String TSG_APPLICATION_JSON = "application/json;charset=UTF-8"; + public static String TSG_OP_ACTION = "opAction"; + public static String TSG_RETURN_DATA = "returnData"; + public static String TSG_TSG_SECURITY = "tsg_security"; + public static String TSG_POLICY_ACTION_DENY = "deny"; + public static String TSG_POLICY_ACTION_MONITOR = "monitor"; + public static String TSG_POLICY_ACTION_REDIRECT = "redirect"; + public static String TSG_POLICY_ACTION_RST = "reset"; + public static String TSG_POLICY_ACTION_DROP = "drop"; + public static String TSG_POLICY_ACTION_ALLOW = "allow"; + public static String TSG_OBJECT_IDS = "objectIds"; + public static String TSG_REFUSE_CODE = "refuseCode"; + public static String TSG_POLICY_IDS = "policyIds"; + public static String TSG_IS_VALID = "isValid"; + public static String TSG_APP_NAME = "appName"; + public static String TSG_APP_IDS = "appIds"; + public static String TSG_IS_INITIALIZE = "isInitialize"; + + /** + * TSG 策略相关字段名称 + */ + public static String TSG_POLICY_LIST = "policyList"; + public static String TSG_POLICY_ID = "policyId"; + public static String TSG_POLICY_TYPE = "policyType"; + public static String TSG_POLICY_NAME = "policyName"; + public static String TSG_POLICY_DESC = "policyDesc"; + public static String TSG_POLICY_ACTION = "action"; + public static String TSG_POLICY_DO_BLACKLIST = "doBlacklist"; + public static String TSG_POLICY_DO_LOG = "doLog"; + public static String TSG_POLICY_EFFECTIVE_RANGE = "effectiveRange"; + public static String TSG_POLICY_TAG_SETS = "tag_sets"; + public static String TSG_POLICY_USER_REGION = "userRegion"; + public static String TSG_POLICY_SOURCE = "source"; + public static String TSG_POLICY_DESTINATION = "destination"; + public static String TSG_POLICY_FILTER_LIST = "filterList"; + public static String TSG_POLICY_FILTER = "filter"; + public static String TSG_POLICY_PROTOCOL_FIELD = "protocolField"; + public static String TSG_POLICY_APP_ID_OBJECTS = "appIdObjects"; + public static String TSG_POLICY_APP_SELECTOR_OBJECTS = "appSelectorObjects"; + public static String TSG_POLICY_PROTOCOL = "protocol"; + public static String TSG_POLICY_METHOD = "method"; + public static String TSG_POLICY_TRAFFIC_FORWARD = "traffic_forward"; + public static String TSG_POLICY_ENABLE = "enable"; + public static String TSG_POLICY_ADDRTYPE = "addrType"; + public static String TSG_POLICY_QTYPE = "qtype"; + public static String TSG_POLICY_ATYPE = "atype"; + public static String TSG_POLICY_A = "A"; + public static String TSG_POLICY_AAAA = "AAAA"; + public static String TSG_POLICY_VALUE = "value"; + public static String TSG_POLICY_MIN = "min"; + public static String TSG_POLICY_MAX = "max"; + public static String TSG_POLICY_TTL = "ttl"; + public static String TSG_POLICY_ANSWER = "answer"; + public static String TSG_POLICY_RESOLUTION = "resolution"; + public static String TSG_POLICY_KEYWORDARRAY = "keywordArray"; + public static String TSG_POLICY_ADDITEMLIST = "addItemList"; + public static String TSG_POLICY_APPIDOBJECTLIST = "appIdObjectList"; + public static String TSG_VSYS_ID="vsysId"; + + /** + * TSG 对象相关字段名称 + */ + public static String TSG_OBJECT_LIST = "objectList"; + public static String TSG_OBJECT_TYPE = "objectType"; + public static String TSG_OBJECT_SUB_TYPE = "objectSubType"; + public static String TSG_SUB_OBJECT_IDS = "subObjectIds"; + public static String TSG_OBJECT_NAME = "objectName"; + public static String TSG_OBJECT_DESC = "objectDesc"; + public static String TSG_IS_EXCLUSION = "isExclusion"; + public static String TSG_GEO_LOCATION = "geo_location"; + public static String TSG_IS_BUILTIN = "isBuiltin"; + + /** + * TSG 单元相关字段名称 + */ + public static String TSG_ITEM_TYPE = "itemType"; + public static String TSG_OBJECT_ID = "objectId"; + public static String TSG_ITEM_LIST = "itemList"; + public static String TSG_ITEM_ID = "itemId"; + public static String TSG_ITEM_NAME = "itemName"; + public static String TSG_ITEM_DESC = "itemDesc"; + public static String TSG_ITEM_IDS = "itemIds"; + public static String TSG_ITEM_ISSESSION = "isSession"; + public static String TSG_ITEM_ENDPOINT = "endpoint"; + public static String TSG_ITEM_PORT = "port"; + public static String TSG_ITEM_IP = "ip"; + public static String TSG_ITEM_KEYWORDS = "keywords"; + + /** + * TSG 对象类型常量 + */ + public static String TSG_IP_ADDR_OBJECT = "ip"; + public static String TSG_FQDN_OBJECT = "fqdn"; + public static String TSG_SUBSCRIBERID_OBJECT = "subscriberid"; + public static String TSG_HTTP_SIGNATURE_OBJECT = "http_signature"; + public static String TSG_KEYWORDS_OBJECT = "keywords"; + public static String TSG_URL_OBJECT = "url"; + public static String TSG_FQDN_CATEGORY_OBJECT = "fqdn_category"; + public static String TSG_ACCOUNT_OBJECT = "account"; + + /** + * TSG 协议字段常量 + */ + public static String TSG_FIELD_HTTP_URL = "TSG_FIELD_HTTP_URL"; + public static String TSG_FIELD_HTTP_HOST = "TSG_FIELD_HTTP_HOST"; + public static String TSG_FIELD_FTP_CONTENT = "TSG_FIELD_FTP_CONTENT"; + public static String TSG_FIELD_MAIL_SUBJECT = "TSG_FIELD_MAIL_SUBJECT"; + public static String TSG_FIELD_MAIL_CONTENT = "TSG_FIELD_MAIL_CONTENT"; + public static String TSG_FIELD_MAIL_ATT_NAME = "TSG_FIELD_MAIL_ATT_NAME"; + public static String TSG_FIELD_HTTP_REQ_CONTENT = "TSG_FIELD_HTTP_REQ_CONTENT"; + public static String TSG_FIELD_HTTP_RES_CONTENT = "TSG_FIELD_HTTP_RES_CONTENT"; + public static String TSG_FIELD_HTTP_RES_BODY = "TSG_FIELD_HTTP_RES_BODY"; + public static String TSG_FIELD_HTTP_REQ_BODY = "TSG_FIELD_HTTP_REQ_BODY"; + public static String TSG_FIELD_HTTP_RES_HDR = "TSG_FIELD_HTTP_RES_HDR"; + public static String TSG_FIELD_DNS_QNAME = "TSG_FIELD_DNS_QNAME"; + public static String TSG_SECURITY_SOURCE_LOCATION = "TSG_SECURITY_SOURCE_LOCATION"; + public static String TSG_SECURITY_DESTINATION_LOCATION = "TSG_SECURITY_DESTINATION_LOCATION"; + public static String TSG_SECURITY_DESTINATION_ADDR = "TSG_SECURITY_DESTINATION_ADDR"; + public static String TSG_SECURITY_SOURCE_ADDR = "TSG_SECURITY_SOURCE_ADDR"; + public static String TSG_FIELD_MAIL_ACCOUNT = "TSG_FIELD_MAIL_ACCOUNT"; + public static String TSG_FIELD_SSL_SNI = "TSG_FIELD_SSL_SNI"; + public static String TSG_FIELD_SSL_CN = "TSG_FIELD_SSL_CN"; + public static String TSG_FIELD_SSL_SAN = "TSG_FIELD_SSL_SAN"; + + + + + +} diff --git a/src/main/java/com/example/nis/util/ToTsgSystemUtil.java b/src/main/java/com/example/nis/util/ToTsgSystemUtil.java new file mode 100644 index 0000000..ef464d1 --- /dev/null +++ b/src/main/java/com/example/nis/util/ToTsgSystemUtil.java @@ -0,0 +1,110 @@ +package com.example.nis.util; + +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Component +public class ToTsgSystemUtil { + + public static Integer ipObjectId; + public static Integer urlObjectId; + public static Integer fqdnObjectId; + @Value("${tsg.system.ipObjectId}") + public void setIpObjectId(Integer objectId) { + ipObjectId = objectId; + } + @Value("${tsg.system.urlObjectId}") + public void setUrlObjectId(Integer objectId) { + urlObjectId = objectId; + } + @Value("${tsg.system.fqdnObjectId}") + public void setFqdnObjectId(Integer objectId) { + fqdnObjectId = objectId; + } + public static String ipObjectName; + public static String urlObjectName; + public static String fqdnObjectName; + @Value("${tsg.system.ipObjectName}") + public void setIpObjectName(String objectName) { + ipObjectName = objectName; + } + @Value("${tsg.system.urlObjectName}") + public void setUrlObjectName(String objectName) { + urlObjectName = objectName; + } + @Value("${tsg.system.fqdnObjectName}") + public void setFqdnObjectName(String objectName) { + fqdnObjectName = objectName; + } + + public static String TSG_URL; + private static String TSG_USERNAME; + private static String TSG_PASSWORD; + private static Integer httpTimeOut; + @Value("${tsg.system.httpTimeOut}") + public void setTsgUrl(Integer timeOut) { + httpTimeOut = timeOut; + } + @Value("${tsg.system.url}") + public void setTsgUrl(String url) { + TSG_URL = url; + } + @Value("${tsg.system.username}") + private void setTsgUsername(String username) { + TSG_USERNAME = username; + } + @Value("${tsg.system.password}") + private void setTsgPassword(String password) { + TSG_PASSWORD = password; + } + + + + + /** + * 发送登录请求 获取 token + * @return + * @throws Exception + */ + public static String sendLoginRequest() throws Exception { + String token = ""; + Map map = new HashMap<>(); + map.put("username",TSG_USERNAME); + map.put("password",TSG_PASSWORD); + try { + long start = System.currentTimeMillis(); + log.info("【TSG】 获取token开始"); + String response = HttpRequest.post(TSG_URL + "v1/user/login") + .form(map) + .timeout(httpTimeOut) + .execute().body(); + long end = System.currentTimeMillis(); + log.info("【TSG】 获取token结束,用时:"+(end-start)); + if (StringUtils.isNotBlank(response)) { + JSONObject jsonObject = JSONUtil.parseObj(response); + if ("200".equals(jsonObject.get("code").toString())) { + token = JSONUtil.parseObj(jsonObject.get("data")).get("token").toString(); + }else { + log.error("获取TSG系统token失败!Response:{}", response); + } + } else { + log.error("获取TSG系统token失败!Response:{}", response); + } + } catch (Exception e) { + log.error("获取TSG系统token失败!", e); + throw e; + } + return token; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..e96a0e3 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,25 @@ +server: + port: 9999 + +spring: + application: + name: FJ-Transform-Project + + +# TSG 账号 +tsg: + system: + url: http://192.168.45.51:8080/ + username: admin + password: aSdvVT7Fg81kJBuT7T7T7g== + # http 超时时间 + httpTimeOut: 3600000 + ipObjectId: 157 + ipObjectName: sg-test + urlObjectId: 158 + urlObjectName: sg-test + fqdnObjectId: 159 + fqdnObjectName: sg-test + + + diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..6d9e712 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,7 @@ +###set log levels### +log4j.rootLogger=debug, stdout +###output to the console### +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..a29e7bb --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + ${log.colorPattern} + + + + + + + ${log.path}/info/info.%d{yyyy-MM-dd}.log + ${log.maxHistory} + + + ${log.pattern} + + + INFO + ACCEPT + DENY + + + + + + ${log.path}/error/error.%d{yyyy-MM-dd}.log + + + ${log.pattern} + + + ERROR + ACCEPT + DENY + + + + + + + + + + diff --git a/src/test/java/com/example/nis/FjTransformApiApplicationTests.java b/src/test/java/com/example/nis/FjTransformApiApplicationTests.java new file mode 100644 index 0000000..915590c --- /dev/null +++ b/src/test/java/com/example/nis/FjTransformApiApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.nis; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class FjTransformApiApplicationTests { + + @Test + void contextLoads() { + } + +} -- cgit v1.2.3