Commit 12a79968 authored by David Fernandez Lobon's avatar David Fernandez Lobon

Sniffig snapshot unica

parent a4abd56a
......@@ -11,5 +11,6 @@ public interface SnapshotRepository extends JpaRepository<Snapshot, String> {
Snapshot findBySnapshotId(String snapshotId);
Snapshot findTopByVlanNameOrderByTimestampDistNodeEndDesc(String vlanName);
Snapshot findTopByVlanNameAndDiscoveryMethodOrderByTimestampDistNodeEndDesc (String vlanName, String discoveryMethod);
}
......@@ -91,9 +91,27 @@ public class AssetService {
List<ScanInfoDto> allScans = asset.getScanInfo();
boolean nueva_snapshot = true;
String generatedHash = null;
Snapshot snapshot = null;
if (asset.getDiscoveryMethod().equals("sniffing")){
Snapshot snapshot_scan = snapshotRepository.findTopByVlanNameAndDiscoveryMethodOrderByTimestampDistNodeEndDesc(allScans.get(0).getVlanName(),"scan");
Snapshot snapshot_sniffing = snapshotRepository.findTopByVlanNameAndDiscoveryMethodOrderByTimestampDistNodeEndDesc(allScans.get(0).getVlanName(),"sniffing");
if (snapshot_scan != null && snapshot_sniffing != null && snapshot_scan.getTimestamp_mainNode().getTime() < snapshot_sniffing.getTimestamp_mainNode().getTime() ){
// Utilizas la snapshot_sniffing que ya tienes y la actualizas
generatedHash = snapshot_sniffing.getSnapshotId();
nueva_snapshot = false;
snapshot = snapshot_sniffing;
}
}
Date mainNode_timestamp = new Date();
String generatedHash = DigestUtils.sha256Hex(DigestUtils.sha256Hex(mainNode_timestamp.toString()) + DigestUtils.sha256Hex(allScans.get(0).getIniTimestampScan().toString()) + DigestUtils.sha256Hex(allScans.get(0).getEndTimestampScan().toString()) + System.currentTimeMillis());
if (nueva_snapshot) {
generatedHash = DigestUtils.sha256Hex(DigestUtils.sha256Hex(mainNode_timestamp.toString()) +
DigestUtils.sha256Hex(allScans.get(0).getIniTimestampScan().toString()) +
DigestUtils.sha256Hex(allScans.get(0).getEndTimestampScan().toString()) +
System.currentTimeMillis());
}
SnapshotChange snapChange = evaluateChanges(allScans, mainNode_timestamp, asset.getDiscoveryMethod());
// TODO: retrieve from web form instead of hard-coding it here
......@@ -118,7 +136,7 @@ public class AssetService {
Node node = nodeRepository.findByNodeId(credential.getName());
log.info("let me {}", scanInfo);
SnapshotIdentity snapshotIdentity = SnapshotIdentity.createSnapshotIdentity(scanInfo.getVlanName(), node.getNodeId(), scanInfo.getSnapshotId());
Snapshot snapshot = Snapshot.createSnapshot(scanInfo, snapshotIdentity, asset.getDiscoveryMethod());
if (nueva_snapshot) snapshot = Snapshot.createSnapshot(scanInfo, snapshotIdentity, asset.getDiscoveryMethod());
//////
// CREATING HOST AND PORT ENTITIES FROM THE RECEIVED DTO
......@@ -132,9 +150,10 @@ public class AssetService {
hosts.add(host);
String finalGeneratedHash = generatedHash;
List<Port> ports = host_dtos.get(i).getPorts().parallelStream()
.map(portDto -> {
PortIdentity portIdentity = PortIdentity.createPortIdentity(portDto.getPortNumber(), host.getIp(), host.getVlanName(), generatedHash);
PortIdentity portIdentity = PortIdentity.createPortIdentity(portDto.getPortNumber(), host.getIp(), host.getVlanName(), finalGeneratedHash);
return Port.createPort(portIdentity, portDto);
})
.collect(Collectors.toList());
......@@ -144,8 +163,9 @@ public class AssetService {
}
//////
if (nueva_snapshot) {
snapshotRepository.save(snapshot);
}
scanInfoRepository.save(scanInfo);
// WRITING SCAN INFO ENTITY TO FILE FOR ITS POSTERIOR UPLOAD TO VIRTUOSO'S DB
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment