diff --git a/pms-cli b/pms-cli index a22af0a..8cdb1a2 100755 --- a/pms-cli +++ b/pms-cli @@ -23,9 +23,9 @@ operations: $(basename ${0}) {-v --verbose} $(basename ${0}) {--init} [servername] [network name] $(basename ${0}) {--datapack} [servername] [datapack dl url] - $(basename ${0}) {--start} [servername] [port] (ip) + $(basename ${0}) {--start} [servername] [port] [ip] $(basename ${0}) {--stop} [servername] - $(basename ${0}) {--restart} [servername] [port] (ip) + $(basename ${0}) {--restart} [servername] [port] [ip] $(basename ${0}) {--attach} [servername] $(basename ${0}) {--reset} [servername] $(basename ${0}) {--delete} [servername] diff --git a/utils/fn_server/broadcast.sh b/utils/fn_server/broadcast.sh index 830816c..96ad6b3 100644 --- a/utils/fn_server/broadcast.sh +++ b/utils/fn_server/broadcast.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash function broadcast() { - podman exec -it "$1" $2 + local dir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" + podman exec -it "$1" rcon -m -H 127.0.0.1 -p 25575 -P $(grep -E "^rcon.password" $dir/data/server.properties | cut -d= -f2) tellraw @a {"text": "$2"} } diff --git a/utils/init.sh b/utils/init.sh index ec77630..a2c5c42 100644 --- a/utils/init.sh +++ b/utils/init.sh @@ -10,6 +10,7 @@ function init() { local newdir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" mkdir -p "${newdir}/data/world/datapacks" + echo -e "enable-rcon=true\nrcon.password=" > "${newdir}/data/server.properties" populateConfig "${newdir}/config.json" "${2}" } diff --git a/utils/podman.sh b/utils/podman.sh index 33881ab..1a3ef43 100644 --- a/utils/podman.sh +++ b/utils/podman.sh @@ -93,9 +93,13 @@ function buildImage() { ## function startContainer() { log d "Starting container '${1}'" - readarray -t additional_ports <<< "$(getLocalConfValue $(getValueByKey 'PODMAN_DIRECTORY')/${1} 'additional_ports[]')" + + local dir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" + sed -i "s/^rcon.password=.*/rcon.password=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w12 | head -n1)/" $dir/data/server.properties + + readarray -t additional_ports <<< "$(getLocalConfValue $dir 'additional_ports[]')" [[ ${#additional_ports} -gt 0 ]] && log d "Starting with additional ports: ${additional_ports[@]}" - podman run --replace --name "${1}" --userns=keep-id:uid=1000 --rm -it -d --network "${5}" -p $([[ -n "${4}" ]] && echo ${4}:)${3}:25565 $([[ ${#additional_ports} -gt 0 ]] && for port in "${additional_ports[@]}"; do echo "-p $([[ -n ${4} ]] && echo ${4}:)${port}:${port}"; done) -v $(getValueByKey 'PODMAN_DIRECTORY')/${1}/data:/var/server "${2}" java -Dcom.mojang.eula.agree=true -jar /var/exec/server.jar --nogui --port 25565 + podman run --replace --name "${1}" --userns=keep-id:uid=1000 --rm -it -d --network "${5}" -p $([[ -n "${4}" ]] && echo ${4}:)${3}:25565 $([[ ${#additional_ports} -gt 0 ]] && for port in "${additional_ports[@]}"; do echo "-p $([[ -n ${4} ]] && echo ${4}:)${port}:${port}"; done) -v $dir/data:/var/server "${2}" java -Dcom.mojang.eula.agree=true -jar /var/exec/server.jar --nogui --port 25565 [[ $? -eq 0 ]] && log s "Container '${1}' started!" } @@ -107,6 +111,10 @@ function startContainer() { function stopContainer() { log d "Stopping container '${1}'" podman container stop --time 100 ${1} + + local dir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" + sed -i "s/^rcon.password=.*/rcon.password=/" $dir/data/server.properties + log s "Container '${1}' stopped" }