mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-06-05 22:44:17 +00:00
9d52f1b018
- [x] Reorganize golangci-lint configuration with documented disable reasons - [x] Simplify errcheck and revive linter rules with targeted exclusions - [x] Pre-compile regex patterns in input_validation.go for performance - [x] Fix type assertions in memory_shard.go and resp.go with safety checks - [x] Replace string comparison with EqualFold for case-insensitive matching - [x] Fix loop variable captures in jwk.go and logout.go - [x] Change high goroutine log level from Info to Debug in autocleanup.go - [x] Replace deprecated "cancelled" spelling with "canceled" throughout - [x] Add nolint annotations for intentional unused parameters - [x] Improve comment formatting for deprecated functions - [x] Fix comment spelling: "marshalling" → "marshaling" - [x] Refactor provider warnings formatting in internal/providers/warnings.go - [x] Simplify metrics summary building in internal/recovery/metrics.go - [x] Pre-allocate slice in error_recovery.go GetDegradedServices - [x] Refactor context cancellation checks in redis.go
117 lines
3.6 KiB
Go
117 lines
3.6 KiB
Go
package traefikoidc
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// REDACTED is the placeholder value for sensitive information
|
|
const REDACTED = "[REDACTED]"
|
|
|
|
// MarshalJSON implements custom JSON marshaling to redact sensitive fields
|
|
// Rewritten without type aliases for yaegi compatibility
|
|
func (c Config) MarshalJSON() ([]byte, error) {
|
|
// Build a map manually to avoid type alias issues with yaegi
|
|
result := make(map[string]interface{})
|
|
|
|
// Copy public fields
|
|
result["providerURL"] = c.ProviderURL
|
|
result["clientID"] = c.ClientID
|
|
result["callbackURL"] = c.CallbackURL
|
|
result["logoutURL"] = c.LogoutURL
|
|
result["postLogoutRedirectURI"] = c.PostLogoutRedirectURI
|
|
result["scopes"] = c.Scopes
|
|
result["forceHTTPS"] = c.ForceHTTPS
|
|
result["logLevel"] = c.LogLevel
|
|
result["rateLimit"] = c.RateLimit
|
|
result["excludedURLs"] = c.ExcludedURLs
|
|
result["allowedUserDomains"] = c.AllowedUserDomains
|
|
result["allowedUsers"] = c.AllowedUsers
|
|
result["allowedRolesAndGroups"] = c.AllowedRolesAndGroups
|
|
|
|
// Redact sensitive fields
|
|
result["clientSecret"] = REDACTED
|
|
result["sessionEncryptionKey"] = REDACTED
|
|
|
|
// Handle Redis config
|
|
if c.Redis != nil {
|
|
redisMap := make(map[string]interface{})
|
|
redisMap["enabled"] = c.Redis.Enabled
|
|
redisMap["address"] = c.Redis.Address
|
|
redisMap["password"] = REDACTED
|
|
redisMap["db"] = c.Redis.DB
|
|
redisMap["poolSize"] = c.Redis.PoolSize
|
|
redisMap["cacheMode"] = c.Redis.CacheMode
|
|
result["redis"] = redisMap
|
|
}
|
|
|
|
return json.Marshal(result)
|
|
}
|
|
|
|
// MarshalYAML implements custom YAML marshaling to redact sensitive fields
|
|
// Rewritten without type aliases for yaegi compatibility
|
|
func (c Config) MarshalYAML() (interface{}, error) {
|
|
// Build a map manually to avoid type alias issues with yaegi
|
|
result := make(map[string]interface{})
|
|
|
|
// Copy public fields
|
|
result["providerURL"] = c.ProviderURL
|
|
result["clientID"] = c.ClientID
|
|
result["callbackURL"] = c.CallbackURL
|
|
result["logoutURL"] = c.LogoutURL
|
|
result["postLogoutRedirectURI"] = c.PostLogoutRedirectURI
|
|
result["scopes"] = c.Scopes
|
|
result["forceHTTPS"] = c.ForceHTTPS
|
|
result["logLevel"] = c.LogLevel
|
|
result["rateLimit"] = c.RateLimit
|
|
result["excludedURLs"] = c.ExcludedURLs
|
|
result["allowedUserDomains"] = c.AllowedUserDomains
|
|
result["allowedUsers"] = c.AllowedUsers
|
|
result["allowedRolesAndGroups"] = c.AllowedRolesAndGroups
|
|
|
|
// Redact sensitive fields
|
|
result["clientSecret"] = REDACTED
|
|
result["sessionEncryptionKey"] = REDACTED
|
|
|
|
// Handle Redis config
|
|
if c.Redis != nil {
|
|
redisMap := make(map[string]interface{})
|
|
redisMap["enabled"] = c.Redis.Enabled
|
|
redisMap["address"] = c.Redis.Address
|
|
redisMap["password"] = REDACTED
|
|
redisMap["db"] = c.Redis.DB
|
|
redisMap["poolSize"] = c.Redis.PoolSize
|
|
redisMap["cacheMode"] = c.Redis.CacheMode
|
|
result["redis"] = redisMap
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
// MarshalJSON for RedisConfig to redact sensitive fields
|
|
// Rewritten without type aliases for yaegi compatibility
|
|
func (r RedisConfig) MarshalJSON() ([]byte, error) {
|
|
result := make(map[string]interface{})
|
|
result["enabled"] = r.Enabled
|
|
result["address"] = r.Address
|
|
result["password"] = REDACTED
|
|
result["db"] = r.DB
|
|
result["poolSize"] = r.PoolSize
|
|
result["cacheMode"] = r.CacheMode
|
|
|
|
return json.Marshal(result)
|
|
}
|
|
|
|
// MarshalYAML for RedisConfig to redact sensitive fields
|
|
// Rewritten without type aliases for yaegi compatibility
|
|
func (r RedisConfig) MarshalYAML() (interface{}, error) {
|
|
result := make(map[string]interface{})
|
|
result["enabled"] = r.Enabled
|
|
result["address"] = r.Address
|
|
result["password"] = REDACTED
|
|
result["db"] = r.DB
|
|
result["poolSize"] = r.PoolSize
|
|
result["cacheMode"] = r.CacheMode
|
|
|
|
return result, nil
|
|
}
|