package main import ( "fmt" "certigo-addon-backend/providers" ) // ACMEClientContext enthält den Kontext für ACME-Operationen type ACMEClientContext struct { Provider providers.ACMEProvider Directory *ACMEDirectory DirectoryURL string NewAccountURL string NewOrderURL string NewNonceURL string } // NewACMEClientContext erstellt einen neuen ACME-Client-Kontext func NewACMEClientContext(providerID string) (*ACMEClientContext, error) { acmeManager := providers.GetACMEManager() provider, exists := acmeManager.GetACMEProvider(providerID) if !exists { return nil, fmt.Errorf("ACME-Provider '%s' nicht gefunden", providerID) } config, err := acmeManager.GetACMEProviderConfig(providerID) if err != nil { return nil, fmt.Errorf("fehler beim Laden der Provider-Konfiguration: %v", err) } if !config.Enabled { return nil, fmt.Errorf("ACME-Provider '%s' ist nicht aktiviert", providerID) } // Validiere Konfiguration if err := provider.ValidateConfig(config.Settings); err != nil { return nil, fmt.Errorf("ungültige Provider-Konfiguration: %v", err) } directoryURL := provider.GetDirectoryURL() // Hole Directory-Endpunkte directory, err := getACMEDirectory(directoryURL) if err != nil { return nil, fmt.Errorf("fehler beim Abrufen der ACME Directory: %v", err) } return &ACMEClientContext{ Provider: provider, Directory: directory, DirectoryURL: directoryURL, NewAccountURL: directory.NewAccount, NewOrderURL: directory.NewOrder, NewNonceURL: directory.NewNonce, }, nil }