summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/it_jaros/jscanner/App.java8
-rw-r--r--src/main/java/com/it_jaros/jscanner/CliParser.java21
-rw-r--r--src/main/java/com/it_jaros/jscanner/ScanOptions.java15
-rw-r--r--src/main/java/com/it_jaros/jscanner/ScanState.java25
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scanner.java10
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();