summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/jscanner/CliParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/CliParser.java')
-rw-r--r--src/main/java/com/it_jaros/jscanner/CliParser.java143
1 files changed, 0 insertions, 143 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/CliParser.java b/src/main/java/com/it_jaros/jscanner/CliParser.java
deleted file mode 100644
index 7e27064..0000000
--- a/src/main/java/com/it_jaros/jscanner/CliParser.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.it_jaros.jscanner;
-
-import com.it_jaros.jscanner.scan.ScanOptions;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public class CliParser {
-
- public ScanOptions parseArgs(String[] args) {
- if (args.length < 1 || args[0].trim().isEmpty()) {
- throw new IllegalArgumentException("No argument given");
- }
-
- Set<String> hostsArgv = new HashSet<>();
- String hostsFile = null;
- String ports = CliDefaults.PORTS;
- boolean bannerRecognition = CliDefaults.BANNER_RECOGNITION;
- boolean disableOnlineCheck = CliDefaults.DISABLE_HOST_CHECK;
- boolean quiet = CliDefaults.QUIET;
- boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS;
- int delayInMillis = CliDefaults.DELAY_IN_MILLIS;
- int hostsLimit = CliDefaults.MAX_HOSTS_LIMIT;
- int workersPerHostLimit = CliDefaults.MAX_WORKERS_PER_HOST;
- int socketLimit = CliDefaults.SOCKET_LIMIT;
- int timeoutInMillis = CliDefaults.TIMEOUT_IN_MILLIS;
-
- for (int i = 0; i < args.length; i++) {
- final String currentArg = args[i];
- if (!currentArg.startsWith("-")) {
- hostsArgv.add(currentArg);
- continue;
- }
-
- switch (currentArg) {
- case "--bannerRecognition", "-b":
- bannerRecognition = true;
- break;
- case "--delay", "-d":
- delayInMillis = parseIntOption(args, ++i, currentArg);
- break;
- case "--disableOnlineCheck", "-do":
- disableOnlineCheck = true;
- break;
- case "--help", "-h":
- printUsageHelp();
- throw new HelpRequested();
- case "--input", "-i":
- hostsFile = getArgument(args, ++i, currentArg);
- break;
- case "--hostsLimit", "-hl":
- hostsLimit = parseIntOption(args, ++i, currentArg);
- break;
- case "--workersPerHostLimit", "-whl":
- workersPerHostLimit = parseIntOption(args, ++i, currentArg);
- break;
- case "--ports", "-p":
- ports = getArgument(args, ++i, currentArg);
- break;
- case "--quiet", "-q":
- quiet = true;
- break;
- case "--showFilteredPorts", "-sf":
- showFilteredPorts = true;
- break;
- case "--socketLimit", "-sl":
- socketLimit = parseIntOption(args, ++i, currentArg);
- break;
- case "--timeout", "-t":
- timeoutInMillis = parseIntOption(args, ++i, currentArg);
- break;
- default:
- throw new IllegalArgumentException("No such param " + currentArg);
- }
- }
-
- if (hostsArgv.isEmpty() && hostsFile == null) {
- throw new IllegalArgumentException("No input provided. Check with --help for available options.");
- }
-
- return new ScanOptions(
- hostsArgv.stream().toList(),
- hostsFile,
- ports,
- bannerRecognition,
- disableOnlineCheck,
- quiet,
- showFilteredPorts,
- delayInMillis,
- hostsLimit,
- workersPerHostLimit,
- socketLimit,
- timeoutInMillis
- );
- }
-
- private String getArgument(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 = getArgument(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 printUsageHelp() {
- StringBuilder usage = new StringBuilder();
- usage.append("""
- Usage:
- java -jar jscanner.jar [OPTIONS] [<host>,...]
-
- Options:
- """);
- usage.append("""
- --bannerRecognition, -b:\t\tEnable banner recognition to find out which service is running behind port (Default: %b)
- --delay, -d:\t\t\tWaiting period in millis for connection attempts for a host (Default: %d)
- --disableOnlineCheck, -do:\t\tDon't check if Host is reachable (Default: %b)
- --input, -i:\t\t\tRead file to get host targets to scan. If set to "-" than Stdin is read (Default: null)
- --hostsLimit, -hl:\t\t\tMax number of hosts that are scanned in parallel (Default: %d)
- --workersPerHostLimit, -whl:\tMax workers per host. (Default: %d)
- --ports, -p:\t\t\tDefine ports to be scanned (Default: %s)
- --quiet, -q:\t\t\tDo not output progress bar (Default: %b)
- --showFilteredPorts, -sf:\t\tShow also filtered ports (Default: %b)
- --socketLimit, -sl:\t\t\tSocket limit in total. You can not scan more ports than allowed here (Default: %d)
- --timeout, -t:\t\t\tTimeout in millis per connection attempt, 0 means infinite (Default: %d)
- """.formatted(CliDefaults.BANNER_RECOGNITION, CliDefaults.DELAY_IN_MILLIS, CliDefaults.DISABLE_HOST_CHECK, CliDefaults.MAX_HOSTS_LIMIT, CliDefaults.MAX_WORKERS_PER_HOST, CliDefaults.PORTS, CliDefaults.QUIET, CliDefaults.SHOW_FILTERED_PORTS, CliDefaults.SOCKET_LIMIT, CliDefaults.TIMEOUT_IN_MILLIS)
- );
- usage.append("""
-
- Examples:
- java -jar jscanner.jar localhost
- java -jar jscanner.jar fd00::1
- """);
- System.err.println(usage);
- }
-}