diff options
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/App.java | 8 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/CliParser.java | 21 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/ScanOptions.java | 15 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/ScanState.java | 25 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/Scanner.java | 10 |
5 files changed, 44 insertions, 35 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/App.java b/src/main/java/com/it_jaros/jscanner/App.java index 573e46f..d3652ee 100644 --- a/src/main/java/com/it_jaros/jscanner/App.java +++ b/src/main/java/com/it_jaros/jscanner/App.java @@ -7,16 +7,19 @@ public class App { private static Thread shutdownHook; private static final CountDownLatch shutdownLatch = new CountDownLatch(1); + private static int exitCode = 0; public static void main(String[] args) { try { run(args); } catch (Exception e) { - System.out.printf("%nFATAL ERROR: %s", e.getMessage()); + System.err.println(e.getMessage()); } finally { shutdownLatch.countDown(); removeShutdownHook(); } + + System.exit(exitCode); } private static void run(String[] args) throws Exception { @@ -41,7 +44,8 @@ public class App { return cliParser.parseArgs(args); } catch (IllegalArgumentException e) { System.out.printf("Error while parsing arguments: %s%n", e.getMessage()); - cliParser.usageAndExit(1); + cliParser.printUsageHelp(); + exitCode = 1; throw e; } } diff --git a/src/main/java/com/it_jaros/jscanner/CliParser.java b/src/main/java/com/it_jaros/jscanner/CliParser.java index 81ee88d..a63b47f 100644 --- a/src/main/java/com/it_jaros/jscanner/CliParser.java +++ b/src/main/java/com/it_jaros/jscanner/CliParser.java @@ -41,7 +41,8 @@ public class CliParser { disableOnlineCheck = true; break; case "--help", "-h": - usageAndExit(0); + printUsageHelp(); + System.exit(0); break; case "--input", "-i": hostsFile = getArgument(args, ++i, currentArg); @@ -76,7 +77,20 @@ public class CliParser { throw new IllegalArgumentException("No input provided. Check with --help for available options."); } - return new ScanOptions(hostsArgv.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, ports, showFilteredPorts, disableOnlineCheck, hostsFile, quiet, bannerRecognition); + return new ScanOptions( + hostsArgv.stream().toList(), + hostsFile, + ports, + bannerRecognition, + disableOnlineCheck, + quiet, + showFilteredPorts, + delayInMillis, + maxHostsLimit, + maxWorkersPerHost, + socketLimit, + timeoutInMillis + ); } private String getArgument(String[] args, int index, String option) { @@ -95,7 +109,7 @@ public class CliParser { } } - public void usageAndExit(int returnCode) { + public void printUsageHelp() { StringBuilder usage = new StringBuilder(); usage.append(""" Usage: @@ -124,6 +138,5 @@ public class CliParser { java -jar jscanner.jar fd00::1 """); System.err.println(usage); - System.exit(returnCode); } } diff --git a/src/main/java/com/it_jaros/jscanner/ScanOptions.java b/src/main/java/com/it_jaros/jscanner/ScanOptions.java index 2f6d883..5dcb822 100644 --- a/src/main/java/com/it_jaros/jscanner/ScanOptions.java +++ b/src/main/java/com/it_jaros/jscanner/ScanOptions.java @@ -2,4 +2,17 @@ package com.it_jaros.jscanner; import java.util.List; -public record ScanOptions(List<String> hostsArgv, int openSocketLimit, int delayInMillis, int timeoutInMillis, int maxWorkersPerHost, int maxHostsLimit, String ports, boolean showFilteredPorts, boolean disableHostCheck, String hostsFile, boolean quiet, boolean bannerRecognition) {} +public record ScanOptions( + List<String> hostsArgv, + String hostsFile, + String ports, + boolean bannerRecognition, + boolean disableOnlineCheck, + boolean quiet, + boolean showFilteredPorts, + int delayInMillis, + int maxHostsLimit, + int maxWorkersPerHost, + int socketLimit, + int timeoutInMillis +) {} diff --git a/src/main/java/com/it_jaros/jscanner/ScanState.java b/src/main/java/com/it_jaros/jscanner/ScanState.java deleted file mode 100644 index 232d1a8..0000000 --- a/src/main/java/com/it_jaros/jscanner/ScanState.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.it_jaros.jscanner; - -import java.util.ArrayList; -import java.util.List; - -public class ScanState { - private final List<ScanResult> scanResult; - - public ScanState() { - // scanResult can not be given from outside because this class controls full access to it - this.scanResult = new ArrayList<>(); - } - - public void addScanResult(ScanResult newResult) { - synchronized (this.scanResult) { - this.scanResult.add(newResult); - } - } - - public List<ScanResult> getCopyOfResults() { - synchronized (scanResult) { - return List.copyOf(scanResult); - } - } -} diff --git a/src/main/java/com/it_jaros/jscanner/Scanner.java b/src/main/java/com/it_jaros/jscanner/Scanner.java index e22f18c..1da20fd 100644 --- a/src/main/java/com/it_jaros/jscanner/Scanner.java +++ b/src/main/java/com/it_jaros/jscanner/Scanner.java @@ -47,7 +47,7 @@ public class Scanner implements AutoCloseable { } public Scanner(ScanOptions options) { - this(options.openSocketLimit(), options.timeoutInMillis(), options.delayInMillis(), options.maxWorkersPerHost(), options.maxHostsLimit(), options.disableHostCheck(), options.bannerRecognition()); + this(options.socketLimit(), options.timeoutInMillis(), options.delayInMillis(), options.maxWorkersPerHost(), options.maxHostsLimit(), options.disableOnlineCheck(), options.bannerRecognition()); } @@ -72,7 +72,9 @@ public class Scanner implements AutoCloseable { scan.getThreadCounter().inc(); scan.getHostCounter().inc(); scan.getHostTotalCounter().inc(); - if (cancelled) return null; + if (cancelled) { + return null; + } return scanHostPorts(host, scan); } finally { scan.getThreadCounter().dec(); @@ -147,7 +149,9 @@ public class Scanner implements AutoCloseable { try { scan.getThreadCounter().inc(); waitForSlot(portSlotFactory); - if (cancelled) return null; + if (cancelled) { + return null; + } return checkPort(host, port, scan); } finally { scan.getThreadCounter().dec(); |
