feat: ASW-38 webshark 访问接口开发
This commit is contained in:
@@ -6,6 +6,7 @@ import feign.Feign;
|
||||
import feign.form.FormEncoder;
|
||||
import net.geedge.asw.module.feign.client.GeoipClient;
|
||||
import net.geedge.asw.module.feign.client.KibanaClient;
|
||||
import net.geedge.asw.module.feign.client.WebSharkClient;
|
||||
import net.geedge.asw.module.feign.client.ZeekClient;
|
||||
import net.geedge.asw.module.feign.support.Fastjson2Decoder;
|
||||
import net.geedge.asw.module.feign.support.Fastjson2Encoder;
|
||||
@@ -28,6 +29,9 @@ public class FeignClientConfiguration {
|
||||
@Value("${kibana.url:127.0.0.1:5601}")
|
||||
private String kibanaUrl;
|
||||
|
||||
@Value("${webShark.url:127.0.0.1:8085}")
|
||||
private String websharkurl;
|
||||
|
||||
@Bean("zeekClient")
|
||||
public ZeekClient zeekClient() {
|
||||
String url = UrlBuilder.ofHttp(zeekUrl).toString();
|
||||
@@ -61,4 +65,15 @@ public class FeignClientConfiguration {
|
||||
.target(KibanaClient.class, url);
|
||||
}
|
||||
|
||||
@Bean("webSharkClient")
|
||||
public WebSharkClient webSharkClient() {
|
||||
String url = UrlBuilder.ofHttp(websharkurl).toString();
|
||||
log.info("[webSharkClient] [url: {}]", url);
|
||||
return Feign.builder()
|
||||
.encoder(new FormEncoder())
|
||||
//.decoder(new Fastjson2Decoder())
|
||||
.client(new Http2Client())
|
||||
.target(WebSharkClient.class, url);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package net.geedge.asw.module.feign.client;
|
||||
|
||||
import feign.Headers;
|
||||
import feign.Param;
|
||||
import feign.RequestLine;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
@FeignClient(name = "webSharkClient")
|
||||
public interface WebSharkClient {
|
||||
|
||||
@RequestLine("POST /webshark/upload")
|
||||
@Headers("Content-Type: multipart/form-data")
|
||||
void upload(@Param("fileKey") File file);
|
||||
}
|
||||
@@ -2,14 +2,19 @@ package net.geedge.asw.module.runner.controller;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.net.url.UrlBuilder;
|
||||
import cn.hutool.log.Log;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import net.geedge.asw.common.config.SpringContextUtils;
|
||||
import net.geedge.asw.common.util.*;
|
||||
import net.geedge.asw.module.feign.client.WebSharkClient;
|
||||
import net.geedge.asw.module.runner.entity.PcapEntity;
|
||||
import net.geedge.asw.module.runner.service.IPcapService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -17,9 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/pcap")
|
||||
@@ -30,6 +33,9 @@ public class PcapController {
|
||||
@Autowired
|
||||
private IPcapService pcapService;
|
||||
|
||||
@Value("${webShark.url:127.0.0.1:5601}")
|
||||
private String websharkurl;
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public R detail(@PathVariable("id") String id) {
|
||||
PcapEntity pcapEntity = pcapService.queryInfo(id);
|
||||
@@ -125,4 +131,30 @@ public class PcapController {
|
||||
T.FileUtil.del(zipFile);
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/{id}/webshark")
|
||||
public R webshark(@PathVariable String id) {
|
||||
T.VerifyUtil.is(id).notEmpty();
|
||||
|
||||
HashMap<Object, Object> result = T.MapUtil.newHashMap();
|
||||
PcapEntity pcap = pcapService.getById(id);
|
||||
File pcapFile = T.FileUtil.file(pcap.getPath());
|
||||
String uploadFileName = T.StrUtil.concat(true, id, ".", T.FileUtil.getSuffix(pcapFile));
|
||||
File newFile = FileUtil.copy(pcapFile, FileUtil.file(Constants.TEMP_PATH, uploadFileName), false);
|
||||
try {
|
||||
WebSharkClient webSharkClient = (WebSharkClient) SpringContextUtils.getBean("webSharkClient");
|
||||
webSharkClient.upload(newFile);
|
||||
|
||||
String baseUrl = UrlBuilder.ofHttp(websharkurl)
|
||||
.addPath("/webshark")
|
||||
.toString();
|
||||
result.put("name", uploadFileName);
|
||||
result.put("url", baseUrl);
|
||||
}catch (Exception e){
|
||||
log.error(e, "webshark upload pcap error, id: {}", pcap.getId());
|
||||
}finally {
|
||||
FileUtil.del(newFile);
|
||||
}
|
||||
return R.ok(result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user