Refactor Caddy configuration management to include security settings

- Updated `GenerateConfig` function calls in tests to include additional security parameters.
- Enhanced `Manager` struct to hold a `SecurityConfig` instance for managing security-related settings.
- Implemented `computeEffectiveFlags` method to determine the effective state of security features based on both static configuration and runtime database settings.
- Added comprehensive tests for the new security configuration handling, ensuring correct behavior for various scenarios including ACL and CrowdSec settings.
- Adjusted existing tests to accommodate the new structure and ensure compatibility with the updated configuration management.
This commit is contained in:
GitHub Actions
2025-12-01 16:18:50 +00:00
parent fd4555674d
commit c83928f628
24 changed files with 743 additions and 174 deletions

View File

@@ -16,6 +16,7 @@ import (
"gorm.io/gorm"
"github.com/Wikid82/charon/backend/internal/caddy"
"github.com/Wikid82/charon/backend/internal/config"
"github.com/Wikid82/charon/backend/internal/models"
"github.com/Wikid82/charon/backend/internal/services"
)
@@ -154,7 +155,7 @@ func TestProxyHostErrors(t *testing.T) {
// Setup Caddy Manager
tmpDir := t.TempDir()
client := caddy.NewClient(caddyServer.URL)
manager := caddy.NewManager(client, db, tmpDir, "", false)
manager := caddy.NewManager(client, db, tmpDir, "", false, config.SecurityConfig{})
// Setup Handler
ns := services.NewNotificationService(db)
@@ -341,7 +342,7 @@ func TestProxyHostWithCaddyIntegration(t *testing.T) {
// Setup Caddy Manager
tmpDir := t.TempDir()
client := caddy.NewClient(caddyServer.URL)
manager := caddy.NewManager(client, db, tmpDir, "", false)
manager := caddy.NewManager(client, db, tmpDir, "", false, config.SecurityConfig{})
// Setup Handler
ns := services.NewNotificationService(db)