From 9875f9b92c0fc06706bc3d3600b4ee24929f01be Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 12 Jul 2024 18:03:31 -0700 Subject: [PATCH] More robust handling of environment variables. --- Dockerfile | 25 +++++++++++++-------- run.sh | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 run.sh diff --git a/Dockerfile b/Dockerfile index 874fa1f..deaf176 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,23 @@ FROM node:lts-slim AS base -RUN npm i holesail -g +WORKDIR /temp +COPY run.sh . +RUN chmod +x run.sh -ENV MODE client +RUN npm install -g holesail + +ENV MODE server ENV HOST 0.0.0.0 ENV PORT 8989 +ENV PUBLIC true +ENV USERNAME admin +ENV PASSWORD admin +ENV ROLE user +ENV CONNECTOR "" +ENV FORCE "" -EXPOSE 8989 +#EXPOSE 8989 -ENTRYPOINT sh -c ' \ - if [ "$MODE" = "server" ]; then \ - holesail --live $PORT --host $HOST --connector $CONNECTOR; \ - elif [ "$MODE" = "client" ]; then \ - holesail --port $PORT --host $HOST $CONNECTOR; \ - fi ' +WORKDIR /data + +ENTRYPOINT [ "/temp/run.sh" ] diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..2f7f897 --- /dev/null +++ b/run.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +CYAN="\033[1;96m" +RED="\033[0;91m" +GREEN="\033[0;92m" +RESET='\033[0m' + +print () { + echo -e "$1 $2 $RESET" +} + +info () { + print "$CYAN" "$1" +} + +error() { + print "$RED" "$1" +} + +success() { + print "$GREEN" "$1" +} + +cmd_argument_builder () { + local args=""; + case "$MODE" in + "client") + [[ "$PORT" ]] && args="$args --port $PORT"; + [[ "$HOST" ]] && args="$args --host $HOST"; + [[ "$CONNECTOR" ]] && args="$args $CONNECTOR"; + ;; + "server") + [[ "$PORT" ]] && args="$args --live $PORT"; + [[ "$HOST" ]] && args="$args --host $HOST"; + [[ "$PUBLIC" = "true" ]] && args="$args --public"; + [[ "$FORCE" = "true" ]] && args="$args --force"; + [[ "$CONNECTOR" ]] && args="$args --connector $CONNECTOR"; + ;; + "filemanager") + args="--filemanager"; + [[ "$FORCE" = "true" ]] && args="$args --force"; + [[ "$PUBLIC" = "true" ]] && args="$args --public"; + [[ "$HOST" ]] && args="$args --host $HOST"; + [[ "$USERNAME" ]] && args="$args --username $USERNAME"; + [[ "$PASSWORD" ]] && args="$args --password $PASSWORD"; + [[ "$ROLE" = "admin" ]] && args="$args --role admin"; + [[ "$ROLE" = "user" ]] && args="$args --role user"; + [[ "$CONNECTOR" ]] && args="$args --connector $CONNECTOR"; + ;; + esac + + printf "%s" "$args"; +} + + +ARGS="$(cmd_argument_builder)" + +if [[ ! $ARGS ]]; then + error "Invalid Mode." + exit 1 +fi + +holesail $ARGS +