From da1528106f8924cf381b2ecf48cd3d68fe446ab3 Mon Sep 17 00:00:00 2001 From: Oliver Braasch Date: Mon, 20 Apr 2026 22:44:47 +0200 Subject: [PATCH] Dateien nach "scripts" hochladen --- scripts/proxmox-vpn-install-dev.sh | 67 ++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/scripts/proxmox-vpn-install-dev.sh b/scripts/proxmox-vpn-install-dev.sh index 95b2727..e5c460c 100644 --- a/scripts/proxmox-vpn-install-dev.sh +++ b/scripts/proxmox-vpn-install-dev.sh @@ -348,11 +348,70 @@ start_and_verify() { local vpn_ok=false VPN_IP="" - # Bei Hostname-Modus: Gluetun Server-Datenbank aktualisieren - # NordVPN fügt ständig neue Server hinzu – Gluetuns eingebaute Liste kann veraltet sein + # Bei Hostname-Modus: Gluetun Server-Datenbank aktualisieren + fehlende Server eintragen if [[ -n "${VPN_HOSTNAME:-}" ]]; then - info "Aktualisiere Gluetun Server-Datenbank für $VPN_HOSTNAME ..." - pct exec "$SEL_ID" -- bash -c "docker run --rm -v freqtrade_gluetun_data:/gluetun qmcgaw/gluetun update -enduser-pprof -providers nordvpn 2>&1 | tail -3" 2>/dev/null && success "Server-Datenbank aktualisiert" || warn "Update fehlgeschlagen – versuche trotzdem..." + info "Aktualisiere Gluetun Server-Datenbank..." + pct exec "$SEL_ID" -- bash -c "docker run --rm -v freqtrade_gluetun_data:/gluetun qmcgaw/gluetun update -enduser-pprof -providers nordvpn 2>&1 | tail -3" 2>/dev/null && success "Server-Datenbank aktualisiert" || warn "Update fehlgeschlagen – fahre trotzdem fort" + + # Prüfen ob der Hostname in der DB ist – falls nicht: manuell eintragen + local host_in_db + host_in_db=$(pct exec "$SEL_ID" -- bash -c "docker run --rm -v freqtrade_gluetun_data:/gluetun alpine grep -c '${VPN_HOSTNAME}' /gluetun/servers.json 2>/dev/null || echo 0" 2>/dev/null || echo "0") + + if [[ "$host_in_db" == "0" ]]; then + warn "${VPN_HOSTNAME} nicht in Gluetun-DB – trage Server manuell ein..." + + # IP per DNS auflösen + local server_ip + server_ip=$(pct exec "$SEL_ID" -- bash -c "getent hosts ${VPN_HOSTNAME} | awk '{print \$1}' | head -1" 2>/dev/null || echo "") + + if [[ -z "$server_ip" ]]; then + # Fallback: nslookup + server_ip=$(pct exec "$SEL_ID" -- bash -c "nslookup ${VPN_HOSTNAME} 2>/dev/null | grep -oP '(?<=Address: )[0-9.]+' | tail -1" 2>/dev/null || echo "") + fi + + if [[ -n "$server_ip" ]]; then + info "IP aufgelöst: ${VPN_HOSTNAME} → ${server_ip}" + # Eintrag in servers.json via Python3 + pct exec "$SEL_ID" -- bash -c "python3 - << 'PYEOF' +import json, sys + +path = '/var/lib/docker/volumes/freqtrade_gluetun_data/_data/servers.json' +try: + with open(path) as f: + db = json.load(f) +except Exception as e: + print(f'Fehler beim Lesen: {e}', file=sys.stderr) + sys.exit(1) + +new_entry = { + 'vpn_sp': 'nordvpn', + 'country': 'Germany', + 'region': '', + 'city': '', + 'hostname': '${VPN_HOSTNAME}', + 'ip': '${server_ip}', + 'tcp': True, + 'udp': True +} + +# Doppelten Eintrag vermeiden +servers = db.get('nordvpn', {}).get('servers', []) +if not any(s.get('hostname') == '${VPN_HOSTNAME}' for s in servers): + servers.append(new_entry) + db.setdefault('nordvpn', {})['servers'] = servers + with open(path, 'w') as f: + json.dump(db, f) + print('Eintrag hinzugefügt: ${VPN_HOSTNAME} (${server_ip})') +else: + print('Eintrag bereits vorhanden: ${VPN_HOSTNAME}') +PYEOF" 2>&1 && success "Server ${VPN_HOSTNAME} (${server_ip}) in DB eingetragen" || warn "DB-Eintrag fehlgeschlagen – versuche trotzdem" + else + warn "IP für ${VPN_HOSTNAME} konnte nicht aufgelöst werden" + warn "Stelle sicher dass der Hostname korrekt ist" + fi + else + success "${VPN_HOSTNAME} bereits in Gluetun-DB vorhanden" + fi fi # Protokoll-Reihenfolge: UDP zuerst, dann automatisch TCP