t880216t-server 1.5.20 → 1.5.21

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.
@@ -5,10 +5,6 @@ const util = require('./util');
5
5
  const { getServerIp } = require('../../../util/address');
6
6
  const parseDomain = require('../../../util/parseDomain');
7
7
 
8
- const generateShortId = () => {
9
- return Date.now().toString(36) + Math.random().toString(36).substring(2, 8);
10
- };
11
-
12
8
  const { parseJSON, shasum } = util;
13
9
  const MAX_ACCOUNT_COUNT = 120;
14
10
  const MAX_PASSWORD_LENGTH = 24;
@@ -482,18 +478,10 @@ class AccountMgr {
482
478
  return false;
483
479
  }
484
480
  const list = [];
485
- const existingEnvMap = {};
486
- (account.envList || []).forEach((env) => {
487
- existingEnvMap[env.name] = env;
488
- });
489
- envList.forEach(({ name, id, data }) => {
481
+ envList.forEach(({ name, data }) => {
490
482
  if (name) {
491
- const existingEnv = existingEnvMap[name];
492
- // 优先级:传入的id > 已存在的id > 自动生成
493
- const envId = id || (existingEnv && existingEnv.id) || generateShortId();
494
483
  list.push({
495
484
  name,
496
- id: envId,
497
485
  rules: data,
498
486
  });
499
487
  }
@@ -504,21 +492,6 @@ class AccountMgr {
504
492
  return true;
505
493
  }
506
494
 
507
- renameEnv(accountName, oldName, newName) {
508
- const account = this.getAccount(accountName);
509
- if (!account || !account.envList) {
510
- return false;
511
- }
512
- const env = account.envList.find((e) => e.name === oldName);
513
- if (!env) {
514
- return false;
515
- }
516
- env.name = newName;
517
- this.saveAccount(account);
518
- this.parseRules();
519
- return true;
520
- }
521
-
522
495
  checkName(name) {
523
496
  return typeof name === 'string' && NAME_RE.test(name);
524
497
  }
@@ -615,29 +588,8 @@ class AccountMgr {
615
588
  return this.checkName(name) ? accountMap[name] : null;
616
589
  }
617
590
 
618
- getRulesByEnvId(accountName, envId) {
619
- const account = this.getAccount(accountName);
620
- if (!account || !account.envList) {
621
- return { rules: '', headers: undefined };
622
- }
623
- const env = account.envList.find((e) => e.id === envId);
624
- if (!env) {
625
- return { rules: '', headers: undefined };
626
- }
627
- return this.parsedMap[`${accountName}/${env.name}`] || { rules: '', headers: undefined };
628
- }
629
-
630
- getEnvNameById(accountName, envId) {
631
- const account = this.getAccount(accountName);
632
- if (!account || !account.envList) {
633
- return '';
634
- }
635
- const env = account.envList.find((e) => e.id === envId);
636
- return env ? env.name : '';
637
- }
638
-
639
591
  getRules(name, envName) {
640
- return this.parsedMap[`${name}/${envName}`] || { rules: '', headers: undefined };
592
+ return this.parsedMap[`${name}/${envName}`] || '';
641
593
  }
642
594
 
643
595
  getAllAccounts() {
@@ -665,7 +617,7 @@ class AccountMgr {
665
617
  return;
666
618
  }
667
619
  const envList = [];
668
- account.envList.forEach(({ name, id, rules }) => {
620
+ account.envList.forEach(({ name, rules }) => {
669
621
  if (!name || name[0] === '\r') {
670
622
  return;
671
623
  }
@@ -676,8 +628,7 @@ class AccountMgr {
676
628
  }
677
629
  envList.push({
678
630
  name,
679
- id: id || encodeURIComponent(name),
680
- envId: id || encodeURIComponent(name),
631
+ id: encodeURIComponent(name),
681
632
  rules,
682
633
  });
683
634
  });
@@ -2,17 +2,7 @@ const { COOKIE_NAME, ENV_MAX_AGE, decodeURIComponentSafe, getClientId } = requir
2
2
 
3
3
  module.exports = (ctx) => {
4
4
  const { name, envId, redirect } = ctx.request.query;
5
- let envName;
6
- // 如果 envId 看起来像短ID(不包含编码的环境名特征),则通过 envId 查找 envName
7
- if (envId && !envId.includes('%')) {
8
- envName = ctx.accountMgr.getEnvNameById(name, envId);
9
- // 如果没找到,回退到直接解码(兼容旧逻辑)
10
- if (!envName) {
11
- envName = decodeURIComponentSafe(envId);
12
- }
13
- } else {
14
- envName = decodeURIComponentSafe(envId);
15
- }
5
+ const envName = decodeURIComponentSafe(envId);
16
6
  const env = ctx.envMgr.setEnv(getClientId(ctx), name, envName);
17
7
  let value = '';
18
8
  if (env) {
@@ -17,19 +17,8 @@ const CGI_MAP = {
17
17
  };
18
18
 
19
19
  const getRules = (options) => {
20
- const { account, name, env, envName, envId } = options;
21
- let rules = '';
22
- let headers;
23
- // 如果传入了 envId,优先使用 envId 查询
24
- if (envId && (account || name)) {
25
- const result = accountMgr.getRulesByEnvId(account || name, envId);
26
- rules = result.rules || '';
27
- headers = result.headers;
28
- } else {
29
- const result = accountMgr.getRules(account || name, env || envName);
30
- rules = result.rules || '';
31
- headers = result.headers;
32
- }
20
+ const { account, name, env, envName } = options;
21
+ let { rules = '', headers } = accountMgr.getRules(account || name, env || envName);
33
22
  if (headers) {
34
23
  headers = JSON.stringify(headers);
35
24
  if (headers.length > 2) {
@@ -51,27 +40,6 @@ module.exports = async (ctx, next) => {
51
40
  ctx.body = getRules(query);
52
41
  return;
53
42
  }
54
-
55
- // Handle rename-env specially to preserve env id
56
- if (cgiName === 'rename-env') {
57
- const name = ctx.get('x-nohost-account-name');
58
- const account = ctx.accountMgr.getAccount(name);
59
- if (!account) {
60
- return;
61
- }
62
- const curAuthKey = authKey && ctx.get('x-nohost-auth-key');
63
- if (!curAuthKey || (authKey !== curAuthKey && curAuthKey !== ctx.accountMgr.defaultAuthKey)) {
64
- ctx.status = 403;
65
- return;
66
- }
67
- const { query } = ctx.request;
68
- const oldName = query.name;
69
- const newName = query.newValue || query.newName;
70
- if (oldName && newName) {
71
- ctx.accountMgr.renameEnv(name, oldName, newName);
72
- }
73
- }
74
-
75
43
  cgiName = CGI_MAP[cgiName];
76
44
  const name = ctx.get('x-nohost-account-name');
77
45
  const account = cgiName && ctx.accountMgr.getAccount(name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "t880216t-server",
3
- "version": "1.5.20",
3
+ "version": "1.5.21",
4
4
  "description": "Multi-user & multi-env web debugging proxy based on whistle",
5
5
  "main": "index.js",
6
6
  "bin": {