Dateien nach "scripts" hochladen
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user