diff --git a/.template/config.json b/.template/config.json index 1d68bc8..3cce315 100644 --- a/.template/config.json +++ b/.template/config.json @@ -3,5 +3,6 @@ "build": 1, "software": "x", "release": "latest", - "version": "1" + "version": "1", + "podman_network": "x" } diff --git a/pms-cli b/pms-cli index 782503e..30f267f 100755 --- a/pms-cli +++ b/pms-cli @@ -21,7 +21,7 @@ operations: $(basename ${0}) {-h --help} $(basename ${0}) {-V --version} $(basename ${0}) {-v --verbose} - $(basename ${0}) {--init} [servername] + $(basename ${0}) {--init} [servername] [network name] $(basename ${0}) {--datapack} [servername] [datapack dl url] $(basename ${0}) {--start} [servername] [port] (ip) $(basename ${0}) {--stop} [servername] @@ -68,7 +68,7 @@ while true; do ;; --init) shift - init "$1" + init "$1" "$3" ;; --datapack) shift diff --git a/utils/init b/utils/init index 4866e27..bde34f4 100644 --- a/utils/init +++ b/utils/init @@ -1,6 +1,7 @@ #!/usr/bin/env bash function init() { + createNetwork "$2" if [[ -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then log e "Directory '${1}' already exists" exit 1 @@ -9,11 +10,12 @@ function init() { local newdir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}" mkdir -p "${newdir}/data/world/datapacks" - populateConfig "${newdir}/config.json" + populateConfig "${newdir}/config.json" "$2" } function populateConfig() { local config="$1" + local network_name="$2" local runnertype local build @@ -118,5 +120,5 @@ function populateConfig() { ;; 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" } diff --git a/utils/podman b/utils/podman index d08d90f..a7c5b72 100644 --- a/utils/podman +++ b/utils/podman @@ -93,7 +93,7 @@ function buildImage() { ## function startContainer() { log d "Starting container '$1'" - podman run --name "$1" --userns=keep-id:uid=1000 --rm -it -d -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 + 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!" } @@ -107,3 +107,16 @@ function stopContainer() { podman container stop --time 100 $1 log s "Container '$1' stopped" } + +## +# create a podman network +# +# $1 - string: network-name +## +function createNetwork() { + if [[ -n $(podman network ls | grep "$1") ]]; then + log w "Network '$1' exists already, won't create!" + return 1 + fi + podman network create "$1" +} diff --git a/utils/start b/utils/start index 152df56..60b575e 100644 --- a/utils/start +++ b/utils/start @@ -16,6 +16,7 @@ function start() { local software="$(getLocalConfValue $dir 'software')" local version="$(getLocalConfValue $dir 'version')" local build="$(getLocalConfValue $dir 'build')" + local podman_network="$(getLocalConfValue $dir 'podman_network')" case "$(getLocalConfValue $dir 'type')" in "server") @@ -45,5 +46,5 @@ function start() { fi log i "Starting container '$1' with image '$version/$software:$build' on port '$([[ -n "$3" ]] && echo ${3}:)$2'" - startContainer "$1" "$version/$software:$build" "$2" "$3" + startContainer "$1" "$version/$software:$build" "$2" "$3" "$podman_network" }