diff options
Diffstat (limited to 'src/main/java/com/it_jaros/network_scanner/CliParser.java')
| -rw-r--r-- | src/main/java/com/it_jaros/network_scanner/CliParser.java | 91 |
1 files changed, 53 insertions, 38 deletions
diff --git a/src/main/java/com/it_jaros/network_scanner/CliParser.java b/src/main/java/com/it_jaros/network_scanner/CliParser.java index dd8f82c..89b9c65 100644 --- a/src/main/java/com/it_jaros/network_scanner/CliParser.java +++ b/src/main/java/com/it_jaros/network_scanner/CliParser.java @@ -19,6 +19,7 @@ public class CliParser { String ports = CliDefaults.PORTS; boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS; boolean disableHostCheck = CliDefaults.DISABLE_HOST_CHECK; + String file = null; for (int i = 0; i < args.length; i++) { final String currentArg = args[i]; @@ -27,49 +28,63 @@ public class CliParser { continue; } - try { - switch (currentArg) { - case "--help", "-h": - usageAndExit(); - break; - case "--socketLimit", "-sl": - socketLimit = Integer.parseInt(args[++i]); - break; - case "--delay", "-d": - delayInMillis = Integer.parseInt(args[++i]); - break; - case "--timeout", "-t": - timeoutInMillis = Integer.parseInt(args[++i]); - break; - case "--maxWorkersPerHost", "-wh": - maxWorkersPerHost = Integer.parseInt(args[++i]); - break; - case "--maxHostsLimit", "-tl": - maxHostsLimit = Integer.parseInt(args[++i]); - break; - case "--ports", "-p": - ports = args[++i]; - break; - case "--showFilteredPorts", "-sf": - showFilteredPorts = true; - break; - case "--disableHostCheck", "-dt": - disableHostCheck = true; - break; - default: - throw new IllegalArgumentException("No such param " + currentArg); - } - } catch (IndexOutOfBoundsException | NumberFormatException e) { - System.out.printf("Missing or wrong argument for option %s", currentArg); - System.exit(2); + switch (currentArg) { + case "--help", "-h": + usageAndExit(); + break; + case "--socketLimit", "-sl": + socketLimit = parseIntOption(args, ++i, currentArg); + break; + case "--delay", "-d": + delayInMillis = parseIntOption(args, ++i, currentArg); + break; + case "--timeout", "-t": + timeoutInMillis = parseIntOption(args, ++i, currentArg); + break; + case "--maxWorkersPerHost", "-wh": + maxWorkersPerHost = parseIntOption(args, ++i, currentArg); + break; + case "--maxHostsLimit", "-tl": + maxHostsLimit = parseIntOption(args, ++i, currentArg); + break; + case "--ports", "-p": + ports = requireValue(args, ++i, currentArg); + break; + case "--showFilteredPorts", "-sf": + showFilteredPorts = true; + break; + case "--disableHostCheck", "-dt": + disableHostCheck = true; + break; + case "--file", "-f": + file = requireValue(args, ++i, currentArg); + break; + default: + throw new IllegalArgumentException("No such param " + currentArg); } } System.out.printf( - "Parsed arguments: targetHosts('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s), showFilteredPorts(%s), disableTargetCheck(%s) %n", - targetHosts, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, showFilteredPorts, disableHostCheck); + "Parsed arguments: targetHosts('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s), showFilteredPorts(%s), disableTargetCheck(%s), file(%s) %n", + targetHosts, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, showFilteredPorts, disableHostCheck, file); - return new ScanOptions(targetHosts.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, ports, showFilteredPorts, disableHostCheck); + return new ScanOptions(targetHosts.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, ports, showFilteredPorts, disableHostCheck, file); + } + + private String requireValue(String[] args, int index, String option) { + if (index >= args.length) { + throw new IllegalArgumentException(String.format("Missing argument for option %s", option)); + } + return args[index]; + } + + private int parseIntOption(String[] args, int index, String option) { + String value = requireValue(args, index, option); + try { + return Integer.parseInt(value); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format("Invalid argument %s for option %s", value, option)); + } } public void usageAndExit() { |
