first commit
This commit is contained in:
76
01_create_backend_service_link11.py
Executable file
76
01_create_backend_service_link11.py
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def domain_to_id(domain):
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
def domain_to_backend_id(domain):
|
||||||
|
return f"backend-{domain_to_id(domain)}"
|
||||||
|
|
||||||
|
|
||||||
|
def create_backend_service(name, ip):
|
||||||
|
entry_id = domain_to_backend_id(name)
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}/backend-services/{entry_id}"
|
||||||
|
|
||||||
|
print(f"\n📦 creating Backend Service for {name} → IP: {ip}")
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"back_hosts": [
|
||||||
|
{
|
||||||
|
"backup": False,
|
||||||
|
"down": False,
|
||||||
|
"fail_timeout": 10,
|
||||||
|
"host": ip,
|
||||||
|
"http_ports": [80],
|
||||||
|
"https_ports": [443],
|
||||||
|
"max_fails": 0,
|
||||||
|
"monitor_state": "",
|
||||||
|
"weight": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": f"JTL Shopserver {name}",
|
||||||
|
"http11": True,
|
||||||
|
"id": entry_id,
|
||||||
|
"least_conn": True,
|
||||||
|
"name": name,
|
||||||
|
"sticky": "none",
|
||||||
|
"sticky_cookie_name": "",
|
||||||
|
"transport_mode": "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
print(payload)
|
||||||
|
response = requests.post(url, headers=HEADERS, data=json.dumps(payload)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
print(f"[✓] Backend Service '{name}' erfolgreich erstellt.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei {name} ({ip}): {response.status_code} → {response.text} {response.json()}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
#create_backend_service("shop022.jtl-hosting.de", "31.172.84.222")
|
||||||
|
#create_backend_service("shop056.jtl-hosting.de", "31.172.91.121")
|
||||||
|
#create_backend_service("shop000.jtl-hosting.de", "31.172.91.145")
|
||||||
|
#create_backend_service("shop051.jtl-hosting.de", "31.172.91.88")
|
||||||
|
create_backend_service("shop009.jtl-hosting.de", "31.172.84.33")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
92
02_create_security_policy_link11.py
Executable file
92
02_create_security_policy_link11.py
Executable file
@@ -0,0 +1,92 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen, diese dient als
|
||||||
|
# Vorlage für die neu erstellte Security Policy
|
||||||
|
SECURITY_POLICY = "secpol-shop022-jtl-hosting-de" # z. B. Shop022
|
||||||
|
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
def domain_to_id(domain):
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
def domain_to_secpol_id(domain):
|
||||||
|
return f"secpol-{domain_to_id(domain)}"
|
||||||
|
|
||||||
|
def domain_to_backend_id(domain):
|
||||||
|
return f"backend-{domain_to_id(domain)}"
|
||||||
|
|
||||||
|
def create_security_policy(domain):
|
||||||
|
# Zuerst die SECURITY_POLICY abrufen, diese wird als Vorlage genutzt
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies/{SECURITY_POLICY}"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von Security policy '{SECURITY_POLICY}' erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({SECURITY_POLICY}): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
|
||||||
|
backendservice = domain_to_backend_id(domain)
|
||||||
|
|
||||||
|
# Neuen Backend-Service in allen Pfaden der Security Policy setzen
|
||||||
|
for mapitem in res['map']:
|
||||||
|
if (mapitem['id'] != "__site_level__"):
|
||||||
|
mapitem['backend_service'] = backendservice
|
||||||
|
|
||||||
|
#print (res['map'])
|
||||||
|
# Neuen Namen und ID setzen
|
||||||
|
entry_id = domain_to_secpol_id(domain)
|
||||||
|
res['id'] = entry_id
|
||||||
|
res['name'] = domain
|
||||||
|
|
||||||
|
'''
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "map" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
print(key)
|
||||||
|
for items in value:
|
||||||
|
for key2, value2 in items.items():
|
||||||
|
print(key2, value2)
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Nun die angepasste Security Policy als neue speichern
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}/security-policies/{entry_id}"
|
||||||
|
|
||||||
|
print(f"\n📦 creating Security Policy {entry_id}")
|
||||||
|
|
||||||
|
response = requests.post(url, headers=HEADERS, data=json.dumps(res))
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
print(f"[✓] Security Policy '{entry_id}' erfolgreich erstellt.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei {entry_id}: {response.status_code} → {response.text} {response.json()}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
#create_security_policy('shop020.jtl-hosting.de')
|
||||||
|
#create_security_policy('shop022.jtl-hosting.de')
|
||||||
|
#create_security_policy('shop000.jtl-hosting.de')
|
||||||
|
#create_security_policy('shop051.jtl-hosting.de')
|
||||||
|
create_security_policy('shop009.jtl-hosting.de')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
66
03_create_sg_link11.py
Executable file
66
03_create_sg_link11.py
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_entry_id(domain):
|
||||||
|
"""Erstellt eine gültige entry_id ohne Punkte, wie von der API gefordert."""
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
|
||||||
|
def create_server_group(domain, security_policy):
|
||||||
|
entry_id = sanitize_entry_id(domain)
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}/server-groups/{entry_id}"
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"id": entry_id,
|
||||||
|
"challenge_cookie_domain": "$host",
|
||||||
|
"description": f"Automatisch erstellt fuer {domain}",
|
||||||
|
"mobile_application_group": "",
|
||||||
|
"name": domain,
|
||||||
|
"proxy_template": PROXY_TEMPLATE,
|
||||||
|
"routing_profile": "__default__",
|
||||||
|
"security_policy": security_policy,
|
||||||
|
"server_names": [
|
||||||
|
domain,
|
||||||
|
"www."+domain
|
||||||
|
],
|
||||||
|
"ssl_certificate": "placeholder",
|
||||||
|
"client_certificate": "",
|
||||||
|
"client_certificate_mode": "off",
|
||||||
|
}
|
||||||
|
# print(payload)
|
||||||
|
print(f"\n📦 Erstelle Gruppe für {domain} → ID: {entry_id}")
|
||||||
|
response = requests.post(url, headers=HEADERS, data=json.dumps(payload))
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
print(f"[✓] Server-Gruppe '{entry_id}' erfolgreich erstellt.")
|
||||||
|
elif response.status_code == 409:
|
||||||
|
print(f"[i] Gruppe '{entry_id}' existiert bereits.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei {domain} ({entry_id}): {response.status_code} → {response.text}")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
with open("serverliste_link11.csv", "r") as file:
|
||||||
|
for line in file:
|
||||||
|
domain = line.strip()
|
||||||
|
if domain:
|
||||||
|
create_server_group(domain, 'secpol-shop009-jtl-hosting-de')
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
127
04_create_cert_set_cert_in_sg_lb.py
Executable file
127
04_create_cert_set_cert_in_sg_lb.py
Executable file
@@ -0,0 +1,127 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import csv
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
|
||||||
|
# === KONFIGURATION ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
CSV_DATEI = "serverliste_link11.csv"
|
||||||
|
|
||||||
|
# Load Balancer Settings (eintragen oder automatisch abrufen)
|
||||||
|
PROVIDER = "link11"
|
||||||
|
REGION = "global"
|
||||||
|
LISTENER = "jtlwaap-lb-prod-443"
|
||||||
|
LISTENER_PORT = 443
|
||||||
|
|
||||||
|
BASE_URL = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}"
|
||||||
|
|
||||||
|
HEADERS_JSON = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
HEADERS_GET = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Accept": "*/*"
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize_entry_id(domain):
|
||||||
|
"""Erstellt eine gültige entry_id ohne Punkte, wie von der API gefordert."""
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
def domain_to_cert_id(domain):
|
||||||
|
return f"jtlwaap-{sanitize_entry_id(domain)}"
|
||||||
|
|
||||||
|
def create_certificate(domain):
|
||||||
|
cert_id = domain_to_cert_id(domain)
|
||||||
|
url = f"{BASE_URL}/certificates/{cert_id}"
|
||||||
|
params = {
|
||||||
|
"domains": [
|
||||||
|
domain,
|
||||||
|
"www."+domain
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"id": cert_id,
|
||||||
|
"le_auto_renew": True,
|
||||||
|
"le_auto_replace": True,
|
||||||
|
"le_hash": "",
|
||||||
|
"provider_links": []
|
||||||
|
}
|
||||||
|
#return cert_id
|
||||||
|
|
||||||
|
response = requests.post(url, headers=HEADERS_JSON, params=params, data=json.dumps(payload))
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
print(f"[✓] Zertifikat erstellt: {cert_id}")
|
||||||
|
return cert_id
|
||||||
|
elif response.status_code == 409:
|
||||||
|
print(f"[i] Zertifikat bereits vorhanden: {cert_id}")
|
||||||
|
return cert_id
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Zertifikat {cert_id}: {response.status_code} → {response.text}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def update_server_group(domain, cert_id):
|
||||||
|
entry_id = sanitize_entry_id(domain)
|
||||||
|
url = f"{BASE_URL}/server-groups/{entry_id}"
|
||||||
|
|
||||||
|
# Servergruppe einlesen
|
||||||
|
response = requests.get(url, headers=HEADERS_JSON,)
|
||||||
|
|
||||||
|
target=json.loads(response.text)
|
||||||
|
# Neues Zertifikat einstellen
|
||||||
|
target['ssl_certificate'] = cert_id
|
||||||
|
|
||||||
|
# Servergruppe speichern
|
||||||
|
response = requests.put(url, headers=HEADERS_JSON, data=json.dumps(target))
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Servergruppe aktualisiert für {domain}")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Servergruppe {domain}: {response.status_code} → {response.text}")
|
||||||
|
|
||||||
|
def assign_to_load_balancer(domain, cert_id):
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}/load-balancers/{LISTENER}/certificates/{cert_id}"
|
||||||
|
params = {
|
||||||
|
"provider": PROVIDER,
|
||||||
|
"region": REGION,
|
||||||
|
"listener": LISTENER,
|
||||||
|
"listener-port": LISTENER_PORT
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.put(url, headers=HEADERS_JSON, params=params)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Zertifikat dem Load Balancer zugewiesen: {cert_id}")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler beim Load Balancer für {cert_id}: {response.status_code} → {response.text}")
|
||||||
|
|
||||||
|
def verarbeite_domain(domain):
|
||||||
|
print(f"\n--- Bearbeite Domain: {domain} ---")
|
||||||
|
|
||||||
|
cert_id = create_certificate(domain)
|
||||||
|
if not cert_id:
|
||||||
|
return
|
||||||
|
|
||||||
|
time.sleep(2) # Wartezeit, falls Zertifikaterstellung async dauert
|
||||||
|
|
||||||
|
update_server_group(domain, cert_id)
|
||||||
|
#time.sleep(5)
|
||||||
|
assign_to_load_balancer(domain, cert_id)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
with open(CSV_DATEI, newline='') as csvfile:
|
||||||
|
reader = csv.reader(csvfile)
|
||||||
|
for row in reader:
|
||||||
|
domain = row[0].strip()
|
||||||
|
if domain:
|
||||||
|
verarbeite_domain(domain)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[!] Fehler beim Lesen der CSV: {e}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
README.md
Normal file
1
README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Siehe https://jtl-software.atlassian.net/wiki/spaces/TH/pages/491683992/Link11+einrichten
|
||||||
54
certtest.py
Executable file
54
certtest.py
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import csv
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
|
||||||
|
# === KONFIGURATION ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Load Balancer Settings (eintragen oder automatisch abrufen)
|
||||||
|
PROVIDER = "link11"
|
||||||
|
REGION = "global"
|
||||||
|
LISTENER = "jtlwaap-lb-prod-443"
|
||||||
|
LISTENER_PORT = 443
|
||||||
|
|
||||||
|
HEADERS_JSON = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
HEADERS_GET = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Accept": "*/*"
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize_entry_id(domain):
|
||||||
|
"""Erstellt eine gültige entry_id ohne Punkte, wie von der API gefordert."""
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
def domain_to_cert_id(domain):
|
||||||
|
return f"jtlwaap-{sanitize_entry_id(domain)}"
|
||||||
|
|
||||||
|
def assign_to_load_balancer(cert_id):
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.3/conf/{CONFIG_ID}/load-balancers/{LISTENER}/certificates/{cert_id}"
|
||||||
|
params = {
|
||||||
|
"provider": PROVIDER,
|
||||||
|
"region": REGION,
|
||||||
|
"listener": LISTENER,
|
||||||
|
"listener-port": LISTENER_PORT
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.put(url, headers=HEADERS_JSON, params=params)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Zertifikat dem Load Balancer zugewiesen: {cert_id}")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler beim Load Balancer für {cert_id}: {response.status_code} → {response.text}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
assign_to_load_balancer('jtlwaap-eb-autotest2-shop000-jtl-hosting-de')
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
54
get_backend_services_link11.py
Executable file
54
get_backend_services_link11.py
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/python
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
API_TOKEN = "dvGLKQzkJ4wvIXLExQj3jVlyalysTdy2Xp3QtcblI0gmDotnD_xywsyao9pU25y1"
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen
|
||||||
|
SECURITY_POLICY = "16fbf6d51b17" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_security_policy(policy):
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/backend-services"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von backend-services erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({policy}): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
pprint.pp(res)
|
||||||
|
'''
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "items" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
print(key)
|
||||||
|
for items in value:
|
||||||
|
for key2, value2 in items.items():
|
||||||
|
print(key2, value2)
|
||||||
|
'''
|
||||||
|
def main():
|
||||||
|
get_security_policy(SECURITY_POLICY)
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
45
get_certificates_link11.py
Executable file
45
get_certificates_link11.py
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen
|
||||||
|
SECURITY_POLICY = "16fbf6d51b17" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_server_groups():
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/certificates"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von server groups erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Abfrage von server groups): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
pprint.pp(res)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
get_server_groups()
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
55
get_load_balancers_link11.py
Executable file
55
get_load_balancers_link11.py
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen
|
||||||
|
SECURITY_POLICY = "16fbf6d51b17" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_server_groups():
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/load-balancers"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von load balancers erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Abfrage von load balancers): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
'''
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "items" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
for items in value: # Value enthält einen einzelnen Load Balancer
|
||||||
|
if ( key != "certificates" ):
|
||||||
|
print (value, "\n")
|
||||||
|
else:
|
||||||
|
print(key2, value2)
|
||||||
|
'''
|
||||||
|
pprint.pp(res)
|
||||||
|
def main():
|
||||||
|
get_server_groups()
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
58
get_security_policy_link11.py
Executable file
58
get_security_policy_link11.py
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen, dieses dient als Vorlage
|
||||||
|
SECURITY_POLICY = "secpol-shop022-jtl-hosting-de" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# Backend Services, nur einen aktiv lassen
|
||||||
|
BACKEND_SERVICE = "backend-shop022-jtl-hosting-de"
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_security_policy(policy):
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies/{policy}"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von Security policy '{policy}' erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({policy}): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
pprint.pp(res)
|
||||||
|
'''
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "map" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
print(key)
|
||||||
|
for items in value:
|
||||||
|
for key2, value2 in items.items():
|
||||||
|
print(key2, value2)
|
||||||
|
'''
|
||||||
|
|
||||||
|
def main():
|
||||||
|
get_security_policy(SECURITY_POLICY)
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
57
get_server_groups_link11.py
Executable file
57
get_server_groups_link11.py
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen
|
||||||
|
SECURITY_POLICY = "16fbf6d51b17" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_server_groups():
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/server-groups"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von server groups erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Abfrage von server groups): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
pprint.pp(res)
|
||||||
|
'''
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "items" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
print(key)
|
||||||
|
for items in value: # Value enthält eine einzelne Server Group
|
||||||
|
for key2, value2 in items.items():
|
||||||
|
if ( (key2 == "security_policy") and (value2 == "16fbf6d51b17") ):
|
||||||
|
value2 = "secpol-shop022-jtl-hosting-de"
|
||||||
|
print(key2, value2)
|
||||||
|
'''
|
||||||
|
|
||||||
|
def main():
|
||||||
|
get_server_groups()
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
serverliste_link11.csv
Normal file
1
serverliste_link11.csv
Normal file
@@ -0,0 +1 @@
|
|||||||
|
bida-industry.com
|
||||||
|
23
shop001.csv
Normal file
23
shop001.csv
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
az-sportline.de
|
||||||
|
bait-tools.de
|
||||||
|
bellbie.de
|
||||||
|
bellstedt-shop.de
|
||||||
|
bluespoon.de
|
||||||
|
efe-multimedia.de
|
||||||
|
getek-gmbh.de
|
||||||
|
goodtrade-b2b.de
|
||||||
|
gruene-reparatur.de
|
||||||
|
heatpaxx.de
|
||||||
|
jawerk.de
|
||||||
|
kombitex-shop.com
|
||||||
|
motorteile-online.de
|
||||||
|
musicfactory.tv
|
||||||
|
nordkauf.de
|
||||||
|
savageprofi.de
|
||||||
|
schmidtohg.de
|
||||||
|
smartshop-global.com
|
||||||
|
stoffparadies-zauberfee.de
|
||||||
|
storesys.de
|
||||||
|
toci.de
|
||||||
|
trendykids.de
|
||||||
|
vacano-gmbh.de
|
||||||
|
21
shop002.csv
Normal file
21
shop002.csv
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
101golf.de
|
||||||
|
a-handels.de
|
||||||
|
antirutsch-shop.de
|
||||||
|
badazzcustoms-germany.shop
|
||||||
|
baustein-shop.net
|
||||||
|
cordoba-buch.de
|
||||||
|
diskuszucht-piwowarski-shop.de
|
||||||
|
duftmoment.de
|
||||||
|
fliesenhorizont.de
|
||||||
|
geoweinhaus.de
|
||||||
|
gp-metallum.de
|
||||||
|
hochdruck-shop.de
|
||||||
|
karl-jenter-shop.eu
|
||||||
|
landcruiser-parts.de
|
||||||
|
metalizer-records.de
|
||||||
|
mtw-tools.de
|
||||||
|
perfecto-futternapf.de
|
||||||
|
shop-behrend-sgt.de
|
||||||
|
teich-center.de
|
||||||
|
tueren-plus-fenster.de
|
||||||
|
zenris-group.de
|
||||||
|
23
shop006.csv
Normal file
23
shop006.csv
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
armyshop-hoenig.de
|
||||||
|
barracuda-online.de
|
||||||
|
bikeside.de
|
||||||
|
brennstoff-koblenz.de
|
||||||
|
display-order-shop.de
|
||||||
|
gebetsfaehnchen.de
|
||||||
|
goods-for-people.de
|
||||||
|
hosenmode.de
|
||||||
|
hund-natuerlich.de
|
||||||
|
lier24.com
|
||||||
|
marios-fliegendose.de
|
||||||
|
meinkiosk24.de
|
||||||
|
namenspatron.de
|
||||||
|
prisos.de
|
||||||
|
rearseatdeletes-420.com
|
||||||
|
scorpio-shop.de
|
||||||
|
selbermachen-versand.de
|
||||||
|
slimraven-shop.de
|
||||||
|
spiel-und-modellbau.com
|
||||||
|
sportfreund24.de
|
||||||
|
stefanies-stoffzauber.de
|
||||||
|
weserbootshop.de
|
||||||
|
widmann-automation.net
|
||||||
|
2
shop009.csv
Normal file
2
shop009.csv
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
schuettec.de
|
||||||
|
bida-industry.de
|
||||||
|
26
shop012.csv
Normal file
26
shop012.csv
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
co-comp.de
|
||||||
|
coffeeshop-oberpfalz.de
|
||||||
|
dogs-and-more.at
|
||||||
|
donau-wald-kakteen.de
|
||||||
|
extrem-bad.de
|
||||||
|
galaxymed.de
|
||||||
|
handykaputt.de
|
||||||
|
hellas-foods.de
|
||||||
|
hs-sound.de
|
||||||
|
kfz-atd.de
|
||||||
|
lead-adventure.de
|
||||||
|
mattenwerk.eu
|
||||||
|
maulberger-shop.de
|
||||||
|
piercing-express.com
|
||||||
|
pinion-bikes.de
|
||||||
|
poseidon-angelsport.de
|
||||||
|
pure-corde-shop.com
|
||||||
|
pvcfittings.at
|
||||||
|
shop-fuelfriend.de
|
||||||
|
simplywine.at
|
||||||
|
spielgeist.de
|
||||||
|
sport-imperia.com
|
||||||
|
sys2sell.de
|
||||||
|
tcgwarehouse.de
|
||||||
|
the-crochet.at
|
||||||
|
tunemybike.de
|
||||||
|
21
shop013.csv
Normal file
21
shop013.csv
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
cice.de
|
||||||
|
corseartcarparts.de
|
||||||
|
dogfilous.com
|
||||||
|
dwstore.de
|
||||||
|
eurorein.de
|
||||||
|
feuerwerkshop-frankfurt.de
|
||||||
|
golfversand.de
|
||||||
|
hansepack24.com
|
||||||
|
jakobsweg-bewahrer.de
|
||||||
|
karthaeuser-muehle.shop
|
||||||
|
kennzeichenhalterung.de
|
||||||
|
kettenschmie.de
|
||||||
|
lohofol.com
|
||||||
|
mitbringsel.shop
|
||||||
|
napoliconnection-shop.de
|
||||||
|
onlineshop-kueche.de
|
||||||
|
qb-insects.de
|
||||||
|
sportkoch.at
|
||||||
|
wirkwarenhaus.de
|
||||||
|
xn--zhler-plattform-0kb.de
|
||||||
|
shop.catsonappletrees.de
|
||||||
|
28
shop016.csv
Normal file
28
shop016.csv
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
7-lights.de
|
||||||
|
ab-versand.de
|
||||||
|
abc-brandschutz.de
|
||||||
|
almhonig.at
|
||||||
|
bike-3.de
|
||||||
|
bike-quad-shop.de
|
||||||
|
biketools24.de
|
||||||
|
bionis-shop.de
|
||||||
|
bos-tec.com
|
||||||
|
cinestar-order.de
|
||||||
|
dancetowels.com
|
||||||
|
deinmalershop.de
|
||||||
|
dragasias-foods.com
|
||||||
|
haushalts-profis.de
|
||||||
|
kolibri-24.ch
|
||||||
|
peaa-shop.de
|
||||||
|
placeofvape.shop
|
||||||
|
ro-electronic.de
|
||||||
|
rosenauer-kg.de
|
||||||
|
saporino.de
|
||||||
|
spielzeugshop-berlin.de
|
||||||
|
steinkorb-gabione.de
|
||||||
|
tabletop-art.de
|
||||||
|
thermometerwelt.de
|
||||||
|
trades-best.de
|
||||||
|
wasgutestrinken.de
|
||||||
|
waterworld24.com
|
||||||
|
zauberfeder-shop.de
|
||||||
|
27
shop018.csv
Normal file
27
shop018.csv
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
107-store.de
|
||||||
|
123autopflegeshop.de
|
||||||
|
akkijewelry.com
|
||||||
|
anmetec-shop.de
|
||||||
|
apiformes.de
|
||||||
|
baitshop.at
|
||||||
|
basix1.de
|
||||||
|
bayern-hof.shop
|
||||||
|
bonaval.shop
|
||||||
|
chiropraktik-shop.eu
|
||||||
|
color-your-nails.de
|
||||||
|
garnelfe.de
|
||||||
|
guertel-vmp.de
|
||||||
|
herzog-kita-tee.de
|
||||||
|
jahrmarktbonbon.de
|
||||||
|
labiteagnitevi.eu
|
||||||
|
lafiore24.de
|
||||||
|
levowear.de
|
||||||
|
limondo.shop
|
||||||
|
massage-gaertringen.de
|
||||||
|
mkk-pyrohandel.de
|
||||||
|
modellbahn-nord.at
|
||||||
|
mtarchery.com
|
||||||
|
pixiemania.net
|
||||||
|
regoh.de
|
||||||
|
tapeshop.eu
|
||||||
|
zuendstoff-feuerwerkstechnik.de
|
||||||
|
26
shop020.csv
Normal file
26
shop020.csv
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
artlaender-angelzentrum.de
|
||||||
|
b2b-pv.de
|
||||||
|
cannabis-samen-steckling.de
|
||||||
|
coriko.de
|
||||||
|
dasa-tec.de
|
||||||
|
daystarone.de
|
||||||
|
diekleinewerft.de
|
||||||
|
fideo-online.de
|
||||||
|
foerg-flyfishing.de
|
||||||
|
hannes-hawaii-shop.de
|
||||||
|
hypoka-haustechnik24.de
|
||||||
|
kiddies-geschenkewelt.de
|
||||||
|
larpzeit-shop.de
|
||||||
|
leistenhammer.de
|
||||||
|
loveafair-weimar.de
|
||||||
|
ms-beschlaege.de
|
||||||
|
olivenholz-design.de
|
||||||
|
premium-kollektion.de
|
||||||
|
schnaeppchenkiste.live
|
||||||
|
schnupper-stuebchen.de
|
||||||
|
sevendustysisters.de
|
||||||
|
tierverliebt.shop
|
||||||
|
topsell24.com
|
||||||
|
traderbiene.de
|
||||||
|
ulfbo.com
|
||||||
|
weidewaechter.com
|
||||||
|
26
shop025.csv
Normal file
26
shop025.csv
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
123jagd.de
|
||||||
|
alecso.de
|
||||||
|
b2b-sasagroup.de
|
||||||
|
babyvilla.de
|
||||||
|
bergstraesser-fitness-wellness.de
|
||||||
|
boillshop.com
|
||||||
|
buy21.de
|
||||||
|
cargoworkbench.com
|
||||||
|
cubiculum-shop.de
|
||||||
|
custom-junkies.com
|
||||||
|
das-falkenkind.de
|
||||||
|
deutsche-kunstblume-shop.de
|
||||||
|
dkunert.de
|
||||||
|
druckluft-welt.de
|
||||||
|
e-schnaeppchenkauf.de
|
||||||
|
fischzucht-koicenter.de
|
||||||
|
grownert.de
|
||||||
|
makoen.com
|
||||||
|
mas-sales.shop
|
||||||
|
megaprofi-business.com
|
||||||
|
musicfactorystore.de
|
||||||
|
shadesign.de
|
||||||
|
tackle-company.de
|
||||||
|
thundelec.at
|
||||||
|
ww-boule.de
|
||||||
|
yura-raeder.com
|
||||||
|
18
shop026.csv
Normal file
18
shop026.csv
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
ascaris-kauartikel.de
|
||||||
|
b1-kuechenshop.de
|
||||||
|
corexxtrading.de
|
||||||
|
eliah-sahil.com
|
||||||
|
funundsport.de
|
||||||
|
gandeshop.de
|
||||||
|
go-modellbau.de
|
||||||
|
kingtechturbine.lu
|
||||||
|
martin-elektronik.de
|
||||||
|
mbw-electronic-online.de
|
||||||
|
olivenholzprodukte.de
|
||||||
|
orkansports.de
|
||||||
|
pulox.de
|
||||||
|
shop-asi.de
|
||||||
|
spiele-teufel.com
|
||||||
|
stillvaping24.de
|
||||||
|
strike.eu
|
||||||
|
teichhandel-24.de
|
||||||
|
20
shop027.csv
Normal file
20
shop027.csv
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
bike-prof.de
|
||||||
|
blazing-cards.de
|
||||||
|
bubblestore.de
|
||||||
|
cretanoil.de
|
||||||
|
de-tronik.de
|
||||||
|
doghouse24.de
|
||||||
|
flexible-computers.de
|
||||||
|
gartenbahnshop.de
|
||||||
|
haesa.de
|
||||||
|
hms-shop24.de
|
||||||
|
hucklebuck-finja.de
|
||||||
|
magierspiele.de
|
||||||
|
monisbastelkiste.de
|
||||||
|
schloss-beschlag.com
|
||||||
|
shisha-tankstelle.de
|
||||||
|
soel-shop.de
|
||||||
|
soul-distribution.com
|
||||||
|
spielwaren-laumann.de
|
||||||
|
wiesenknopf-kaninchenfutter.de
|
||||||
|
wolldealer24.de
|
||||||
|
27
shop028.csv
Normal file
27
shop028.csv
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
alpa-industrielack.de
|
||||||
|
angelcenter-voegler.de
|
||||||
|
badiwo.net
|
||||||
|
bio-balsam.de
|
||||||
|
bleigussformen-shop.de
|
||||||
|
brenox.de
|
||||||
|
business-ausstatter.de
|
||||||
|
dampfshopsteinfurt.de
|
||||||
|
ehawa-shop.de
|
||||||
|
ersatzteilzone.at
|
||||||
|
gartenundtierbedarf.de
|
||||||
|
hubini-shop.com
|
||||||
|
hundebettenmanufaktur.de
|
||||||
|
meine-kleine-eisenbahn.de
|
||||||
|
mt-automotive-parts.de
|
||||||
|
mtautoteile.de
|
||||||
|
reifenzubehoer-online.de
|
||||||
|
risto-shop.de
|
||||||
|
santo-tierfutter-zubehoer.de
|
||||||
|
schoenes-wohnen-24.de
|
||||||
|
sinneswerkfreiburg.de
|
||||||
|
solar-lange.shop
|
||||||
|
spar-paradies.eu
|
||||||
|
sport-shop-fischbach.de
|
||||||
|
theos-werkzeuge.eu
|
||||||
|
wolle-socken.de
|
||||||
|
uhlig-kakteen.de
|
||||||
|
22
shop029.csv
Normal file
22
shop029.csv
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
anke-s-dampferhafen.de
|
||||||
|
bauking-intercompany.de
|
||||||
|
bestreiniger.de
|
||||||
|
bodywin.de
|
||||||
|
cleansv-shop.de
|
||||||
|
delight.de
|
||||||
|
diesel-tanks.de
|
||||||
|
farben-fischer.shop
|
||||||
|
hilltronik.de
|
||||||
|
hutx.de
|
||||||
|
hypoka-haustechnik24.de
|
||||||
|
josef.shop
|
||||||
|
kameraclub.de
|
||||||
|
ktc-tec.de
|
||||||
|
kunsthandwerkstube.de
|
||||||
|
landmaschinenteile-thull.de
|
||||||
|
looney-toys.at
|
||||||
|
m-sale.de
|
||||||
|
schaedlingsstop.com
|
||||||
|
technic24.eu
|
||||||
|
teekontor-schott.de
|
||||||
|
theob2b.de
|
||||||
|
22
shop031.csv
Normal file
22
shop031.csv
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
badosan.de
|
||||||
|
broshrimp.de
|
||||||
|
carocase.com
|
||||||
|
fgb-rescuetechnik.shop
|
||||||
|
hannoversballonladen.de
|
||||||
|
jackets-to-go.de
|
||||||
|
kaffee-wahler.com
|
||||||
|
korsettshop.at
|
||||||
|
kynoshop.de
|
||||||
|
lagercontainerxxl.at
|
||||||
|
my-smoker24.de
|
||||||
|
mykima.de
|
||||||
|
printeramerch.de
|
||||||
|
sdampferle-spiele.de
|
||||||
|
sieg-machines.de
|
||||||
|
society-beauty.de
|
||||||
|
sweet-sin.de
|
||||||
|
walzos.de
|
||||||
|
werkstattausruestung-service.de
|
||||||
|
westerwald-shop.de
|
||||||
|
wischersmotoshop.de
|
||||||
|
zeitgeist-shop.com
|
||||||
|
24
shop034.csv
Normal file
24
shop034.csv
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
alpinsport-basis.de
|
||||||
|
bankrottstore.com
|
||||||
|
bedfordparts.de
|
||||||
|
boeco-gmbh.de
|
||||||
|
brennschneiden.de
|
||||||
|
deinsporthaus.de
|
||||||
|
fashion-unikat.de
|
||||||
|
gartenfiguren.de
|
||||||
|
gingerbeard3d.de
|
||||||
|
jjgmbh.de
|
||||||
|
klima-express-shop.de
|
||||||
|
lusitero.com
|
||||||
|
mein-schlafkomfort.de
|
||||||
|
mixdrink24.de
|
||||||
|
pferdeliebe.de
|
||||||
|
praemoo.com
|
||||||
|
rms-skituning.de
|
||||||
|
skani-shop.de
|
||||||
|
smthandel.de
|
||||||
|
superjuju.biz
|
||||||
|
terschluesen-shop.de
|
||||||
|
veloboutique.eu
|
||||||
|
xn--kanapee-mbel-djb.de
|
||||||
|
zwergig.de
|
||||||
|
21
shop037.csv
Normal file
21
shop037.csv
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
antikissimo.de
|
||||||
|
baubeschlag.shop
|
||||||
|
bikediscount.at
|
||||||
|
blublife.de
|
||||||
|
dcsportshop.de
|
||||||
|
fantic26.de
|
||||||
|
gotec-shop.com
|
||||||
|
interluxe.de
|
||||||
|
kartonkoenig-shop.de
|
||||||
|
kaufdochwasduwillst.de
|
||||||
|
ludwig-pfaff.de
|
||||||
|
mahafaly.de
|
||||||
|
myschmuckwelt.de
|
||||||
|
photolux-shopping.de
|
||||||
|
reitsport-hugenberg.de
|
||||||
|
strickkontor.de
|
||||||
|
tellurian-games.de
|
||||||
|
uhrig-autoteile.de
|
||||||
|
uwesbienenkorb.de
|
||||||
|
valhalla-nutritionstore.de
|
||||||
|
vffowbuchverkauf.de
|
||||||
|
17
shop042.csv
Normal file
17
shop042.csv
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
3dtec-ek.de
|
||||||
|
alsterduene.de
|
||||||
|
augsburger-angelcenter-shop.com
|
||||||
|
best-nutrition.de
|
||||||
|
fendt-ersatzteile24.de
|
||||||
|
futterpan.de
|
||||||
|
hussenkoenig.de
|
||||||
|
liquor-store.org
|
||||||
|
neumann-gewuerze.de
|
||||||
|
orangedecor.de
|
||||||
|
puremoda.de
|
||||||
|
tackle-master.de
|
||||||
|
tbf-shop.de
|
||||||
|
udopea.de
|
||||||
|
veganversand-lebensweise.eu
|
||||||
|
xxlgrosshandel.de
|
||||||
|
yodasdata.biz
|
||||||
|
20
shop044.csv
Normal file
20
shop044.csv
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
acrylcase.com
|
||||||
|
anhaengerteilespezi.de
|
||||||
|
anigaru.de
|
||||||
|
bauking-marketingportal.de
|
||||||
|
bavarian-nuts.de
|
||||||
|
bos-mounts.de
|
||||||
|
egesat.de
|
||||||
|
forellengrund-shop.de
|
||||||
|
garten-direkt24.de
|
||||||
|
kastaun-dach.shop
|
||||||
|
king-spa.de
|
||||||
|
kroeger-tiernahrung.com
|
||||||
|
manufaktur-lichtbogen.de
|
||||||
|
naturladen-feuchtwangen.de
|
||||||
|
siegelringe-hersteller.de
|
||||||
|
sturmbude.de
|
||||||
|
tirolmusikverlag.at
|
||||||
|
tomundpatty.de
|
||||||
|
zooherz.de
|
||||||
|
gastroline24.net
|
||||||
|
22
shop045.csv
Normal file
22
shop045.csv
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
alittlebitmorecolor.de
|
||||||
|
all4water.de
|
||||||
|
bestpricegeek.de
|
||||||
|
bg-sicherheitstechnik.de
|
||||||
|
cse-technik.de
|
||||||
|
dein-schrotti.de
|
||||||
|
der-kartshop.de
|
||||||
|
espressoxxl.de
|
||||||
|
firefly-crew-shop.de
|
||||||
|
grad-betonzaeune.de
|
||||||
|
ihb-shop.de
|
||||||
|
junghaehnel.de
|
||||||
|
marken-waescheshop.de
|
||||||
|
medizinmannshop.de
|
||||||
|
modellbau-nds.de
|
||||||
|
ortho24.at
|
||||||
|
plastidip-sale.com
|
||||||
|
sg-schmuck.de
|
||||||
|
steresa-fishing.de
|
||||||
|
toni-clark-shop.com
|
||||||
|
vorteil-led.de
|
||||||
|
zok-regattahandel.de
|
||||||
|
22
shop046.csv
Normal file
22
shop046.csv
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
air-suspension-parts.de
|
||||||
|
allgaeu-triathlon-shop.de
|
||||||
|
cod-baits.de
|
||||||
|
egetel.de
|
||||||
|
elektrokon.de
|
||||||
|
gastro-shop-24.com
|
||||||
|
handysparkauf.de
|
||||||
|
hdt-wickelaufsatz.de
|
||||||
|
itemstar-shop.de
|
||||||
|
nordostseeteekontor.de
|
||||||
|
onemanseries.shop
|
||||||
|
peters-barf-service.com
|
||||||
|
phmusicshop.at
|
||||||
|
qbparts.com
|
||||||
|
raubfischreaktor.de
|
||||||
|
rostdoc.de
|
||||||
|
sanide24.de
|
||||||
|
sportvibrations.com
|
||||||
|
svsboerse.com
|
||||||
|
top-messtechnik.com
|
||||||
|
tselikas-greekdelights.de
|
||||||
|
whisky-corner-ruesselsheim.de
|
||||||
|
20
shop051.csv
Normal file
20
shop051.csv
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
aqua-fu-tec.de
|
||||||
|
berndt-gloeckner.eu
|
||||||
|
dasstaubsaugercenter.de
|
||||||
|
eiscold.de
|
||||||
|
ersatzteilcenter.net
|
||||||
|
fahrersitze.de
|
||||||
|
gorilla-parts.de
|
||||||
|
guwi.de
|
||||||
|
jtl-beispiel.de
|
||||||
|
laudi-versand.de
|
||||||
|
lovelyness-shop.de
|
||||||
|
naehplatzl.at
|
||||||
|
onlinesurfshop.de
|
||||||
|
refurbshop24.de
|
||||||
|
repaircenter24.ch
|
||||||
|
rollladenrolltor.de
|
||||||
|
sac-online-world.de
|
||||||
|
schneider-consulting-elektronik.de
|
||||||
|
vapehaus24.de
|
||||||
|
zigarre-whisky.de
|
||||||
|
23
shop056.csv
Normal file
23
shop056.csv
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
cardsparadise.com
|
||||||
|
drugcos.de
|
||||||
|
etonerkartusche.ch
|
||||||
|
filzwolle.de
|
||||||
|
florascent-apothecary.com
|
||||||
|
forellen-fischen.de
|
||||||
|
handwerksmontagen.at
|
||||||
|
harzplant-seeds.de
|
||||||
|
hd-online-shop.com
|
||||||
|
henningsallerlei.de
|
||||||
|
kleene-racker.de
|
||||||
|
lanz-kundendienst.de
|
||||||
|
marderfallen.de
|
||||||
|
panterapack.com
|
||||||
|
piercing-express.com
|
||||||
|
remotaparts.de
|
||||||
|
scootergarage.shop
|
||||||
|
toeller.shop
|
||||||
|
tragetaschen-onlineshop.de
|
||||||
|
tuerbeschlaege24.de
|
||||||
|
waschfreaks.de
|
||||||
|
worldofgourmet.de
|
||||||
|
wurstschmitz-shop.de
|
||||||
|
84
shop999.csv
Normal file
84
shop999.csv
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
3shop-jg.shop999.jtl-hosting.de
|
||||||
|
5shop-fp.shop999.jtl-hosting.de
|
||||||
|
5shop-mh.shop999.jtl-hosting.de
|
||||||
|
abran.shop999.jtl-hosting.de
|
||||||
|
akshop.shop999.jtl-hosting.de
|
||||||
|
az-test.shop999.jtl-hosting.de
|
||||||
|
basicbey.shop999.jtl-hosting.de
|
||||||
|
bjoern.shop999.jtl-hosting.de
|
||||||
|
bonnkenobi.shop999.jtl-hosting.de
|
||||||
|
brancho.shop999.jtl-hosting.de
|
||||||
|
buildtest-rs.shop999.jtl-hosting.de
|
||||||
|
connect-fp.shop999.jtl-hosting.de
|
||||||
|
daktuell-test.shop999.jtl-hosting.de
|
||||||
|
danny.shop5.shop999.jtl-hosting.de
|
||||||
|
dauzis.shop999.jtl-hosting.de
|
||||||
|
dexshop.shop999.jtl-hosting.de
|
||||||
|
dh-master.shop999.jtl-hosting.de
|
||||||
|
dheil.shop999.jtl-hosting.de
|
||||||
|
dilaz-master.shop999.jtl-hosting.de
|
||||||
|
dilaz-test.shop999.jtl-hosting.de
|
||||||
|
dilaz2-test.shop999.jtl-hosting.de
|
||||||
|
dlattek.shop999.jtl-hosting.de
|
||||||
|
dw.shop999.jtl-hosting.de
|
||||||
|
eazysales.shop999.jtl-hosting.de
|
||||||
|
fhenn.shop999.jtl-hosting.de
|
||||||
|
gbuettner.shop999.jtl-hosting.de
|
||||||
|
hilkes-shop.shop999.jtl-hosting.de
|
||||||
|
ilona-2.shop999.jtl-hosting.de
|
||||||
|
ilona.shop999.jtl-hosting.de
|
||||||
|
jf43shop.shop999.jtl-hosting.de
|
||||||
|
jk-test.shop999.jtl-hosting.de
|
||||||
|
joeshop.shop999.jtl-hosting.de
|
||||||
|
jtl-hosting-emailtest.de
|
||||||
|
jtlshop-cschneider01.shop999.jtl-hosting.de
|
||||||
|
kh-test.shop999.jtl-hosting.de
|
||||||
|
lh-5.shop999.jtl-hosting.de
|
||||||
|
link11-testshop.shop999.jtl-hosting.de
|
||||||
|
master-lh.shop999.jtl-hosting.de
|
||||||
|
mimo02.shop999.de
|
||||||
|
mimo505.shop999.jtl-hosting.de
|
||||||
|
mko001.shop999.jtl-hosting.de
|
||||||
|
mvoelker2.shop999.jtl-hosting.de
|
||||||
|
mytestshop.shop999.jtl-hosting.de
|
||||||
|
ollishop.shop999.jtl-hosting.de
|
||||||
|
pc-test.shop999.jtl-hosting.de
|
||||||
|
pegasus-jtl.shop999.jtl-hosting.de
|
||||||
|
pf.shop999.jtl-hosting.de
|
||||||
|
pg-4.shop999.jtl-hosting.de
|
||||||
|
pg-5.shop999.jtl-hosting.de
|
||||||
|
pg-m.shop999.jtl-hosting.de
|
||||||
|
pierre.shop999.jtl-hosting.de
|
||||||
|
pk90e62065.shop999.jtl-hosting.de
|
||||||
|
ponsen-testshop.shop999.jtl-hosting.de
|
||||||
|
prime.shop999.jtl-hosting.de
|
||||||
|
probearbeiten.shop999.jtl-hosting.de
|
||||||
|
qalokalmaxsh1.shop999.jtl-hosting.de
|
||||||
|
qalokalmaxsh2.shop999.jtl-hosting.de
|
||||||
|
reuticon999.jtl-hosting.de
|
||||||
|
rk-1.shop999.jtl-hosting.de
|
||||||
|
rk-2.shop999.jtl-hosting.de
|
||||||
|
rk-3.shop999.jtl-hosting.de
|
||||||
|
robojul.shop999.jtl-hosting.de
|
||||||
|
shipping.shop999.jtl-hosting.de
|
||||||
|
shop4-jg.de.shop999.jtl-hosting.de
|
||||||
|
shop5-fm.shop999.jtl-hosting.de
|
||||||
|
shop5-mstickel.shop999.jtl-hosting.de
|
||||||
|
shop5-test-cr.shop999.jtl-hosting.de
|
||||||
|
shopowner.shop999.jtl-hosting.de
|
||||||
|
stapelshop.shop999.jtl-hosting.de
|
||||||
|
test-406-rs.shop999.jtl-hosting.de
|
||||||
|
test-500-rs.shop999.jtl-hosting.de
|
||||||
|
test-branch-rs.shop999.jtl-hosting.de
|
||||||
|
themaster.shop999.jtl-hosting.de
|
||||||
|
thoffmann.shop999.jtl-hosting.de
|
||||||
|
timniko.shop999.jtl-hosting.de
|
||||||
|
underground.shop999.jtl-hosting.de
|
||||||
|
update-delete-repeat.shop999.jtl-hosting.de
|
||||||
|
video.shop999.jtl-hosting.de
|
||||||
|
wchajan-1.shop999.jtl-hosting.de
|
||||||
|
webstollen.shop999.jtl-hosting.de
|
||||||
|
wps4.shop999.jtl-hosting.de
|
||||||
|
wps5.shop999.jtl-hosting.de
|
||||||
|
wpsm.shop999.jtl-hosting.de
|
||||||
|
zafira.shop999.jtl-hosting.de
|
||||||
|
122
sync_security_policies_link11.py
Executable file
122
sync_security_policies_link11.py
Executable file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen, dieses dient als Vorlage
|
||||||
|
SECURITY_POLICY = "secpol-p414-jtl-hosting-de" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# Backend Services, nur einen aktiv lassen
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
def domain_to_id(domain):
|
||||||
|
return domain.replace(".", "-")
|
||||||
|
|
||||||
|
def domain_to_secpol_id(domain):
|
||||||
|
return f"secpol-{domain_to_id(domain)}"
|
||||||
|
|
||||||
|
def domain_to_backend_id(domain):
|
||||||
|
return f"backend-{domain_to_id(domain)}"
|
||||||
|
|
||||||
|
|
||||||
|
def get_all_security_policies():
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies"
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von Security policies erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({policy}): {response.status_code} → {response.text}")
|
||||||
|
return
|
||||||
|
res=json.loads(response.text)
|
||||||
|
#pprint.pp(res)
|
||||||
|
|
||||||
|
policies=[]
|
||||||
|
for item in res['items']:
|
||||||
|
policies+={item['id']}
|
||||||
|
#pprint.pp(policies)
|
||||||
|
return(policies)
|
||||||
|
|
||||||
|
def sync_security_policies(policy, destination):
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies/{policy}"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von Security policy '{policy}' erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({policy}): {response.status_code} → {response.text}")
|
||||||
|
return
|
||||||
|
#print(response.text)
|
||||||
|
# Hier ist die Source Security Policy
|
||||||
|
template=json.loads(response.text)
|
||||||
|
|
||||||
|
# Nun wird die Ziel-Security-Policy eingelesen
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies/{destination}"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von Security policy '{destination}' erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei ({destination}): {response.status_code} → {response.text}")
|
||||||
|
return
|
||||||
|
|
||||||
|
target=json.loads(response.text)
|
||||||
|
|
||||||
|
# die Pfad-Mappings werden auf die vom Template gesetzt, alles andere bleibt wie es war
|
||||||
|
target['map'] = template['map']
|
||||||
|
|
||||||
|
backendservice = domain_to_backend_id(target['name'])
|
||||||
|
|
||||||
|
# Neuen Backend-Service in allen Pfaden der Security Policy setzen
|
||||||
|
for mapitem in target['map']:
|
||||||
|
if (mapitem['id'] != "__site_level__"):
|
||||||
|
mapitem['backend_service'] = backendservice
|
||||||
|
|
||||||
|
|
||||||
|
#print(target)
|
||||||
|
# Speichern der Target Security Policy
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/security-policies/{destination}"
|
||||||
|
|
||||||
|
response = requests.put(url, headers=HEADERS,data=json.dumps(target))
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Security Policy '{destination}' erfolgreich gespeichert.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei {destination}: {response.status_code} → {response.text} {response.json()}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
#sync_security_policies(SECURITY_POLICY, 'secpol-shop051-jtl-hosting-de')
|
||||||
|
|
||||||
|
policies=get_all_security_policies()
|
||||||
|
print(f"The following security policies are synced to {SECURITY_POLICY}. Is this what you want?")
|
||||||
|
for policy in policies:
|
||||||
|
if ( policy != '__default__' ) and ( policy != SECURITY_POLICY ):
|
||||||
|
print(policy)
|
||||||
|
yesno = input("Enter yes or no:")
|
||||||
|
if ( yesno == "yes" ):
|
||||||
|
for policy in policies:
|
||||||
|
if ( policy != '__default__' ) and ( policy != SECURITY_POLICY ):
|
||||||
|
sync_security_policies(SECURITY_POLICY, policy)
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
5
todelete.csv
Normal file
5
todelete.csv
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
scorpio-shop.de
|
||||||
|
brauerei-meusel.de
|
||||||
|
meinhundshop.ch
|
||||||
|
scharfzahn-holzwerkzeuge.de
|
||||||
|
nicegameshop.com
|
||||||
|
60
update_server_groups_link11.py
Executable file
60
update_server_groups_link11.py
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/python
|
||||||
|
from env import *
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# === Konfiguration ===
|
||||||
|
CONFIG_ID = "prod"
|
||||||
|
|
||||||
|
# Proxy Templates – nur einen aktiv lassen
|
||||||
|
PROXY_TEMPLATE = "f4bf25a205a5"
|
||||||
|
# PROXY_TEMPLATE = "andere_template_id"
|
||||||
|
|
||||||
|
# Security Policies – nur einen aktiv lassen
|
||||||
|
SECURITY_POLICY = "16fbf6d51b17" # z. B. Shop022
|
||||||
|
# SECURITY_POLICY = "3f7a521c6570" # Shop023
|
||||||
|
# SECURITY_POLICY = "9cc8dd695d5c" # Shop024
|
||||||
|
# SECURITY_POLICY = "1f707fb18483" # Shop028
|
||||||
|
|
||||||
|
# === Header für alle Requests ===
|
||||||
|
HEADERS = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_server_groups():
|
||||||
|
url = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/server-groups"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=HEADERS,)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Abfrage von server groups erfolgreich.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Abfrage von server groups): {response.status_code} → {response.text}")
|
||||||
|
#print(response.text)
|
||||||
|
res=json.loads(response.text)
|
||||||
|
for key,value in res.items():
|
||||||
|
if ( key != "items" ):
|
||||||
|
print (key, value, "\n")
|
||||||
|
else:
|
||||||
|
print(key)
|
||||||
|
for items in value: # Items enthält eine einzelne Server Group
|
||||||
|
for key2, value2 in items.items():
|
||||||
|
if ( (key2 == "security_policy") and (value2 == "16fbf6d51b17") ):
|
||||||
|
items['security_policy'] = "secpol-shop022-jtl-hosting-de"
|
||||||
|
url2 = f"https://jtlwaap.app.reblaze.io/api/v4.0/conf/{CONFIG_ID}/server-groups/{items['id']}"
|
||||||
|
#print(url2)
|
||||||
|
response = requests.put(url2, headers=HEADERS,data=json.dumps(items))
|
||||||
|
if response.status_code == 200:
|
||||||
|
print(f"[✓] Server group {items['id']} erfolgreich aktualisiert.")
|
||||||
|
else:
|
||||||
|
print(f"[✗] Fehler bei Aktualisierung von server group {items['id']}): {response.status_code} → {response.text}")
|
||||||
|
|
||||||
|
print(key2, value2)
|
||||||
|
def main():
|
||||||
|
get_server_groups()
|
||||||
|
|
||||||
|
# === CSV-Datei einlesen ===
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user