summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/it_jaros/networkScanner/PortRange.java31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/main/java/com/it_jaros/networkScanner/PortRange.java b/src/main/java/com/it_jaros/networkScanner/PortRange.java
index 6f1c529..74bed2a 100644
--- a/src/main/java/com/it_jaros/networkScanner/PortRange.java
+++ b/src/main/java/com/it_jaros/networkScanner/PortRange.java
@@ -21,25 +21,50 @@ public class PortRange {
}
String[] splitComma = ports.split(",");
- for (String commaValue: splitComma) {
+ for (String commaValue : splitComma) {
if (commaValue.contains("-")) {
String[] rangeValue = commaValue.split("-");
if (rangeValue.length > 2) {
throw new IllegalArgumentException(String.format("Argument contains too many '-'' %s", commaValue));
}
-
+
int start = Integer.parseInt(rangeValue[0]);
int end = Integer.parseInt(rangeValue[1]);
+ checkValues(start, end);
specifiedPorts.set(start, end + 1);
} else {
+ int port = Integer.parseInt(commaValue);
+ checkValue(port);
specifiedPorts.set(Integer.parseInt(commaValue));
}
}
-
+
availablePorts.or(specifiedPorts);
cursor = availablePorts.nextSetBit(MIN_PORT);
}
+ private void checkValues(int start, int end) {
+ checkValue(start);
+ checkValue(end);
+
+ if (start >= end) {
+ throw new IllegalArgumentException(
+ String.format("Start value cannot be equal or bigger than end value '%s >= %s'", start, end));
+ }
+ }
+
+ private void checkValue(int port) {
+ if (port < MIN_PORT) {
+ throw new IllegalArgumentException(
+ String.format("Start value smaller than allowed range %s < %s", port, MIN_PORT));
+ }
+
+ if (port > MAX_PORT) {
+ throw new IllegalArgumentException(
+ String.format("End value bigger than allowed range %s > %s", port, MAX_PORT));
+ }
+ }
+
public synchronized int next() {
int p = availablePorts.nextSetBit(cursor);
if (p > 0) {