跳到主要内容

配置参考

这一页按区块汇总 VEF 在启动期间会读取的配置项。

最小起步配置:

[vef.app]
name = "my-app"
port = 8080

[vef.data_sources.primary]
type = "sqlite"

配置文件查找路径​

内部配置模块会按以下顺序查找 application.toml:

  • ./configs
  • $VEF_CONFIG_PATH
  • .
  • ../configs

常用环境变量​

关键环境变量包括:

  • VEF_CONFIG_PATH
  • VEF_LOG_LEVEL
  • VEF_I18N_LANGUAGE

vef.app​

字段类型含义
namestring应用名称;默认 vef-app,用于 JWT audience、Redis 推送中继频道命名空间等
portuint16HTTP 服务端口;必填,没有默认值
body_limitstringFiber body limit,例如 10mib;未配置时默认 32mib。
trusted_proxies[]string允许设置 X-Forwarded-For 的代理 IP 或 CIDR 列表;为空时只信任直接连接来源。

vef.api​

字段类型含义
body_encoding.enabledbool要求 /api 表面上的 JSON 请求与响应 body 使用 protected transport;默认 false
body_encoding.encodingAPIBodyEncodingprotected wire format,可选 aes-gcm+base64 或 sm4-gcm+base64;默认 DefaultAPIBodyEncoding(aes-gcm+base64)
body_encoding.keystring与客户端共享的 standard-base64 对称 key;AES 接受 16/24/32 字节,SM4 接受 16 字节
rate_limit.maxint未声明自己 OperationSpec.RateLimit 的操作使用的默认限流;默认 100。
rate_limit.periodduration默认限流的时间窗口;默认 5m。

限流按操作 × 客户端计数(resource、version、action、客户端 IP、principal ID),且按节点独立统计。每个端点自己的 OperationSpec.RateLimit 仍然优先; 见 API。

config.APIConfig.BodyEncoding 持有 config.APIBodyEncodingConfig,其 config.APIBodyEncodingConfig.Enabled、config.APIBodyEncodingConfig.Encoding 与 config.APIBodyEncodingConfig.Key 字段对应上面的 TOML key。 config.APIConfig.Validate() 会委托给 config.APIBodyEncodingConfig.Validate();被审计的方法符号是 config.APIConfig.Validate 与 config.APIBodyEncodingConfig.Validate。

config.APIBodyEncoding 是 body_encoding.encoding 的 Go 类型; config.APIBodyEncodingAESGCMBase64 与 config.APIBodyEncodingSM4GCMBase64 是支持的常量。 config.APIBodyEncodingConfig.EffectiveEncoding() 会把空编码解析为 config.DefaultAPIBodyEncoding。 被审计的方法符号是 config.APIBodyEncodingConfig.EffectiveEncoding。 Validate() 在编码不受支持时返回 config.ErrInvalidAPIBodyEncoding, 缺少 key 时返回 config.ErrMissingAPIBodyEncodingKey,base64 畸形或 key 长度不合法时返回 config.ErrInvalidAPIBodyEncodingKey。Protected transport 不会改变 multipart 与二进制 body,也不能替代 HTTPS;参见 Routing。

vef.data_sources​

vef.data_sources 是以数据源名称为 key 的 map。primary 条目必填,并为全框架注入的 orm.DB 提供来源;其他条目会用各自 map key 注册到数据源 registry。

示例:

[vef.data_sources.primary]
type = "sqlite"

[vef.data_sources.analytics]
type = "sqlite"
path = "./analytics.db"
字段类型含义
typepostgres | mysql | sqlite当前运行时支持的数据库类型。oracle / sqlserver 暂未实现。
hoststring网络数据库主机。
portuint16网络数据库端口。
userstring数据库用户名。
passwordstring数据库密码。
databasestring数据库名。
schemastring支持 schema 的驱动下使用的 schema 名。
pathstringSQLite 文件路径。
enable_sql_guardbool是否启用 SQL guard。
ssl_modedisable | require | verify-ca | verify-full网络数据库 dialect 的 TLS 模式;省略时等价于 disable。
ssl_root_certstringverify-ca 和 verify-full 使用的可选 PEM CA bundle 路径;为空时使用主机系统证书池。

说明:

  • 当前运行时注册的 provider 支持 postgres、mysql、sqlite。oracle 和 sqlserver 是 DBKind 常量留作未来扩展,目前未实现,配置后会在启动时报 database.ErrUnsupportedDBKind。

vef.cors​

字段类型含义
enabledbool是否启用 CORS middleware。
allow_origins[]string允许的来源列表。

vef.security​

字段类型含义
secretstring十六进制 JWT signing key。为空时框架会生成进程内临时 key 并输出警告;token 无法跨重启或多节点继续使用。如果设置为公开的 security.DefaultJWTSecret,启动时也会警告生产环境必须替换。
token_expiresdurationrefresh token 生命周期;默认 168h。
refresh_not_beforedurationrefresh token 最早可使用时间;默认 15m,也就是固定 30m access token 生命周期的一半。
login_rate_limitint登录接口限流;默认 6。
refresh_rate_limitintrefresh 接口限流;默认 1。
ip_whitelistsmap[string][]string内置 ip 认证策略使用的命名 IP 白名单(IP 或 CIDR 条目);TOML key 会被转成小写,无参数的 api.IPAuth() 指向 default。
api_keysmap[string]{key, roles}默认 security.APIKeyLoader 为 api_key 认证策略提供的静态 API key;每项携带密钥 key(高熵随机串)与授予主体的 roles。TOML key 会被转成小写
basic_accountsmap[string]{password, roles}默认 security.BasicAccountLoader 为 http_basic 认证策略提供的静态服务账号;map 键即用户名。这些是机器对机器凭证,不是用户密码
lockout.*—登录接口的暴力破解防护:enabled 默认 true、max_failures 默认 10、window 默认 15m、lock_duration 默认 15m、strategy(lock | backoff)默认 lock、backoff_base 默认 1s、backoff_max 默认 15m、key(user | ip | user_ip)默认 user_ip。
password_policy.*—密码强度规则;每个字段都是可选项(零值表示不启用该规则):min_length、max_length、require_upper、require_lower、require_digit、require_symbol、min_char_classes、disallow_username、blocklist、history_depth(防重用,需要应用自行实现 security.PasswordHistoryStore)、max_age(过期策略,需要应用自行实现 security.PasswordMetadataLoader)。
token_typejwt_token | opaque_token登录 token 机制;默认 jwt_token。会话控制(并发数限制、强制下线、续期)只在 opaque_token 下可用。
session.*—opaque token 的会话调优项,在 jwt_token 下不生效:max_concurrent 默认 0(不限制;并发登录场景下是 best-effort 强制)、on_exceed(reject | evict_oldest)默认 evict_oldest、idle_ttl 默认 30m、max_lifetime 默认 168h(7 天)、sliding 默认 true。
trust_login.*—信任登录 SSO 网关,默认关闭:enabled、path 默认 /sso/trust、code_ttl 默认 60s、bind_user_agent 默认开启、bind_client_ip 默认关闭、apps.<appId>.redirect_urls(参与的每个 app 必填)、rate_limit.max 默认 120 / rate_limit.period 默认 1m。参见信任登录

说明:

  • 内置 JWT token generator 签发的 access token 固定 30m 过期;vef.security.token_expires 控制的是 refresh token,不是 access token。
  • 锁定功能默认开启(max_failures = 10);触发后返回 security.ErrAccountLocked(HTTP 429),guard 存储出错时按 fail open 处理。
  • 只有注册了 security.PasswordHistoryStore 时,history_depth > 0 才会把历史密码校验组合进密码策略;只有应用同时接入 security.PasswordMetadataLoader 和 security.NewExpiryPasswordChangeChecker 时,max_age 才会生效。
  • 除非设置 vef.security.trust_login.enabled,否则信任登录处于关闭状态;开启后,不在 apps 中的 app 一律拒绝,哪怕它已经能用同一个 app ID 调用 API。

vef.redis​

字段类型含义
enabledbool是否构造 Redis client;默认 false。
hoststringRedis host。
portuint16Redis port。
userstringRedis 用户名。
passwordstringRedis 密码。
databaseuint8Redis database 编号。
networkstringtcp 或 unix。

说明:

  • 默认 vef.Run(...) 启动图包含 Redis 模块
  • 只有 enabled = true 时才会构造 Redis client;enabled 为 false 或未配置时,框架注入的是 nil *redis.Client,并跳过启动 PING
  • 启用后如果不写 host / port / network,会回退到 127.0.0.1、6379、tcp

vef.storage​

