58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
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
|
|
}
|
|
|