From b480734c948d03a7486a1f2aac3ac2470229b1ad Mon Sep 17 00:00:00 2001 From: zhangshuai Date: Thu, 15 Aug 2024 17:30:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20pcap=20=E5=A2=9E=E5=8A=A0=20unparse2ses?= =?UTF-8?q?sion=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../runner/controller/PcapController.java | 9 +++++ .../module/runner/service/IPcapService.java | 1 + .../runner/service/impl/PcapServiceImpl.java | 40 +++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java b/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java index 85058b2..6f6865e 100644 --- a/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java +++ b/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java @@ -157,4 +157,13 @@ public class PcapController { } return R.ok(result); } + + + @PutMapping("/unparse2session") + public R unparse2session(String[] ids) { + T.VerifyUtil.is(ids).notEmpty(); + + pcapService.unparse2session(ids); + return R.ok(); + } } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java b/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java index 72c9f5a..de99c95 100644 --- a/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java +++ b/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java @@ -21,4 +21,5 @@ public interface IPcapService extends IService{ void parse2session(String... ids); + void unparse2session(String[] ids); } diff --git a/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java b/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java index 3fe6fdf..4f9949a 100644 --- a/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java +++ b/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.geedge.asw.common.config.SpringContextUtils; import net.geedge.asw.common.util.ASWException; import net.geedge.asw.common.util.RCode; import net.geedge.asw.common.util.T; @@ -29,6 +30,9 @@ import net.geedge.asw.module.workbook.util.WorkbookConstant; import net.geedge.asw.module.workspace.entity.WorkspaceEntity; import net.geedge.asw.module.workspace.service.IWorkspaceService; import org.apache.commons.io.FileUtils; +import org.opensearch.client.opensearch.OpenSearchClient; +import org.opensearch.client.opensearch.indices.DeleteIndexRequest; +import org.opensearch.client.opensearch.indices.ExistsRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -225,6 +229,42 @@ public class PcapServiceImpl extends ServiceImpl implements } } + @Override + public void unparse2session(String[] ids) { + OpenSearchClient openSearchClient = (OpenSearchClient) SpringContextUtils.getBean("openSearchClient"); + + for (String id : ids) { + PcapEntity pcapEntity = this.getById(id); + if (T.ObjectUtil.isNotNull(pcapEntity)) { + WorkspaceEntity workspace = workspaceService.getById(pcapEntity.getWorkspaceId()); + pcapEntity.setWorkspace(workspace); + String pcapPath = pcapEntity.getPath(); + String md5Hex = T.DigestUtil.md5Hex(T.FileUtil.file(pcapPath)); + + String workspaceName = pcapEntity.getWorkspace().getName(); + String indexName = String.format("workspace-%s-%s", workspaceName, md5Hex); + + try { + // check if index exists + boolean indexExists = openSearchClient.indices() + .exists(new ExistsRequest.Builder().index(indexName).build()) + .value(); + + // if index exists, delete + if (indexExists) { + openSearchClient.indices().delete(new DeleteIndexRequest.Builder().index(indexName).build()); + log.debug("delete openSearch index: {}", indexName); + } + }catch (Exception e){ + log.error("delete openSearch index error index: {}", indexName); + throw new RuntimeException("delete openSearch index error ", e); + } + pcapEntity.setStatus(RunnerConstant.PcapStatus.UPLOADED.getValue()); + this.updateById(pcapEntity); + } + } + } + /** * calculate Parse Thread Timeout *