Compare commits

...

21 commits

Author SHA1 Message Date
92a8cfc9b7 autocommit 2024-04-21 16:23:16 +02:00
cd3a75d324 autocommit 2024-04-21 15:57:18 +02:00
06ad872d58 autocommit 2024-04-21 15:53:32 +02:00
8ec0570eb8 autocommit 2024-04-21 15:53:01 +02:00
3c9237e193 autocommit 2024-04-21 15:52:30 +02:00
ab1f859d6b autocommit 2024-04-21 15:42:20 +02:00
cb58602906 autocommit 2024-04-21 15:39:51 +02:00
b2ba664349 autocommit 2024-04-21 14:55:28 +02:00
9838b178dd autocommit 2024-04-21 14:54:44 +02:00
046f1e8a8d autocommit 2024-04-21 14:54:01 +02:00
167179df7c autocommit 2024-04-21 14:51:59 +02:00
54484cbf56 wip 2024-04-21 14:49:59 +02:00
06d86accaa wip 2024-04-21 14:49:23 +02:00
a11e37ce72 revert "wip"
This reverts commit c77b871032.
2024-04-21 14:48:19 +02:00
c77b871032 wip 2024-04-21 14:47:40 +02:00
1a6b2aab99 wip 2024-04-21 14:47:03 +02:00
0e57ea4d88 wip 2024-04-21 14:46:19 +02:00
9669f49d87 wip 2024-04-21 14:33:06 +02:00
7636860185 add server to parameter list 2024-04-21 14:30:49 +02:00
e91533b93d add rcon package to image 2024-04-21 14:29:55 +02:00
9941587cf1 try to execute external script 2024-04-21 14:28:31 +02:00
14 changed files with 68 additions and 8 deletions

View file

@ -1,5 +1,5 @@
FROM docker.io/alpine:3.19
RUN apk add openjdk17-jre
RUN apk add openjdk17-jre rcon
RUN adduser -u 1000 -h /var/server -D execute
RUN mkdir -p /var/exec

15
pms-cli
View file

@ -8,7 +8,7 @@ readonly TEMPLATEDIR="${ROOTPATH}/.template"
readonly BUILDDIR="$(mktemp -d /tmp/pms-cli.XXXXXX)"
readonly CONFIG="/usr/local/noveria/etc/pms-cli/pms-cli.json"
for util in ${ROOTPATH}/utils/*; do
for util in ${ROOTPATH}/utils/*.sh; do
source ${util}
done
@ -23,12 +23,13 @@ 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]"
$(basename ${0}) {--delete} [servername]
$(basename ${0}) {--server} [servername] [command]"
}
function version() {
@ -44,7 +45,7 @@ the terms of the ${LICENSE}"
###
OPT_SHORT="hVv"
OPT_LONG="help,version,verbose,init:,datapack:,start:,stop:,restart:,attach:,reset:,delete:"
OPT_LONG="help,version,verbose,init:,datapack:,start:,stop:,restart:,attach:,reset:,delete:,server:"
TEMP=$(getopt -o ${OPT_SHORT} --long ${OPT_LONG} -n $(basename ${0}) -- "$@")
if [ "$?" != 0 ]; then
@ -102,6 +103,10 @@ while true; do
stop "${1}"
delete "${1}"
;;
--server)
shift
server "${1}" "${3}" "${4}"
;;
--)
shift
break

View file

@ -0,0 +1,18 @@
#!/usr/bin/env bash
function help() {
echo -e "usage: $(basename ${0}) --server $1 <operation>
operations:
$(basename ${0}) --server $1 broadcast \"[message]\""
}
function restart_announcement() {
for count in {10..1}; do
broadcast "$1" "Server restarting in $count"
done
}
function broadcast() {
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\":\"[SYSTEM] \",\"color\":\"red\",\"bold\":true},{\"text\": \"$2\",\"color\":\"light_purple\",\"bold\":false}]
}

View file

@ -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}"
}

View file

@ -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"
}

28
utils/server.sh Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
function server() {
for fn_server in ${ROOTPATH}/utils/fn_server/*.sh; do
source ${fn_server}
done
local server="$1"
if [[ "$2" != "" ]]; then
case "${2}" in
"help")
help "$server"
;;
"broadcast")
shift
broadcast "$server" "$2"
;;
"restart")
shift
restart_announcement "$server"
;;
*)
help "$server"
log e "Unknown subcommand: '$2'"
esac
fi
}