Dateien nach "scripts" hochladen
This commit is contained in:
@@ -380,15 +380,19 @@ start_and_verify() {
|
|||||||
img_exists=$(pct exec "$SEL_ID" -- bash -c "docker image inspect gluetun-custom:latest 2>/dev/null | grep -c 'Id' || echo 0" 2>/dev/null | tr -d '\n\r ' || echo "0")
|
img_exists=$(pct exec "$SEL_ID" -- bash -c "docker image inspect gluetun-custom:latest 2>/dev/null | grep -c 'Id' || echo 0" 2>/dev/null | tr -d '\n\r ' || echo "0")
|
||||||
|
|
||||||
if [[ "${img_exists:-0}" -gt 0 ]] 2>/dev/null; then
|
if [[ "${img_exists:-0}" -gt 0 ]] 2>/dev/null; then
|
||||||
# Prüfen ob der Hostname schon drin ist
|
# Prüfen ob Image für diesen Hostname gebaut wurde
|
||||||
local host_in_img
|
local built_for
|
||||||
host_in_img=$(pct exec "$SEL_ID" -- bash -c "docker run --rm --entrypoint sh gluetun-custom:latest -c 'cat /gluetun/servers.json 2>/dev/null | grep -c ${VPN_HOSTNAME} || echo 0'" 2>/dev/null | tr -d '\n\r ' || echo "0")
|
built_for=$(pct exec "$SEL_ID" -- bash -c \
|
||||||
if [[ "${host_in_img:-0}" -gt 0 ]] 2>/dev/null; then
|
"docker inspect gluetun-custom:latest --format=\"{{json .Config.Labels}}\" 2>/dev/null" \
|
||||||
success "gluetun-custom:latest bereits vorhanden und enthält ${VPN_HOSTNAME}"
|
2>/dev/null | grep -o '["]built_for["]:["]' | cut -d'"' -f4 2>/dev/null | tr -d '\n' || echo "")
|
||||||
|
if [[ "$built_for" == "${VPN_HOSTNAME}" ]]; then
|
||||||
|
success "gluetun-custom:latest bereits für ${VPN_HOSTNAME} gebaut"
|
||||||
GLUETUN_IMAGE="gluetun-custom:latest"
|
GLUETUN_IMAGE="gluetun-custom:latest"
|
||||||
|
pct exec "$SEL_ID" -- bash -c \
|
||||||
|
"sed -i 's|image: .*gluetun.*|image: gluetun-custom:latest|' ${FT_DIR}/docker-compose.yml"
|
||||||
return 0 2>/dev/null || true
|
return 0 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
info "Image vorhanden, aber ${VPN_HOSTNAME} fehlt – baue neu..."
|
info "Image vorhanden, aber nicht für ${VPN_HOSTNAME} – baue neu..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# git installieren falls nötig
|
# git installieren falls nötig
|
||||||
@@ -398,42 +402,31 @@ start_and_verify() {
|
|||||||
pct exec "$SEL_ID" -- bash -c "rm -rf /tmp/gluetun-build && git clone --depth 1 https://github.com/qdm12/gluetun.git /tmp/gluetun-build 2>&1 | tail -3"
|
pct exec "$SEL_ID" -- bash -c "rm -rf /tmp/gluetun-build && git clone --depth 1 https://github.com/qdm12/gluetun.git /tmp/gluetun-build 2>&1 | tail -3"
|
||||||
|
|
||||||
info "Füge ${VPN_HOSTNAME} (${server_ip}) in servers.json ein..."
|
info "Füge ${VPN_HOSTNAME} (${server_ip}) in servers.json ein..."
|
||||||
pct exec "$SEL_ID" -- bash -c "python3 << PYEOF
|
# Python-Script lokal erstellen und in Container pushen
|
||||||
|
cat > /tmp/add_nordvpn_server.py << 'PYEOF'
|
||||||
import json, copy, sys
|
import json, copy, sys
|
||||||
|
path, hostname, ip = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||||
path = '/tmp/gluetun-build/internal/storage/servers.json'
|
db = json.load(open(path))
|
||||||
hostname = '${VPN_HOSTNAME}'
|
servers = db.get("nordvpn", {}).get("servers", [])
|
||||||
ip = '${server_ip}'
|
if any(s.get("hostname") == hostname for s in servers):
|
||||||
|
|
||||||
with open(path) as f:
|
|
||||||
db = json.load(f)
|
|
||||||
|
|
||||||
servers = db.get('nordvpn', {}).get('servers', [])
|
|
||||||
|
|
||||||
if any(s.get('hostname') == hostname for s in servers):
|
|
||||||
print(f'Bereits vorhanden: {hostname}')
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
tmpl = next((s for s in servers if s.get("country","").lower()=="germany" and s.get("vpn")=="openvpn"), servers[0])
|
||||||
# Deutschen OpenVPN-Eintrag als Template klonen
|
e = copy.deepcopy(tmpl)
|
||||||
template = next(
|
e["hostname"] = hostname
|
||||||
(s for s in servers if s.get('country','').lower() == 'germany' and s.get('vpn') == 'openvpn'),
|
e["ips"] = [ip]
|
||||||
servers[0]
|
servers.append(e)
|
||||||
)
|
db["nordvpn"]["servers"] = servers
|
||||||
entry = copy.deepcopy(template)
|
json.dump(db, open(path,"w"), indent=2)
|
||||||
entry['hostname'] = hostname
|
print("Eingetragen: " + hostname + " (" + ip + ") - Server: " + str(len(servers)))
|
||||||
entry['ips'] = [ip]
|
PYEOF
|
||||||
|
pct push "$SEL_ID" /tmp/add_nordvpn_server.py /tmp/add_nordvpn_server.py
|
||||||
servers.append(entry)
|
pct exec "$SEL_ID" -- python3 /tmp/add_nordvpn_server.py \
|
||||||
db['nordvpn']['servers'] = servers
|
/tmp/gluetun-build/internal/storage/servers.json \
|
||||||
|
"${VPN_HOSTNAME}" "${server_ip}"
|
||||||
with open(path, 'w') as f:
|
|
||||||
json.dump(db, f, indent=2)
|
|
||||||
print(f'Eingetragen: {hostname} ({ip}) – Gesamt NordVPN-Server: {len(servers)}')
|
|
||||||
PYEOF"
|
|
||||||
|
|
||||||
info "Kompiliere Gluetun Docker Image (dauert ~3-5 Minuten)..."
|
info "Kompiliere Gluetun Docker Image (dauert ~3-5 Minuten)..."
|
||||||
echo -e " ${YELLOW}Bitte warten – Go Multi-Stage Build...${NC}"
|
echo -e " ${YELLOW}Bitte warten – Go Multi-Stage Build...${NC}"
|
||||||
pct exec "$SEL_ID" -- bash -c "cd /tmp/gluetun-build && docker build -t gluetun-custom:latest . 2>&1 | grep -E '^Step|Successfully|error|Error|=>|RUN|COPY' | tail -30" && success "gluetun-custom:latest erfolgreich gebaut!" || error "Docker Build fehlgeschlagen. Prüfe: pct exec ${SEL_ID} -- docker build /tmp/gluetun-build"
|
pct exec "$SEL_ID" -- bash -c "cd /tmp/gluetun-build && docker build --label built_for=${VPN_HOSTNAME} -t gluetun-custom:latest . 2>&1 | grep -E '^Step|Successfully|error|Error|=>|RUN|COPY' | tail -30" && success "gluetun-custom:latest erfolgreich gebaut!" || error "Docker Build fehlgeschlagen. Prüfe: pct exec ${SEL_ID} -- docker build /tmp/gluetun-build"
|
||||||
|
|
||||||
GLUETUN_IMAGE="gluetun-custom:latest"
|
GLUETUN_IMAGE="gluetun-custom:latest"
|
||||||
info "Aufräumen..."
|
info "Aufräumen..."
|
||||||
@@ -469,7 +462,7 @@ PYEOF"
|
|||||||
${CYAN}[INFO]${NC} ${proto^^} – ${elapsed}s..."
|
${CYAN}[INFO]${NC} ${proto^^} – ${elapsed}s..."
|
||||||
|
|
||||||
local log_snippet
|
local log_snippet
|
||||||
log_snippet=$(pct exec "$SEL_ID" -- bash -c "docker logs gluetun 2>&1 | tail -80" 2>/dev/null || echo "")
|
log_snippet=$(timeout 8 pct exec "$SEL_ID" -- bash -c "docker logs gluetun 2>&1 | tail -80" 2>/dev/null || echo "")
|
||||||
|
|
||||||
# Jeden 3. Zyklus (15s) relevante Log-Zeilen anzeigen
|
# Jeden 3. Zyklus (15s) relevante Log-Zeilen anzeigen
|
||||||
if (( tries % 3 == 0 )); then
|
if (( tries % 3 == 0 )); then
|
||||||
|
|||||||
Reference in New Issue
Block a user