summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/it_jaros/jns/scan/Scanner.java6
-rw-r--r--src/main/java/com/it_jaros/jns/scan/domain/ScanResult.java26
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java2
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java2
4 files changed, 29 insertions, 7 deletions
diff --git a/src/main/java/com/it_jaros/jns/scan/Scanner.java b/src/main/java/com/it_jaros/jns/scan/Scanner.java
index 76a802e..82257fb 100644
--- a/src/main/java/com/it_jaros/jns/scan/Scanner.java
+++ b/src/main/java/com/it_jaros/jns/scan/Scanner.java
@@ -62,10 +62,10 @@ public class Scanner implements AutoCloseable {
// happens when strg-c is pressed
continue;
}
- if (error instanceof ScanHostException) {
- System.err.printf("runScan(): ScanHostTask(%s) failed with error %s -> %s%n", error.getMessage(), error.getCause().getClass().getSimpleName(), error.getCause().getMessage());
+ if (error instanceof ScanHostException e) {
+ consumer.accept(ScanResult.from(e));
} else {
- System.err.printf("runScan(): ScanHostTask() failed with error %s -> %s%n", error.getClass().getSimpleName(), error.getCause().getMessage());
+ consumer.accept(ScanResult.from(error));
}
}
} catch (InterruptedException e) {
diff --git a/src/main/java/com/it_jaros/jns/scan/domain/ScanResult.java b/src/main/java/com/it_jaros/jns/scan/domain/ScanResult.java
index ae3602d..e90c5cb 100644
--- a/src/main/java/com/it_jaros/jns/scan/domain/ScanResult.java
+++ b/src/main/java/com/it_jaros/jns/scan/domain/ScanResult.java
@@ -1,5 +1,7 @@
package com.it_jaros.jns.scan.domain;
+import com.it_jaros.jns.scan.ExceptionInfo;
+import com.it_jaros.jns.scan.engine.ScanHostException;
import com.it_jaros.jns.scan.service.ServiceType;
import java.util.BitSet;
@@ -17,10 +19,30 @@ public record ScanResult(
public static ScanResult empty(String host) {
return new ScanResult(
host,
- new PortList(new BitSet(PortRange.MAX_PORT)),
- new PortList(new BitSet(PortRange.MAX_PORT)),
+ new PortList(new BitSet(PortRange.MIN_PORT)),
+ new PortList(new BitSet(PortRange.MIN_PORT)),
Collections.emptyMap(),
Collections.emptyList()
);
}
+
+ public static ScanResult from(ScanHostException e) {
+ return new ScanResult(
+ e.getMessage(),
+ new PortList(new BitSet(PortRange.MIN_PORT)),
+ new PortList(new BitSet(PortRange.MIN_PORT)),
+ Collections.emptyMap(),
+ List.of(new ScanFailure(List.of(-1), ExceptionInfo.from(e.getCause())))
+ );
+ }
+
+ public static ScanResult from(Throwable e) {
+ return new ScanResult(
+ "Unknown",
+ new PortList(new BitSet(PortRange.MIN_PORT)),
+ new PortList(new BitSet(PortRange.MIN_PORT)),
+ Collections.emptyMap(),
+ List.of(new ScanFailure(List.of(-1), ExceptionInfo.from(e)))
+ );
+ }
}
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
index 045ba62..de92439 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
@@ -14,8 +14,8 @@ import java.util.concurrent.TimeUnit;
public class ScanHostTask implements Callable<ScanResult> {
- private final CancelledToken cancelledToken;
private InetAddress hostAddress;
+ private final CancelledToken cancelledToken;
private final PortScanResultAccumulator accumulator;
private final Scan scan;
private final ScanExecutionContext context;
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java
index 5809275..3a3fffd 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java
@@ -21,10 +21,10 @@ public class ScanPortTask implements Callable<PortResult> {
private static final int READ_BUFFER_SIZE = 1024;
private final CancelledToken cancelledToken;
+ private final InetAddress inetAddress;
private final PortScanRateLimiter portScanRateLimiter; // per-host shared limiter
private final Scan scan;
private final Semaphore socketLimit;
- private final InetAddress inetAddress;
private final boolean bannerRecognition;
private final int port;
private final long timeoutInNanos;