@abtnode/core 1.16.14-beta-c2843ec5 → 1.16.14-beta-be739405
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/lib/api/node.js +1 -4
- package/lib/blocklet/downloader/blocklet-downloader.js +5 -2
- package/lib/blocklet/manager/disk.js +60 -29
- package/lib/blocklet/manager/helper/install-application-from-dev.js +1 -0
- package/lib/blocklet/manager/helper/install-component-from-dev.js +10 -2
- package/lib/index.js +8 -7
- package/lib/router/helper.js +0 -12
- package/lib/router/index.js +0 -1
- package/lib/util/get-accessible-external-node-ip.js +17 -10
- package/lib/util/get-domain-for-blocklet.js +2 -2
- package/lib/util/ip.js +1 -0
- package/package.json +19 -19
package/lib/api/node.js
CHANGED
|
@@ -24,8 +24,7 @@ class NodeAPI {
|
|
|
24
24
|
* @param {object} states StateDB
|
|
25
25
|
* @param {string} nodeDid
|
|
26
26
|
*/
|
|
27
|
-
|
|
28
|
-
constructor(states, nodeDid, getRouterCapabilities = (_) => ({})) {
|
|
27
|
+
constructor(states, nodeDid) {
|
|
29
28
|
assert.notStrictEqual(states, undefined, 'argument states can not be undefined');
|
|
30
29
|
assert.notStrictEqual(states, null, 'argument states can not be null');
|
|
31
30
|
|
|
@@ -40,7 +39,6 @@ class NodeAPI {
|
|
|
40
39
|
});
|
|
41
40
|
|
|
42
41
|
this.state = states.node;
|
|
43
|
-
this.getRouterCapabilities = getRouterCapabilities;
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
async updateNodeInfo(entity = {}, context) {
|
|
@@ -75,7 +73,6 @@ class NodeAPI {
|
|
|
75
73
|
}
|
|
76
74
|
|
|
77
75
|
info.uptime = process.uptime() * 1000;
|
|
78
|
-
info.capabilities = this.getRouterCapabilities(info);
|
|
79
76
|
|
|
80
77
|
return info;
|
|
81
78
|
}
|
|
@@ -209,7 +209,7 @@ class BlockletDownloader extends EventEmitter {
|
|
|
209
209
|
|
|
210
210
|
const cachedBundles = (await this.cache.get(CACHE_KEY)) || [];
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
const handle = (component) => {
|
|
213
213
|
const bundleId = getComponentBundleId(component);
|
|
214
214
|
|
|
215
215
|
if (scheduled[bundleId]) {
|
|
@@ -238,7 +238,10 @@ class BlockletDownloader extends EventEmitter {
|
|
|
238
238
|
|
|
239
239
|
scheduled[bundleId] = component.meta;
|
|
240
240
|
downloadComponentIds.push(component.meta.did);
|
|
241
|
-
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
handle(blocklet);
|
|
244
|
+
forEachComponentV2Sync(blocklet, handle);
|
|
242
245
|
|
|
243
246
|
const downloadList = Object.values(scheduled);
|
|
244
247
|
const skipList = Object.values(skipped);
|
|
@@ -46,6 +46,7 @@ const {
|
|
|
46
46
|
forEachComponentV2,
|
|
47
47
|
forEachComponentV2Sync,
|
|
48
48
|
findComponentByIdV2,
|
|
49
|
+
isGatewayBlocklet,
|
|
49
50
|
} = require('@blocklet/meta/lib/util');
|
|
50
51
|
const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
|
|
51
52
|
const { titleSchema, updateMountPointSchema, environmentNameSchema } = require('@blocklet/meta/lib/schema');
|
|
@@ -159,7 +160,7 @@ const { sessionConfigSchema } = require('../../validators/util');
|
|
|
159
160
|
|
|
160
161
|
const request = require('../../util/request');
|
|
161
162
|
|
|
162
|
-
const { formatEnvironments, getBlockletMeta, validateOwner } = util;
|
|
163
|
+
const { formatEnvironments, getBlockletMeta, validateOwner, isCLI } = util;
|
|
163
164
|
|
|
164
165
|
const statusLock = new Lock('blocklet-status-lock');
|
|
165
166
|
const limitSync = pLimit(1);
|
|
@@ -1045,9 +1046,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1045
1046
|
}
|
|
1046
1047
|
|
|
1047
1048
|
if (attachRuntimeInfo) {
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
return this._attachRuntimeInfo({ did, nodeInfo, diskInfo: true, context });
|
|
1049
|
+
return this._attachRuntimeInfo({ did, diskInfo: true, context });
|
|
1051
1050
|
}
|
|
1052
1051
|
|
|
1053
1052
|
if (useCache && this.cachedBlocklets.has(did)) {
|
|
@@ -1641,7 +1640,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1641
1640
|
{
|
|
1642
1641
|
name: 'refresh-accessible-ip',
|
|
1643
1642
|
time: '0 */10 * * * *', // 10min
|
|
1644
|
-
options: { runOnInit: true },
|
|
1643
|
+
options: { runOnInit: true, runInService: true },
|
|
1645
1644
|
fn: async () => {
|
|
1646
1645
|
const nodeInfo = await states.node.read();
|
|
1647
1646
|
await refreshAccessibleExternalNodeIp(nodeInfo);
|
|
@@ -2272,7 +2271,6 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2272
2271
|
}
|
|
2273
2272
|
|
|
2274
2273
|
async _attachBlockletListRuntimeInfo({ blocklets }, context) {
|
|
2275
|
-
const nodeInfo = await states.node.read();
|
|
2276
2274
|
return (
|
|
2277
2275
|
await Promise.all(
|
|
2278
2276
|
blocklets.map((x) => {
|
|
@@ -2282,7 +2280,6 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2282
2280
|
|
|
2283
2281
|
return this._attachRuntimeInfo({
|
|
2284
2282
|
did: x.meta.did,
|
|
2285
|
-
nodeInfo,
|
|
2286
2283
|
diskInfo: false,
|
|
2287
2284
|
context,
|
|
2288
2285
|
});
|
|
@@ -2291,7 +2288,20 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2291
2288
|
).filter(Boolean);
|
|
2292
2289
|
}
|
|
2293
2290
|
|
|
2294
|
-
|
|
2291
|
+
// 处理 domainAliases#value SLOT_FOR_IP_DNS_SITE
|
|
2292
|
+
async getDomainAliases(blocklet, context = {}) {
|
|
2293
|
+
if (blocklet?.site?.domainAliases?.length) {
|
|
2294
|
+
const nodeIp = await getAccessibleExternalNodeIp();
|
|
2295
|
+
return blocklet.site.domainAliases.map((x) => ({
|
|
2296
|
+
...x,
|
|
2297
|
+
value: util.replaceDomainSlot({ domain: x.value, context, nodeIp }),
|
|
2298
|
+
}));
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
return [];
|
|
2302
|
+
}
|
|
2303
|
+
|
|
2304
|
+
async _attachRuntimeInfo({ did, diskInfo = true, context }) {
|
|
2295
2305
|
if (!did) {
|
|
2296
2306
|
throw new Error('did should not be empty');
|
|
2297
2307
|
}
|
|
@@ -2303,14 +2313,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2303
2313
|
return null;
|
|
2304
2314
|
}
|
|
2305
2315
|
|
|
2306
|
-
|
|
2307
|
-
if (blocklet?.site?.domainAliases?.length) {
|
|
2308
|
-
const nodeIp = await getAccessibleExternalNodeIp(nodeInfo);
|
|
2309
|
-
blocklet.site.domainAliases = blocklet.site.domainAliases.map((x) => ({
|
|
2310
|
-
...x,
|
|
2311
|
-
value: util.replaceDomainSlot({ domain: x.value, context, nodeIp }),
|
|
2312
|
-
}));
|
|
2313
|
-
}
|
|
2316
|
+
blocklet.site.domainAliases = await this.getDomainAliases(blocklet, context);
|
|
2314
2317
|
|
|
2315
2318
|
// app runtime info, app status
|
|
2316
2319
|
blocklet.appRuntimeInfo = this.runtimeMonitor.getRuntimeInfo(blocklet.meta.did);
|
|
@@ -2368,7 +2371,16 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2368
2371
|
return children;
|
|
2369
2372
|
}
|
|
2370
2373
|
|
|
2371
|
-
async _addBlocklet({
|
|
2374
|
+
async _addBlocklet({
|
|
2375
|
+
component,
|
|
2376
|
+
mode = BLOCKLET_MODES.PRODUCTION,
|
|
2377
|
+
name,
|
|
2378
|
+
did,
|
|
2379
|
+
title,
|
|
2380
|
+
description,
|
|
2381
|
+
skSource = '',
|
|
2382
|
+
folder,
|
|
2383
|
+
}) {
|
|
2372
2384
|
const environments = component?.meta?.environments || [];
|
|
2373
2385
|
|
|
2374
2386
|
const meta = {
|
|
@@ -2397,7 +2409,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2397
2409
|
|
|
2398
2410
|
let children;
|
|
2399
2411
|
if (mode === BLOCKLET_MODES.DEVELOPMENT) {
|
|
2400
|
-
children = [component];
|
|
2412
|
+
children = isGatewayBlocklet(component.meta) ? [] : [component];
|
|
2401
2413
|
} else {
|
|
2402
2414
|
children = component ? await this._getChildrenForInstallation(component) : [];
|
|
2403
2415
|
}
|
|
@@ -2417,6 +2429,8 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2417
2429
|
meta.logo = component.meta.logo;
|
|
2418
2430
|
} else if (children[0]?.meta?.logo) {
|
|
2419
2431
|
meta.logo = children[0].meta.logo;
|
|
2432
|
+
} else if (mode === BLOCKLET_MODES.DEVELOPMENT && isGatewayBlocklet(component.meta)) {
|
|
2433
|
+
meta.logo = component.meta.logo;
|
|
2420
2434
|
}
|
|
2421
2435
|
|
|
2422
2436
|
await validateBlocklet({ meta, children });
|
|
@@ -2442,6 +2456,11 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2442
2456
|
params.deployedFrom = containerSourceUrl;
|
|
2443
2457
|
}
|
|
2444
2458
|
|
|
2459
|
+
if (mode === BLOCKLET_MODES.DEVELOPMENT && isGatewayBlocklet(component.meta)) {
|
|
2460
|
+
params.source = BlockletSource.local;
|
|
2461
|
+
params.deployedFrom = folder;
|
|
2462
|
+
}
|
|
2463
|
+
|
|
2445
2464
|
const blocklet = await states.blocklet.addBlocklet(params);
|
|
2446
2465
|
|
|
2447
2466
|
// set chain type
|
|
@@ -2997,6 +3016,10 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2997
3016
|
}
|
|
2998
3017
|
|
|
2999
3018
|
async _createNotification(did, notification) {
|
|
3019
|
+
if (isCLI()) {
|
|
3020
|
+
return;
|
|
3021
|
+
}
|
|
3022
|
+
|
|
3000
3023
|
try {
|
|
3001
3024
|
const extra = await states.blockletExtras.getMeta(did);
|
|
3002
3025
|
const isExternal = !!extra?.controller;
|
|
@@ -3468,14 +3491,16 @@ class FederatedBlockletManager extends DiskBlockletManager {
|
|
|
3468
3491
|
const blocklet = await this.getBlocklet(did);
|
|
3469
3492
|
const nodeInfo = await states.node.read();
|
|
3470
3493
|
const blockletInfo = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
3494
|
+
const domainAliases = await this.getDomainAliases(blocklet);
|
|
3471
3495
|
const { permanentWallet } = blockletInfo;
|
|
3472
3496
|
const memberSite = {
|
|
3473
3497
|
appId: blocklet.appDid,
|
|
3474
3498
|
appPid: blocklet.appPid,
|
|
3475
|
-
aliasDid: (blocklet.migratedFrom || []).map((
|
|
3499
|
+
aliasDid: (blocklet.migratedFrom || []).map((x) => x.appDid),
|
|
3476
3500
|
appName: blockletInfo.name,
|
|
3477
3501
|
appDescription: blockletInfo.description,
|
|
3478
3502
|
appUrl: blockletInfo.appUrl,
|
|
3503
|
+
aliasDomain: domainAliases.map((x) => x.value),
|
|
3479
3504
|
appLogo:
|
|
3480
3505
|
blocklet.environmentObj.BLOCKLET_APP_LOGO ||
|
|
3481
3506
|
normalizePathPrefix(`${WELLKNOWN_SERVICE_PATH_PREFIX}/blocklet/logo`) ||
|
|
@@ -3689,16 +3714,22 @@ class FederatedBlockletManager extends DiskBlockletManager {
|
|
|
3689
3714
|
const waitingList = federated.sites
|
|
3690
3715
|
.filter((item) => item.appId !== federated.config.appId)
|
|
3691
3716
|
.map((item) => {
|
|
3692
|
-
return limitSync(() =>
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3717
|
+
return limitSync(async () => {
|
|
3718
|
+
const url = `${item.appUrl}/${WELLKNOWN_SERVICE_PATH_PREFIX}/api/federated/sync`;
|
|
3719
|
+
try {
|
|
3720
|
+
// NOTICE: 即使通知某个 member 失败了,也不影响其他 member 接收同步结果
|
|
3721
|
+
await pRetry(
|
|
3722
|
+
() =>
|
|
3723
|
+
request.post(url, {
|
|
3724
|
+
signer: permanentWallet.address,
|
|
3725
|
+
data: signV2(permanentWallet.address, permanentWallet.secretKey, { sites: federated.sites }),
|
|
3726
|
+
}),
|
|
3727
|
+
{ retries: 3 }
|
|
3728
|
+
);
|
|
3729
|
+
} catch (error) {
|
|
3730
|
+
logger.warn('Failed to sync federated sites', { error, did, url, action: 'audit' });
|
|
3731
|
+
}
|
|
3732
|
+
});
|
|
3702
3733
|
});
|
|
3703
3734
|
await Promise.all(waitingList);
|
|
3704
3735
|
return newState;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const logger = require('@abtnode/logger')('@abtnode/core:install-component-dev');
|
|
2
2
|
|
|
3
3
|
const { BlockletStatus, BlockletSource, BLOCKLET_MODES, fromBlockletStatus } = require('@blocklet/constant');
|
|
4
|
-
const { isInProgress } = require('@blocklet/meta/lib/util');
|
|
4
|
+
const { isInProgress, isGatewayBlocklet } = require('@blocklet/meta/lib/util');
|
|
5
5
|
const {
|
|
6
6
|
parseComponents,
|
|
7
7
|
filterDuplicateComponents,
|
|
@@ -59,7 +59,15 @@ const installComponentFromDev = async ({ folder, meta, rootDid, mountPoint, mana
|
|
|
59
59
|
existRoot.children.filter((x) => x.meta.did !== component.meta.did)
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
|
|
63
|
+
if (!isGatewayBlocklet(meta)) {
|
|
64
|
+
children.unshift(component);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (children.length <= 0) {
|
|
68
|
+
return manager.getBlocklet(rootDid);
|
|
69
|
+
}
|
|
70
|
+
|
|
63
71
|
checkVersionCompatibility([...children, ...existRoot.children]);
|
|
64
72
|
|
|
65
73
|
const componentDids = children.map((x) => x.meta.did);
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
|
+
const get = require('lodash/get');
|
|
3
4
|
const uniq = require('lodash/uniq');
|
|
4
5
|
const md5 = require('@abtnode/util/lib/md5');
|
|
5
6
|
const formatContext = require('@abtnode/util/lib/format-context');
|
|
@@ -206,10 +207,9 @@ function ABTNode(options) {
|
|
|
206
207
|
deleteRoutingRule,
|
|
207
208
|
addDomainAlias,
|
|
208
209
|
deleteDomainAlias,
|
|
209
|
-
getRouterCapabilities,
|
|
210
210
|
} = getRouterHelpers({ dataDirs, routingSnapshot, routerManager, blockletManager, certManager });
|
|
211
211
|
|
|
212
|
-
const nodeAPI = new NodeAPI(states, options.nodeDid
|
|
212
|
+
const nodeAPI = new NodeAPI(states, options.nodeDid);
|
|
213
213
|
const teamAPI = new TeamAPI({ states, teamManager, dataDirs });
|
|
214
214
|
|
|
215
215
|
blockletManager.resetSiteByDid = resetSiteByDid;
|
|
@@ -254,6 +254,7 @@ function ABTNode(options) {
|
|
|
254
254
|
checkComponentsForUpdates: blockletManager.checkComponentsForUpdates.bind(blockletManager),
|
|
255
255
|
upgradeComponents: blockletManager.upgradeComponents.bind(blockletManager),
|
|
256
256
|
getBlockletForLauncher: blockletManager.getBlockletForLauncher.bind(blockletManager),
|
|
257
|
+
getBlockletDomainAliases: blockletManager.getDomainAliases.bind(blockletManager),
|
|
257
258
|
resetBlocklet: blockletManager.reset.bind(blockletManager),
|
|
258
259
|
deleteBlockletProcess: blockletManager.deleteProcess.bind(blockletManager),
|
|
259
260
|
configPublicToStore: blockletManager.configPublicToStore.bind(blockletManager),
|
|
@@ -529,7 +530,7 @@ function ABTNode(options) {
|
|
|
529
530
|
LogRotator.getCron(),
|
|
530
531
|
...getStateCrons(states),
|
|
531
532
|
...nodeAPI.getCrons(),
|
|
532
|
-
],
|
|
533
|
+
].filter((x) => options.daemon || (options.service && get(x, 'options.runInService'))),
|
|
533
534
|
onError: (error, name) => {
|
|
534
535
|
states.notification.create({
|
|
535
536
|
title: 'Run job failed',
|
|
@@ -556,8 +557,8 @@ function ABTNode(options) {
|
|
|
556
557
|
.catch(console.error);
|
|
557
558
|
};
|
|
558
559
|
|
|
559
|
-
|
|
560
|
-
|
|
560
|
+
onStatesReady(() => {
|
|
561
|
+
if (options.daemon) {
|
|
561
562
|
// start cert manager
|
|
562
563
|
certManager
|
|
563
564
|
.start()
|
|
@@ -575,8 +576,8 @@ function ABTNode(options) {
|
|
|
575
576
|
logger.info('Cron jobs start successfully on daemon start');
|
|
576
577
|
}
|
|
577
578
|
}, 1000);
|
|
578
|
-
}
|
|
579
|
-
}
|
|
579
|
+
}
|
|
580
|
+
});
|
|
580
581
|
|
|
581
582
|
events.on(EVENTS.NODE_STOPPED, () => {
|
|
582
583
|
pm2Events.pause();
|
package/lib/router/helper.js
CHANGED
|
@@ -7,7 +7,6 @@ const UUID = require('uuid');
|
|
|
7
7
|
const dayjs = require('@abtnode/util/lib/dayjs');
|
|
8
8
|
const isUrl = require('is-url');
|
|
9
9
|
const get = require('lodash/get');
|
|
10
|
-
const pick = require('lodash/pick');
|
|
11
10
|
const cloneDeep = require('lodash/cloneDeep');
|
|
12
11
|
const groupBy = require('lodash/groupBy');
|
|
13
12
|
const isEqual = require('lodash/isEqual');
|
|
@@ -1282,16 +1281,6 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
|
|
|
1282
1281
|
}
|
|
1283
1282
|
};
|
|
1284
1283
|
|
|
1285
|
-
const getRouterCapabilities = (info) => {
|
|
1286
|
-
const providerName = get(info, 'routing.provider', null);
|
|
1287
|
-
|
|
1288
|
-
if (providerName && providers[providerName]) {
|
|
1289
|
-
return pick(providers[providerName].capabilities || {}, ['httpImageFilter']);
|
|
1290
|
-
}
|
|
1291
|
-
|
|
1292
|
-
return {};
|
|
1293
|
-
};
|
|
1294
|
-
|
|
1295
1284
|
const analyzeRouterLog = async () => {
|
|
1296
1285
|
const info = await nodeState.read();
|
|
1297
1286
|
const sites = await getRoutingSites({});
|
|
@@ -1602,7 +1591,6 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
|
|
|
1602
1591
|
deleteDomainAlias,
|
|
1603
1592
|
|
|
1604
1593
|
isGatewayCacheEnabled,
|
|
1605
|
-
getRouterCapabilities,
|
|
1606
1594
|
};
|
|
1607
1595
|
};
|
|
1608
1596
|
|
package/lib/router/index.js
CHANGED
|
@@ -12,8 +12,8 @@ const timeout = process.env.NODE_ENV === 'test' ? 500 : 5000;
|
|
|
12
12
|
|
|
13
13
|
// check if node dashboard https endpoint return 2xx
|
|
14
14
|
// FIXME: check connected by wellknown endpoint
|
|
15
|
-
const checkConnected = async ({ ip,
|
|
16
|
-
const { adminPath = WELLKNOWN_SERVER_ADMIN_PATH } =
|
|
15
|
+
const checkConnected = async ({ ip, info }) => {
|
|
16
|
+
const { adminPath = WELLKNOWN_SERVER_ADMIN_PATH } = info.routing || {};
|
|
17
17
|
const origin = `https://${getNodeDomain(ip)}`;
|
|
18
18
|
const endpoint = joinUrl(origin, adminPath);
|
|
19
19
|
await axios.get(endpoint, { timeout });
|
|
@@ -22,25 +22,32 @@ const checkConnected = async ({ ip, nodeInfo }) => {
|
|
|
22
22
|
/**
|
|
23
23
|
* Get accessible external ip of abtnode
|
|
24
24
|
*/
|
|
25
|
-
const fetch = async (
|
|
26
|
-
const { external } = await getIp();
|
|
25
|
+
const fetch = async (info) => {
|
|
26
|
+
const { external, internal } = await getIp();
|
|
27
27
|
logger.info('refresh external ip:', external);
|
|
28
28
|
|
|
29
|
-
if (
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (cache === external) {
|
|
29
|
+
if ([external, internal].includes(cache)) {
|
|
34
30
|
return cache;
|
|
35
31
|
}
|
|
36
32
|
|
|
33
|
+
// prefer external ip
|
|
37
34
|
try {
|
|
38
|
-
await checkConnected({ ip: external,
|
|
35
|
+
await checkConnected({ ip: external, info });
|
|
39
36
|
cache = external;
|
|
40
37
|
} catch {
|
|
41
38
|
cache = null;
|
|
42
39
|
}
|
|
43
40
|
|
|
41
|
+
// fallback to internal ip
|
|
42
|
+
if (!cache) {
|
|
43
|
+
try {
|
|
44
|
+
await checkConnected({ ip: internal, info });
|
|
45
|
+
cache = external;
|
|
46
|
+
} catch {
|
|
47
|
+
cache = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
44
51
|
return cache;
|
|
45
52
|
};
|
|
46
53
|
|
|
@@ -6,8 +6,8 @@ const getIpDnsDomainForBlocklet = (blocklet) => {
|
|
|
6
6
|
return `${encodeBase32(blocklet.meta.did)}-${SLOT_FOR_IP_DNS_SITE}.${DEFAULT_IP_DOMAIN_SUFFIX}`;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
const getDidDomainForBlocklet = ({ appPid, didDomain }) => {
|
|
10
|
-
return `${encodeBase32(appPid)}.${didDomain
|
|
9
|
+
const getDidDomainForBlocklet = ({ appPid, didDomain = DEFAULT_DID_DOMAIN }) => {
|
|
10
|
+
return `${encodeBase32(appPid)}.${didDomain}`;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
module.exports = { getIpDnsDomainForBlocklet, getDidDomainForBlocklet, formatName };
|
package/lib/util/ip.js
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.14-beta-
|
|
6
|
+
"version": "1.16.14-beta-be739405",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
20
20
|
"license": "Apache-2.0",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@abtnode/analytics": "1.16.14-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.14-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.14-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.14-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.14-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.14-beta-
|
|
28
|
-
"@abtnode/models": "1.16.14-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.14-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.14-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.14-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.14-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.14-beta-
|
|
34
|
-
"@abtnode/util": "1.16.14-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.14-beta-be739405",
|
|
23
|
+
"@abtnode/auth": "1.16.14-beta-be739405",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.14-beta-be739405",
|
|
25
|
+
"@abtnode/constant": "1.16.14-beta-be739405",
|
|
26
|
+
"@abtnode/cron": "1.16.14-beta-be739405",
|
|
27
|
+
"@abtnode/logger": "1.16.14-beta-be739405",
|
|
28
|
+
"@abtnode/models": "1.16.14-beta-be739405",
|
|
29
|
+
"@abtnode/queue": "1.16.14-beta-be739405",
|
|
30
|
+
"@abtnode/rbac": "1.16.14-beta-be739405",
|
|
31
|
+
"@abtnode/router-provider": "1.16.14-beta-be739405",
|
|
32
|
+
"@abtnode/static-server": "1.16.14-beta-be739405",
|
|
33
|
+
"@abtnode/timemachine": "1.16.14-beta-be739405",
|
|
34
|
+
"@abtnode/util": "1.16.14-beta-be739405",
|
|
35
35
|
"@arcblock/did": "1.18.87",
|
|
36
36
|
"@arcblock/did-auth": "1.18.87",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.87",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.87",
|
|
44
44
|
"@arcblock/vc": "1.18.87",
|
|
45
|
-
"@blocklet/constant": "1.16.14-beta-
|
|
46
|
-
"@blocklet/meta": "1.16.14-beta-
|
|
47
|
-
"@blocklet/resolver": "1.16.14-beta-
|
|
48
|
-
"@blocklet/sdk": "1.16.14-beta-
|
|
45
|
+
"@blocklet/constant": "1.16.14-beta-be739405",
|
|
46
|
+
"@blocklet/meta": "1.16.14-beta-be739405",
|
|
47
|
+
"@blocklet/resolver": "1.16.14-beta-be739405",
|
|
48
|
+
"@blocklet/sdk": "1.16.14-beta-be739405",
|
|
49
49
|
"@did-space/client": "^0.2.141",
|
|
50
50
|
"@fidm/x509": "^1.2.1",
|
|
51
51
|
"@ocap/mcrypto": "1.18.87",
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"jest": "^27.5.1",
|
|
100
100
|
"unzipper": "^0.10.11"
|
|
101
101
|
},
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "4a7be8e8a321f8be5b172c10c09c32af216a1c73"
|
|
103
103
|
}
|