From f69788df94a34a0c0ef5c294940cf41cd6428c63 Mon Sep 17 00:00:00 2001 From: LinuxSquare Date: Mon, 11 Mar 2024 18:31:34 +0100 Subject: [PATCH] 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: https://git.noveria.org/Tools/pms-cli/pulls/1 Co-authored-by: LinuxSquare Co-committed-by: LinuxSquare --- .gitignore | 1 + .template/config.json | 3 ++- pms-cli | 12 ++++++------ utils/init | 6 ++++-- utils/podman | 19 ++++++++++++++++++- utils/start | 5 +++-- 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index b410341..0e8d67c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ pms-cli.json +containers/ \ No newline at end of file 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 69a322f..30f267f 100755 --- a/pms-cli +++ b/pms-cli @@ -21,11 +21,11 @@ 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] + $(basename ${0}) {--start} [servername] [port] (ip) $(basename ${0}) {--stop} [servername] - $(basename ${0}) {--restart} [servername] [port] + $(basename ${0}) {--restart} [servername] [port] (ip) $(basename ${0}) {--attach} [servername] $(basename ${0}) {--reset} [servername]" } @@ -68,7 +68,7 @@ while true; do ;; --init) shift - init "$1" + init "$1" "$3" ;; --datapack) shift @@ -76,7 +76,7 @@ while true; do ;; --start) shift - start "$1" "$3" + start "$1" "$3" "$4" ;; --stop) shift @@ -85,7 +85,7 @@ while true; do --restart) shift stop "$1" - start "$1" "$3" + start "$1" "$3" "$4" ;; --attach) 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 9d19016..60fb740 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 $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,20 @@ function stopContainer() { podman container stop --time 100 $1 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" +} diff --git a/utils/start b/utils/start index 1a540d6..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") @@ -44,6 +45,6 @@ function start() { fi fi - log i "Starting container '$1' with image '$version/$software:$build' on port '$2'" - startContainer "$1" "$version/$software:$build" "$2" + log i "Starting container '$1' with image '$version/$software:$build' on port '$([[ -n "$3" ]] && echo ${3}:)$2'" + startContainer "$1" "$version/$software:$build" "$2" "$3" "$podman_network" }