commit e82fd4ef3f2da8d74bc22d925455e1e05aa6b1d7
parent 28fef241a71af3eef6939a0e22db86d222fdea9a
Author: Matthias Jaros <jaros@mailbox.org>
Date: Thu, 2 Jul 2026 14:55:58 +0200
Refactoring for better readability
Diffstat:
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();
+ }
}