import os import customtkinter as ctk import winreg from PIL import Image import webbrowser REG_PATH = r"Software\ShopwareDeliver" def rerun(): """Löscht Registry-Werte und ruft run() auf, falls Werte fehlen""" try: with winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_SET_VALUE) as key: all_deleted = True # Flag, um zu prüfen, ob alle Werte gelöscht wurden for name in ["CLIENT_ID", "CLIENT_SECRET", "API_URL"]: try: winreg.DeleteValue(key, name) print(f"✅ {name} wurde gelöscht.") except FileNotFoundError: print(f"⚠️ {name} war nicht vorhanden.") all_deleted = False # Mindestens ein Wert fehlte bereits if all_deleted: print("✅ Alle Werte erfolgreich gelöscht.") run() # Falls alles erfolgreich gelöscht wurde, rufe run() auf else: print("⚠️ Einige Werte waren nicht vorhanden, run() wird nicht aufgerufen.") except FileNotFoundError: print("⚠️ Fehler: Registry-Schlüssel nicht gefunden!") run() # Falls die gesamte Registry fehlt, rufe run() auf def run(): REG_PATH = r"Software\ShopwareDeliver" def get_registry_value(name): """Liest einen Wert aus der Windows-Registry""" try: with winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_READ) as key: value, _ = winreg.QueryValueEx(key, name) return value except FileNotFoundError: return None def set_registry_value(name, value): """Speichert einen Wert in der Windows-Registry""" with winreg.CreateKey(winreg.HKEY_CURRENT_USER, REG_PATH) as key: winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value) def open_link(event=None): webbrowser.open("https://itdata-gera.de") # Prüfe, ob die Werte existieren CLIENT_ID = get_registry_value("CLIENT_ID") CLIENT_SECRET = get_registry_value("CLIENT_SECRET") API_URL = get_registry_value("API_URL") # Falls Werte fehlen, öffne das Eingabe-Fenster if not CLIENT_ID or not CLIENT_SECRET or not API_URL: class SecretInputApp(ctk.CTk): def __init__(self): super().__init__() self.title("API-Konfiguration") self.geometry("400x300") ctk.CTkLabel(self, text="Shopware Deliver", font=("Arial", 20)).pack(pady=5) ctk.CTkLabel(self, text="Bitte geben Sie die API-Daten ein:", font=("Arial", 16)).pack(pady=10) self.client_id_entry = ctk.CTkEntry(self, placeholder_text="Client ID") self.client_id_entry.pack(pady=5, padx=10, fill="x") self.client_secret_entry = ctk.CTkEntry(self, placeholder_text="Client Secret", show="*") self.client_secret_entry.pack(pady=5, padx=10, fill="x") self.api_url_entry = ctk.CTkEntry(self, placeholder_text="Shopware URL") self.api_url_entry.pack(pady=5, padx=10, fill="x") self.save_button = ctk.CTkButton(self, text="Speichern", command=self.save_keys) self.save_button.pack(pady=20) def save_keys(self): client_id = self.client_id_entry.get() client_secret = self.client_secret_entry.get() api_url = self.api_url_entry.get() if client_id and client_secret and api_url: # Speichere die Werte in der Windows-Registry set_registry_value("CLIENT_ID", client_id) set_registry_value("CLIENT_SECRET", client_secret) set_registry_value("API_URL", api_url) self.destroy() # Fenster schließen nach dem Speichern else: ctk.CTkLabel(self, text="Alle Felder müssen ausgefüllt sein!", text_color="red").pack(pady=5) # Starte die GUI app = SecretInputApp() app.mainloop() # Jetzt sind die Werte sicher gespeichert und können im restlichen Skript genutzt werden CLIENT_ID = get_registry_value("CLIENT_ID") CLIENT_SECRET = get_registry_value("CLIENT_SECRET") API_URL = get_registry_value("API_URL") return CLIENT_ID, CLIENT_SECRET, API_URL