67 lines
2.0 KiB
Python
Executable File
67 lines
2.0 KiB
Python
Executable File
#!/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()
|