openclaw-rocketchat 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +694 -0
- package/README.md +730 -0
- package/dist/cli/add-bot.d.ts +2 -0
- package/dist/cli/add-bot.d.ts.map +1 -0
- package/dist/cli/add-bot.js +138 -0
- package/dist/cli/add-bot.js.map +1 -0
- package/dist/cli/add-group.d.ts +2 -0
- package/dist/cli/add-group.d.ts.map +1 -0
- package/dist/cli/add-group.js +145 -0
- package/dist/cli/add-group.js.map +1 -0
- package/dist/cli/add-user.d.ts +2 -0
- package/dist/cli/add-user.d.ts.map +1 -0
- package/dist/cli/add-user.js +186 -0
- package/dist/cli/add-user.js.map +1 -0
- package/dist/cli/invite.d.ts +2 -0
- package/dist/cli/invite.d.ts.map +1 -0
- package/dist/cli/invite.js +194 -0
- package/dist/cli/invite.js.map +1 -0
- package/dist/cli/prompts.d.ts +24 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +134 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/remove-user.d.ts +2 -0
- package/dist/cli/remove-user.d.ts.map +1 -0
- package/dist/cli/remove-user.js +108 -0
- package/dist/cli/remove-user.js.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +446 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +161 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/uninstall.d.ts +2 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +81 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/config/credentials.d.ts +26 -0
- package/dist/config/credentials.d.ts.map +1 -0
- package/dist/config/credentials.js +169 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/config/writer.d.ts +52 -0
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +170 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/docker/compose.d.ts +10 -0
- package/dist/docker/compose.d.ts.map +1 -0
- package/dist/docker/compose.js +56 -0
- package/dist/docker/compose.js.map +1 -0
- package/dist/docker/manager.d.ts +38 -0
- package/dist/docker/manager.d.ts.map +1 -0
- package/dist/docker/manager.js +219 -0
- package/dist/docker/manager.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +203 -0
- package/dist/index.js.map +1 -0
- package/dist/rc-api/rest-client.d.ts +64 -0
- package/dist/rc-api/rest-client.d.ts.map +1 -0
- package/dist/rc-api/rest-client.js +268 -0
- package/dist/rc-api/rest-client.js.map +1 -0
- package/dist/rc-api/types.d.ts +158 -0
- package/dist/rc-api/types.d.ts.map +1 -0
- package/dist/rc-api/types.js +5 -0
- package/dist/rc-api/types.js.map +1 -0
- package/dist/rc-api/ws-client.d.ts +47 -0
- package/dist/rc-api/ws-client.d.ts.map +1 -0
- package/dist/rc-api/ws-client.js +308 -0
- package/dist/rc-api/ws-client.js.map +1 -0
- package/dist/service/bot-manager.d.ts +34 -0
- package/dist/service/bot-manager.d.ts.map +1 -0
- package/dist/service/bot-manager.js +156 -0
- package/dist/service/bot-manager.js.map +1 -0
- package/dist/service/channel.d.ts +35 -0
- package/dist/service/channel.d.ts.map +1 -0
- package/dist/service/channel.js +157 -0
- package/dist/service/channel.js.map +1 -0
- package/dist/service/message-handler.d.ts +45 -0
- package/dist/service/message-handler.d.ts.map +1 -0
- package/dist/service/message-handler.js +207 -0
- package/dist/service/message-handler.js.map +1 -0
- package/openclaw.plugin.json +45 -0
- package/package.json +61 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// CLI: openclaw rocketchat setup
|
|
3
|
+
// 首次部署 Rocket.Chat + 创建管理员 + 创建用户 + 写入配置
|
|
4
|
+
// 支持两种模式:本地 Docker 部署 / 连接远程 RC 服务器
|
|
5
|
+
// ============================================================
|
|
6
|
+
import { DockerManager } from "../docker/manager.js";
|
|
7
|
+
import { RocketChatRestClient } from "../rc-api/rest-client.js";
|
|
8
|
+
import { ConfigWriter } from "../config/writer.js";
|
|
9
|
+
import { saveAdminCredentials, saveUserRecord, generatePassword, generateAdminUsername, isSetupDone, getDockerDir, } from "../config/credentials.js";
|
|
10
|
+
import { ask, askPassword, confirm, select, heading, step, success, error, warn, info, } from "./prompts.js";
|
|
11
|
+
export async function setupCommand(configPath) {
|
|
12
|
+
heading("Rocket.Chat 部署向导");
|
|
13
|
+
// 检查是否已经 setup 过
|
|
14
|
+
if (isSetupDone()) {
|
|
15
|
+
warn("检测到已有 Rocket.Chat 配置。");
|
|
16
|
+
const proceed = await confirm("要重新部署吗?(会覆盖现有配置)");
|
|
17
|
+
if (!proceed) {
|
|
18
|
+
info("已取消。");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// ----------------------------------------------------------
|
|
23
|
+
// 0. 选择部署模式
|
|
24
|
+
// ----------------------------------------------------------
|
|
25
|
+
const deployMode = await select("选择部署方式", [
|
|
26
|
+
{
|
|
27
|
+
label: "本地部署(Docker)—— RC 和 OpenClaw 在同一台机器",
|
|
28
|
+
value: "local",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: "连接远程服务器 —— RC 已部署在另一台公网服务器",
|
|
32
|
+
value: "remote",
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
if (deployMode === "local") {
|
|
36
|
+
await setupLocal(configPath);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await setupRemote(configPath);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// ==============================================================
|
|
43
|
+
// 本地 Docker 部署
|
|
44
|
+
// ==============================================================
|
|
45
|
+
async function setupLocal(configPath) {
|
|
46
|
+
// ----------------------------------------------------------
|
|
47
|
+
// 1. 环境检测
|
|
48
|
+
// ----------------------------------------------------------
|
|
49
|
+
step("检测环境...");
|
|
50
|
+
const dockerDir = getDockerDir();
|
|
51
|
+
const docker = new DockerManager(dockerDir);
|
|
52
|
+
const dockerCheck = await docker.isDockerInstalled();
|
|
53
|
+
if (!dockerCheck.installed) {
|
|
54
|
+
warn("未检测到 Docker!");
|
|
55
|
+
console.log("");
|
|
56
|
+
info("Docker 是运行 Rocket.Chat 的必备工具,请根据你的系统安装:");
|
|
57
|
+
console.log("");
|
|
58
|
+
info(" 📦 Windows / macOS:");
|
|
59
|
+
info(" 下载 Docker Desktop: https://www.docker.com/products/docker-desktop/");
|
|
60
|
+
info(" 安装后启动 Docker Desktop,然后重新运行本命令。");
|
|
61
|
+
console.log("");
|
|
62
|
+
info(" 🐧 Linux (Ubuntu/Debian):");
|
|
63
|
+
info(" curl -fsSL https://get.docker.com | sh");
|
|
64
|
+
info(" sudo usermod -aG docker $USER");
|
|
65
|
+
info(" (注销后重新登录,然后重新运行本命令)");
|
|
66
|
+
console.log("");
|
|
67
|
+
info(" 🐧 Linux (CentOS/RHEL):");
|
|
68
|
+
info(" curl -fsSL https://get.docker.com | sh");
|
|
69
|
+
info(" sudo systemctl enable --now docker");
|
|
70
|
+
info(" sudo usermod -aG docker $USER");
|
|
71
|
+
console.log("");
|
|
72
|
+
const tryInstall = await confirm("是否尝试自动安装 Docker?(仅 Linux 有效)");
|
|
73
|
+
if (tryInstall) {
|
|
74
|
+
step("尝试自动安装 Docker...");
|
|
75
|
+
try {
|
|
76
|
+
const { execFile: execFileCb } = await import("node:child_process");
|
|
77
|
+
const { promisify } = await import("node:util");
|
|
78
|
+
const execFileAsync = promisify(execFileCb);
|
|
79
|
+
await execFileAsync("sh", ["-c", "curl -fsSL https://get.docker.com | sh"], { timeout: 300000 });
|
|
80
|
+
success("Docker 安装完成!");
|
|
81
|
+
// 重新检测
|
|
82
|
+
const recheck = await docker.isDockerInstalled();
|
|
83
|
+
if (!recheck.installed) {
|
|
84
|
+
error("安装后仍无法检测到 Docker,请手动检查。");
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
error(`自动安装失败: ${err.message}`);
|
|
90
|
+
info("请按上面的说明手动安装 Docker,然后重新运行本命令。");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
info("请安装 Docker 后重新运行: openclaw rocketchat setup");
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
info(`Docker: 已安装 (v${dockerCheck.version || "latest"})`);
|
|
100
|
+
const composeCheck = await docker.isComposeInstalled();
|
|
101
|
+
if (!composeCheck.installed) {
|
|
102
|
+
error("未检测到 Docker Compose!");
|
|
103
|
+
info("Docker Desktop 自带 Compose。如果你用的是 Linux,请运行:");
|
|
104
|
+
info(" sudo apt install docker-compose-plugin");
|
|
105
|
+
info("或参考: https://docs.docker.com/compose/install/");
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
info(`Docker Compose: 已安装 (v${composeCheck.version})`);
|
|
109
|
+
// ----------------------------------------------------------
|
|
110
|
+
// 2. 用户输入
|
|
111
|
+
// ----------------------------------------------------------
|
|
112
|
+
// 端口
|
|
113
|
+
const portStr = await ask("端口\n (Rocket.Chat 服务端口,手机连接时需要用到)", "3000");
|
|
114
|
+
const port = parseInt(portStr, 10) || 3000;
|
|
115
|
+
if (port < 1 || port > 65535) {
|
|
116
|
+
error("端口号必须在 1-65535 之间!");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const portAvailable = await docker.isPortAvailable(port);
|
|
120
|
+
if (!portAvailable) {
|
|
121
|
+
warn(`端口 ${port} 已被占用!`);
|
|
122
|
+
const proceed = await confirm("继续吗?(可能是已运行的 Rocket.Chat)");
|
|
123
|
+
if (!proceed)
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
info(`端口 ${port}: 可用`);
|
|
128
|
+
}
|
|
129
|
+
// 用户账号
|
|
130
|
+
const { username, password } = await promptUserAccount();
|
|
131
|
+
if (!username)
|
|
132
|
+
return;
|
|
133
|
+
// ----------------------------------------------------------
|
|
134
|
+
// 3. 部署
|
|
135
|
+
// ----------------------------------------------------------
|
|
136
|
+
console.log("");
|
|
137
|
+
// 3.1 生成 Docker 配置
|
|
138
|
+
step("生成 Docker 配置...");
|
|
139
|
+
await docker.generateComposeFile(port);
|
|
140
|
+
success("Docker 配置已生成");
|
|
141
|
+
// 3.2 拉取镜像和启动容器
|
|
142
|
+
step("拉取镜像并启动(首次约 2-5 分钟)...");
|
|
143
|
+
try {
|
|
144
|
+
await docker.start();
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
error(`Docker 启动失败: ${err.message}`);
|
|
148
|
+
info("请检查 Docker 是否正在运行。");
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// 3.3 等待就绪
|
|
152
|
+
try {
|
|
153
|
+
await docker.waitForReady(port, 120000, (msg) => {
|
|
154
|
+
step(msg);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
error(err.message);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
success("Rocket.Chat 服务已就绪");
|
|
162
|
+
// ----------------------------------------------------------
|
|
163
|
+
// 4. 创建账号
|
|
164
|
+
// ----------------------------------------------------------
|
|
165
|
+
const serverUrl = `http://127.0.0.1:${port}`;
|
|
166
|
+
const rc = new RocketChatRestClient(serverUrl);
|
|
167
|
+
const adminCreated = await createAdminAccount(rc, serverUrl, port);
|
|
168
|
+
if (!adminCreated)
|
|
169
|
+
return;
|
|
170
|
+
await createPersonalAccount(rc, username, password);
|
|
171
|
+
// ----------------------------------------------------------
|
|
172
|
+
// 5. 写入 openclaw.json 配置
|
|
173
|
+
// ----------------------------------------------------------
|
|
174
|
+
step("写入 openclaw.json 配置...");
|
|
175
|
+
const hostIp = docker.getHostIp();
|
|
176
|
+
const publicUrl = `http://${hostIp}:${port}`;
|
|
177
|
+
try {
|
|
178
|
+
const configWriter = new ConfigWriter(configPath);
|
|
179
|
+
await configWriter.readConfig();
|
|
180
|
+
configWriter.setRocketchatChannel(publicUrl, port);
|
|
181
|
+
await configWriter.save();
|
|
182
|
+
success("配置已写入");
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
error(`配置写入失败: ${err.message}`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// ----------------------------------------------------------
|
|
189
|
+
// 6. 完成提示
|
|
190
|
+
// ----------------------------------------------------------
|
|
191
|
+
printFinishBanner(publicUrl, username, port);
|
|
192
|
+
}
|
|
193
|
+
// ==============================================================
|
|
194
|
+
// 远程模式:连接已有的 Rocket.Chat 服务器
|
|
195
|
+
// ==============================================================
|
|
196
|
+
async function setupRemote(configPath) {
|
|
197
|
+
console.log("");
|
|
198
|
+
info("远程模式:连接已部署在其他服务器上的 Rocket.Chat。");
|
|
199
|
+
info("适用场景:");
|
|
200
|
+
info(" - OpenClaw 在家庭内网,RC 在公网 VPS");
|
|
201
|
+
info(" - 服务器内存不足,RC 单独部署在另一台机器");
|
|
202
|
+
info(" - 公司已有 Rocket.Chat 实例");
|
|
203
|
+
console.log("");
|
|
204
|
+
// ----------------------------------------------------------
|
|
205
|
+
// 1. 连接信息
|
|
206
|
+
// ----------------------------------------------------------
|
|
207
|
+
const serverUrl = await ask("远程 Rocket.Chat 服务器地址\n (例如 http://123.45.67.89:3000 或 https://chat.example.com)");
|
|
208
|
+
if (!serverUrl) {
|
|
209
|
+
error("地址不能为空!");
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
// 验证地址格式
|
|
213
|
+
if (!/^https?:\/\/.+/i.test(serverUrl)) {
|
|
214
|
+
error("地址格式不正确!请以 http:// 或 https:// 开头。");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// 去除尾部斜杠
|
|
218
|
+
const cleanUrl = serverUrl.replace(/\/+$/, "");
|
|
219
|
+
// ----------------------------------------------------------
|
|
220
|
+
// 2. 连通性测试
|
|
221
|
+
// ----------------------------------------------------------
|
|
222
|
+
step(`测试连接 ${cleanUrl} ...`);
|
|
223
|
+
const rc = new RocketChatRestClient(cleanUrl);
|
|
224
|
+
try {
|
|
225
|
+
const version = await rc.getServerVersion();
|
|
226
|
+
success(`连接成功!Rocket.Chat 版本: ${version}`);
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
error(`无法连接到 ${cleanUrl}`);
|
|
230
|
+
info("请检查:");
|
|
231
|
+
info(" 1. 服务器地址和端口是否正确");
|
|
232
|
+
info(" 2. 服务器是否已启动");
|
|
233
|
+
info(" 3. 防火墙是否已放行对应端口");
|
|
234
|
+
info(" 4. 如果 OpenClaw 在内网,确保能访问公网地址");
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// ----------------------------------------------------------
|
|
238
|
+
// 3. 管理员账号
|
|
239
|
+
// ----------------------------------------------------------
|
|
240
|
+
console.log("");
|
|
241
|
+
info("需要一个管理员账号来创建机器人和用户。");
|
|
242
|
+
const adminMode = await select("管理员账号", [
|
|
243
|
+
{
|
|
244
|
+
label: "自动创建新管理员(推荐,适用于新装的 Rocket.Chat)",
|
|
245
|
+
value: "create",
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
label: "使用已有管理员账号(适用于已在运行的 Rocket.Chat)",
|
|
249
|
+
value: "existing",
|
|
250
|
+
},
|
|
251
|
+
]);
|
|
252
|
+
if (adminMode === "create") {
|
|
253
|
+
// 从零创建
|
|
254
|
+
const adminCreated = await createAdminAccount(rc, cleanUrl, 0);
|
|
255
|
+
if (!adminCreated)
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// 使用已有管理员
|
|
260
|
+
const existingAdminUser = await ask("管理员用户名");
|
|
261
|
+
const existingAdminPass = await askPassword("管理员密码");
|
|
262
|
+
if (!existingAdminUser || !existingAdminPass) {
|
|
263
|
+
error("用户名和密码不能为空!");
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
step("验证管理员身份...");
|
|
267
|
+
try {
|
|
268
|
+
const authResult = await rc.login(existingAdminUser, existingAdminPass);
|
|
269
|
+
await saveAdminCredentials({
|
|
270
|
+
userId: authResult.userId,
|
|
271
|
+
authToken: authResult.authToken,
|
|
272
|
+
username: existingAdminUser,
|
|
273
|
+
password: existingAdminPass,
|
|
274
|
+
});
|
|
275
|
+
success("管理员身份验证成功");
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
error(`登录失败: ${err.message}`);
|
|
279
|
+
info("请检查用户名和密码是否正确,以及该账号是否具有管理员权限。");
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// ----------------------------------------------------------
|
|
284
|
+
// 4. 创建个人登录账号
|
|
285
|
+
// ----------------------------------------------------------
|
|
286
|
+
console.log("");
|
|
287
|
+
info("是否需要创建手机登录账号?");
|
|
288
|
+
info("(如果你已有账号,可以跳过这步)");
|
|
289
|
+
console.log("");
|
|
290
|
+
const createAccount = await confirm("创建手机登录账号?");
|
|
291
|
+
let username = "";
|
|
292
|
+
if (createAccount) {
|
|
293
|
+
const result = await promptUserAccount();
|
|
294
|
+
username = result.username;
|
|
295
|
+
if (!username)
|
|
296
|
+
return;
|
|
297
|
+
await createPersonalAccount(rc, username, result.password);
|
|
298
|
+
}
|
|
299
|
+
// ----------------------------------------------------------
|
|
300
|
+
// 5. 写入 openclaw.json 配置
|
|
301
|
+
// ----------------------------------------------------------
|
|
302
|
+
step("写入 openclaw.json 配置...");
|
|
303
|
+
// 从 URL 提取端口
|
|
304
|
+
let port = 3000;
|
|
305
|
+
try {
|
|
306
|
+
port = new URL(cleanUrl).port ? parseInt(new URL(cleanUrl).port, 10) : (cleanUrl.startsWith("https") ? 443 : 80);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
// 保持默认
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
const configWriter = new ConfigWriter(configPath);
|
|
313
|
+
await configWriter.readConfig();
|
|
314
|
+
configWriter.setRocketchatChannel(cleanUrl, port);
|
|
315
|
+
await configWriter.save();
|
|
316
|
+
success("配置已写入");
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
error(`配置写入失败: ${err.message}`);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
// ----------------------------------------------------------
|
|
323
|
+
// 6. 完成提示
|
|
324
|
+
// ----------------------------------------------------------
|
|
325
|
+
printFinishBanner(cleanUrl, username, port);
|
|
326
|
+
}
|
|
327
|
+
// ==============================================================
|
|
328
|
+
// 公共函数
|
|
329
|
+
// ==============================================================
|
|
330
|
+
/** 提示输入用户名和密码 */
|
|
331
|
+
async function promptUserAccount() {
|
|
332
|
+
console.log("");
|
|
333
|
+
info("创建你的手机登录账号");
|
|
334
|
+
info("(用这个账号在 Rocket.Chat App 上登录)");
|
|
335
|
+
const username = await ask(" 用户名");
|
|
336
|
+
if (!username) {
|
|
337
|
+
error("用户名不能为空!");
|
|
338
|
+
return { username: "", password: null };
|
|
339
|
+
}
|
|
340
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(username)) {
|
|
341
|
+
error("用户名只能包含英文字母、数字、点、下划线和连字符!");
|
|
342
|
+
return { username: "", password: null };
|
|
343
|
+
}
|
|
344
|
+
const password = await askPassword(" 密码");
|
|
345
|
+
if (!password) {
|
|
346
|
+
error("密码不能为空!");
|
|
347
|
+
return { username: "", password: null };
|
|
348
|
+
}
|
|
349
|
+
if (password.length < 6) {
|
|
350
|
+
error("密码至少 6 个字符!");
|
|
351
|
+
return { username: "", password: null };
|
|
352
|
+
}
|
|
353
|
+
const confirmPwd = await askPassword(" 确认密码");
|
|
354
|
+
if (password !== confirmPwd) {
|
|
355
|
+
error("两次密码不一致!");
|
|
356
|
+
return { username: "", password: null };
|
|
357
|
+
}
|
|
358
|
+
return { username, password };
|
|
359
|
+
}
|
|
360
|
+
/** 创建管理员账号 */
|
|
361
|
+
async function createAdminAccount(rc, serverUrl, port) {
|
|
362
|
+
step("创建管理员(内部使用,你不需要记住)...");
|
|
363
|
+
const adminUsername = generateAdminUsername();
|
|
364
|
+
const adminPassword = generatePassword();
|
|
365
|
+
const adminEmail = `${adminUsername}@openclaw.local`;
|
|
366
|
+
try {
|
|
367
|
+
const adminResult = await rc.login("admin", "admin").catch(async () => {
|
|
368
|
+
const response = await fetch(`${serverUrl}/api/v1/users.register`, {
|
|
369
|
+
method: "POST",
|
|
370
|
+
headers: { "Content-Type": "application/json" },
|
|
371
|
+
body: JSON.stringify({
|
|
372
|
+
username: adminUsername,
|
|
373
|
+
email: adminEmail,
|
|
374
|
+
pass: adminPassword,
|
|
375
|
+
name: "RC Admin",
|
|
376
|
+
}),
|
|
377
|
+
});
|
|
378
|
+
if (!response.ok) {
|
|
379
|
+
throw new Error("无法创建管理员账号");
|
|
380
|
+
}
|
|
381
|
+
return rc.login(adminUsername, adminPassword);
|
|
382
|
+
});
|
|
383
|
+
await saveAdminCredentials({
|
|
384
|
+
userId: adminResult.userId,
|
|
385
|
+
authToken: adminResult.authToken,
|
|
386
|
+
username: adminUsername,
|
|
387
|
+
password: adminPassword,
|
|
388
|
+
});
|
|
389
|
+
success("管理员已创建");
|
|
390
|
+
return true;
|
|
391
|
+
}
|
|
392
|
+
catch (err) {
|
|
393
|
+
error(`管理员创建失败: ${err.message}`);
|
|
394
|
+
info("你可能需要手动完成 Rocket.Chat 初始化。");
|
|
395
|
+
if (port > 0) {
|
|
396
|
+
info(`访问 http://127.0.0.1:${port} 完成设置向导。`);
|
|
397
|
+
}
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/** 创建个人登录账号 */
|
|
402
|
+
async function createPersonalAccount(rc, username, password) {
|
|
403
|
+
step(`创建账号 ${username}...`);
|
|
404
|
+
try {
|
|
405
|
+
await rc.createUser({
|
|
406
|
+
name: username,
|
|
407
|
+
email: `${username}@openclaw.local`,
|
|
408
|
+
password: password,
|
|
409
|
+
username: username,
|
|
410
|
+
roles: ["user"],
|
|
411
|
+
joinDefaultChannels: false,
|
|
412
|
+
verified: true,
|
|
413
|
+
requirePasswordChange: false,
|
|
414
|
+
});
|
|
415
|
+
await saveUserRecord(username);
|
|
416
|
+
success(`账号 ${username} 已创建`);
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
catch (err) {
|
|
420
|
+
error(`账号创建失败: ${err.message}`);
|
|
421
|
+
return false;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/** 打印完成横幅 */
|
|
425
|
+
function printFinishBanner(publicUrl, username, port) {
|
|
426
|
+
console.log("");
|
|
427
|
+
console.log("╔══════════════════════════════════════════╗");
|
|
428
|
+
console.log("║ 🎉 部署完成! ║");
|
|
429
|
+
console.log("╚══════════════════════════════════════════╝");
|
|
430
|
+
console.log("");
|
|
431
|
+
info("📱 手机操作:");
|
|
432
|
+
info(` 1. App Store 搜索下载 "Rocket.Chat"`);
|
|
433
|
+
info(` 2. 打开 App,服务器填: ${publicUrl}`);
|
|
434
|
+
if (username) {
|
|
435
|
+
info(` 3. 用户名: ${username}`);
|
|
436
|
+
info(" 4. 密码: 你设置的密码");
|
|
437
|
+
}
|
|
438
|
+
console.log("");
|
|
439
|
+
info("🔥 重要:请确保服务器防火墙已放行端口 " + port);
|
|
440
|
+
info(` 阿里云/腾讯云用户请在安全组中添加 TCP ${port} 端口规则`);
|
|
441
|
+
console.log("");
|
|
442
|
+
info("💡 下一步: 运行以下命令添加第一个机器人");
|
|
443
|
+
info(" openclaw rocketchat add-bot");
|
|
444
|
+
console.log("");
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiLrE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// CLI: openclaw rocketchat status
|
|
3
|
+
// 显示 Rocket.Chat 运行状态
|
|
4
|
+
// ============================================================
|
|
5
|
+
import { DockerManager } from "../docker/manager.js";
|
|
6
|
+
import { RocketChatRestClient } from "../rc-api/rest-client.js";
|
|
7
|
+
import { ConfigWriter } from "../config/writer.js";
|
|
8
|
+
import { loadAdminCredentials, loadUserRecords, getDockerDir, } from "../config/credentials.js";
|
|
9
|
+
import { heading, info, warn, error } from "./prompts.js";
|
|
10
|
+
export async function statusCommand(configPath) {
|
|
11
|
+
heading("Rocket.Chat 状态");
|
|
12
|
+
// ----------------------------------------------------------
|
|
13
|
+
// 1. Docker 状态
|
|
14
|
+
// ----------------------------------------------------------
|
|
15
|
+
const dockerDir = getDockerDir();
|
|
16
|
+
const docker = new DockerManager(dockerDir);
|
|
17
|
+
if (!docker.composeFileExists()) {
|
|
18
|
+
error("未找到 Docker 配置!请先运行: openclaw rocketchat setup");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const containerStatus = await docker.getStatus();
|
|
22
|
+
const hostIp = docker.getHostIp();
|
|
23
|
+
const configWriter = new ConfigWriter(configPath);
|
|
24
|
+
await configWriter.readConfig();
|
|
25
|
+
const rcConfig = configWriter.getRocketchatConfig();
|
|
26
|
+
const port = rcConfig?.port || 3000;
|
|
27
|
+
const rcStatusText = containerStatus.rocketchat === "running"
|
|
28
|
+
? `运行中 - http://${hostIp}:${port}`
|
|
29
|
+
: containerStatus.rocketchat === "stopped"
|
|
30
|
+
? "已停止"
|
|
31
|
+
: "未找到";
|
|
32
|
+
const mongoStatusText = containerStatus.mongodb === "running"
|
|
33
|
+
? "运行中"
|
|
34
|
+
: containerStatus.mongodb === "stopped"
|
|
35
|
+
? "已停止"
|
|
36
|
+
: "未找到";
|
|
37
|
+
info(`服务器: ${rcStatusText}`);
|
|
38
|
+
if (containerStatus.uptime) {
|
|
39
|
+
info(`运行时间: ${containerStatus.uptime}`);
|
|
40
|
+
}
|
|
41
|
+
info(`MongoDB: ${mongoStatusText}`);
|
|
42
|
+
if (containerStatus.rocketchat !== "running") {
|
|
43
|
+
console.log("");
|
|
44
|
+
info('启动命令: openclaw rocketchat setup(或手动 docker compose up -d)');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// ----------------------------------------------------------
|
|
48
|
+
// 2. 用户列表
|
|
49
|
+
// ----------------------------------------------------------
|
|
50
|
+
console.log("");
|
|
51
|
+
const users = await loadUserRecords();
|
|
52
|
+
if (users.length > 0) {
|
|
53
|
+
info(`用户`);
|
|
54
|
+
for (const u of users) {
|
|
55
|
+
const permLabel = u.permission === "readonly" ? " 🔒只读" : "";
|
|
56
|
+
info(` ${u.username}${permLabel}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ----------------------------------------------------------
|
|
60
|
+
// 3. 初始化 RC 客户端(复用,不重复加载)
|
|
61
|
+
// ----------------------------------------------------------
|
|
62
|
+
const adminCreds = await loadAdminCredentials();
|
|
63
|
+
let rc = null;
|
|
64
|
+
if (adminCreds && rcConfig?.serverUrl) {
|
|
65
|
+
rc = new RocketChatRestClient(rcConfig.serverUrl);
|
|
66
|
+
rc.setAuth(adminCreds.userId, adminCreds.authToken);
|
|
67
|
+
}
|
|
68
|
+
// ----------------------------------------------------------
|
|
69
|
+
// 4. 机器人状态
|
|
70
|
+
// ----------------------------------------------------------
|
|
71
|
+
console.log("");
|
|
72
|
+
const accounts = rcConfig?.accounts || {};
|
|
73
|
+
const bindings = configWriter.getRocketchatBindings();
|
|
74
|
+
const botEntries = Object.entries(accounts);
|
|
75
|
+
const agentsList = configWriter.getAgentsList();
|
|
76
|
+
if (botEntries.length > 0) {
|
|
77
|
+
info("机器人 Agent 状态");
|
|
78
|
+
let hasAgentWarning = false;
|
|
79
|
+
for (const [accountId, bot] of botEntries) {
|
|
80
|
+
const binding = bindings.find((b) => b.match?.accountId === accountId);
|
|
81
|
+
const agentId = binding?.agentId || "未绑定";
|
|
82
|
+
// 检查 Agent 是否存在
|
|
83
|
+
const agentExists = agentId === "未绑定" || agentsList.some((a) => a.id === agentId);
|
|
84
|
+
let status = "未知";
|
|
85
|
+
if (rc) {
|
|
86
|
+
try {
|
|
87
|
+
const userInfo = await rc.getUserInfo(bot.botUsername);
|
|
88
|
+
status = userInfo?.status === "online" ? "在线" : "离线";
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
status = "检测失败";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!agentExists) {
|
|
95
|
+
status += " ⚠️ Agent 不存在";
|
|
96
|
+
hasAgentWarning = true;
|
|
97
|
+
}
|
|
98
|
+
const displayName = bot.botDisplayName
|
|
99
|
+
? `${bot.botUsername} (${bot.botDisplayName})`
|
|
100
|
+
: bot.botUsername;
|
|
101
|
+
info(` ${displayName.padEnd(28)} ${agentId.padEnd(16)} ${status}`);
|
|
102
|
+
}
|
|
103
|
+
if (hasAgentWarning) {
|
|
104
|
+
console.log("");
|
|
105
|
+
warn("⚠️ 部分机器人绑定的 Agent 已不存在!消息路由将失败。");
|
|
106
|
+
info(" 修复方式: openclaw agents add <名称> 重新创建 Agent");
|
|
107
|
+
info(" 或 openclaw rocketchat add-bot 重新绑定到其他 Agent");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ----------------------------------------------------------
|
|
111
|
+
// 5. DM 列表
|
|
112
|
+
// ----------------------------------------------------------
|
|
113
|
+
if (users.length > 0 && botEntries.length > 0) {
|
|
114
|
+
console.log("");
|
|
115
|
+
info("DM 私聊");
|
|
116
|
+
for (const user of users) {
|
|
117
|
+
for (const [, bot] of botEntries) {
|
|
118
|
+
info(` ${user.username} <-> ${bot.botUsername}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ----------------------------------------------------------
|
|
123
|
+
// 6. 群组列表
|
|
124
|
+
// ----------------------------------------------------------
|
|
125
|
+
const groups = rcConfig?.groups || {};
|
|
126
|
+
const groupEntries = Object.entries(groups);
|
|
127
|
+
if (groupEntries.length > 0) {
|
|
128
|
+
console.log("");
|
|
129
|
+
info("私有频道");
|
|
130
|
+
for (const [groupName, groupConfig] of groupEntries) {
|
|
131
|
+
let memberInfo = "";
|
|
132
|
+
if (rc) {
|
|
133
|
+
try {
|
|
134
|
+
const groupData = await rc.getGroupInfo(undefined, groupName);
|
|
135
|
+
if (groupData) {
|
|
136
|
+
const members = await rc.getGroupMembers(groupData._id);
|
|
137
|
+
memberInfo = members
|
|
138
|
+
.map((m) => {
|
|
139
|
+
const role = m.roles?.includes("owner")
|
|
140
|
+
? "(Owner)"
|
|
141
|
+
: m.roles?.includes("bot")
|
|
142
|
+
? "(Bot)"
|
|
143
|
+
: "";
|
|
144
|
+
return `${m.username}${role}`;
|
|
145
|
+
})
|
|
146
|
+
.join(", ");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
memberInfo = groupConfig.bots?.join(", ") || "";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
memberInfo = groupConfig.bots?.join(", ") || "";
|
|
155
|
+
}
|
|
156
|
+
info(` ${groupName} ${memberInfo}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
console.log("");
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAwBA,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ExE"}
|