diff --git a/Dockerfile b/Dockerfile index f5d7b65..d5232d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,15 @@ FROM cgr.dev/chainguard/wolfi-base -RUN apk add --no-cache tini +RUN apk add --no-cache tini bash # nobody 65534:65534 USER 65534:65534 -COPY magellan / +COPY magellan /magellan +COPY bin/magellan.sh /usr/bin/magellan.sh -CMD [ "/magellan" ] + +CMD [ "/magellan.sh" ] ENTRYPOINT [ "/sbin/tini", "--" ] diff --git a/bin/magellan.sh b/bin/magellan.sh old mode 100644 new mode 100755 index 0850f87..8d1744d --- a/bin/magellan.sh +++ b/bin/magellan.sh @@ -1,17 +1,78 @@ +#!/bin/bash + +EXE=./magellan +SUBNETS="" +PORTS="" +USER="" +PASS="" +ARGS="" + function build(){ - go mod tidy && go build -C bin/magellan + go mod tidy && go build -C bin/magellan } function scan() { - ./magellan scan --subnet 172.16.0.0 --port 443 + # ./magellan scan --subnet 172.16.0.0 --port 443 + ${EXE} scan --subnet ${SUBNETS} --port ${PORTS} } function list(){ - ./magellan list + # ./magellan list + ${EXE} list } function collect() { - ./magellan collect --user admin --pass password + # ./magellan collect --user admin --pass password + ${EXE} collect --user ${USER} --pass ${PASS} } + +# parse incoming arguments to set variables +while [[ $# -gt 0 ]]; do + case $1 in + --subnet) + SUBNETS="$2" + shift # past argument + shift # past value + ;; + -p|--port) + PORTS="$2" + shift # past argument + shift # past value + ;; + --user) + USER="$2" + shift # past argument + shift # past value + ;; + --pass|--password) + PASS="$2" + shift + shift + ;; + -*|--*) + echo "Unknown option $1" + exit 1 + ;; + *) + ARGS+=("$1") # save positional arg + shift # past argument + ;; + esac +done + +set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters + +echo "subnets = ${SUBNETS}" +echo "ports = ${PORTS}" +echo "user = ${USER}" +echo "pass = ..." + +if [[ -n $1 ]]; then + echo "Last line of file specified as non-opt/last argument:" + tail -1 "$1" +fi + +scan +collect \ No newline at end of file