57 lines
2.9 KiB
Go
57 lines
2.9 KiB
Go
package tables
|
|
|
|
import "github.com/maximhq/bifrost/core/network"
|
|
|
|
const (
|
|
ConfigAdminUsernameKey = "admin_username"
|
|
ConfigAdminPasswordKey = "admin_password"
|
|
ConfigIsAuthEnabledKey = "is_auth_enabled"
|
|
ConfigDisableAuthOnInferenceKey = "disable_auth_on_inference"
|
|
ConfigProxyKey = "proxy_config"
|
|
ConfigRestartRequiredKey = "restart_required"
|
|
ConfigHeaderFilterKey = "header_filter_config"
|
|
)
|
|
|
|
// RestartRequiredConfig represents the restart required configuration
|
|
// This is set when a config change requires a server restart to take effect
|
|
type RestartRequiredConfig struct {
|
|
Required bool `json:"required"`
|
|
Reason string `json:"reason,omitempty"`
|
|
}
|
|
|
|
// GlobalProxyConfig represents the global proxy configuration
|
|
type GlobalProxyConfig struct {
|
|
Enabled bool `json:"enabled"`
|
|
Type network.GlobalProxyType `json:"type"` // "http", "socks5", "tcp"
|
|
URL string `json:"url"` // Proxy URL (e.g., http://proxy.example.com:8080)
|
|
Username string `json:"username,omitempty"` // Optional authentication username
|
|
Password string `json:"password,omitempty"` // Optional authentication password
|
|
NoProxy string `json:"no_proxy,omitempty"` // Comma-separated list of hosts to bypass proxy
|
|
Timeout int `json:"timeout,omitempty"` // Connection timeout in seconds
|
|
SkipTLSVerify bool `json:"skip_tls_verify,omitempty"` // Skip TLS certificate verification
|
|
// Entity enablement flags
|
|
EnableForSCIM bool `json:"enable_for_scim"` // Enable proxy for SCIM requests (enterprise only)
|
|
EnableForInference bool `json:"enable_for_inference"` // Enable proxy for inference requests
|
|
EnableForAPI bool `json:"enable_for_api"` // Enable proxy for API requests
|
|
}
|
|
|
|
// GlobalHeaderFilterConfig represents global header filtering configuration
|
|
// for headers forwarded to LLM providers via the x-bf-eh-* prefix.
|
|
// Filter logic:
|
|
// - If allowlist is non-empty, only headers in the allowlist are forwarded
|
|
// - If denylist is non-empty, headers in the denylist are dropped
|
|
// - If both are non-empty, allowlist takes precedence first, then denylist filters the result
|
|
type GlobalHeaderFilterConfig struct {
|
|
Allowlist []string `json:"allowlist,omitempty"` // If non-empty, only these headers are allowed
|
|
Denylist []string `json:"denylist,omitempty"` // Headers to always block
|
|
}
|
|
|
|
// TableGovernanceConfig represents generic configuration key-value pairs
|
|
type TableGovernanceConfig struct {
|
|
Key string `gorm:"primaryKey;type:varchar(255)" json:"key"`
|
|
Value string `gorm:"type:text" json:"value"`
|
|
}
|
|
|
|
// TableName sets the table name for each model
|
|
func (TableGovernanceConfig) TableName() string { return "governance_config" }
|