install_newt.sh aktualisiert

This commit is contained in:
2025-08-05 23:28:15 +02:00
parent 6ed092a5e6
commit cdf9a50dea

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
set -e set -ex # -e = Abbruch bei Fehler, -x = Ausgabe jeder ausgeführten Zeile
GREEN='\033[0;32m' GREEN='\033[0;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
@@ -28,12 +28,15 @@ for arg in "$@"; do
done done
get_latest_version() { get_latest_version() {
echo "[DEBUG] get_latest_version aufgerufen"
curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep -Po '"tag_name": *"\K[^"]+' curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep -Po '"tag_name": *"\K[^"]+'
} }
download_newt() { download_newt() {
echo "[DEBUG] download_newt aufgerufen mit Version=$1"
version="$1" version="$1"
arch=$(uname -m) arch=$(uname -m)
echo "[DEBUG] Architektur erkannt: $arch"
case "$arch" in case "$arch" in
x86_64) file="newt_linux_amd64" ;; x86_64) file="newt_linux_amd64" ;;
@@ -57,6 +60,7 @@ download_newt() {
} }
cleanup_old_versions() { cleanup_old_versions() {
echo "[DEBUG] cleanup_old_versions aufgerufen"
cd "$INSTALL_DIR" cd "$INSTALL_DIR"
keep=$(readlink -f newt_latest) keep=$(readlink -f newt_latest)
versions=($(ls -1 newt_* | grep -v latest | sort -Vr)) versions=($(ls -1 newt_* | grep -v latest | sort -Vr))
@@ -73,12 +77,16 @@ cleanup_old_versions() {
} }
setup_systemd_service() { setup_systemd_service() {
echo "[DEBUG] setup_systemd_service aufgerufen"
info "🛠️ Erstelle systemd-Dienst ${SERVICE_NAME} ..." info "🛠️ Erstelle systemd-Dienst ${SERVICE_NAME} ..."
# Eingabeaufforderungen im User-Kontext # Eingabeaufforderungen im User-Kontext
read -rp "🆔 Bitte gib die Pangolin-ID ein: " PANGOLIN_ID read -rp "🆔 Bitte gib die Pangolin-ID ein: " PANGOLIN_ID
echo "[DEBUG] Pangolin-ID eingegeben: $PANGOLIN_ID"
read -rp "🔑 Bitte gib das Secret ein: " PANGOLIN_SECRET read -rp "🔑 Bitte gib das Secret ein: " PANGOLIN_SECRET
echo "[DEBUG] Secret eingegeben (aus Sicherheitsgründen nicht ausgegeben)"
read -rp "🌐 Bitte gib den Endpoint (z.B. https://pangolin.domain.de) ein: " PANGOLIN_ENDPOINT read -rp "🌐 Bitte gib den Endpoint (z.B. https://pangolin.domain.de) ein: " PANGOLIN_ENDPOINT
echo "[DEBUG] Endpoint eingegeben: $PANGOLIN_ENDPOINT"
SERVICE_CONTENT="[Unit] SERVICE_CONTENT="[Unit]
Description=Newt Client - ${SERVICE_NAME} Description=Newt Client - ${SERVICE_NAME}
@@ -102,6 +110,7 @@ WantedBy=multi-user.target"
} }
perform_install() { perform_install() {
echo "[DEBUG] perform_install aufgerufen"
if [ -f "$SERVICE_FILE" ]; then if [ -f "$SERVICE_FILE" ]; then
warn "Dienst ${SERVICE_NAME} existiert bereits. Nutze --reinstall für Neuinstallation." warn "Dienst ${SERVICE_NAME} existiert bereits. Nutze --reinstall für Neuinstallation."
exit 0 exit 0
@@ -116,6 +125,7 @@ perform_install() {
} }
perform_update() { perform_update() {
echo "[DEBUG] perform_update aufgerufen"
if [ ! -f "$SERVICE_FILE" ]; then if [ ! -f "$SERVICE_FILE" ]; then
error "Dienst ${SERVICE_NAME} nicht installiert. Nutze --install oder --reinstall." error "Dienst ${SERVICE_NAME} nicht installiert. Nutze --install oder --reinstall."
exit 1 exit 1
@@ -136,17 +146,21 @@ perform_update() {
} }
perform_reinstall() { perform_reinstall() {
echo "[DEBUG] perform_reinstall aufgerufen"
version=$(get_latest_version) version=$(get_latest_version)
version=${version#v} version=${version#v}
info "📦 Neueste Version: ${version}" info "📦 Neueste Version: ${version}"
download_newt "$version" download_newt "$version"
cleanup_old_versions cleanup_old_versions
sudo rm -f "$SERVICE_FILE" || true sudo rm -f "$SERVICE_FILE" || true
echo "[DEBUG] Vor setup_systemd_service"
setup_systemd_service setup_systemd_service
echo "[DEBUG] Nach setup_systemd_service"
info "🚀 Reinstallation abgeschlossen!" info "🚀 Reinstallation abgeschlossen!"
} }
main() { main() {
echo "[DEBUG] main aufgerufen mit MODE=$MODE"
case "$MODE" in case "$MODE" in
install) perform_install ;; install) perform_install ;;
update) perform_update ;; update) perform_update ;;