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();
|
HashMap<Object, Object> result = T.MapUtil.newHashMap();
|
||||||
PcapEntity pcap = pcapService.getById(id);
|
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));
|
String uploadFileName = T.StrUtil.concat(true, id, ".", T.FileUtil.getSuffix(pcapFile));
|
||||||
File newFile = FileUtil.copy(pcapFile, FileUtil.file(Constants.TEMP_PATH, uploadFileName), false);
|
File newFile = FileUtil.copy(pcapFile, FileUtil.file(Constants.TEMP_PATH, uploadFileName), false);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.Data;
|
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.ApplicationEntity;
|
||||||
import net.geedge.asw.module.app.entity.PackageEntity;
|
import net.geedge.asw.module.app.entity.PackageEntity;
|
||||||
import net.geedge.asw.module.workspace.entity.WorkspaceEntity;
|
import net.geedge.asw.module.workspace.entity.WorkspaceEntity;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@TableName("pcap")
|
@TableName("pcap")
|
||||||
public class PcapEntity {
|
public class PcapEntity {
|
||||||
@@ -46,4 +50,9 @@ public class PcapEntity {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private PlaybookEntity playbook;
|
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);
|
PcapEntity pcap = this.getById(id);
|
||||||
// remove file
|
// remove file
|
||||||
T.FileUtil.del(pcap.getPath());
|
T.FileUtil.del(pcap.getPath());
|
||||||
|
T.FileUtil.del(pcap.getCommonPcapFilePath());
|
||||||
|
|
||||||
// remove
|
// remove
|
||||||
this.removeById(id);
|
this.removeById(id);
|
||||||
@@ -278,6 +279,10 @@ public class PcapServiceImpl extends ServiceImpl<PcapDao, PcapEntity> implements
|
|||||||
throw new RuntimeException("delete openSearch index error ", e);
|
throw new RuntimeException("delete openSearch index error ", e);
|
||||||
}
|
}
|
||||||
pcapEntity.setStatus(RunnerConstant.PcapStatus.UPLOADED.getValue());
|
pcapEntity.setStatus(RunnerConstant.PcapStatus.UPLOADED.getValue());
|
||||||
|
// reset summary
|
||||||
|
pcapEntity.setSummary("{}");
|
||||||
|
// del common pcap file
|
||||||
|
T.FileUtil.del(pcapEntity.getCommonPcapFilePath().toFile());
|
||||||
this.updateById(pcapEntity);
|
this.updateById(pcapEntity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|||||||
import feign.Response;
|
import feign.Response;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.geedge.asw.common.config.SpringContextUtils;
|
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.RCode;
|
||||||
import net.geedge.asw.common.util.T;
|
import net.geedge.asw.common.util.T;
|
||||||
import net.geedge.asw.module.feign.client.GeoipClient;
|
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");
|
throw new RuntimeException("Failed to add common to pcap");
|
||||||
}
|
}
|
||||||
|
|
||||||
// temp file
|
// file path: /{path}/{workspace_id}/pcap_comment/{pcap_id}.pcapng
|
||||||
File file = T.FileUtil.file(Constants.TEMP_PATH, pcapEntity.getId() + ".pcapng");
|
File destination = pcapEntity.getCommonPcapFilePath().toFile();
|
||||||
FileUtils.copyInputStreamToFile(response.body().asInputStream(), file);
|
T.FileUtil.del(destination);
|
||||||
|
FileUtils.copyInputStreamToFile(response.body().asInputStream(), destination);
|
||||||
// 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -230,6 +216,7 @@ public class PcapParserThread implements Runnable {
|
|||||||
.put("sessions", jsonArray.size())
|
.put("sessions", jsonArray.size())
|
||||||
.put("packets", packets)
|
.put("packets", packets)
|
||||||
.put("services", services)
|
.put("services", services)
|
||||||
|
.put("commentPath", pcapEntity.getCommonPcapFilePath().toString())
|
||||||
.build();
|
.build();
|
||||||
pcapService.update(new LambdaUpdateWrapper<PcapEntity>()
|
pcapService.update(new LambdaUpdateWrapper<PcapEntity>()
|
||||||
.set(PcapEntity::getSummary, T.JSONUtil.toJsonStr(m))
|
.set(PcapEntity::getSummary, T.JSONUtil.toJsonStr(m))
|
||||||
|
|||||||
Reference in New Issue
Block a user