#!/bin/sh set -e ENV_FILE=".env" [ -f "$ENV_FILE" ] || { echo "Error: $ENV_FILE not found."; exit 1; } while IFS='=' read -r key value; do case "$key" in ''|\#*) continue ;; esac value=$(echo "$value" | sed 's/^"//;s/"$//;s/^'\''//;s/'\''$//') export "$key=$value" done < "$ENV_FILE" [ -z "$RCON_PORT" ] && echo "Error: RCON_PORT not set." && exit 1 [ -z "$RCON_PASSWORD" ] && echo "Error: RCON_PASSWORD not set." && exit 1 [ -z "$SERVER_NAME" ] && echo "Error: SERVER_NAME not set." && exit 1 COMMAND="$*" [ -z "$COMMAND" ] && echo "Error: no command provided." && exit 1 [ "$(printf '%s' "$COMMAND" | wc -c)" -gt 256 ] && echo "Error: command too long." && exit 1 LOGFILE="./commands.log" touch "$LOGFILE" docker exec -i "${SERVER_NAME}_minecraft" rcon-cli \ --host localhost \ --port "${RCON_PORT}" \ --password "${RCON_PASSWORD}" \ $COMMAND \ && echo "$(date '+%Y-%m-%d %H:%M:%S') | $COMMAND" >> "$LOGFILE" \ && echo "Command sent: $COMMAND" \ || { echo "Error: failed to send command to server."; exit 1; }