跳转至

配置文件

基本配置文件(config.toml)指定了服务端启动时和运行中所需的一系列核心配置,本节为其各字段提供了进一步说明。

TOML (Tom's Obvious, Minimal Language) 的规范出发,每个设置项都在配置文件中以键值对的形式出现,而多个键值对又以表(Table)的形式组织。表由表头定义,后者独占一行,并由方括号([])包裹。

每个配置项的值需为 TOML 支持的数据类型。建议参阅 TOML 规范 以了解更多信息。

在本节和本文档的其余部分,出于习惯,我们也可能以“节”来称呼 TOML 中的表。

全局配置

以下的配置项不属于任一显式定义的表。

类型 默认值 说明
debug Boolean false 当值为 true 时,在控制台打印 SQLAlchemy 的调试日志,并启用服务端内调试目的的请求类型(如 RequestThrowHandler)。

服务器基础 [server]

本节的配置指定了与服务端监听相关的基础信息。

类型 默认值 说明
name String "CFMS WebSocket Server" 服务端实例的名称。这个名称将被包含在 server_info 的响应中,一些客户端实现会将此名称展示在登录界面上。
host String "localhost" 监听地址。
port Integer 5104 监听端口。
dualstack_ipv6 Boolean true 启用 IPv6 和 IPv4 双栈支持。注意:除非您知道自己在做什么,否则不要轻易调整此设置。
secret_key String "" 当用户特异的 secret_key 在数据库中未设置时(尽管一般情况下不会发生此事件),作为默认值用于为用户签发 JWT (JSON Web Token)。该键的值将在服务端初始化时自动生成。
ssl_keyfile Path "./content/ssl/key.pem" TLS 私钥文件路径。
ssl_certfile Path "./content/ssl/cert.pem" TLS 证书文件路径。
file_chunk_size Integer 2097152 下载文件期间使用的数据块大小(单位为字节)。上传文件时的数据块大小是由服务端和客户端协商产生的。

文档与文件系统 [document]

管理文档管理系统的行为和文件系统约束。

类型 默认值 说明
allow_name_duplicate Boolean false 值若为 false,服务端将拒绝导致同一目录下发生重名的文档操作(包括但不限于上传、移动、重命名等)。然而,此项对已经发生的重名现象无效。

安全策略 [security]

定义密码策略和 mTLS(相互 TLS)要求。

类型 默认值 说明
passwd_min_length Integer 8 用户密码的最少字符数。
passwd_max_length Integer 32 用户密码的最大字符数。
enable_passwd_force_expiration Boolean true 如果启用,密码必须在 passwd_expire_after_days 定义的周期后更改。
require_passwd_enforcement_changes Boolean true 强制具有不符合要求的密码(例如,过短)的用户在登录时立即更改密码。
passwd_expire_after_days Integer 365 密码被标记为过期前的天数。
passwd_rules Array ['[A-Z]', '[a-z]', '[0-9]', '[!@#$%^&*()]'] 密码需符合的规则,以正则表达式表示,视数组中的每个字符串为一条。
passwd_min_passed_count Integer 2 密码需满足的规则的最小条数,应为非负整数。
require_client_cert Boolean false 启用 mTLS。如果为 true,服务器将根据 CA 验证客户端证书。
client_cert_ca_path String "./content/ssl/client/" 包含用于客户端验证的受信任 CA 证书的目录。

注意 passwd_min_passed_count 具有的隐式行为

在内部实现中,passwd_min_passed_count 的值实际被隐式地设置为 \(\min(\text{passwd_min_passed_count}, \text{len}(\text{passwd_rules}))\),以确保规则检查总能在密码满足所有规则要求时通过。

访问控制 [access]

控制访问控制列表 (ACL) 评估的复杂性和严格性。

类型 默认值 说明
enable_access_recursive_check Boolean true true 时,系统会沿目录树向上递归检查,以确保用户具有路径遍历权限。禁用此项可能改善深目录结构的性能,但也需要采取额外的安全措施以确保访问受控。

数据库配置 [database]

配置与数据库连接相关的底层设置。

类型 默认值 说明
type String "sqlite" 数据库引擎类型。可选的值有 sqlitemysql
file String "app.db" (仅 SQLite)指定数据库文件的名称。
host String "localhost" (仅 MySQL)指定数据库服务器的主机名。
port Integer 3306 (仅 MySQL)指定数据库服务器的端口。
username String "" (仅 MySQL)指定登录到数据库所用的用户名。
password String "" (仅 MySQL)指定登录到数据库所用的密码。
name String "app_db" (仅 MySQL)指定数据库的名称。
charset String "utf8mb4" (仅 MySQL)指定连接字符集。

提供者(Providers) [provider]

配置存储、缓存和事件系统的提供者类型。

类型 默认值 说明
caching String "memory" 缓存提供者类型。可选值为 memoryredis
storage String "local" 存储提供者类型。可选值为 locals3
event_bus String "local" 事件系统提供者类型。可选值为 localredis

Redis [redis]

当启用了与 Redis 相关的功能时,配置与 Redis 连接相关的设置。

类型 默认值 说明
host String "localhost" 指定数据库服务器的主机名。
port Integer 6379 指定数据库服务器的端口。
password String "" 指定连接到数据库使用的密码。
db Integer 0 指定数据库索引。注意集群化模式下的 Redis 可能仅支持 db0

Simple Storage Service (S3) [s3]

当指定 S3 作为存储提供者时,配置与 S3 连接相关的设置。服务端理论上兼容任意支持 S3 协议的对象存储服务,而不要求必须使用由 Amazon 提供的对象存储。

类型 默认值 说明
bucket String "" 存储桶名称。注意:服务端不会在目标存储桶不存在时尝试自动创建它。
endpoint_url String "" 自定义的 Endpoint 地址。供连接到非 Amazon 的 S3 服务器时使用。
access_key_id String "" 访问存储桶所需的 Access Key ID (AK)。
secret_access_key String "" 访问存储桶所需的 Secret Access Key (SK)。
region_name String "" 存储桶的地域。若不指定,将使用硬编码在服务端中的默认值(us-east-1)。

Note

服务端被硬编码为在访问 S3 存储桶时使用虚拟主机风格(Virtual-Hosted Style),这是 AWS S3 的默认和推荐方式。路径风格(Path-Style)不受支持。