diff --git a/reinstall_newt.sh b/reinstall_newt.sh index 86e19de..015926e 100644 --- a/reinstall_newt.sh +++ b/reinstall_newt.sh @@ -1,47 +1,59 @@ #!/bin/bash set -e +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' + REPO="fosrl/newt" INSTALL_DIR="/opt/newt" SERVICE_NAME="PVE-MGNT" SYMLINK="${INSTALL_DIR}/newt_latest" SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" -info() { echo -e "\033[0;32m[INFO]\033[0m $1"; } -error() { echo -e "\033[0;31m[ERROR]\033[0m $1"; exit 1; } +info() { echo -e "${GREEN}[INFO]${NC} $1"; } +warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } +error() { echo -e "${RED}[ERROR]${NC} $1"; } get_latest_version() { + echo "[DEBUG] get_latest_version aufgerufen" curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep -Po '"tag_name": *"\K[^"]+' } download_newt() { - local version="$1" - local arch=$(uname -m) - local file="" + version="$1" + arch=$(uname -m) + echo "[DEBUG] download_newt aufgerufen mit Version=$version" + echo "[DEBUG] Architektur erkannt: $arch" case "$arch" in x86_64) file="newt_linux_amd64" ;; aarch64) file="newt_linux_arm64" ;; armv7l) file="newt_linux_arm32" ;; - *) error "Nicht unterstützte Architektur: $arch" ;; + *) error "Nicht unterstützte Architektur: $arch" && exit 1 ;; esac - local url="https://github.com/${REPO}/releases/download/${version}/${file}" - local target="${INSTALL_DIR}/newt_${version}" + url="https://github.com/${REPO}/releases/download/${version}/${file}" + target="${INSTALL_DIR}/newt_${version}" + temp_target="${target}.tmp" + mkdir -p "$INSTALL_DIR" info "⬇️ Lade $url herunter …" - curl -fsSL "$url" -o "${target}.tmp" || error "Download fehlgeschlagen." - chmod +x "${target}.tmp" - mv "${target}.tmp" "$target" + curl -fsSL "$url" -o "$temp_target" || { error "Download fehlgeschlagen."; rm -f "$temp_target"; exit 1; } + + chmod +x "$temp_target" + mv "$temp_target" "$target" ln -sf "$target" "$SYMLINK" info "✅ newt ${version} installiert als ${target}" } cleanup_old_versions() { + echo "[DEBUG] cleanup_old_versions aufgerufen" cd "$INSTALL_DIR" - local keep=$(readlink -f newt_latest) - local versions=($(ls -1 newt_* | grep -v latest | sort -Vr)) - local count=0 + keep=$(readlink -f newt_latest) + versions=($(ls -1 newt_* | grep -v latest | sort -Vr)) + count=0 for ver in "${versions[@]}"; do if [[ "$(readlink -f "$ver")" != "$keep" ]]; then ((count++)) @@ -54,14 +66,12 @@ cleanup_old_versions() { } setup_systemd_service() { - echo "🆔 Bitte gib die Pangolin-ID ein: " - read -r PANGOLIN_ID - echo "🔑 Bitte gib das Secret ein: " - read -r PANGOLIN_SECRET - echo "🌐 Bitte gib den Endpoint (z. B. https://pangolin.domain.de) ein: " - read -r PANGOLIN_ENDPOINT + # ID, Secret und Endpoint zwingend vom echten Terminal lesen (nicht stdin) + read -rp "🆔 Bitte gib die Pangolin-ID ein: " PANGOLIN_ID "$SERVICE_FILE" < "$SERVICE_FILE" [Unit] Description=Newt Client - ${SERVICE_NAME} After=network.target @@ -75,25 +85,29 @@ RestartSec=5 WantedBy=multi-user.target EOF - info "⏹ Stoppe Dienst ${SERVICE_NAME} ..." - systemctl stop "$SERVICE_NAME" || true - + info "🛠️ systemd-Dienst ${SERVICE_NAME} neu erstellt." systemctl daemon-reload systemctl enable "$SERVICE_NAME" - systemctl start "$SERVICE_NAME" - info "🛠️ systemd-Dienst ${SERVICE_NAME} eingerichtet und neu gestartet." + systemctl restart "$SERVICE_NAME" + info "✅ Dienst ${SERVICE_NAME} gestartet." } -main() { - local version +perform_reinstall() { + echo "[DEBUG] perform_reinstall aufgerufen" version=$(get_latest_version) version=${version#v} - info "📦 Neueste Version: $version" - + echo "[DEBUG] Version ist: '$version'" + info "📦 Neueste Version: ${version}" download_newt "$version" cleanup_old_versions + rm -f "$SERVICE_FILE" || true setup_systemd_service info "🚀 Reinstallation abgeschlossen!" } +main() { + echo "[DEBUG] main aufgerufen mit Mode=reinstall" + perform_reinstall +} + main "$@"