fix: 单独保存 pcap common 文件,不对源文件进行覆盖
1. 单独保存 pcap common 文件,不对源文件进行覆盖 2. 删除解析结果时,重置 summary 内容
This commit is contained in:
@@ -139,7 +139,8 @@ public class PcapController {
|
||||
|
||||
HashMap<Object, Object> result = T.MapUtil.newHashMap();
|
||||
PcapEntity pcap = pcapService.getById(id);
|
||||
File pcapFile = T.FileUtil.file(pcap.getPath());
|
||||
File pcapFile = pcap.getCommonPcapFilePath().toFile();
|
||||
pcapFile = FileUtil.exist(pcapFile) ? 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 {
|
||||
|
||||
@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import net.geedge.asw.common.util.T;
|
||||
import net.geedge.asw.module.app.entity.ApplicationEntity;
|
||||
import net.geedge.asw.module.app.entity.PackageEntity;
|
||||
import net.geedge.asw.module.workspace.entity.WorkspaceEntity;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
@Data
|
||||
@TableName("pcap")
|
||||
public class PcapEntity {
|
||||
@@ -46,4 +50,9 @@ public class PcapEntity {
|
||||
@TableField(exist = false)
|
||||
private PlaybookEntity playbook;
|
||||
|
||||
@JsonIgnore
|
||||
public Path getCommonPcapFilePath() {
|
||||
return Path.of(T.WebPathUtil.getRootPath(), this.workspaceId, "pcap_comment", this.id + ".pcapng");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -191,6 +191,7 @@ public class PcapServiceImpl extends ServiceImpl<PcapDao, PcapEntity> implements
|
||||
PcapEntity pcap = this.getById(id);
|
||||
// remove file
|
||||
T.FileUtil.del(pcap.getPath());
|
||||
T.FileUtil.del(pcap.getCommonPcapFilePath());
|
||||
|
||||
// remove
|
||||
this.removeById(id);
|
||||
@@ -278,6 +279,10 @@ public class PcapServiceImpl extends ServiceImpl<PcapDao, PcapEntity> implements
|
||||
throw new RuntimeException("delete openSearch index error ", e);
|
||||
}
|
||||
pcapEntity.setStatus(RunnerConstant.PcapStatus.UPLOADED.getValue());
|
||||
// reset summary
|
||||
pcapEntity.setSummary("{}");
|
||||
// del common pcap file
|
||||
T.FileUtil.del(pcapEntity.getCommonPcapFilePath().toFile());
|
||||
this.updateById(pcapEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import feign.Response;
|
||||
import lombok.Data;
|
||||
import net.geedge.asw.common.config.SpringContextUtils;
|
||||
import net.geedge.asw.common.util.Constants;
|
||||
import net.geedge.asw.common.util.RCode;
|
||||
import net.geedge.asw.common.util.T;
|
||||
import net.geedge.asw.module.feign.client.GeoipClient;
|
||||
@@ -101,23 +100,10 @@ public class PcapParserThread implements Runnable {
|
||||
throw new RuntimeException("Failed to add common to pcap");
|
||||
}
|
||||
|
||||
// temp file
|
||||
File file = T.FileUtil.file(Constants.TEMP_PATH, pcapEntity.getId() + ".pcapng");
|
||||
FileUtils.copyInputStreamToFile(response.body().asInputStream(), file);
|
||||
|
||||
// override source file
|
||||
T.FileUtil.del(T.FileUtil.file(pcapEntity.getPath()));
|
||||
File updatePcapFile = T.FileUtil.file(T.WebPathUtil.getRootPath(), pcapEntity.getWorkspaceId(), file.getName());
|
||||
T.FileUtil.move(file, updatePcapFile, true);
|
||||
|
||||
// update name,path,md5,size
|
||||
String md5Hex = T.DigestUtil.md5Hex(updatePcapFile);
|
||||
long filesize = T.FileUtil.size(updatePcapFile);
|
||||
pcapEntity.setName(updatePcapFile.getName());
|
||||
pcapEntity.setPath(updatePcapFile.getAbsolutePath());
|
||||
pcapEntity.setMd5(md5Hex);
|
||||
pcapEntity.setSize(filesize);
|
||||
pcapService.updateById(pcapEntity);
|
||||
// file path: /{path}/{workspace_id}/pcap_comment/{pcap_id}.pcapng
|
||||
File destination = pcapEntity.getCommonPcapFilePath().toFile();
|
||||
T.FileUtil.del(destination);
|
||||
FileUtils.copyInputStreamToFile(response.body().asInputStream(), destination);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -230,6 +216,7 @@ public class PcapParserThread implements Runnable {
|
||||
.put("sessions", jsonArray.size())
|
||||
.put("packets", packets)
|
||||
.put("services", services)
|
||||
.put("commentPath", pcapEntity.getCommonPcapFilePath().toString())
|
||||
.build();
|
||||
pcapService.update(new LambdaUpdateWrapper<PcapEntity>()
|
||||
.set(PcapEntity::getSummary, T.JSONUtil.toJsonStr(m))
|
||||
|
||||
Reference in New Issue
Block a user