This commit is contained in:
2026-06-18 22:56:41 +08:00
parent 3d831650b7
commit db3d030169
15 changed files with 1123 additions and 0 deletions
+25
View File
@@ -44,6 +44,7 @@ type Config struct {
Acp AcpConfig `mapstructure:"acp"`
MCP MCPConfig `mapstructure:"mcp"`
Run RunConfig `mapstructure:"run"`
Terminal TerminalConfig `mapstructure:"terminal"`
}
// HTTPConfig 描述 HTTP 服务监听参数。
@@ -215,6 +216,18 @@ type RunConfig struct {
EnvWhitelist []string `mapstructure:"env_whitelist"`
}
// TerminalConfig 控制仅限管理员的网页端终端模块:开关、启动的 shell、并发会话上限、
// 整组终止宽限,以及透传给 shell 的宿主环境变量白名单(沿用 RunConfig 的安全取舍)。
type TerminalConfig struct {
Enabled bool `mapstructure:"enabled"`
Shell string `mapstructure:"shell"`
MaxSessions int `mapstructure:"max_sessions"`
KillGrace time.Duration `mapstructure:"kill_grace"`
// EnvWhitelist 是允许透传给交互式 shell 的环境变量名白名单。
// APP_MASTER_KEY、DB DSN、git 凭据等敏感变量绝不应出现在此名单中。
EnvWhitelist []string `mapstructure:"env_whitelist"`
}
// MCPConfig 控制 MCP 模块的开关、对外 URL(注入 ACP 子进程 env)、system token TTL 与速率限制。
type MCPConfig struct {
Enabled bool `mapstructure:"enabled"`
@@ -311,6 +324,18 @@ func Load(configFile string) (*Config, error) {
"SystemRoot", "TEMP", "TMP", "USERPROFILE", "APPDATA", "LOCALAPPDATA",
"PATHEXT", "ComSpec", "NUMBER_OF_PROCESSORS",
})
v.SetDefault("terminal.enabled", true)
v.SetDefault("terminal.shell", "/bin/bash") // Windows 开发环境经 APP_TERMINAL_SHELL 覆盖
v.SetDefault("terminal.max_sessions", 5)
v.SetDefault("terminal.kill_grace", "5s")
// 透传 PATH/HOME/TERM + npm 全局安装所需(NPM_CONFIG_PREFIX 指向持久卷),
// 以便容器内 `npm i -g <acp-cli>` 可用。敏感变量不在名单内。
v.SetDefault("terminal.env_whitelist", []string{
"PATH", "HOME", "LANG", "LC_ALL", "TZ", "USER", "SHELL", "TERM",
"NPM_CONFIG_PREFIX", "NODE_PATH", "NODE_ENV",
"SystemRoot", "TEMP", "TMP", "USERPROFILE", "APPDATA", "LOCALAPPDATA",
"PATHEXT", "ComSpec", "NUMBER_OF_PROCESSORS",
})
if configFile != "" {
v.SetConfigFile(configFile)