summaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-18 13:37:47 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-18 14:00:13 +0200
commit460ea9b7fac7e549c8981c44e35203ed89f21270 (patch)
treedcc38b9f3ca34fac9498d11ce80b73350c51d5f0 /src/main/java/com
parent1717f7fd69c772be9e85d657b2267418b199574b (diff)
Validate portrange already in cli parser instead of printing an error
message for every host that tries to parse the specified ports
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/it_jaros/jns/CliParser.java11
-rw-r--r--src/main/java/com/it_jaros/jns/scan/domain/PortRange.java6
2 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/com/it_jaros/jns/CliParser.java b/src/main/java/com/it_jaros/jns/CliParser.java
index 5efc30f..191dd29 100644
--- a/src/main/java/com/it_jaros/jns/CliParser.java
+++ b/src/main/java/com/it_jaros/jns/CliParser.java
@@ -1,6 +1,7 @@
package com.it_jaros.jns;
import com.it_jaros.jns.scan.ScanOptions;
+import com.it_jaros.jns.scan.domain.PortRange;
import java.util.HashSet;
import java.util.Set;
@@ -56,7 +57,7 @@ public class CliParser {
workersPerHostLimit = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0);
break;
case "--ports", "-p":
- ports = getArgument(args, ++i, currentArg);
+ ports = getArgumentAndValidate(args, ++i, currentArg, PortRange::new);
break;
case "--quiet", "-q":
quiet = true;
@@ -68,7 +69,7 @@ public class CliParser {
socketLimit = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0);
break;
case "--timeout", "-t":
- timeoutInMillis = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0);
+ timeoutInMillis = parseIntOption(args, ++i, currentArg, (Integer value) -> value > 0);
break;
default:
throw new IllegalArgumentException("No such param " + currentArg);
@@ -95,6 +96,12 @@ public class CliParser {
);
}
+ private String getArgumentAndValidate(String[] args, int index, String option, Function<String, Object> validator) {
+ String arg = getArgument(args, index, option);
+ validator.apply(arg);
+ return arg;
+ }
+
private String getArgument(String[] args, int index, String option) {
if (index >= args.length) {
throw new IllegalArgumentException(String.format("Missing argument for option %s", option));
diff --git a/src/main/java/com/it_jaros/jns/scan/domain/PortRange.java b/src/main/java/com/it_jaros/jns/scan/domain/PortRange.java
index 2f8bab8..290ca8e 100644
--- a/src/main/java/com/it_jaros/jns/scan/domain/PortRange.java
+++ b/src/main/java/com/it_jaros/jns/scan/domain/PortRange.java
@@ -13,7 +13,7 @@ public class PortRange {
public PortRange(String ports) {
if (ports == null || "".equals(ports)) {
- specifiedPorts.set(MIN_PORT, 1024);
+ specifiedPorts.set(MIN_PORT, 1024 + 1);
} else if ("all".equalsIgnoreCase(ports)) {
specifiedPorts.set(MIN_PORT, MAX_PORT + 1);
} else {
@@ -56,9 +56,9 @@ public class PortRange {
checkValue(start);
checkValue(end);
- if (start >= end) {
+ if (start > end) {
throw new IllegalArgumentException(
- String.format("Start value cannot be equal or bigger than end value '%s >= %s'", start, end));
+ String.format("Start value cannot be equal or bigger than end value '%s > %s'", start, end));
}
}