字段类型含义
providermemory | minio | filesystem存储 provider 选择。
auto_migratebool是否在启动时执行 storage DDL 迁移。
minio.endpointstringMinIO endpoint。
minio.access_keystringMinIO access key。
minio.secret_keystringMinIO secret key。
minio.bucketstringbucket 名。
minio.regionstringregion。
minio.use_sslbool是否使用 HTTPS。
filesystem.rootstringfilesystem provider 根目录。
max_upload_sizeint64单个对象上传大小上限,默认 1 GiB。
claim_ttldurationupload claim 有效期,默认 24h。
max_pending_claimsint单个 principal 可持有的 pending claim 上限,默认 100。
allow_public_uploadsbool是否允许客户端请求 public upload;默认关闭。
sweep_intervalduration过期 claim 扫描间隔,默认 5m。
sweep_batch_sizeint单次 claim sweep 处理上限,默认 200。
orphan_retentionduration已完成但未被业务采纳的上传保留期;默认 0 表示禁用回收
delete_worker_intervaldurationpending-delete worker 轮询间隔,默认 5m。
delete_batch_sizeint单次 delete worker 租约批量,默认 100。
delete_concurrencyint单轮对象删除并发上限,默认 8。
delete_max_attemptsint删除重试预算,默认 12。
delete_lease_windowduration删除任务租约窗口,默认 5m。

说明:

  • provider 为空时会选择内存存储并输出警告;对象会在进程重启后丢失。
  • vef.storage.auto_migrate = true 会执行幂等 storage 迁移,并检查 sys_storage_upload_claim、sys_storage_upload_part、sys_storage_pending_delete 和 sys_storage_file
  • orphan_retention 故意不设默认值;零值表示禁用对“已完成但未被采纳”上传的回收
  • filesystem.root 默认是 ./storage。
  • minio.bucket 默认依次取 minio.bucket、vef.app.name、vef-app。
  • 上传流程和删除 worker 的调优项在框架内有默认值;应用代码需要解析后的有效值时,应使用 StorageConfig 的 Effective... 方法,而不是直接读取原始字段。

vef.monitor​

字段类型含义
sample_intervalduration采样间隔;默认 10s。
sample_durationduration采样窗口时长;默认 2s。

没有 excluded_mounts 字段:overview 的磁盘摘要只报告根文件系统, 不存在挂载点排除(完整挂载清单仍可通过磁盘详情查询获取)。

vef.mcp​

字段类型含义
enabledbool是否启用 MCP server。
require_authbool默认安全:未配置或为 true 时,/mcp 要求 Bearer token;只有显式设为 false 才允许匿名访问。Go 结构体中 MCPConfig.RequireAuth 是 *bool,用于区分未配置和 false。

vef.approval​

字段类型含义
auto_migratebool显式开启时才会在启动时执行 approval DDL 迁移;ApprovalConfig.ApplyDefaults() 不会自动打开它。
timeout_scan_intervalduration超时扫描器轮询节奏,默认 1m。
pre_warning_scan_intervalduration预警扫描器轮询节奏,默认 5m。
cleanup_scan_intervalduration保留期清理任务节奏,默认 24h。
delegation_max_depthint委托链最大深度,默认 10。
form_snapshot_retentiondurationapv_form_snapshot 保留期,默认 90 天。
urge_record_retentiondurationapv_urge_record 保留期,默认 30 天。
cc_record_retentionduration已读 apv_cc_record 记录保留期,默认 90 天。
form_data_max_bytesintJSON 编码的表单载荷上限,单位字节;默认 65536(64 KiB)。零值选择默认值;负值在启动时被 ErrInvalidApprovalFormDataMaxBytes 拒绝
business_binding.consistencysynchronous | eventual业务表投影模式;默认 synchronous(失败回滚审批动作)。eventual 先提交期望状态、由 worker 收敛。
business_binding.scan_intervaldurationeventual 投影 worker 的扫描节奏,默认 10s。
business_binding.batch_sizeint每次扫描认领的投影数,默认 100。

outbox 配置归属 [vef.event.transports.outbox],而不是 [vef.approval],详见 事件总线。

vef.cron​

字段类型含义
store.enabledbool打开持久化调度存储;默认 false(不加载调度、不触碰任何表,内存调度器不受影响)
store.auto_migratebool启动时执行 cron DDL 迁移(crn_schedule、crn_fire_request、crn_run)
store.poll_intervalduration节点重读调度表的等待上限;默认 5s。这是其他节点新建调度的可见性延迟,不是触发精度
store.batch_sizeint每个轮询周期认领的调度数;默认 32
store.max_concurrentint每节点并发执行的运行数;默认 16
store.misfire_thresholdduration触发晚到多久后应用调度的错触策略;默认 1m
store.heartbeat_intervalduration执行器对运行中行的活性节律;默认 10s
store.abandoned_afterduration心跳陈旧多久后恢复清扫将运行标记为 abandoned;默认 1m,必须至少是 heartbeat_interval 的两倍
store.run_timeoutduration调度未自带超时时的默认单次运行上限;默认 0(不限)
store.run_retentionduration(每小时清扫)删除超窗的终态流水账行;默认 0(永久保留)

启动校验拒绝负的时长以及比心跳间隔两倍更紧的 abandoned_after。见 持久化调度。

vef.integration​

由可选的集成模块(vef.IntegrationModule)读取。

字段类型含义
auto_migratebool启动时执行集成模块 DDL 迁移(itg_* 表)
secret_keystringbase64 编码密钥,静态加密敏感认证参数与数据源密码,长度按算法(AES:16/24/32 字节;SM4:16 字节)。不设置则明文存储并在启动时警告
secret_algorithmaes | sm4secret_key 使用的算法:aes(AES-GCM,默认)或 sm4(SM4-GCM)。一种算法封存的值不能在另一种下读取
run_timeoutduration单次适配器脚本执行上限,含线上调用;默认 30s
max_response_bodyint64脚本读取的单个 HTTP 响应体上限;默认 8 MiB
log.modeoff | errors | all记录哪些调用到 itg_invocation_log;默认 errors
log.capture_limitint每个捕获负载(输入、输出、线上报文)的字节上限;默认 4096
log.mask_fields[]string捕获中额外掩码的 JSON 字段名(不区分大小写),凭证头始终掩码
log.retentionduration(每小时清扫)删除超窗的调用日志行;默认 0(永久保留)
inbound.rate_limit.maxint每窗口每(系统、客户端 IP)允许的入站投递数;默认 120
inbound.rate_limit.periodduration滑动窗口长度;默认 1m。限流器在进程内存中——多节点各自独立计数

见集成引擎。

vef.push​

字段类型含义
enabledbool打开 WebSocket 推送端点;默认 false。端点关闭时 push.Notifier 依然可用,投递被静默丢弃
pathstring端点路径;默认 /ws
allowed_origins[]string握手的浏览器来源白名单;空表示允许所有来源(握手本身经令牌认证,这里是纵深防御)
ping_intervalduration服务端心跳周期;连续错过两次 pong 即断开;默认 30s
write_timeoutduration单个出站帧写入上限;默认 10s
send_bufferint每连接出站队列长度;消费过慢的客户端被断开;默认 32
max_connections_per_userint每节点每用户并发 socket 上限;0 为不限
session_recheck_intervalduration不透明令牌会话复核节律;默认 60s

运行时说明:

  • 启用 Redis 后,推送与吊销踢出经 pub/sub 频道 vef:push:relay:<redis-db>:<app-name> 跨节点中继;未设置 vef.app.name 时中继拒绝启动。见服务端推送

vef.event​

