mirror of
https://github.com/hanzo-fi/go-libs.git
synced 2026-10-30 20:53:44 +00:00
43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package audit
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
const (
|
|
AuditEnabledFlag = "audit-enabled"
|
|
AuditHandledHeaderSecretFlag = "audit-handled-header-secret"
|
|
)
|
|
|
|
type Config struct {
|
|
Enabled bool
|
|
// HandledHeaderSecret is the shared secret required for the audit
|
|
// middleware to honor the HandledHeader dedup header. Without it, any
|
|
// client can spoof the header and bypass the audit trail.
|
|
HandledHeaderSecret string
|
|
}
|
|
|
|
func AddFlags(flags *pflag.FlagSet) {
|
|
flags.Bool(AuditEnabledFlag, false, "Enable audit")
|
|
flags.String(AuditHandledHeaderSecretFlag, "", "Shared secret required to honor the audit-handled dedup header; without it the header is spoofable by external clients")
|
|
}
|
|
|
|
func ConfigFromFlags(flags *pflag.FlagSet) (Config, error) {
|
|
enabled, err := flags.GetBool(AuditEnabledFlag)
|
|
if err != nil {
|
|
return Config{}, fmt.Errorf("failed to read %s flag: %w", AuditEnabledFlag, err)
|
|
}
|
|
|
|
handledHeaderSecret, err := flags.GetString(AuditHandledHeaderSecretFlag)
|
|
if err != nil {
|
|
return Config{}, fmt.Errorf("failed to read %s flag: %w", AuditHandledHeaderSecretFlag, err)
|
|
}
|
|
|
|
return Config{
|
|
Enabled: enabled,
|
|
HandledHeaderSecret: handledHeaderSecret,
|
|
}, nil
|
|
}
|