Merge ip_feature with main (#1)

This branch adds the ability to define the binding ip as an extra parameter.
Tested and working

Reviewed-on: #1
Co-authored-by: LinuxSquare <linuxscripting.sh@gmail.com>
Co-committed-by: LinuxSquare <linuxscripting.sh@gmail.com>
This commit is contained in:
LinuxSquare 2024-03-11 18:31:34 +01:00 committed by LinuxSquare
parent c6b0c245da
commit f69788df94
6 changed files with 34 additions and 12 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
pms-cli.json pms-cli.json
containers/

View file

@ -3,5 +3,6 @@
"build": 1, "build": 1,
"software": "x", "software": "x",
"release": "latest", "release": "latest",
"version": "1" "version": "1",
"podman_network": "x"
} }

12
pms-cli
View file

@ -21,11 +21,11 @@ operations:
$(basename ${0}) {-h --help} $(basename ${0}) {-h --help}
$(basename ${0}) {-V --version} $(basename ${0}) {-V --version}
$(basename ${0}) {-v --verbose} $(basename ${0}) {-v --verbose}
$(basename ${0}) {--init} [servername] $(basename ${0}) {--init} [servername] [network name]
$(basename ${0}) {--datapack} [servername] [datapack dl url] $(basename ${0}) {--datapack} [servername] [datapack dl url]
$(basename ${0}) {--start} [servername] [port] $(basename ${0}) {--start} [servername] [port] (ip)
$(basename ${0}) {--stop} [servername] $(basename ${0}) {--stop} [servername]
$(basename ${0}) {--restart} [servername] [port] $(basename ${0}) {--restart} [servername] [port] (ip)
$(basename ${0}) {--attach} [servername] $(basename ${0}) {--attach} [servername]
$(basename ${0}) {--reset} [servername]" $(basename ${0}) {--reset} [servername]"
} }
@ -68,7 +68,7 @@ while true; do
;; ;;
--init) --init)
shift shift
init "$1" init "$1" "$3"
;; ;;
--datapack) --datapack)
shift shift
@ -76,7 +76,7 @@ while true; do
;; ;;
--start) --start)
shift shift
start "$1" "$3" start "$1" "$3" "$4"
;; ;;
--stop) --stop)
shift shift
@ -85,7 +85,7 @@ while true; do
--restart) --restart)
shift shift
stop "$1" stop "$1"
start "$1" "$3" start "$1" "$3" "$4"
;; ;;
--attach) --attach)
shift shift

View file

@ -1,6 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
function init() { function init() {
createNetwork "$2"
if [[ -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then if [[ -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then
log e "Directory '${1}' already exists" log e "Directory '${1}' already exists"
exit 1 exit 1
@ -9,11 +10,12 @@ function init() {
local newdir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" local newdir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}"
mkdir -p "${newdir}/data/world/datapacks" mkdir -p "${newdir}/data/world/datapacks"
populateConfig "${newdir}/config.json" populateConfig "${newdir}/config.json" "$2"
} }
function populateConfig() { function populateConfig() {
local config="$1" local config="$1"
local network_name="$2"
local runnertype local runnertype
local build local build
@ -118,5 +120,5 @@ function populateConfig() {
;; ;;
esac esac
jq "(.type=\"$runnertype\")|(.build=$build)|(.software=\"$software\")|(.release=\"$release\")|(.version=\"$version\")" ${TEMPLATEDIR}/config.json > "$config" jq "(.type=\"$runnertype\")|(.build=$build)|(.software=\"$software\")|(.release=\"$release\")|(.version=\"$version\")|(.podman_network=\"$network_name\")" ${TEMPLATEDIR}/config.json > "$config"
} }

View file

@ -93,7 +93,7 @@ function buildImage() {
## ##
function startContainer() { function startContainer() {
log d "Starting container '$1'" log d "Starting container '$1'"
podman run --name "$1" --userns=keep-id:uid=1000 --rm -it -d -p $3:25565 -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 --name "$1" --userns=keep-id:uid=1000 --rm -it -d --network "$5" -p $([[ -n "$4" ]] && echo ${4}:)$3:25565 -v $(getValueByKey 'PODMAN_DIRECTORY')/$1/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!" [[ $? -eq 0 ]] && log s "Container '$1' started!"
} }
@ -107,3 +107,20 @@ function stopContainer() {
podman container stop --time 100 $1 podman container stop --time 100 $1
log s "Container '$1' stopped" log s "Container '$1' stopped"
} }
##
# create a podman network
#
# $1 - string: network-name
##
function createNetwork() {
if [[ -z "$1" ]]; then
log e "Network name is unspecified. Please provide a network-name"
exit 1
fi
if [[ -n $(podman network ls | grep "$1") ]]; then
log w "Network '$1' exists already, won't create!"
return 1
fi
podman network create "$1"
}

View file

@ -16,6 +16,7 @@ function start() {
local software="$(getLocalConfValue $dir 'software')" local software="$(getLocalConfValue $dir 'software')"
local version="$(getLocalConfValue $dir 'version')" local version="$(getLocalConfValue $dir 'version')"
local build="$(getLocalConfValue $dir 'build')" local build="$(getLocalConfValue $dir 'build')"
local podman_network="$(getLocalConfValue $dir 'podman_network')"
case "$(getLocalConfValue $dir 'type')" in case "$(getLocalConfValue $dir 'type')" in
"server") "server")
@ -44,6 +45,6 @@ function start() {
fi fi
fi fi
log i "Starting container '$1' with image '$version/$software:$build' on port '$2'" log i "Starting container '$1' with image '$version/$software:$build' on port '$([[ -n "$3" ]] && echo ${3}:)$2'"
startContainer "$1" "$version/$software:$build" "$2" startContainer "$1" "$version/$software:$build" "$2" "$3" "$podman_network"
} }