字段类型含义
default_transportstring路由回退使用的 transport 名(默认 memory)。
async_queue_sizeintWithAsync 异步队列容量,默认 4096。
async_workersint异步队列 worker 数量,默认 4。
publish_timeoutduration单次 transport Publish 调用上限,默认 5s。
transports.memory.*—内存 transport 配置:queue_size 默认 1024,full_policy 默认 error,publish_timeout 默认不设上限,且只在 full_policy = "block" 时生效。
transports.tx_memory.*—enabled 默认 false,queue_size、full_policy、publish_timeout——与内存 transport 相同的控制项,驱动一个私有进程内实例,在事务提交后投递而非立即投递。不持久化到数据库;用于开发环境共享数据库时避免 outbox relay 从任意节点认领行
transports.outbox.*—outbox transport 配置:enabled、relay_interval 默认 10s、max_retries 默认 10、batch_size 默认 100、lease_multiplier 默认 4、min_lease 默认 15s、sink 默认 memory、cleanup_interval 默认 1h、completed_ttl 默认 168h;cleanup 字段属于框架配置,不是 event/transport/outbox.Config 字段。
transports.redis_stream.*—Redis Streams transport 配置:enabled、stream_prefix 默认 vef:events:、max_len_approx 默认 0(不裁剪)、block_timeout 默认 5s、claim_idle 默认 60s、claim_interval 默认 30s、claim_batch_size 默认 64、reaper_concurrency 默认 4、handler_timeout 默认 30s、setup_timeout 默认 5s、consumer_id 默认前缀 vef、start_id 默认 0("$" 表示新建 group 跳过 backlog)、idle_group_retention 默认 0(关闭孤儿消费组回收)、idle_group_sweep_interval 默认 10m。
middleware.*bool中间件开关:logging、tracing、tracing_strict、metrics、recover、inbox。
inbox.*—Inbox 去重表配置:retention 默认 168h、processing_lease 默认 10m、cleanup_interval 默认 1h。
routing[]{pattern, transports}路由规则列表,按 path.Match 语义自顶向下匹配。

config 包 API 参考​

Top-Level Public Symbols​

SymbolKindSignature or value
config.APIConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.APIConfig
config.APIRateLimitConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.APIRateLimitConfig
config.APIKeyConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.APIKeyConfig
config.AppConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.AppConfig
config.ApprovalBusinessBindingConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.ApprovalBusinessBindingConfig
config.ApprovalBindingConsistencyTYPEgithub.com/coldsmirk/vef-framework-go/config.ApprovalBindingConsistency
config.ApprovalConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.ApprovalConfig
config.BasicAccountConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.BasicAccountConfig
config.ConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.Config
config.CORSConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.CORSConfig
config.CronConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.CronConfig
config.CronStoreConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.CronStoreConfig
config.DBKindTYPEgithub.com/coldsmirk/vef-framework-go/config.DBKind
config.DataSourceConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.DataSourceConfig
config.DataSourcesConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.DataSourcesConfig
config.DefaultAPIRateLimitMaxCONSTint = 100
config.DefaultAPIRateLimitPeriodCONSTtime.Duration = 300000000000
config.DefaultClaimTTLCONSTtime.Duration = 86400000000000
config.DefaultCronStoreAbandonedAfterCONSTtime.Duration = 60000000000
config.DefaultCronStoreBatchSizeCONSTint = 32
config.DefaultCronStoreHeartbeatIntervalCONSTtime.Duration = 10000000000
config.DefaultCronStoreMaxConcurrentCONSTint = 16
config.DefaultCronStoreMisfireThresholdCONSTtime.Duration = 60000000000
config.DefaultCronStorePollIntervalCONSTtime.Duration = 5000000000
config.DefaultDeleteBatchSizeCONSTint = 100
config.DefaultDeleteConcurrencyCONSTint = 8
config.DefaultDeleteLeaseWindowCONSTtime.Duration = 300000000000
config.DefaultDeleteMaxAttemptsCONSTint = 12
config.DefaultDeleteWorkerIntervalCONSTtime.Duration = 300000000000
config.DefaultFormDataMaxBytesCONSTint = 65536
config.DefaultIntegrationInboundRateLimitMaxCONSTint = 120
config.DefaultIntegrationInboundRateLimitPeriodCONSTtime.Duration = 60000000000
config.ApprovalBindingEventualCONSTgithub.com/coldsmirk/vef-framework-go/config.ApprovalBindingConsistency = "eventual"
config.ApprovalBindingSynchronousCONSTgithub.com/coldsmirk/vef-framework-go/config.ApprovalBindingConsistency = "synchronous"
config.DefaultLockoutBackoffBaseCONSTtime.Duration = 1000000000
config.DefaultLockoutBackoffMaxCONSTtime.Duration = 900000000000
config.DefaultLockoutLockDurationCONSTtime.Duration = 900000000000
config.DefaultLockoutMaxFailuresCONSTint = 10
config.DefaultLockoutWindowCONSTtime.Duration = 900000000000
config.DefaultMaxPendingClaimsCONSTint = 100
config.DefaultMaxUploadSizeCONSTint64 = 1073741824
config.DefaultSessionIdleTTLCONSTtime.Duration = 1800000000000
config.DefaultSessionMaxLifetimeCONSTtime.Duration = 604800000000000
config.DefaultSweepBatchSizeCONSTint = 200
config.DefaultSweepIntervalCONSTtime.Duration = 300000000000
config.DefaultTrustLoginCodeTTLCONSTtime.Duration = 60000000000
config.DefaultTrustLoginPathCONSTuntyped string = "/sso/trust"
config.DefaultTrustLoginRateLimitMaxCONSTuntyped int = 120
config.DefaultTrustLoginRateLimitPeriodCONSTtime.Duration = 60000000000
config.EnvConfigPathCONSTuntyped string = "VEF_CONFIG_PATH"
config.EnvI18NLanguageCONSTuntyped string = "VEF_I18N_LANGUAGE"
config.EnvPrefixCONSTuntyped string = "VEF"
config.EnvLogLevelCONSTuntyped string = "VEF_LOG_LEVEL"
config.ErrCronStoreAbandonedTooSoonVARerror
config.ErrInboxRetentionTooShortVARerror
config.ErrInvalidApprovalBindingConsistencyVARerror
config.ErrInvalidApprovalBusinessBindingWorkerConfigVARerror
config.ErrInvalidApprovalFormDataMaxBytesVARerror
config.ErrInvalidCronStoreCountVARerror
config.ErrInvalidCronStoreDurationVARerror
config.ErrInvalidIntegrationLogModeVARerror
config.ErrInvalidIntegrationLogRetentionVARerror
config.ErrInvalidIntegrationSecretAlgorithmVARerror
config.ErrInvalidLockoutKeyVARerror
config.ErrInvalidLockoutStrategyVARerror
config.ErrInvalidSessionOnExceedVARerror
config.ErrInvalidTokenTypeVARerror
config.ErrTrustLoginAppsRequiredVARerror
config.ErrTrustLoginPathInvalidVARerror
config.ErrTrustLoginRedirectInvalidVARerror
config.ErrTrustLoginRedirectsEmptyVARerror
config.EventConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventConfig
config.EventInboxConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventInboxConfig
config.EventMemoryTransportConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventMemoryTransportConfig
config.EventMiddlewareConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventMiddlewareConfig
config.EventOutboxTransportConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventOutboxTransportConfig
config.EventRedisStreamTransportConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventRedisStreamTransportConfig
config.EventRoutingRuleTYPEgithub.com/coldsmirk/vef-framework-go/config.EventRoutingRule
config.EventTransportsConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventTransportsConfig
config.EventTxMemoryTransportConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.EventTxMemoryTransportConfig
config.FilesystemConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.FilesystemConfig
config.IntegrationConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationConfig
config.IntegrationInboundConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationInboundConfig
config.IntegrationInboundRateLimitConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationInboundRateLimitConfig
config.IntegrationLogConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationLogConfig
config.IntegrationLogModeTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationLogMode
config.IntegrationLogAllCONSTgithub.com/coldsmirk/vef-framework-go/config.IntegrationLogMode = "all"
config.IntegrationLogErrorsCONSTgithub.com/coldsmirk/vef-framework-go/config.IntegrationLogMode = "errors"
config.IntegrationLogOffCONSTgithub.com/coldsmirk/vef-framework-go/config.IntegrationLogMode = "off"
config.IntegrationSecretAlgorithmTYPEgithub.com/coldsmirk/vef-framework-go/config.IntegrationSecretAlgorithm
config.IntegrationSecretAlgorithmAESCONSTgithub.com/coldsmirk/vef-framework-go/config.IntegrationSecretAlgorithm = "aes"
config.IntegrationSecretAlgorithmSM4CONSTgithub.com/coldsmirk/vef-framework-go/config.IntegrationSecretAlgorithm = "sm4"
config.LockoutConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.LockoutConfig
config.LockoutKeyTYPEgithub.com/coldsmirk/vef-framework-go/config.LockoutKey
config.LockoutKeyIPCONSTgithub.com/coldsmirk/vef-framework-go/config.LockoutKey = "ip"
config.LockoutKeyUserCONSTgithub.com/coldsmirk/vef-framework-go/config.LockoutKey = "user"
config.LockoutKeyUserIPCONSTgithub.com/coldsmirk/vef-framework-go/config.LockoutKey = "user_ip"
config.LockoutStrategyTYPEgithub.com/coldsmirk/vef-framework-go/config.LockoutStrategy
config.LockoutStrategyBackoffCONSTgithub.com/coldsmirk/vef-framework-go/config.LockoutStrategy = "backoff"
config.LockoutStrategyLockCONSTgithub.com/coldsmirk/vef-framework-go/config.LockoutStrategy = "lock"
config.MCPConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.MCPConfig
config.MinIOConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.MinIOConfig
config.MonitorConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.MonitorConfig
config.MySQLCONSTgithub.com/coldsmirk/vef-framework-go/config.DBKind = "mysql"
config.OracleCONSTgithub.com/coldsmirk/vef-framework-go/config.DBKind = "oracle"
config.PasswordPolicyConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.PasswordPolicyConfig
config.PostgresCONSTgithub.com/coldsmirk/vef-framework-go/config.DBKind = "postgres"
config.PrimaryDataSourceNameCONSTuntyped string = "primary"
config.PushConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.PushConfig
config.RedisConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.RedisConfig
config.SQLServerCONSTgithub.com/coldsmirk/vef-framework-go/config.DBKind = "sqlserver"
config.SQLiteCONSTgithub.com/coldsmirk/vef-framework-go/config.DBKind = "sqlite"
config.SecurityConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.SecurityConfig
config.SSLDisableCONSTgithub.com/coldsmirk/vef-framework-go/config.SSLMode = "disable"
config.SSLModeTYPEgithub.com/coldsmirk/vef-framework-go/config.SSLMode
config.SSLRequireCONSTgithub.com/coldsmirk/vef-framework-go/config.SSLMode = "require"
config.SSLVerifyCACONSTgithub.com/coldsmirk/vef-framework-go/config.SSLMode = "verify-ca"
config.SSLVerifyFullCONSTgithub.com/coldsmirk/vef-framework-go/config.SSLMode = "verify-full"
config.SessionConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.SessionConfig
config.SessionExceedEvictOldestCONSTgithub.com/coldsmirk/vef-framework-go/config.SessionExceedPolicy = "evict_oldest"
config.SessionExceedPolicyTYPEgithub.com/coldsmirk/vef-framework-go/config.SessionExceedPolicy
config.SessionExceedRejectCONSTgithub.com/coldsmirk/vef-framework-go/config.SessionExceedPolicy = "reject"
config.StorageConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.StorageConfig
config.StorageFilesystemCONSTgithub.com/coldsmirk/vef-framework-go/config.StorageProvider = "filesystem"
config.StorageMemoryCONSTgithub.com/coldsmirk/vef-framework-go/config.StorageProvider = "memory"
config.StorageMinIOCONSTgithub.com/coldsmirk/vef-framework-go/config.StorageProvider = "minio"
config.StorageProviderTYPEgithub.com/coldsmirk/vef-framework-go/config.StorageProvider
config.TokenTypeTYPEgithub.com/coldsmirk/vef-framework-go/config.TokenType
config.TokenTypeJWTCONSTgithub.com/coldsmirk/vef-framework-go/config.TokenType = "jwt_token"
config.TokenTypeOpaqueCONSTgithub.com/coldsmirk/vef-framework-go/config.TokenType = "opaque_token"
config.TrustLoginAppConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.TrustLoginAppConfig
config.TrustLoginConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.TrustLoginConfig
config.TrustLoginRateLimitConfigTYPEgithub.com/coldsmirk/vef-framework-go/config.TrustLoginRateLimitConfig

