diff options
| author | 2026-07-02 14:12:28 +0200 | |
|---|---|---|
| committer | 2026-07-09 09:59:28 +0200 | |
| commit | f5e5e45fec284192710ee95af4409ac572fc4127 (patch) | |
| tree | 2294b2e36d430618aa0a5e6d081520dba2253f30 /src/main/java/com/it_jaros/jscanner/App.java | |
| parent | e7c1ff527b171f76260efd0f69f8d3f4f7360123 (diff) | |
Finally i managed to print also intermediate results when stopping
process from running with strg-c
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/App.java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/App.java | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/App.java b/src/main/java/com/it_jaros/jscanner/App.java index 119c42d..c021821 100644 --- a/src/main/java/com/it_jaros/jscanner/App.java +++ b/src/main/java/com/it_jaros/jscanner/App.java @@ -9,28 +9,41 @@ public class App { private static Thread shutdownHook; public static void main(String[] args) { - CliParser cliParser = new CliParser(); + // 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(); + } + } catch (Exception e) { + System.out.printf("ERROR: %s", e.getMessage()); + } + } + + private static ScanOptions parseOptions(String[] args) { + CliParser cliParser = new CliParser(); try { - ScanOptions options = cliParser.parseArgs(args); - Scanner scanner = new Scanner(options); - addShutdownHook(scanner, options.showFilteredPorts()); - printResults(scanner.scan(options), options.showFilteredPorts()); + return cliParser.parseArgs(args); } catch (IllegalArgumentException e) { System.out.printf("Error while parsing arguments: %s", e.getMessage()); System.out.println(); - cliParser.usageAndExit(); - } catch (Exception e) { - System.out.printf("ERROR: %s", e.getMessage()); - } finally { - removeShutdownHook(); } + + cliParser.usageAndExit(1); + return null; } - private static void addShutdownHook(Scanner scanner, boolean showFilteredPorts) { + private static void addShutdownHook(Scan scan, Scanner scanner, ScanOptions scanOptions) { shutdownHook = new Thread(() -> { System.err.println("\nCtrl-C received."); scanner.cancel(); + printScanIntermediateResult(scan, scanOptions); }); Runtime.getRuntime().addShutdownHook(shutdownHook); } @@ -47,11 +60,23 @@ public class App { } } - public static void printResults(List<ScanResult> results, boolean showFilteredPorts) { - results.forEach((ScanResult r) -> printResult(r, showFilteredPorts)); + public static void printScanIntermediateResult(Scan scan, ScanOptions scanOptions) { + printScanResults(scan.state().getSnapshotOfScanResults(), scan.state(), scanOptions); + } + + private static void printScanResults(List<ScanResult> result, ScanState state, ScanOptions options) { + printStats(state); + result.forEach((ScanResult r) -> printPortsResults(r, options.showFilteredPorts())); + } + + private static void printStats(ScanState state) { + System.out.println("--------------------"); + System.out.println("Stats:"); + System.out.println("Peak concurrent connects: " + state.getCounter().max()); + System.out.println("--------------------"); } - private static void printResult(ScanResult result, boolean showFilteredPorts) { + private static void printPortsResults(ScanResult result, boolean showFilteredPorts) { if (result.openPorts().isEmpty() && (!showFilteredPorts || result.filteredPorts().isEmpty())) { return; } |
