Documentation
¶
Index ¶
Constants ¶
View Source
const ( CacheNSForUser = "user" CacheNSForRole = "role" )
View Source
const ( ErrInvalidTokenID = "com.invalid.token" ErrInvalidCaptchaID = "com.invalid.captcha" ErrInvalidUsernameOrPassword = "com.invalid.username-or-password" )
View Source
const (
CacheKeyForSyncToCasbin = "sync:casbin"
)
Variables ¶
View Source
var (
C = new(Config)
)
Functions ¶
Types ¶
type Config ¶
type Config struct {
Logger logging.LoggerConfig
General General
Storage Storage
Middleware Middleware
Util Util
Dictionary Dictionary
Portal PortalConfig
Gateway GatewayConfig
OAuth OAuthConfig
Sync Sync
}
func (*Config) FormatTableName ¶
type Dictionary ¶
type Dictionary struct {
UserCacheExp int `default:"4"` // hours
}
type GatewayConfig ¶
type GatewayConfig struct {
APIKeyPepper string
}
type General ¶
type General struct {
AppName string `default:"tokenlive-admin"`
Version string `default:"v1.0.0"`
Debug bool
PprofAddr string
DisableSwagger bool
DisablePrintConfig bool
DefaultLoginPwd string `default:"21232f297a57a5a743894a0e4a801fc3"` // MD5(admin)
WorkDir string // From command arguments
MenuFile string // From schema.Menus (JSON/YAML)
DenyOperateMenu bool
HTTP struct {
Addr string `default:":8040"`
ShutdownTimeout int `default:"10"` // seconds
ReadTimeout int `default:"60"` // seconds
WriteTimeout int `default:"60"` // seconds
IdleTimeout int `default:"10"` // seconds
CertFile string
KeyFile string
}
Root struct {
ID string `default:"root"`
Username string `default:"admin"`
Password string
Name string `default:"Admin"`
}
}
type Middleware ¶
type Middleware struct {
Recovery struct {
Skip int `default:"3"` // skip the first n stack frames
}
CORS struct {
Enable bool
AllowAllOrigins bool
AllowOrigins []string
AllowMethods []string
AllowHeaders []string
AllowCredentials bool
ExposeHeaders []string
MaxAge int
AllowWildcard bool
AllowBrowserExtensions bool
AllowWebSockets bool
AllowFiles bool
}
Trace struct {
SkippedPathPrefixes []string
RequestHeaderKey string `default:"X-Request-Id"`
ResponseTraceKey string `default:"X-Trace-Id"`
}
Logger struct {
SkippedPathPrefixes []string
MaxOutputRequestBodyLen int `default:"4096"`
MaxOutputResponseBodyLen int `default:"1024"`
}
CopyBody struct {
SkippedPathPrefixes []string
MaxContentLen int64 `default:"33554432"` // max content length (default 32MB)
}
Auth struct {
Disable bool
SkippedPathPrefixes []string
SigningMethod string `default:"HS512"` // HS256/HS384/HS512
SigningKey string `default:"XnEsT0S@"` // secret key
OldSigningKey string // old secret key (for migration)
Expired int `default:"86400"` // seconds
RefreshExpired int `default:"2592000"` // seconds (30 days)
Store struct {
Type string `default:"memory"` // memory/badger/redis
Delimiter string `default:":"` // delimiter for key
Memory struct {
CleanupInterval int `default:"60"` // seconds
}
Badger struct {
Path string `default:"data/auth"`
}
Redis struct {
Addr string
Username string
Password string
DB int
}
}
}
RateLimiter struct {
Enable bool
SkippedPathPrefixes []string
Period int // seconds
MaxRequestsPerIP int
MaxRequestsPerUser int
Store struct {
Type string // memory/redis
Memory struct {
Expiration int `default:"3600"` // seconds
CleanupInterval int `default:"60"` // seconds
}
Redis struct {
Addr string
Username string
Password string
DB int
}
}
}
Casbin struct {
Disable bool
SkippedPathPrefixes []string
LoadThread int `default:"2"`
AutoLoadInterval int `default:"3"` // seconds
ModelFile string `default:"rbac_model.conf"`
GenPolicyFile string `default:"gen_rbac_policy.csv"`
}
Static struct {
Dir string // Static files directory (From command arguments)
}
}
type OAuthConfig ¶
type OAuthConfig struct {
Enabled bool
AllowSignup bool
AllowedDomains []string
AllowedEmails []string
DefaultRoleCode string
DefaultModelIDs []string
RefreshToken bool `default:"true"`
TicketRedirectURL string
Google OAuthProviderConfig
GitHub OAuthProviderConfig
}
type OAuthProviderConfig ¶
type PortalConfig ¶
type Storage ¶
type Storage struct {
Cache struct {
Type string `default:"memory"` // memory/badger/redis
Delimiter string `default:":"` // delimiter for key
Memory struct {
CleanupInterval int `default:"60"` // seconds
}
Badger struct {
Path string `default:"data/cache"`
}
Redis struct {
Addr string
Username string
Password string
DB int
}
}
DB struct {
Debug bool
Type string `default:"sqlite3"` // sqlite3/mysql/postgres
DSN string `default:"data/tokenlive-admin.db"` // database source name
MaxLifetime int `default:"86400"` // seconds
MaxIdleTime int `default:"3600"` // seconds
MaxOpenConns int `default:"100"` // connections
MaxIdleConns int `default:"50"` // connections
TablePrefix string `default:""`
AutoMigrate bool
PrepareStmt bool
Resolver []struct {
DBType string // sqlite3/mysql/postgres
Sources []string // DSN
Replicas []string // DSN
Tables []string
}
}
EventQueue struct {
Type string `default:"redis"` // redis | kafka
Topic string `default:"aigw:events:policy"` // stream/topic name
ConsumerGroup string `default:"admin-consumer"` // consumer group name
Kafka struct {
Brokers []string
}
RetentionDays int `default:"7"` // event_log retention period in days
CleanupIntervalHours int `default:"6"` // cleanup task run interval in hours
}
}
type Util ¶
type Util struct {
Captcha struct {
Length int `default:"4"`
Width int `default:"400"`
Height int `default:"160"`
CacheType string `default:"memory"` // memory/redis
Redis struct {
Addr string
Username string
Password string
DB int
KeyPrefix string `default:"captcha:"`
}
}
Prometheus struct {
Enable bool
Port int `default:"9100"`
BasicUsername string `default:"admin"`
BasicPassword string `default:"admin"`
LogApis []string
LogMethods []string
DefaultCollect bool
}
PrometheusServer struct {
Address string `default:"http://localhost:9090"`
Username string
Password string
MetricPrefix string `default:"gateway_"` // OTLP 翻译后的指标名前缀,默认 "gateway_",OTel Collector 部署可能为 "aigateway_gateway_"
}
}
Click to show internal directories.
Click to hide internal directories.