Exported Fields​

FieldSignature and config tag
config.AppConfig.Namestring [field_order=1 tag="config:\"name\""]
config.AppConfig.Portuint16 [field_order=2 tag="config:\"port\""]
config.AppConfig.BodyLimitstring [field_order=3 tag="config:\"body_limit\""]
config.AppConfig.TrustedProxies[]string [field_order=4 tag="config:\"trusted_proxies\""]
config.APIConfig.RateLimitgithub.com/coldsmirk/vef-framework-go/config.APIRateLimitConfig [field_order=1 tag="config:\"rate_limit\""]
config.APIRateLimitConfig.Maxint [field_order=1 tag="config:\"max\""]
config.APIRateLimitConfig.Periodtime.Duration [field_order=2 tag="config:\"period\""]
config.ApprovalConfig.AutoMigratebool [field_order=1 tag="config:\"auto_migrate\""]
config.ApprovalConfig.TimeoutScanIntervaltime.Duration [field_order=2 tag="config:\"timeout_scan_interval\""]
config.ApprovalConfig.PreWarningScanIntervaltime.Duration [field_order=3 tag="config:\"pre_warning_scan_interval\""]
config.ApprovalConfig.CleanupScanIntervaltime.Duration [field_order=4 tag="config:\"cleanup_scan_interval\""]
config.ApprovalConfig.DelegationMaxDepthint [field_order=5 tag="config:\"delegation_max_depth\""]
config.ApprovalConfig.FormSnapshotRetentiontime.Duration [field_order=6 tag="config:\"form_snapshot_retention\""]
config.ApprovalConfig.UrgeRecordRetentiontime.Duration [field_order=7 tag="config:\"urge_record_retention\""]
config.ApprovalConfig.CCRecordRetentiontime.Duration [field_order=8 tag="config:\"cc_record_retention\""]
config.ApprovalConfig.FormDataMaxBytesint [field_order=9 tag="config:\"form_data_max_bytes\""]
config.ApprovalConfig.BusinessBindinggithub.com/coldsmirk/vef-framework-go/config.ApprovalBusinessBindingConfig [field_order=10 tag="config:\"business_binding\""]
config.ApprovalBusinessBindingConfig.Consistencygithub.com/coldsmirk/vef-framework-go/config.ApprovalBindingConsistency [field_order=1 tag="config:\"consistency\""]
config.ApprovalBusinessBindingConfig.ScanIntervaltime.Duration [field_order=2 tag="config:\"scan_interval\""]
config.ApprovalBusinessBindingConfig.BatchSizeint [field_order=3 tag="config:\"batch_size\""]
config.CORSConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.CORSConfig.AllowOrigins[]string [field_order=2 tag="config:\"allow_origins\""]
config.CronConfig.Storegithub.com/coldsmirk/vef-framework-go/config.CronStoreConfig [field_order=1 tag="config:\"store\""]
config.CronStoreConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.CronStoreConfig.AutoMigratebool [field_order=2 tag="config:\"auto_migrate\""]
config.CronStoreConfig.PollIntervaltime.Duration [field_order=3 tag="config:\"poll_interval\""]
config.CronStoreConfig.BatchSizeint [field_order=4 tag="config:\"batch_size\""]
config.CronStoreConfig.MaxConcurrentint [field_order=5 tag="config:\"max_concurrent\""]
config.CronStoreConfig.MisfireThresholdtime.Duration [field_order=6 tag="config:\"misfire_threshold\""]
config.CronStoreConfig.HeartbeatIntervaltime.Duration [field_order=7 tag="config:\"heartbeat_interval\""]
config.CronStoreConfig.AbandonedAftertime.Duration [field_order=8 tag="config:\"abandoned_after\""]
config.CronStoreConfig.RunTimeouttime.Duration [field_order=9 tag="config:\"run_timeout\""]
config.CronStoreConfig.RunRetentiontime.Duration [field_order=10 tag="config:\"run_retention\""]
config.DataSourceConfig.Kindgithub.com/coldsmirk/vef-framework-go/config.DBKind [field_order=1 tag="config:\"type\""]
config.DataSourceConfig.Hoststring [field_order=2 tag="config:\"host\""]
config.DataSourceConfig.Portuint16 [field_order=3 tag="config:\"port\""]
config.DataSourceConfig.Userstring [field_order=4 tag="config:\"user\""]
config.DataSourceConfig.Passwordstring [field_order=5 tag="config:\"password\""]
config.DataSourceConfig.Databasestring [field_order=6 tag="config:\"database\""]
config.DataSourceConfig.Schemastring [field_order=7 tag="config:\"schema\""]
config.DataSourceConfig.Pathstring [field_order=8 tag="config:\"path\""]
config.DataSourceConfig.EnableSQLGuardbool [field_order=9 tag="config:\"enable_sql_guard\""]
config.DataSourceConfig.SSLModegithub.com/coldsmirk/vef-framework-go/config.SSLMode [field_order=10 tag="config:\"ssl_mode\""]
config.DataSourceConfig.SSLRootCertstring [field_order=11 tag="config:\"ssl_root_cert\""]
config.DataSourcesConfig.Mapmap[string]github.com/coldsmirk/vef-framework-go/config.DataSourceConfig [field_order=1 tag=""]
config.EventConfig.DefaultTransportstring [field_order=1 tag="config:\"default_transport\""]
config.EventConfig.AsyncQueueSizeint [field_order=2 tag="config:\"async_queue_size\""]
config.EventConfig.AsyncWorkersint [field_order=3 tag="config:\"async_workers\""]
config.EventConfig.PublishTimeouttime.Duration [field_order=4 tag="config:\"publish_timeout\""]
config.EventConfig.Transportsgithub.com/coldsmirk/vef-framework-go/config.EventTransportsConfig [field_order=5 tag="config:\"transports\""]
config.EventConfig.Middlewaregithub.com/coldsmirk/vef-framework-go/config.EventMiddlewareConfig [field_order=6 tag="config:\"middleware\""]
config.EventConfig.Inboxgithub.com/coldsmirk/vef-framework-go/config.EventInboxConfig [field_order=7 tag="config:\"inbox\""]
config.EventConfig.Routing[]github.com/coldsmirk/vef-framework-go/config.EventRoutingRule [field_order=8 tag="config:\"routing\""]
config.EventInboxConfig.Retentiontime.Duration [field_order=1 tag="config:\"retention\""]
config.EventInboxConfig.ProcessingLeasetime.Duration [field_order=2 tag="config:\"processing_lease\""]
config.EventInboxConfig.CleanupIntervaltime.Duration [field_order=3 tag="config:\"cleanup_interval\""]
config.EventMemoryTransportConfig.QueueSizeint [field_order=1 tag="config:\"queue_size\""]
config.EventMemoryTransportConfig.FullPolicystring [field_order=2 tag="config:\"full_policy\""]
config.EventMemoryTransportConfig.PublishTimeouttime.Duration [field_order=3 tag="config:\"publish_timeout\""]
config.EventMiddlewareConfig.Loggingbool [field_order=1 tag="config:\"logging\""]
config.EventMiddlewareConfig.Tracingbool [field_order=2 tag="config:\"tracing\""]
config.EventMiddlewareConfig.TracingStrictbool [field_order=3 tag="config:\"tracing_strict\""]
config.EventMiddlewareConfig.Metricsbool [field_order=4 tag="config:\"metrics\""]
config.EventMiddlewareConfig.Recoverbool [field_order=5 tag="config:\"recover\""]
config.EventMiddlewareConfig.Inboxbool [field_order=6 tag="config:\"inbox\""]
config.EventOutboxTransportConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.EventOutboxTransportConfig.RelayIntervaltime.Duration [field_order=2 tag="config:\"relay_interval\""]
config.EventOutboxTransportConfig.MaxRetriesint [field_order=3 tag="config:\"max_retries\""]
config.EventOutboxTransportConfig.BatchSizeint [field_order=4 tag="config:\"batch_size\""]
config.EventOutboxTransportConfig.LeaseMultiplierint [field_order=5 tag="config:\"lease_multiplier\""]
config.EventOutboxTransportConfig.MinLeasetime.Duration [field_order=6 tag="config:\"min_lease\""]
config.EventOutboxTransportConfig.SinkNamestring [field_order=7 tag="config:\"sink\""]
config.EventOutboxTransportConfig.CleanupIntervaltime.Duration [field_order=8 tag="config:\"cleanup_interval\""]
config.EventOutboxTransportConfig.CompletedTTLtime.Duration [field_order=9 tag="config:\"completed_ttl\""]
config.EventRedisStreamTransportConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.EventRedisStreamTransportConfig.StreamPrefixstring [field_order=2 tag="config:\"stream_prefix\""]
config.EventRedisStreamTransportConfig.MaxLenApproxint64 [field_order=3 tag="config:\"max_len_approx\""]
config.EventRedisStreamTransportConfig.BlockTimeouttime.Duration [field_order=4 tag="config:\"block_timeout\""]
config.EventRedisStreamTransportConfig.ClaimIdletime.Duration [field_order=5 tag="config:\"claim_idle\""]
config.EventRedisStreamTransportConfig.ClaimIntervaltime.Duration [field_order=6 tag="config:\"claim_interval\""]
config.EventRedisStreamTransportConfig.ClaimBatchSizeint64 [field_order=7 tag="config:\"claim_batch_size\""]
config.EventRedisStreamTransportConfig.ReaperConcurrencyint [field_order=8 tag="config:\"reaper_concurrency\""]
config.EventRedisStreamTransportConfig.HandlerTimeouttime.Duration [field_order=9 tag="config:\"handler_timeout\""]
config.EventRedisStreamTransportConfig.SetupTimeouttime.Duration [field_order=10 tag="config:\"setup_timeout\""]
config.EventRedisStreamTransportConfig.ConsumerIDstring [field_order=11 tag="config:\"consumer_id\""]
config.EventRedisStreamTransportConfig.StartIDstring [field_order=12 tag="config:\"start_id\""]
config.EventRedisStreamTransportConfig.IdleGroupRetentiontime.Duration [field_order=13 tag="config:\"idle_group_retention\""]
config.EventRedisStreamTransportConfig.IdleGroupSweepIntervaltime.Duration [field_order=14 tag="config:\"idle_group_sweep_interval\""]
config.EventRoutingRule.Patternstring [field_order=1 tag="config:\"pattern\""]
config.EventRoutingRule.Transports[]string [field_order=2 tag="config:\"transports\""]
config.EventTransportsConfig.Memorygithub.com/coldsmirk/vef-framework-go/config.EventMemoryTransportConfig [field_order=1 tag="config:\"memory\""]
config.EventTransportsConfig.Outboxgithub.com/coldsmirk/vef-framework-go/config.EventOutboxTransportConfig [field_order=2 tag="config:\"outbox\""]
config.EventTransportsConfig.RedisStreamgithub.com/coldsmirk/vef-framework-go/config.EventRedisStreamTransportConfig [field_order=3 tag="config:\"redis_stream\""]
config.EventTransportsConfig.TxMemorygithub.com/coldsmirk/vef-framework-go/config.EventTxMemoryTransportConfig [field_order=4 tag="config:\"tx_memory\""]
config.EventTxMemoryTransportConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.EventTxMemoryTransportConfig.QueueSizeint [field_order=2 tag="config:\"queue_size\""]
config.EventTxMemoryTransportConfig.FullPolicystring [field_order=3 tag="config:\"full_policy\""]
config.EventTxMemoryTransportConfig.PublishTimeouttime.Duration [field_order=4 tag="config:\"publish_timeout\""]
config.FilesystemConfig.Rootstring [field_order=1 tag="config:\"root\""]
config.IntegrationConfig.AutoMigratebool [field_order=1 tag="config:\"auto_migrate\""]
config.IntegrationConfig.SecretKeystring [field_order=2 tag="config:\"secret_key\""]
config.IntegrationConfig.SecretAlgorithmgithub.com/coldsmirk/vef-framework-go/config.IntegrationSecretAlgorithm [field_order=3 tag="config:\"secret_algorithm\""]
config.IntegrationConfig.RunTimeouttime.Duration [field_order=4 tag="config:\"run_timeout\""]
config.IntegrationConfig.MaxResponseBodyint64 [field_order=5 tag="config:\"max_response_body\""]
config.IntegrationConfig.Loggithub.com/coldsmirk/vef-framework-go/config.IntegrationLogConfig [field_order=6 tag="config:\"log\""]
config.IntegrationConfig.Inboundgithub.com/coldsmirk/vef-framework-go/config.IntegrationInboundConfig [field_order=7 tag="config:\"inbound\""]
config.IntegrationInboundConfig.RateLimitgithub.com/coldsmirk/vef-framework-go/config.IntegrationInboundRateLimitConfig [field_order=1 tag="config:\"rate_limit\""]
config.IntegrationInboundRateLimitConfig.Maxint [field_order=1 tag="config:\"max\""]
config.IntegrationInboundRateLimitConfig.Periodtime.Duration [field_order=2 tag="config:\"period\""]
config.IntegrationLogConfig.Modegithub.com/coldsmirk/vef-framework-go/config.IntegrationLogMode [field_order=1 tag="config:\"mode\""]
config.IntegrationLogConfig.CaptureLimitint [field_order=2 tag="config:\"capture_limit\""]
config.IntegrationLogConfig.MaskFields[]string [field_order=3 tag="config:\"mask_fields\""]
config.IntegrationLogConfig.Retentiontime.Duration [field_order=4 tag="config:\"retention\""]
config.LockoutConfig.Enabled*bool [field_order=1 tag="config:\"enabled\""]
config.LockoutConfig.MaxFailuresint [field_order=2 tag="config:\"max_failures\""]
config.LockoutConfig.Windowtime.Duration [field_order=3 tag="config:\"window\""]
config.LockoutConfig.LockDurationtime.Duration [field_order=4 tag="config:\"lock_duration\""]
config.LockoutConfig.Strategygithub.com/coldsmirk/vef-framework-go/config.LockoutStrategy [field_order=5 tag="config:\"strategy\""]
config.LockoutConfig.BackoffBasetime.Duration [field_order=6 tag="config:\"backoff_base\""]
config.LockoutConfig.BackoffMaxtime.Duration [field_order=7 tag="config:\"backoff_max\""]
config.LockoutConfig.Keygithub.com/coldsmirk/vef-framework-go/config.LockoutKey [field_order=8 tag="config:\"key\""]
config.MCPConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.MCPConfig.RequireAuth*bool [field_order=2 tag="config:\"require_auth\""]
config.MinIOConfig.Endpointstring [field_order=1 tag="config:\"endpoint\""]
config.MinIOConfig.AccessKeystring [field_order=2 tag="config:\"access_key\""]
config.MinIOConfig.SecretKeystring [field_order=3 tag="config:\"secret_key\""]
config.MinIOConfig.Bucketstring [field_order=4 tag="config:\"bucket\""]
config.MinIOConfig.Regionstring [field_order=5 tag="config:\"region\""]
config.MinIOConfig.UseSSLbool [field_order=6 tag="config:\"use_ssl\""]
config.MonitorConfig.SampleIntervaltime.Duration [field_order=1 tag="config:\"sample_interval\""]
config.MonitorConfig.SampleDurationtime.Duration [field_order=2 tag="config:\"sample_duration\""]
config.PasswordPolicyConfig.MinLengthint [field_order=1 tag="config:\"min_length\""]
config.PasswordPolicyConfig.MaxLengthint [field_order=2 tag="config:\"max_length\""]
config.PasswordPolicyConfig.RequireUpperbool [field_order=3 tag="config:\"require_upper\""]
config.PasswordPolicyConfig.RequireLowerbool [field_order=4 tag="config:\"require_lower\""]
config.PasswordPolicyConfig.RequireDigitbool [field_order=5 tag="config:\"require_digit\""]
config.PasswordPolicyConfig.RequireSymbolbool [field_order=6 tag="config:\"require_symbol\""]
config.PasswordPolicyConfig.MinCharClassesint [field_order=7 tag="config:\"min_char_classes\""]
config.PasswordPolicyConfig.DisallowUsernamebool [field_order=8 tag="config:\"disallow_username\""]
config.PasswordPolicyConfig.Blocklist[]string [field_order=9 tag="config:\"blocklist\""]
config.PasswordPolicyConfig.HistoryDepthint [field_order=10 tag="config:\"history_depth\""]
config.PasswordPolicyConfig.MaxAgetime.Duration [field_order=11 tag="config:\"max_age\""]
config.PushConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.PushConfig.Pathstring [field_order=2 tag="config:\"path\""]
config.PushConfig.AllowedOrigins[]string [field_order=3 tag="config:\"allowed_origins\""]
config.PushConfig.PingIntervaltime.Duration [field_order=4 tag="config:\"ping_interval\""]
config.PushConfig.WriteTimeouttime.Duration [field_order=5 tag="config:\"write_timeout\""]
config.PushConfig.SendBufferint [field_order=6 tag="config:\"send_buffer\""]
config.PushConfig.MaxConnectionsPerUserint [field_order=7 tag="config:\"max_connections_per_user\""]
config.PushConfig.SessionRecheckIntervaltime.Duration [field_order=8 tag="config:\"session_recheck_interval\""]
config.RedisConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.RedisConfig.Hoststring [field_order=2 tag="config:\"host\""]
config.RedisConfig.Portuint16 [field_order=3 tag="config:\"port\""]
config.RedisConfig.Userstring [field_order=4 tag="config:\"user\""]
config.RedisConfig.Passwordstring [field_order=5 tag="config:\"password\""]
config.RedisConfig.Databaseuint8 [field_order=6 tag="config:\"database\""]
config.RedisConfig.Networkstring [field_order=7 tag="config:\"network\""]
config.SecurityConfig.Secretstring [field_order=1 tag="config:\"secret\""]
config.SecurityConfig.TokenExpirestime.Duration [field_order=2 tag="config:\"token_expires\""]
config.SecurityConfig.RefreshNotBeforetime.Duration [field_order=3 tag="config:\"refresh_not_before\""]
config.SecurityConfig.LoginRateLimitint [field_order=4 tag="config:\"login_rate_limit\""]
config.SecurityConfig.RefreshRateLimitint [field_order=5 tag="config:\"refresh_rate_limit\""]
config.SecurityConfig.IPWhitelistsmap[string][]string [field_order=6 tag="config:\"ip_whitelists\""]
config.SecurityConfig.Lockoutgithub.com/coldsmirk/vef-framework-go/config.LockoutConfig [field_order=9 tag="config:\"lockout\""]
config.SecurityConfig.PasswordPolicygithub.com/coldsmirk/vef-framework-go/config.PasswordPolicyConfig [field_order=10 tag="config:\"password_policy\""]
config.SecurityConfig.TokenTypegithub.com/coldsmirk/vef-framework-go/config.TokenType [field_order=11 tag="config:\"token_type\""]
config.SecurityConfig.Sessiongithub.com/coldsmirk/vef-framework-go/config.SessionConfig [field_order=12 tag="config:\"session\""]
config.SecurityConfig.APIKeysmap[string]github.com/coldsmirk/vef-framework-go/config.APIKeyConfig [field_order=7 tag="config:\"api_keys\""]
config.SecurityConfig.BasicAccountsmap[string]github.com/coldsmirk/vef-framework-go/config.BasicAccountConfig [field_order=8 tag="config:\"basic_accounts\""]
config.SecurityConfig.TrustLogingithub.com/coldsmirk/vef-framework-go/config.TrustLoginConfig [field_order=13 tag="config:\"trust_login\""]
config.APIKeyConfig.Keystring [field_order=1 tag="config:\"key\""]
config.APIKeyConfig.Roles[]string [field_order=2 tag="config:\"roles\""]
config.BasicAccountConfig.Passwordstring [field_order=1 tag="config:\"password\""]
config.BasicAccountConfig.Roles[]string [field_order=2 tag="config:\"roles\""]
config.SessionConfig.MaxConcurrentint [field_order=1 tag="config:\"max_concurrent\""]
config.SessionConfig.OnExceedgithub.com/coldsmirk/vef-framework-go/config.SessionExceedPolicy [field_order=2 tag="config:\"on_exceed\""]
config.SessionConfig.IdleTTLtime.Duration [field_order=3 tag="config:\"idle_ttl\""]
config.SessionConfig.MaxLifetimetime.Duration [field_order=4 tag="config:\"max_lifetime\""]
config.SessionConfig.Sliding*bool [field_order=5 tag="config:\"sliding\""]
config.TrustLoginConfig.Enabledbool [field_order=1 tag="config:\"enabled\""]
config.TrustLoginConfig.Pathstring [field_order=2 tag="config:\"path\""]
config.TrustLoginConfig.CodeTTLtime.Duration [field_order=3 tag="config:\"code_ttl\""]
config.TrustLoginConfig.BindUserAgent*bool [field_order=4 tag="config:\"bind_user_agent\""]
config.TrustLoginConfig.BindClientIPbool [field_order=5 tag="config:\"bind_client_ip\""]
config.TrustLoginConfig.Appsmap[string]github.com/coldsmirk/vef-framework-go/config.TrustLoginAppConfig [field_order=6 tag="config:\"apps\""]
config.TrustLoginConfig.RateLimitgithub.com/coldsmirk/vef-framework-go/config.TrustLoginRateLimitConfig [field_order=7 tag="config:\"rate_limit\""]
config.TrustLoginRateLimitConfig.Maxint [field_order=1 tag="config:\"max\""]
config.TrustLoginRateLimitConfig.Periodtime.Duration [field_order=2 tag="config:\"period\""]
config.TrustLoginAppConfig.RedirectURLs[]string [field_order=1 tag="config:\"redirect_urls\""]
config.StorageConfig.Providergithub.com/coldsmirk/vef-framework-go/config.StorageProvider [field_order=1 tag="config:\"provider\""]
config.StorageConfig.AutoMigratebool [field_order=2 tag="config:\"auto_migrate\""]
config.StorageConfig.MinIOgithub.com/coldsmirk/vef-framework-go/config.MinIOConfig [field_order=3 tag="config:\"minio\""]
config.StorageConfig.Filesystemgithub.com/coldsmirk/vef-framework-go/config.FilesystemConfig [field_order=4 tag="config:\"filesystem\""]
config.StorageConfig.MaxUploadSizeint64 [field_order=5 tag="config:\"max_upload_size\""]
config.StorageConfig.ClaimTTLtime.Duration [field_order=6 tag="config:\"claim_ttl\""]
config.StorageConfig.MaxPendingClaimsint [field_order=7 tag="config:\"max_pending_claims\""]
config.StorageConfig.AllowPublicUploadsbool [field_order=8 tag="config:\"allow_public_uploads\""]
config.StorageConfig.SweepIntervaltime.Duration [field_order=9 tag="config:\"sweep_interval\""]
config.StorageConfig.SweepBatchSizeint [field_order=10 tag="config:\"sweep_batch_size\""]
config.StorageConfig.OrphanRetentiontime.Duration [field_order=11 tag="config:\"orphan_retention\""]
config.StorageConfig.DeleteWorkerIntervaltime.Duration [field_order=12 tag="config:\"delete_worker_interval\""]
config.StorageConfig.DeleteBatchSizeint [field_order=12 tag="config:\"delete_batch_size\""]
config.StorageConfig.DeleteConcurrencyint [field_order=13 tag="config:\"delete_concurrency\""]
config.StorageConfig.DeleteMaxAttemptsint [field_order=14 tag="config:\"delete_max_attempts\""]
config.StorageConfig.DeleteLeaseWindowtime.Duration [field_order=15 tag="config:\"delete_lease_window\""]

