diff options
| author | 2026-08-13 21:39:43 +0200 | |
|---|---|---|
| committer | 2026-08-13 21:39:43 +0200 | |
| commit | 74b82a3230a99a0499832cb4f8bbdd51bb144faa (patch) | |
| tree | 4a2f5572c32c859f74e7ed9acfb59e31809f848d /src/main/java | |
| parent | 4b5dbb6b166d61bfd409ca460db1ef7a9bad4b0e (diff) | |
Print error in CliPrinter instead of Scanner
Diffstat (limited to 'src/main/java')
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; |
