108 lines
4.3 KiB
Python
108 lines
4.3 KiB
Python
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 |