Exported Methods​

MethodSignature
config.ApprovalConfig.ApplyDefaultsfunc()
config.ApprovalConfig.EffectiveFormDataMaxBytesfunc() int
config.ApprovalConfig.Validatefunc() error
config.ApprovalBusinessBindingConfig.EffectiveConsistencyfunc() github.com/coldsmirk/vef-framework-go/config.ApprovalBindingConsistency
config.ApprovalBusinessBindingConfig.EffectiveScanIntervalfunc() time.Duration
config.ApprovalBusinessBindingConfig.EffectiveBatchSizefunc() int
config.ApprovalBusinessBindingConfig.Validatefunc() error
config.APIRateLimitConfig.EffectiveMaxfunc() int
config.APIRateLimitConfig.EffectivePeriodfunc() time.Duration
config.Config.Unmarshalfunc(key string, target any) error
config.CronConfig.Validatefunc() error
config.CronStoreConfig.EffectivePollIntervalfunc() time.Duration
config.CronStoreConfig.EffectiveBatchSizefunc() int
config.CronStoreConfig.EffectiveMaxConcurrentfunc() int
config.CronStoreConfig.EffectiveMisfireThresholdfunc() time.Duration
config.CronStoreConfig.EffectiveHeartbeatIntervalfunc() time.Duration
config.CronStoreConfig.EffectiveAbandonedAfterfunc() time.Duration
config.DataSourcesConfig.Primaryfunc() github.com/coldsmirk/vef-framework-go/config.DataSourceConfig
config.EventConfig.EffectiveAsyncQueueSizefunc() int
config.EventConfig.EffectiveAsyncWorkersfunc() int
config.EventConfig.EffectiveDefaultTransportfunc() string
config.EventConfig.EffectivePublishTimeoutfunc() time.Duration
config.EventConfig.Validatefunc() error
config.EventInboxConfig.EffectiveCleanupIntervalfunc() time.Duration
config.EventInboxConfig.EffectiveProcessingLeasefunc() time.Duration
config.EventInboxConfig.EffectiveRetentionfunc() time.Duration
config.EventOutboxTransportConfig.EffectiveCleanupIntervalfunc() time.Duration
config.EventOutboxTransportConfig.EffectiveCompletedTTLfunc() time.Duration
config.IntegrationConfig.EffectiveSecretAlgorithmfunc() github.com/coldsmirk/vef-framework-go/config.IntegrationSecretAlgorithm
config.IntegrationConfig.EffectiveRunTimeoutfunc() time.Duration
config.IntegrationConfig.EffectiveMaxResponseBodyfunc() int64
config.IntegrationConfig.Validatefunc() error
config.IntegrationInboundRateLimitConfig.EffectiveMaxfunc() int
config.IntegrationInboundRateLimitConfig.EffectivePeriodfunc() time.Duration
config.IntegrationLogConfig.EffectiveModefunc() github.com/coldsmirk/vef-framework-go/config.IntegrationLogMode
config.IntegrationLogConfig.EffectiveCaptureLimitfunc() int
config.PushConfig.EffectivePathfunc() string
config.PushConfig.EffectivePingIntervalfunc() time.Duration
config.PushConfig.EffectiveWriteTimeoutfunc() time.Duration
config.PushConfig.EffectiveSendBufferfunc() int
config.PushConfig.EffectiveSessionRecheckIntervalfunc() time.Duration
config.LockoutConfig.IsEnabledfunc() bool
config.LockoutConfig.EffectiveMaxFailuresfunc() int
config.LockoutConfig.EffectiveWindowfunc() time.Duration
config.LockoutConfig.EffectiveLockDurationfunc() time.Duration
config.LockoutConfig.EffectiveStrategyfunc() github.com/coldsmirk/vef-framework-go/config.LockoutStrategy
config.LockoutConfig.EffectiveBackoffBasefunc() time.Duration
config.LockoutConfig.EffectiveBackoffMaxfunc() time.Duration
config.LockoutConfig.EffectiveKeyfunc() github.com/coldsmirk/vef-framework-go/config.LockoutKey
config.LockoutConfig.Validatefunc() error
config.SecurityConfig.EffectiveTokenTypefunc() github.com/coldsmirk/vef-framework-go/config.TokenType
config.SecurityConfig.Validatefunc() error
config.TrustLoginConfig.EffectivePathfunc() string
config.TrustLoginConfig.EffectiveCodeTTLfunc() time.Duration
config.TrustLoginConfig.IsUserAgentBoundfunc() bool
config.TrustLoginConfig.Validatefunc() error
config.TrustLoginRateLimitConfig.EffectiveMaxfunc() int
config.TrustLoginRateLimitConfig.EffectivePeriodfunc() time.Duration
config.SessionConfig.EffectiveOnExceedfunc() github.com/coldsmirk/vef-framework-go/config.SessionExceedPolicy
config.SessionConfig.EffectiveIdleTTLfunc() time.Duration
config.SessionConfig.EffectiveMaxLifetimefunc() time.Duration
config.SessionConfig.IsSlidingfunc() bool
config.StorageConfig.EffectiveClaimTTLfunc() time.Duration
config.StorageConfig.EffectiveDeleteBatchSizefunc() int
config.StorageConfig.EffectiveDeleteConcurrencyfunc() int
config.StorageConfig.EffectiveDeleteLeaseWindowfunc() time.Duration
config.StorageConfig.EffectiveDeleteMaxAttemptsfunc() int
config.StorageConfig.EffectiveDeleteWorkerIntervalfunc() time.Duration
config.StorageConfig.EffectiveMaxPendingClaimsfunc() int
config.StorageConfig.EffectiveMaxUploadSizefunc() int64
config.StorageConfig.EffectiveSweepBatchSizefunc() int
config.StorageConfig.EffectiveSweepIntervalfunc() time.Duration

