@wendongfly/myhi 1.0.53 → 1.0.55

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/bin/myhi.js CHANGED
@@ -103,6 +103,39 @@ if (cmd === 'attach') {
103
103
  console.log('[myhi] 日志文件不存在');
104
104
  }
105
105
 
106
+ } else if (cmd === 'exclusive') {
107
+ // 独占模式开关
108
+ const { existsSync } = await import('fs');
109
+ const usersFile = join(configDir, 'users.json');
110
+ function loadCfg() {
111
+ try { if (existsSync(usersFile)) return JSON.parse(readFileSync(usersFile, 'utf8')); } catch {}
112
+ return { users: {} };
113
+ }
114
+ function saveCfg(data) {
115
+ mkdirSync(configDir, { recursive: true });
116
+ writeFileSync(usersFile, JSON.stringify(data, null, 2), { mode: 0o600 });
117
+ }
118
+
119
+ const sub = args[args.indexOf('exclusive') + 1] || process.argv[3];
120
+ if (sub === 'on' || sub === 'enable') {
121
+ const data = loadCfg();
122
+ data.exclusive = true;
123
+ saveCfg(data);
124
+ console.log('[myhi] 独占模式已开启(同一时间只允许一个账号登录)');
125
+ } else if (sub === 'off' || sub === 'disable') {
126
+ const data = loadCfg();
127
+ data.exclusive = false;
128
+ saveCfg(data);
129
+ console.log('[myhi] 独占模式已关闭(允许多人同时登录)');
130
+ } else {
131
+ const data = loadCfg();
132
+ const mode = data.exclusive ? '开启' : '关闭';
133
+ console.log(`[myhi] 独占模式: ${mode}`);
134
+ console.log(`\n用法:
135
+ myhi exclusive on 开启独占模式(同一时间只允许一个账号)
136
+ myhi exclusive off 关闭独占模式(允许多人同时登录)`);
137
+ }
138
+
106
139
  } else if (cmd === 'user') {
107
140
  // 用户管理:直接读写 ~/.myhi/users.json,不依赖 src/
108
141
  const { existsSync } = await import('fs');
@@ -302,6 +335,8 @@ myhi — 基于 Web 的终端共享工具
302
335
  myhi user list 列出所有用户
303
336
  myhi user add <密码> <名称> <目录> 添加用户
304
337
  myhi user remove <密码> 删除用户
338
+ myhi exclusive on 开启独占模式(一次只能一个账号)
339
+ myhi exclusive off 关闭独占模式(多人同时使用,默认)
305
340
 
306
341
  远程连接:
307
342
  myhi attach 列出活跃会话,交互式选择后附加
package/dist/chat.html CHANGED
@@ -333,7 +333,7 @@
333
333
 
334
334
  // 加载用户信息(独占模式显示退出按钮)
335
335
  fetch('/api/me').then(r => r.json()).then(data => {
336
- if (data.exclusive) document.getElementById('logout-btn').style.display = '';
336
+ if (data.exclusive || data.hasUsers) document.getElementById('logout-btn').style.display = '';
337
337
  }).catch(() => {});
338
338
  window.doLogout = () => {
339
339
  if (!confirm('确定退出登录?当前所有会话将被关闭。')) return;
package/dist/index.html CHANGED
@@ -512,7 +512,7 @@
512
512
  // 加载当前用户信息(独占模式显示用户名、退出按钮、锁定目录)
513
513
  let _userDir = null;
514
514
  fetch('/api/me').then(r => r.json()).then(data => {
515
- if (data.exclusive && data.name) {
515
+ if ((data.exclusive || data.hasUsers) && data.name) {
516
516
  document.getElementById('user-name').textContent = data.name;
517
517
  document.getElementById('logout-btn').style.display = '';
518
518
  }