implemented LE and ACME and fixed some bugs

This commit is contained in:
2025-11-27 04:20:09 +01:00
parent ec1e0da9d5
commit 145dfd3d7c
36 changed files with 10583 additions and 1107 deletions

65
backend/cert_logger.go Normal file
View File

@@ -0,0 +1,65 @@
package main
import (
"crypto/rand"
"encoding/hex"
"fmt"
"log"
"os"
"path/filepath"
"time"
)
var certLogger *log.Logger
var certLogFile *os.File
// initCertLogger initialisiert das Logging-System für Zertifikatsanfragen
func initCertLogger() error {
logDir := "logs"
if err := os.MkdirAll(logDir, 0755); err != nil {
return fmt.Errorf("fehler beim Erstellen des Log-Verzeichnisses: %v", err)
}
logFile := filepath.Join(logDir, fmt.Sprintf("cert-requests-%s.log", time.Now().Format("2006-01-02")))
file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
return fmt.Errorf("fehler beim Öffnen der Log-Datei: %v", err)
}
certLogFile = file
certLogger = log.New(file, "", log.LstdFlags)
return nil
}
// generateTraceID generiert eine eindeutige TraceID für einen Vorgang
func generateTraceID() string {
bytes := make([]byte, 8)
rand.Read(bytes)
return hex.EncodeToString(bytes)
}
// logCertStatus schreibt einen Status-Eintrag in die Log-Datei
// traceID: Eindeutige ID für den Vorgang
// step: Name des Schritts (z.B. "DNS_PRÜFUNG", "REGISTER_AUFRUF", "ACCOUNT_ERSTELLUNG", "ORDER_ERSTELLUNG", "CHALLENGE_VALIDIERUNG", "ZERTIFIKAT_ERSTELLT")
// status: "OK" oder "FAILED"
// message: Fehlermeldung bei FAILED, leer bei OK
func logCertStatus(traceID, fqdnID, step, status, message string) {
if certLogger == nil {
return
}
timestamp := time.Now().Format("2006-01-02 15:04:05")
if status == "OK" {
certLogger.Printf("[%s] TRACE_ID=%s FQDN_ID=%s VORGANG=%s STATUS=OK", timestamp, traceID, fqdnID, step)
} else {
certLogger.Printf("[%s] TRACE_ID=%s FQDN_ID=%s VORGANG=%s STATUS=FAILED ERROR=%s", timestamp, traceID, fqdnID, step, message)
}
}
// closeCertLogger schließt die Log-Datei
func closeCertLogger() {
if certLogFile != nil {
certLogFile.Close()
}
}