@barryfan2045/dsh-matrix 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.md +286 -0
- package/THIRD_PARTY_NOTICES.md +53 -0
- package/assets/avatars/instance-01.png +0 -0
- package/assets/avatars/instance-02.png +0 -0
- package/assets/avatars/instance-03.png +0 -0
- package/assets/avatars/instance-04.png +0 -0
- package/assets/avatars/instance-05.png +0 -0
- package/assets/avatars/instance-06.png +0 -0
- package/assets/avatars/instance-07.png +0 -0
- package/assets/avatars/instance-08.png +0 -0
- package/assets/avatars/instance-09.png +0 -0
- package/assets/avatars/instance-10.png +0 -0
- package/assets/avatars/instance-11.png +0 -0
- package/assets/avatars/instance-12.png +0 -0
- package/assets/avatars/management.png +0 -0
- package/cordis.patch.yml +13 -0
- package/dist/auth/admin-commands.d.ts +47 -0
- package/dist/auth/admin-commands.d.ts.map +1 -0
- package/dist/auth/admin-commands.js +112 -0
- package/dist/auth/admin-commands.js.map +1 -0
- package/dist/auth/challenge.d.ts +93 -0
- package/dist/auth/challenge.d.ts.map +1 -0
- package/dist/auth/challenge.js +104 -0
- package/dist/auth/challenge.js.map +1 -0
- package/dist/auth/store.d.ts +55 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +124 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/bridge/agent-commands.d.ts +39 -0
- package/dist/bridge/agent-commands.d.ts.map +1 -0
- package/dist/bridge/agent-commands.js +243 -0
- package/dist/bridge/agent-commands.js.map +1 -0
- package/dist/bridge/attachments-ledger.d.ts +54 -0
- package/dist/bridge/attachments-ledger.d.ts.map +1 -0
- package/dist/bridge/attachments-ledger.js +68 -0
- package/dist/bridge/attachments-ledger.js.map +1 -0
- package/dist/bridge/commands.d.ts +28 -0
- package/dist/bridge/commands.d.ts.map +1 -0
- package/dist/bridge/commands.js +18 -0
- package/dist/bridge/commands.js.map +1 -0
- package/dist/bridge/crypto-health.d.ts +37 -0
- package/dist/bridge/crypto-health.d.ts.map +1 -0
- package/dist/bridge/crypto-health.js +38 -0
- package/dist/bridge/crypto-health.js.map +1 -0
- package/dist/bridge/group-gate.d.ts +38 -0
- package/dist/bridge/group-gate.d.ts.map +1 -0
- package/dist/bridge/group-gate.js +49 -0
- package/dist/bridge/group-gate.js.map +1 -0
- package/dist/bridge/instance-lock.d.ts +10 -0
- package/dist/bridge/instance-lock.d.ts.map +1 -0
- package/dist/bridge/instance-lock.js +82 -0
- package/dist/bridge/instance-lock.js.map +1 -0
- package/dist/bridge/interactions.d.ts +62 -0
- package/dist/bridge/interactions.d.ts.map +1 -0
- package/dist/bridge/interactions.js +237 -0
- package/dist/bridge/interactions.js.map +1 -0
- package/dist/bridge/management-room.d.ts +13 -0
- package/dist/bridge/management-room.d.ts.map +1 -0
- package/dist/bridge/management-room.js +27 -0
- package/dist/bridge/management-room.js.map +1 -0
- package/dist/bridge/multi-project.d.ts +34 -0
- package/dist/bridge/multi-project.d.ts.map +1 -0
- package/dist/bridge/multi-project.js +44 -0
- package/dist/bridge/multi-project.js.map +1 -0
- package/dist/bridge/pipeline.d.ts +151 -0
- package/dist/bridge/pipeline.d.ts.map +1 -0
- package/dist/bridge/pipeline.js +502 -0
- package/dist/bridge/pipeline.js.map +1 -0
- package/dist/bridge/pmctl.d.ts +50 -0
- package/dist/bridge/pmctl.d.ts.map +1 -0
- package/dist/bridge/pmctl.js +272 -0
- package/dist/bridge/pmctl.js.map +1 -0
- package/dist/bridge/power-levels.d.ts +57 -0
- package/dist/bridge/power-levels.d.ts.map +1 -0
- package/dist/bridge/power-levels.js +92 -0
- package/dist/bridge/power-levels.js.map +1 -0
- package/dist/bridge/power-sync.d.ts +64 -0
- package/dist/bridge/power-sync.d.ts.map +1 -0
- package/dist/bridge/power-sync.js +121 -0
- package/dist/bridge/power-sync.js.map +1 -0
- package/dist/bridge/projects.d.ts +97 -0
- package/dist/bridge/projects.d.ts.map +1 -0
- package/dist/bridge/projects.js +288 -0
- package/dist/bridge/projects.js.map +1 -0
- package/dist/bridge/quote-cache.d.ts +38 -0
- package/dist/bridge/quote-cache.d.ts.map +1 -0
- package/dist/bridge/quote-cache.js +56 -0
- package/dist/bridge/quote-cache.js.map +1 -0
- package/dist/bridge/reply.d.ts +31 -0
- package/dist/bridge/reply.d.ts.map +1 -0
- package/dist/bridge/reply.js +122 -0
- package/dist/bridge/reply.js.map +1 -0
- package/dist/bridge/space-identity.d.ts +43 -0
- package/dist/bridge/space-identity.d.ts.map +1 -0
- package/dist/bridge/space-identity.js +92 -0
- package/dist/bridge/space-identity.js.map +1 -0
- package/dist/bridge/space-sync.d.ts +94 -0
- package/dist/bridge/space-sync.d.ts.map +1 -0
- package/dist/bridge/space-sync.js +137 -0
- package/dist/bridge/space-sync.js.map +1 -0
- package/dist/bridge/turn-commands.d.ts +28 -0
- package/dist/bridge/turn-commands.d.ts.map +1 -0
- package/dist/bridge/turn-commands.js +97 -0
- package/dist/bridge/turn-commands.js.map +1 -0
- package/dist/cli/config-store.d.ts +32 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +118 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/crypto-store.d.ts +42 -0
- package/dist/cli/crypto-store.d.ts.map +1 -0
- package/dist/cli/crypto-store.js +70 -0
- package/dist/cli/crypto-store.js.map +1 -0
- package/dist/cli/device-prune.d.ts +105 -0
- package/dist/cli/device-prune.d.ts.map +1 -0
- package/dist/cli/device-prune.js +163 -0
- package/dist/cli/device-prune.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +584 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/log-filter.d.ts +32 -0
- package/dist/cli/log-filter.d.ts.map +1 -0
- package/dist/cli/log-filter.js +40 -0
- package/dist/cli/log-filter.js.map +1 -0
- package/dist/cli/pnpm-builds.d.ts +32 -0
- package/dist/cli/pnpm-builds.d.ts.map +1 -0
- package/dist/cli/pnpm-builds.js +73 -0
- package/dist/cli/pnpm-builds.js.map +1 -0
- package/dist/cli/profile-patch.d.ts +26 -0
- package/dist/cli/profile-patch.d.ts.map +1 -0
- package/dist/cli/profile-patch.js +56 -0
- package/dist/cli/profile-patch.js.map +1 -0
- package/dist/cli/setup.d.ts +39 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +234 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/systemd-hint.d.ts +11 -0
- package/dist/cli/systemd-hint.d.ts.map +1 -0
- package/dist/cli/systemd-hint.js +46 -0
- package/dist/cli/systemd-hint.js.map +1 -0
- package/dist/cli/systemd.d.ts +32 -0
- package/dist/cli/systemd.d.ts.map +1 -0
- package/dist/cli/systemd.js +58 -0
- package/dist/cli/systemd.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +107 -0
- package/dist/config.js.map +1 -0
- package/dist/dsh/backend.d.ts +110 -0
- package/dist/dsh/backend.d.ts.map +1 -0
- package/dist/dsh/backend.js +481 -0
- package/dist/dsh/backend.js.map +1 -0
- package/dist/dsh/interactions.d.ts +50 -0
- package/dist/dsh/interactions.d.ts.map +1 -0
- package/dist/dsh/interactions.js +141 -0
- package/dist/dsh/interactions.js.map +1 -0
- package/dist/dsh/stream.d.ts +32 -0
- package/dist/dsh/stream.d.ts.map +1 -0
- package/dist/dsh/stream.js +109 -0
- package/dist/dsh/stream.js.map +1 -0
- package/dist/formatting.d.ts +14 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +63 -0
- package/dist/formatting.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +232 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +28 -0
- package/dist/logger.js.map +1 -0
- package/dist/matrix/matrix-events.d.ts +49 -0
- package/dist/matrix/matrix-events.d.ts.map +1 -0
- package/dist/matrix/matrix-events.js +89 -0
- package/dist/matrix/matrix-events.js.map +1 -0
- package/dist/matrix/transport.d.ts +192 -0
- package/dist/matrix/transport.d.ts.map +1 -0
- package/dist/matrix/transport.js +510 -0
- package/dist/matrix/transport.js.map +1 -0
- package/dist/ports/attachments.d.ts +51 -0
- package/dist/ports/attachments.d.ts.map +1 -0
- package/dist/ports/attachments.js +27 -0
- package/dist/ports/attachments.js.map +1 -0
- package/dist/ports/backend.d.ts +159 -0
- package/dist/ports/backend.d.ts.map +1 -0
- package/dist/ports/backend.js +25 -0
- package/dist/ports/backend.js.map +1 -0
- package/dist/ports/interactions.d.ts +65 -0
- package/dist/ports/interactions.d.ts.map +1 -0
- package/dist/ports/interactions.js +15 -0
- package/dist/ports/interactions.js.map +1 -0
- package/dist/ports/streaming.d.ts +45 -0
- package/dist/ports/streaming.d.ts.map +1 -0
- package/dist/ports/streaming.js +23 -0
- package/dist/ports/streaming.js.map +1 -0
- package/dist/ports/transport.d.ts +68 -0
- package/dist/ports/transport.d.ts.map +1 -0
- package/dist/ports/transport.js +2 -0
- package/dist/ports/transport.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T14 后续:清理账号上的**孤儿设备**。
|
|
3
|
+
*
|
|
4
|
+
* 背景(见 docs/tickets/14-e2ee-bridge-regression.md):桥以前每次密码登录都**不带
|
|
5
|
+
* `device_id`**,Synapse 于是每次新建一个设备;累积起来不只是难看 ——
|
|
6
|
+
* 发送方每次加密都要对这一大堆设备做 keys/query、keys/claim 并逐个建 olm 会话,
|
|
7
|
+
* 实测把首次 sendMessage 拖到 6 分 13 秒。T14 已让桥不再造新设备,但**历史遗留**
|
|
8
|
+
* 的那些孤儿设备还在,本模块就是清理它们的显式入口。
|
|
9
|
+
*
|
|
10
|
+
* 设计原则(与 T13 §4 同一条):**显式、可见、不擅自**。
|
|
11
|
+
* - 默认只是**列出**(演练),必须 `--yes`(或交互确认)才真删;
|
|
12
|
+
* - 当前桥设备**永远保留**;
|
|
13
|
+
* - `--keep-days <n>` 可把"最近 n 天活动过"的设备一并保留(安全网,缺省 0 = 只留桥设备);
|
|
14
|
+
* - 删设备是**不可逆**的(私钥没了就是没了),所以这里绝不静默动手。
|
|
15
|
+
*/
|
|
16
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
17
|
+
/**
|
|
18
|
+
* 纯函数:算出"该删谁、留谁"。
|
|
19
|
+
*
|
|
20
|
+
* 判定顺序:当前桥设备 → 最近 keepDays 天活动过 → 其余都删。
|
|
21
|
+
* 没有 `last_seen_ts`(从未登录过)的设备一律算孤儿 —— 它们正是复位/改名留下的残骸。
|
|
22
|
+
*/
|
|
23
|
+
export function planDevicePrune(input) {
|
|
24
|
+
const keepDays = input.keepDays ?? 0;
|
|
25
|
+
const keepMs = Math.max(0, keepDays) * DAY_MS;
|
|
26
|
+
const remove = [];
|
|
27
|
+
const retained = [];
|
|
28
|
+
let keepFound = false;
|
|
29
|
+
for (const device of input.devices) {
|
|
30
|
+
if (device.device_id === input.keep) {
|
|
31
|
+
keepFound = true;
|
|
32
|
+
retained.push({ device, why: '当前桥设备(永远保留)' });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const seen = typeof device.last_seen_ts === 'number' ? device.last_seen_ts : undefined;
|
|
36
|
+
if (seen !== undefined && keepMs > 0 && input.now - seen <= keepMs) {
|
|
37
|
+
retained.push({ device, why: `最近 ${keepDays} 天内活动过` });
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
remove.push(device);
|
|
41
|
+
}
|
|
42
|
+
return { keep: input.keep, keepFound, remove, retained };
|
|
43
|
+
}
|
|
44
|
+
/** 把 HTTP 响应解析成 JSON,失败时给一个可读的错。 */
|
|
45
|
+
async function readJson(res) {
|
|
46
|
+
const text = await res.text();
|
|
47
|
+
try {
|
|
48
|
+
return JSON.parse(text);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw new Error(`服务端返回的不是 JSON(HTTP ${res.status}): ${text.slice(0, 200)}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function matrixError(status, body) {
|
|
55
|
+
return new Error(body.errcode ? `${status} ${body.errcode}: ${body.error ?? ''}` : `HTTP ${status}`);
|
|
56
|
+
}
|
|
57
|
+
export function createMatrixAdminOps(opts) {
|
|
58
|
+
const base = opts.homeserver.replace(/\/$/, '');
|
|
59
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
60
|
+
const authHeaders = { authorization: `Bearer ${opts.accessToken}`, 'content-type': 'application/json' };
|
|
61
|
+
return {
|
|
62
|
+
async whoAmI() {
|
|
63
|
+
const res = await doFetch(`${base}/_matrix/client/v3/account/whoami`, { headers: authHeaders });
|
|
64
|
+
const body = await readJson(res);
|
|
65
|
+
if (!res.ok)
|
|
66
|
+
throw matrixError(res.status, body);
|
|
67
|
+
return body;
|
|
68
|
+
},
|
|
69
|
+
async listDevices() {
|
|
70
|
+
const res = await doFetch(`${base}/_matrix/client/v3/devices`, { headers: authHeaders });
|
|
71
|
+
const body = await readJson(res);
|
|
72
|
+
if (!res.ok)
|
|
73
|
+
throw matrixError(res.status, body);
|
|
74
|
+
const devices = body.devices;
|
|
75
|
+
return Array.isArray(devices) ? devices : [];
|
|
76
|
+
},
|
|
77
|
+
async deleteDevice(deviceId) {
|
|
78
|
+
const url = `${base}/_matrix/client/v3/devices/${encodeURIComponent(deviceId)}`;
|
|
79
|
+
const first = await doFetch(url, { method: 'DELETE', headers: authHeaders, body: '{}' });
|
|
80
|
+
if (first.ok)
|
|
81
|
+
return;
|
|
82
|
+
const body = (await readJson(first));
|
|
83
|
+
if (first.status !== 401)
|
|
84
|
+
throw matrixError(first.status, body);
|
|
85
|
+
// 401 = 要 UI auth(密码重认证),拿 session 走第二步。
|
|
86
|
+
if (!opts.password) {
|
|
87
|
+
throw new Error('删除设备需要重新输入密码,但配置里只有 accessToken —— 请用账密配置,或在 Element 里手动登出设备');
|
|
88
|
+
}
|
|
89
|
+
const session = typeof body.session === 'string' ? body.session : undefined;
|
|
90
|
+
const retry = await doFetch(url, {
|
|
91
|
+
method: 'DELETE',
|
|
92
|
+
headers: authHeaders,
|
|
93
|
+
body: JSON.stringify({
|
|
94
|
+
auth: {
|
|
95
|
+
type: 'm.login.password',
|
|
96
|
+
identifier: { type: 'm.id.user', user: opts.userId.replace(/^@/, '').replace(/:.*$/, '') },
|
|
97
|
+
password: opts.password,
|
|
98
|
+
...(session ? { session } : {}),
|
|
99
|
+
},
|
|
100
|
+
}),
|
|
101
|
+
});
|
|
102
|
+
if (!retry.ok)
|
|
103
|
+
throw matrixError(retry.status, (await readJson(retry)));
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** 密码登录换一个 token;带 deviceId 时复用该设备(不新建)。 */
|
|
108
|
+
export async function loginForToken(opts) {
|
|
109
|
+
const base = opts.homeserver.replace(/\/$/, '');
|
|
110
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
111
|
+
const res = await doFetch(`${base}/_matrix/client/v3/login`, {
|
|
112
|
+
method: 'POST',
|
|
113
|
+
headers: { 'content-type': 'application/json' },
|
|
114
|
+
body: JSON.stringify({
|
|
115
|
+
type: 'm.login.password',
|
|
116
|
+
identifier: { type: 'm.id.user', user: opts.username },
|
|
117
|
+
password: opts.password,
|
|
118
|
+
...(opts.deviceId ? { device_id: opts.deviceId } : {}),
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
const body = (await readJson(res));
|
|
122
|
+
if (!res.ok || !body.access_token)
|
|
123
|
+
throw matrixError(res.status, body);
|
|
124
|
+
return {
|
|
125
|
+
accessToken: body.access_token,
|
|
126
|
+
userId: body.user_id ?? '',
|
|
127
|
+
...(body.device_id ? { deviceId: body.device_id } : {}),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** 给人看的"最后活动"列。 */
|
|
131
|
+
export function formatLastSeen(ts, now) {
|
|
132
|
+
if (typeof ts !== 'number')
|
|
133
|
+
return '从未登录';
|
|
134
|
+
const days = Math.floor((now - ts) / DAY_MS);
|
|
135
|
+
const stamp = new Date(ts).toISOString().slice(0, 16).replace('T', ' ');
|
|
136
|
+
return days <= 0 ? `${stamp}(今天)` : `${stamp}(${days} 天前)`;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 选登录身份。
|
|
140
|
+
*
|
|
141
|
+
* **硬不变量:本命令绝不新建设备。** —— 一个"清理孤儿设备"的工具自己再造一个设备,
|
|
142
|
+
* 就正好是它要治的那毛病(实测踩到过:对着没有本地 crypto 存储的账号跑演练,直接多出
|
|
143
|
+
* 一个设备)。所以拿不到**既有**身份时明确拒绝,并告诉用户两条出路,而不是默默登录
|
|
144
|
+
* (密码登录不带 device_id 必然新建)。
|
|
145
|
+
*/
|
|
146
|
+
export function chooseLoginIdentity(input) {
|
|
147
|
+
if (input.accessToken)
|
|
148
|
+
return { mode: 'token' };
|
|
149
|
+
if (!input.username || !input.password) {
|
|
150
|
+
return { mode: 'unavailable', message: '配置里既没有 accessToken,也没有 username/password。先跑 dsh-matrix setup' };
|
|
151
|
+
}
|
|
152
|
+
if (!input.storedDeviceId) {
|
|
153
|
+
return {
|
|
154
|
+
mode: 'unavailable',
|
|
155
|
+
message: `没找到桥的设备身份(${input.cryptoDir}/bot-sdk.json 里没有 deviceId)。\n` +
|
|
156
|
+
' 本命令不会新建设备,因此就此中止、不删任何东西。两条出路:\n' +
|
|
157
|
+
' 1) 用桥实际所在的 DSH_HOME(或 --data-dir)指到那份 crypto 存储 —— 桥跑过一次就会有;\n' +
|
|
158
|
+
' 2) 在该 DSH_HOME 的 dsh-matrix.json 里加 accessToken(清理账号级设备不需要本地存储)。',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return { mode: 'password', deviceId: input.storedDeviceId };
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=device-prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-prune.js","sourceRoot":"","sources":["../../src/cli/device-prune.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAsDA,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,QAAQ,GAAE,MAAyB,GAAG,MAAM,GAAG,IAAI,CAahF"}
|