Compare commits
21 commits
main
...
rcon_featu
Author | SHA1 | Date | |
---|---|---|---|
92a8cfc9b7 | |||
cd3a75d324 | |||
06ad872d58 | |||
8ec0570eb8 | |||
3c9237e193 | |||
ab1f859d6b | |||
cb58602906 | |||
b2ba664349 | |||
9838b178dd | |||
046f1e8a8d | |||
167179df7c | |||
54484cbf56 | |||
06d86accaa | |||
a11e37ce72 | |||
c77b871032 | |||
1a6b2aab99 | |||
0e57ea4d88 | |||
9669f49d87 | |||
7636860185 | |||
e91533b93d | |||
9941587cf1 |
14 changed files with 68 additions and 8 deletions
|
@ -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
15
pms-cli
|
@ -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
|
||||
|
|
18
utils/fn_server/functions.sh
Normal file
18
utils/fn_server/functions.sh
Normal 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}]
|
||||
}
|
|
@ -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}"
|
||||
}
|
||||
|
|
@ -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
28
utils/server.sh
Normal 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
|
||||
}
|
Loading…
Reference in a new issue