jscanner

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit e82fd4ef3f2da8d74bc22d925455e1e05aa6b1d7
parent 28fef241a71af3eef6939a0e22db86d222fdea9a
Author: Matthias Jaros <jaros@mailbox.org>
Date:   Thu,  2 Jul 2026 14:55:58 +0200

Refactoring for better readability

Diffstat:
Msrc/main/java/com/it_jaros/jscanner/App.java | 45++++++++++++++++++++++++++++-----------------
Msrc/main/java/com/it_jaros/jscanner/Scan.java | 8++++++++
2 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/it_jaros/jscanner/App.java b/src/main/java/com/it_jaros/jscanner/App.java @@ -9,22 +9,25 @@ public class App { private static Thread shutdownHook; public static void main(String[] args) { - // just in case catch everything try { - ScanOptions options = parseOptions(args); - if (options == null) return; - try (Scanner scanner = new Scanner(options)) { - Scan scan = scanner.createScan(options); - addShutdownHook(scan, scanner, options); - printScanResults(scanner.runScan(scan), scan.state(), options); - } finally { - removeShutdownHook(); - } + run(args); } catch (Exception e) { System.out.printf("ERROR: %s", e.getMessage()); } } + private static void run(String[] args) throws Exception { + ScanOptions options = parseOptions(args); + if (options == null) return; + try (Scanner scanner = new Scanner(options)) { + Scan scan = scanner.createScan(options); + addShutdownHook(scan, scanner, options); + scanner.runScan(scan); + printScanResults(scan, options); + } finally { + removeShutdownHook(); + } + } private static ScanOptions parseOptions(String[] args) { CliParser cliParser = new CliParser(); @@ -39,11 +42,19 @@ public class App { return null; } + /** + * Allows us to handle signal int events + * Prints intermediate result + * + * @param scan + * @param scanner + * @param scanOptions + */ private static void addShutdownHook(Scan scan, Scanner scanner, ScanOptions scanOptions) { shutdownHook = new Thread(() -> { System.err.println("\nCtrl-C received."); scanner.cancel(); - printScanIntermediateResult(scan, scanOptions); + printScanResults(scan, scanOptions); }); Runtime.getRuntime().addShutdownHook(shutdownHook); } @@ -60,19 +71,19 @@ public class App { } } - public static void printScanIntermediateResult(Scan scan, ScanOptions scanOptions) { - printScanResults(scan.state().getSnapshotOfScanResults(), scan.state(), scanOptions); + public static void printScanResults(Scan scan, ScanOptions scanOptions) { + printScanResults(scan.getResults(), scan.getPeakConcurrentConnects(), scanOptions); } - private static void printScanResults(List<ScanResult> result, ScanState state, ScanOptions options) { - printStats(state); + private static void printScanResults(List<ScanResult> result, int max, ScanOptions options) { + printStats(max); result.forEach((ScanResult r) -> printPortsResults(r, options.showFilteredPorts())); } - private static void printStats(ScanState state) { + private static void printStats(int max) { System.out.println("--------------------"); System.out.println("Stats:"); - System.out.println("Peak concurrent connects: " + state.getCounter().max()); + System.out.println("Peak concurrent connects: " + max); System.out.println("--------------------"); } diff --git a/src/main/java/com/it_jaros/jscanner/Scan.java b/src/main/java/com/it_jaros/jscanner/Scan.java @@ -3,4 +3,12 @@ package com.it_jaros.jscanner; import java.util.List; public record Scan(List<String> hosts, String ports, ScanState state) { + + public List<ScanResult> getResults() { + return this.state.getSnapshotOfScanResults(); + } + + public int getPeakConcurrentConnects() { + return this.state.getCounter().max(); + } }