Method Semantics​

Method familyBehavior
config.Config.Unmarshal(key, target)读取指定 key 并写入 target;内部 Viper 实现使用 config struct tags,并忽略没有 tag 的字段。
config.DataSourcesConfig.Primary()返回 Map[config.PrimaryDataSourceName]。如果 map 中没有 primary,方法会返回零值 config.DataSourceConfig;框架启动阶段会另行校验 primary 是否存在。
config.ApprovalConfig.ApplyDefaults()原地修改 receiver。非正数 duration 或 count 会变成:timeout scan 1m、pre-warning scan 5m、cleanup scan 24h、delegation max depth 10、form snapshot retention 90d、urge record retention 30d、CC record retention 90d。它不会启用 AutoMigrate。
config.StorageConfig.Effective...每个 storage accessor 只有在配置值严格为正时才返回配置值;零值或负值都会重新选择导出的默认常量。默认值包括:max upload size config.DefaultMaxUploadSize(1073741824,1 GiB)、claim TTL config.DefaultClaimTTL(24h)、max pending claims 100、sweep interval 5m、sweep batch size 200、delete worker interval 5m、delete batch size 100、delete concurrency 8、delete max attempts 12、delete lease window 5m。
config.EventConfig.EffectiveDefaultTransport()返回 DefaultTransport;未配置时返回 "memory"。
config.EventConfig.EffectiveAsyncQueueSize()AsyncQueueSize 为正时返回配置值,否则返回 4096。
config.EventConfig.EffectiveAsyncWorkers()AsyncWorkers 为正时返回配置值,否则返回 4。
config.EventConfig.EffectivePublishTimeout()PublishTimeout 为正时返回配置值,否则返回 5s。
config.EventOutboxTransportConfig.EffectiveCleanupInterval()CleanupInterval 为正时返回配置值,否则返回 1h。
config.EventOutboxTransportConfig.EffectiveCompletedTTL()CompletedTTL 为正时返回配置值,否则返回 168h。
config.EventInboxConfig.EffectiveRetention()Retention 为正时返回配置值,否则返回 168h。
config.EventInboxConfig.EffectiveProcessingLease()ProcessingLease 为正时返回配置值,否则返回 10m。
config.EventInboxConfig.EffectiveCleanupInterval()CleanupInterval 为正时返回配置值,否则返回 1h。
config.EventConfig.Validate()只在 EventConfig.Middleware.Inbox 为 true 且 EventConfig.Transports.Outbox.Enabled 为 true 时运行。它把 max_retries <= 0 当作 10,按 sum(2^k seconds) 计算最坏 exponential backoff horizon,溢出时饱和并 fail-closed;当 inbox.retention <= horizon 时返回包装 config.ErrInboxRetentionTooShort 的错误。
config.SecurityConfig.EffectiveTokenType()返回 TokenType;未配置时返回 config.TokenTypeJWT("jwt_token")。
config.SecurityConfig.Validate()拒绝超出枚举范围的 TokenType(包装 config.ErrInvalidTokenType)或 SessionConfig.OnExceed(包装 config.ErrInvalidSessionOnExceed),让配置笔误在启动时立即失败。
config.LockoutConfig.IsEnabled()Enabled 为 nil(锁定默认开启)或指向 true 时返回 true。
config.LockoutConfig.Effective...()每个 accessor 只有在配置值严格为正时才返回配置值,否则重新选择对应的默认常量:MaxFailures -> config.DefaultLockoutMaxFailures(10)、Window -> config.DefaultLockoutWindow(15m)、LockDuration -> config.DefaultLockoutLockDuration(15m)、Strategy 未配置时 -> config.LockoutStrategyLock("lock")、BackoffBase -> config.DefaultLockoutBackoffBase(1s)、BackoffMax -> config.DefaultLockoutBackoffMax(15m)、Key 未配置时 -> config.LockoutKeyUserIP("user_ip")。
config.LockoutConfig.Validate()拒绝超出枚举范围的 Strategy(包装 config.ErrInvalidLockoutStrategy)或 Key(包装 config.ErrInvalidLockoutKey)。
config.SessionConfig.EffectiveOnExceed()返回 OnExceed;未配置时返回 config.SessionExceedEvictOldest("evict_oldest")。
config.SessionConfig.EffectiveIdleTTL()IdleTTL 为正时返回配置值,否则返回 config.DefaultSessionIdleTTL(30m)。
config.SessionConfig.EffectiveMaxLifetime()MaxLifetime 为正时返回配置值,否则返回 config.DefaultSessionMaxLifetime(7 * 24h)。
config.SessionConfig.IsSliding()Sliding 为 nil(默认开启滑动续期)或指向 true 时返回 true。
config.ApprovalConfig.EffectiveFormDataMaxBytes()FormDataMaxBytes 为正时返回配置值,否则返回 config.DefaultFormDataMaxBytes(65536,64 KiB)。
config.ApprovalConfig.Validate()拒绝 FormDataMaxBytes < 0(包装 config.ErrInvalidApprovalFormDataMaxBytes),并委托给 BusinessBinding.Validate()。
config.ApprovalBusinessBindingConfig.EffectiveConsistency()返回 Consistency;未配置时返回 config.ApprovalBindingSynchronous("synchronous")。
config.ApprovalBusinessBindingConfig.EffectiveScanInterval()ScanInterval 为正时返回配置值,否则返回 10s。
config.ApprovalBusinessBindingConfig.EffectiveBatchSize()BatchSize 为正时返回配置值,否则返回 100。
config.ApprovalBusinessBindingConfig.Validate()拒绝超出枚举范围的 Consistency(包装 config.ErrInvalidApprovalBindingConsistency),以及负的 ScanInterval 或 BatchSize(包装 config.ErrInvalidApprovalBusinessBindingWorkerConfig)。
config.APIRateLimitConfig.EffectiveMax()Max 为正时返回配置值,否则返回 config.DefaultAPIRateLimitMax(100)。
config.APIRateLimitConfig.EffectivePeriod()Period 为正时返回配置值,否则返回 config.DefaultAPIRateLimitPeriod(5m)。
config.CronConfig.Validate()拒绝负的时长(包装 config.ErrInvalidCronStoreDuration)、负的计数(包装 config.ErrInvalidCronStoreCount),以及 abandoned_after 比心跳间隔两倍更紧的设置(包装 config.ErrCronStoreAbandonedTooSoon)。
config.CronStoreConfig.EffectivePollInterval()PollInterval 为正时返回配置值,否则返回 config.DefaultCronStorePollInterval(5s)。
config.CronStoreConfig.EffectiveBatchSize()BatchSize 为正时返回配置值,否则返回 config.DefaultCronStoreBatchSize(32)。
config.CronStoreConfig.EffectiveMaxConcurrent()MaxConcurrent 为正时返回配置值,否则返回 config.DefaultCronStoreMaxConcurrent(16)。
config.CronStoreConfig.EffectiveMisfireThreshold()MisfireThreshold 为正时返回配置值,否则返回 config.DefaultCronStoreMisfireThreshold(1m)。
config.CronStoreConfig.EffectiveHeartbeatInterval()HeartbeatInterval 为正时返回配置值,否则返回 config.DefaultCronStoreHeartbeatInterval(10s)。
config.CronStoreConfig.EffectiveAbandonedAfter()AbandonedAfter 为正时返回配置值,否则返回 config.DefaultCronStoreAbandonedAfter(1m)。
config.IntegrationConfig.EffectiveSecretAlgorithm()返回 SecretAlgorithm;未配置时返回 config.IntegrationSecretAlgorithmAES("aes")。
config.IntegrationConfig.EffectiveRunTimeout()RunTimeout 为正时返回配置值,否则返回 30s。
config.IntegrationConfig.EffectiveMaxResponseBody()MaxResponseBody 为正时返回配置值,否则返回 8 MiB(8<<20)。
config.IntegrationConfig.Validate()拒绝超出枚举范围的 Log.Mode(包装 config.ErrInvalidIntegrationLogMode)、超出枚举范围的 SecretAlgorithm(包装 config.ErrInvalidIntegrationSecretAlgorithm),以及负的 Log.Retention(包装 config.ErrInvalidIntegrationLogRetention)。
config.IntegrationInboundRateLimitConfig.EffectiveMax()Max 为正时返回配置值,否则返回 config.DefaultIntegrationInboundRateLimitMax(120)。
config.IntegrationInboundRateLimitConfig.EffectivePeriod()Period 为正时返回配置值,否则返回 config.DefaultIntegrationInboundRateLimitPeriod(1m)。
config.IntegrationLogConfig.EffectiveMode()返回 Mode;未配置时返回 config.IntegrationLogErrors("errors")。
config.IntegrationLogConfig.EffectiveCaptureLimit()CaptureLimit 为正时返回配置值,否则返回 4096。
config.PushConfig.EffectivePath()返回 Path;未配置时返回 "/ws"。
config.PushConfig.EffectivePingInterval()PingInterval 为正时返回配置值,否则返回 30s。
config.PushConfig.EffectiveWriteTimeout()WriteTimeout 为正时返回配置值,否则返回 10s。
config.PushConfig.EffectiveSendBuffer()SendBuffer 为正时返回配置值,否则返回 32。
config.PushConfig.EffectiveSessionRecheckInterval()SessionRecheckInterval 为正时返回配置值,否则返回 60s。

DataSourcesConfig.Map 有意不带 tag。内部配置模块会先把 vef.data_sources unmarshal 成 map[string]config.DataSourceConfig,再包装成 DataSourcesConfig{Map: sources};这样既保留任意数据源名称,也用 config.PrimaryDataSourceName("primary")为全框架 orm.DB 保留主数据源。

延伸阅读​

  • 配置:配置项的解释与实际示例
  • 内置资源:这些配置会影响哪些默认模块