@jesonliu/lark-claudecode-bridge 2.0.0 → 2.0.1
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/assets/web/css/main.css +10 -2
- package/assets/web/js/auth.js +4 -3
- package/assets/web/js/pages/chats.js +178 -143
- package/assets/web/js/pages/memory.js +4 -3
- package/assets/web/js/pages/overview.js +82 -12
- package/assets/web/js/pages/permissions.js +82 -3
- package/dist/access/access-control.d.ts +18 -0
- package/dist/access/access-control.js +29 -0
- package/dist/access/access-control.js.map +1 -1
- package/dist/feishu/name-cache.d.ts +15 -0
- package/dist/feishu/name-cache.js +82 -0
- package/dist/feishu/name-cache.js.map +1 -0
- package/dist/feishu/sibling-names.d.ts +1 -0
- package/dist/feishu/sibling-names.js +63 -0
- package/dist/feishu/sibling-names.js.map +1 -0
- package/dist/gateway/feishu-gateway.d.ts +13 -0
- package/dist/gateway/feishu-gateway.js +127 -0
- package/dist/gateway/feishu-gateway.js.map +1 -1
- package/dist/gateway/gateway-registry.d.ts +2 -0
- package/dist/gateway/gateway-registry.js +4 -0
- package/dist/gateway/gateway-registry.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +49 -9
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/web/chats-api.d.ts +16 -0
- package/dist/web/chats-api.js +175 -47
- package/dist/web/chats-api.js.map +1 -1
- package/dist/web/lifecycle.d.ts +21 -0
- package/dist/web/lifecycle.js +80 -3
- package/dist/web/lifecycle.js.map +1 -1
- package/dist/web/server.js +78 -14
- package/dist/web/server.js.map +1 -1
- package/dist/web/webauth.d.ts +2 -2
- package/dist/web/webauth.js +55 -11
- package/dist/web/webauth.js.map +1 -1
- package/package.json +1 -1
package/dist/web/webauth.js
CHANGED
|
@@ -3,16 +3,19 @@
|
|
|
3
3
|
// 用户密码必须是密文」;盐随机生成,防彩虹表反查默认密码。
|
|
4
4
|
// - 默认密码 123456;isDefault 现场判定(hash === md5(salt+'123456')),不落布尔位免得漂移。
|
|
5
5
|
// - 文件随读随校验(不缓存):lcb reset-password 改完盘,运行中的配置页下次校验立即生效。
|
|
6
|
-
// - 会话令牌:随机 32 字节 hex
|
|
7
|
-
//
|
|
6
|
+
// - 会话令牌:随机 32 字节 hex;滑动过期 = 锁屏时长(0=永不,按 30 天兜底)。会话表落盘
|
|
7
|
+
// webauth.sessions.json(与 webauth.json 同目录):桥接器重启后会话延续——embedded 重启的
|
|
8
|
+
// 前端轮询与刷新不再被 401 锁屏拦截(2026-10-17 重启 120s 假失败根因)。登出/改密吊销
|
|
9
|
+
// 即时落盘,跨重启不复活。token 明文本机落盘与 HttpOnly cookie 同机同权,风险等价。
|
|
8
10
|
// - 登录限速:同 IP 连续错 5 次锁 30 秒,拖慢内网暴力试密码。
|
|
9
11
|
import { createHash, randomBytes } from 'node:crypto';
|
|
10
12
|
import { existsSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
11
13
|
import { dirname, join } from 'node:path';
|
|
14
|
+
import { CONFIG_DIR } from '../config.js';
|
|
12
15
|
/** 默认密码(恢复初始密码即回到它;登录后引导修改) */
|
|
13
16
|
export const DEFAULT_PASSWORD = '123456';
|
|
14
|
-
/** 无操作自动锁屏时长(分钟):默认 30
|
|
15
|
-
export const LOCK_MINUTES_DEFAULT =
|
|
17
|
+
/** 无操作自动锁屏时长(分钟):默认 30 分钟(主人拍板 2026-10-17,原 30 小时);0 = 永不锁屏 */
|
|
18
|
+
export const LOCK_MINUTES_DEFAULT = 30;
|
|
16
19
|
/** 设置弹窗提供的档位(前端下拉同源) */
|
|
17
20
|
export const LOCK_MINUTES_OPTIONS = [30, 60, 240, 1440, 1800, 0];
|
|
18
21
|
/** 「永不锁屏」时会话过期兜底:30 天(绝对上限,防令牌永久有效) */
|
|
@@ -30,9 +33,11 @@ function writeAtomic(path, text) {
|
|
|
30
33
|
writeFileSync(tmp, text, 'utf8');
|
|
31
34
|
renameSync(tmp, path);
|
|
32
35
|
}
|
|
33
|
-
/**
|
|
36
|
+
/** 读认证文件;缺失/损坏时按默认密码重建(默认密码场景重建即修复,属预期自愈)。
|
|
37
|
+
* 顺带把会话落盘目录对齐到 webauth.json 所在目录(目录变化时重载会话表——多实例/测试隔离) */
|
|
34
38
|
function loadAuthFile(configPath) {
|
|
35
39
|
const p = webAuthPathFor(configPath);
|
|
40
|
+
ensureSessionStore(dirname(p));
|
|
36
41
|
if (existsSync(p)) {
|
|
37
42
|
try {
|
|
38
43
|
const raw = JSON.parse(readFileSync(p, 'utf8'));
|
|
@@ -105,11 +110,42 @@ export function setLockMinutes(configPath, minutes) {
|
|
|
105
110
|
export function sessionTtlMs(lockMinutes) {
|
|
106
111
|
return lockMinutes > 0 ? lockMinutes * 60_000 : SESSION_MAX_MS;
|
|
107
112
|
}
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
let sessions = new Map();
|
|
114
|
+
let sessionsPath = join(CONFIG_DIR, 'webauth.sessions.json');
|
|
115
|
+
let sessionsDirSeen = ''; // 已对齐的落盘目录(同目录重复调用零开销)
|
|
116
|
+
let lastPersistAt = 0;
|
|
117
|
+
/** 对齐会话落盘目录(= webauth.json 所在目录);目录变化时重载会话表 */
|
|
118
|
+
function ensureSessionStore(dir) {
|
|
119
|
+
if (sessionsDirSeen === dir)
|
|
120
|
+
return;
|
|
121
|
+
sessionsDirSeen = dir;
|
|
122
|
+
sessionsPath = join(dir, 'webauth.sessions.json');
|
|
123
|
+
sessions = new Map();
|
|
124
|
+
try {
|
|
125
|
+
const raw = JSON.parse(readFileSync(sessionsPath, 'utf8'));
|
|
126
|
+
const now = Date.now();
|
|
127
|
+
for (const [t, exp] of Object.entries(raw.sessions ?? {})) {
|
|
128
|
+
if (typeof exp === 'number' && Number.isFinite(exp) && exp > now)
|
|
129
|
+
sessions.set(t, exp);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch { /* 首次无文件/损坏:空表起步,首次写盘自愈 */ }
|
|
133
|
+
}
|
|
134
|
+
function persistSessions(force = false) {
|
|
135
|
+
const now = Date.now();
|
|
136
|
+
if (!force && now - lastPersistAt < 60_000)
|
|
137
|
+
return; // 续期节流;创建/吊销走 force
|
|
138
|
+
lastPersistAt = now;
|
|
139
|
+
try {
|
|
140
|
+
const obj = { v: 1, sessions: Object.fromEntries(sessions) };
|
|
141
|
+
writeAtomic(sessionsPath, JSON.stringify(obj, null, 2));
|
|
142
|
+
}
|
|
143
|
+
catch { /* 落盘失败不阻断鉴权:降级为进程内会话(重启后需重新解锁) */ }
|
|
144
|
+
}
|
|
110
145
|
export function createSession(lockMinutes) {
|
|
111
146
|
const token = randomBytes(32).toString('hex');
|
|
112
147
|
sessions.set(token, Date.now() + sessionTtlMs(lockMinutes));
|
|
148
|
+
persistSessions(true);
|
|
113
149
|
return token;
|
|
114
150
|
}
|
|
115
151
|
/** 校验 + 滑动续期:每个鉴权请求都调(TTL 取当前锁屏设置,改设置即刻约束既有会话) */
|
|
@@ -119,21 +155,29 @@ export function touchSession(token, lockMinutes) {
|
|
|
119
155
|
return false;
|
|
120
156
|
if (Date.now() > exp) {
|
|
121
157
|
sessions.delete(token);
|
|
158
|
+
persistSessions(true);
|
|
122
159
|
return false;
|
|
123
160
|
}
|
|
124
161
|
sessions.set(token, Date.now() + sessionTtlMs(lockMinutes));
|
|
162
|
+
persistSessions(); // 节流:60s 内高频续期不重复写盘
|
|
125
163
|
return true;
|
|
126
164
|
}
|
|
127
165
|
export function dropSession(token) {
|
|
128
|
-
if (token)
|
|
129
|
-
|
|
166
|
+
if (!token || !sessions.delete(token))
|
|
167
|
+
return;
|
|
168
|
+
persistSessions(true); // 吊销即时落盘(安全底线)
|
|
130
169
|
}
|
|
131
170
|
/** 改密/恢复初始后吊销其余会话(其他标签页需重新输密码;当前会话保留) */
|
|
132
171
|
export function dropOtherSessions(keepToken) {
|
|
133
|
-
|
|
134
|
-
|
|
172
|
+
let changed = false;
|
|
173
|
+
for (const token of [...sessions.keys()]) {
|
|
174
|
+
if (token !== keepToken) {
|
|
135
175
|
sessions.delete(token);
|
|
176
|
+
changed = true;
|
|
177
|
+
}
|
|
136
178
|
}
|
|
179
|
+
if (changed)
|
|
180
|
+
persistSessions(true);
|
|
137
181
|
}
|
|
138
182
|
export function sessionCookie(token, lockMinutes) {
|
|
139
183
|
const maxAge = Math.floor(sessionTtlMs(lockMinutes) / 1000);
|
package/dist/web/webauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webauth.js","sourceRoot":"","sources":["../../src/web/webauth.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,+DAA+D;AAC/D,iCAAiC;AACjC,uEAAuE;AACvE,yDAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"webauth.js","sourceRoot":"","sources":["../../src/web/webauth.ts"],"names":[],"mappings":"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"}
|