@abtnode/core 1.6.12 → 1.6.13

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,6 +5,7 @@ const path = require('path');
5
5
  const tar = require('tar');
6
6
  const get = require('lodash/get');
7
7
  const cloneDeep = require('lodash/cloneDeep');
8
+ const isEqual = require('lodash/isEqual');
8
9
  const joinUrl = require('url-join');
9
10
  const { getProvider } = require('@abtnode/router-provider');
10
11
  const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
@@ -28,6 +29,7 @@ const {
28
29
  SLOT_FOR_IP_DNS_SITE,
29
30
  BLOCKLET_SITE_GROUP_SUFFIX,
30
31
  WELLKNOWN_ACME_CHALLENGE_PREFIX,
32
+ WELLKNOWN_DID_RESOLVER_PREFIX,
31
33
  } = require('@abtnode/constant');
32
34
  const {
33
35
  BLOCKLET_DYNAMIC_PATH_PREFIX,
@@ -499,6 +501,30 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
499
501
  return { status: 'downloaded' };
500
502
  };
501
503
 
504
+ const upsertSiteRule = async ({ site, rule }, context) => {
505
+ const findExistingRule = (prefix) => site.rules.find((r) => r.from.pathPrefix === normalizePathPrefix(prefix));
506
+
507
+ const newSiteRule = {
508
+ id: site.id,
509
+ rule,
510
+ };
511
+
512
+ const existingRule = findExistingRule(get(rule, 'from.pathPrefix'));
513
+ if (!existingRule) {
514
+ await routerManager.addRoutingRule(newSiteRule, context);
515
+ return true;
516
+ }
517
+
518
+ if (!isEqual(existingRule.to, rule.to)) {
519
+ newSiteRule.rule.id = existingRule.id;
520
+ newSiteRule.skipProtectedRuleChecking = true;
521
+ await routerManager.updateRoutingRule(newSiteRule, context);
522
+ return true;
523
+ }
524
+
525
+ return false;
526
+ };
527
+
502
528
  const addWellknownSite = async (sites, context) => {
503
529
  const site = (sites || []).find((x) => x.name === NAME_FOR_WELLKNOWN_SITE);
504
530
 
@@ -511,42 +537,35 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
511
537
  };
512
538
 
513
539
  const didResolverWellknownRule = {
514
- from: { pathPrefix: joinUrl(WELLKNOWN_PATH_PREFIX, '/did.json') },
540
+ isProtected: true,
541
+ from: { pathPrefix: WELLKNOWN_DID_RESOLVER_PREFIX },
515
542
  to: proxyTarget,
516
543
  };
517
544
 
518
545
  const acmeChallengeWellknownRule = {
546
+ isProtected: true,
519
547
  from: { pathPrefix: WELLKNOWN_ACME_CHALLENGE_PREFIX },
520
548
  to: proxyTarget,
521
549
  };
522
550
 
523
551
  if (site) {
524
- let changed = false;
525
- const exists = (prefix) => !!site.rules.find((r) => r.from.pathPrefix === normalizePathPrefix(prefix));
526
-
527
- if (!exists(didResolverWellknownRule.from.pathPrefix)) {
528
- await routerManager.addRoutingRule(
529
- {
530
- id: site.id,
531
- rule: didResolverWellknownRule,
532
- },
533
- context
534
- );
535
- changed = true;
536
- }
552
+ const didResolverRuleUpdateRes = await upsertSiteRule(
553
+ {
554
+ site,
555
+ rule: didResolverWellknownRule,
556
+ },
557
+ context
558
+ );
537
559
 
538
- if (!exists(acmeChallengeWellknownRule.from.pathPrefix)) {
539
- await routerManager.addRoutingRule(
540
- {
541
- id: site.id,
542
- rule: acmeChallengeWellknownRule,
543
- },
544
- context
545
- );
546
- changed = true;
547
- }
560
+ const acmeRuleUpdateRes = await upsertSiteRule(
561
+ {
562
+ site,
563
+ rule: acmeChallengeWellknownRule,
564
+ },
565
+ context
566
+ );
548
567
 
549
- return changed;
568
+ return didResolverRuleUpdateRes || acmeRuleUpdateRes;
550
569
  }
551
570
 
552
571
  await routerManager.addRoutingSite(
@@ -1354,6 +1373,8 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
1354
1373
  getCertificates,
1355
1374
  checkDomain,
1356
1375
  ensureDashboardCertificate,
1376
+ addWellknownSite,
1377
+ upsertSiteRule,
1357
1378
 
1358
1379
  getRoutingCrons: () => [
1359
1380
  {
@@ -302,7 +302,7 @@ class RouterManager extends EventEmitter {
302
302
 
303
303
  // update rules
304
304
  const newRules = [
305
- ...dbSite.rules.filter((x) => x.groupId !== rule.id || x.id !== rule.id), // 有些路由没有 rule.groupId
305
+ ...dbSite.rules.filter((x) => (x.groupId && x.groupId !== rule.id) || x.id !== rule.id), // 有些路由没有 rule.groupId
306
306
  ...(await this.getRules(rule)),
307
307
  ];
308
308
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.6.12",
6
+ "version": "1.6.13",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,22 +19,22 @@
19
19
  "author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@abtnode/certificate-manager": "1.6.12",
23
- "@abtnode/constant": "1.6.12",
24
- "@abtnode/cron": "1.6.12",
25
- "@abtnode/db": "1.6.12",
26
- "@abtnode/logger": "1.6.12",
27
- "@abtnode/queue": "1.6.12",
28
- "@abtnode/rbac": "1.6.12",
29
- "@abtnode/router-provider": "1.6.12",
30
- "@abtnode/static-server": "1.6.12",
31
- "@abtnode/timemachine": "1.6.12",
32
- "@abtnode/util": "1.6.12",
22
+ "@abtnode/certificate-manager": "1.6.13",
23
+ "@abtnode/constant": "1.6.13",
24
+ "@abtnode/cron": "1.6.13",
25
+ "@abtnode/db": "1.6.13",
26
+ "@abtnode/logger": "1.6.13",
27
+ "@abtnode/queue": "1.6.13",
28
+ "@abtnode/rbac": "1.6.13",
29
+ "@abtnode/router-provider": "1.6.13",
30
+ "@abtnode/static-server": "1.6.13",
31
+ "@abtnode/timemachine": "1.6.13",
32
+ "@abtnode/util": "1.6.13",
33
33
  "@arcblock/did": "^1.13.79",
34
34
  "@arcblock/event-hub": "1.13.79",
35
35
  "@arcblock/pm2-events": "^0.0.5",
36
36
  "@arcblock/vc": "^1.13.79",
37
- "@blocklet/meta": "1.6.12",
37
+ "@blocklet/meta": "1.6.13",
38
38
  "@fidm/x509": "^1.2.1",
39
39
  "@nedb/core": "^1.2.2",
40
40
  "@nedb/multi": "^1.2.2",
@@ -75,5 +75,5 @@
75
75
  "express": "^4.17.1",
76
76
  "jest": "^27.4.5"
77
77
  },
78
- "gitHead": "dd79037978dc12f72330227a553a80a504f03fa7"
78
+ "gitHead": "4fff3e4867db54e55b11bb0188bbbf703505dea9"
79
79
  }