fix: contact seed nodes one at a time only
also includes a fix to fix the release builds
This commit is contained in:
parent
71a3e13ea5
commit
f654b0666b
|
@ -8,6 +8,7 @@ import { sha256 } from '../../crypto';
|
|||
import * as Data from '../../../data/data';
|
||||
import pRetry from 'p-retry';
|
||||
import { SeedNodeAPI } from '.';
|
||||
import { allowOnlyOneAtATime } from '../../utils/Promise';
|
||||
|
||||
// tslint:disable: function-name
|
||||
|
||||
|
@ -22,7 +23,7 @@ export async function fetchSnodePoolFromSeedNodeWithRetries(
|
|||
try {
|
||||
window?.log?.info(`fetchSnodePoolFromSeedNode with seedNodes.length ${seedNodes.length}`);
|
||||
|
||||
let snodes = await getSnodeListFromSeednode(seedNodes);
|
||||
let snodes = await getSnodeListFromSeednodeOneAtAtime(seedNodes);
|
||||
// make sure order of the list is random, so we get version in a non-deterministic way
|
||||
snodes = _.shuffle(snodes);
|
||||
// commit changes to be live
|
||||
|
@ -60,20 +61,20 @@ const getSslAgentForSeedNode = async (seedNodeHost: string, isSsl = false) => {
|
|||
|
||||
switch (seedNodeHost) {
|
||||
case 'storage.seed1.loki.network':
|
||||
certContent = storageSeed1Crt;
|
||||
certContent = Buffer.from(storageSeed1Crt, 'utf-8').toString();
|
||||
pubkey256 = 'JOsnIcAanVbgECNA8lHtC8f/cqN9m8EP7jKT6XCjeL8=';
|
||||
cert256 =
|
||||
'6E:2B:AC:F3:6E:C1:FF:FF:24:F3:CA:92:C6:94:81:B4:82:43:DF:C7:C6:03:98:B8:F5:6B:7D:30:7B:16:C1:CB';
|
||||
break;
|
||||
case 'storage.seed3.loki.network':
|
||||
certContent = storageSeed3Crt;
|
||||
certContent = Buffer.from(storageSeed3Crt, 'utf-8').toString();
|
||||
pubkey256 = 'mMmZD3lG4Fi7nTC/EWzRVaU3bbCLsH6Ds2FHSTpo0Rk=';
|
||||
cert256 =
|
||||
'24:13:4C:0A:03:D8:42:A6:09:DE:35:76:F4:BD:FB:11:60:DB:F9:88:9F:98:46:B7:60:A6:60:0C:4C:CF:60:72';
|
||||
|
||||
break;
|
||||
case 'public.loki.foundation':
|
||||
certContent = publicLokiFoundationCtr;
|
||||
certContent = Buffer.from(publicLokiFoundationCtr, 'utf-8').toString();
|
||||
pubkey256 = 'W+Zv52qlcm1BbdpJzFwxZrE7kfmEboq7h3Dp/+Q3RPg=';
|
||||
cert256 =
|
||||
'40:E4:67:7D:18:6B:4D:08:8D:E9:D5:47:52:25:B8:28:E0:D3:63:99:9B:38:46:7D:92:19:5B:61:B9:AE:0E:EA';
|
||||
|
@ -86,7 +87,7 @@ const getSslAgentForSeedNode = async (seedNodeHost: string, isSsl = false) => {
|
|||
|
||||
// tslint:disable: non-literal-fs-path
|
||||
// read the cert each time. We only run this request once for each seed node nevertheless.
|
||||
const sslOptions = {
|
||||
const sslOptions: https.AgentOptions = {
|
||||
// as the seed nodes are using a self signed certificate, we have to provide it here.
|
||||
ca: certContent,
|
||||
// we have to reject them, otherwise our errors returned in the checkServerIdentity are simply not making the call fail.
|
||||
|
@ -132,6 +133,11 @@ export interface SnodeFromSeed {
|
|||
pubkey_ed25519: string;
|
||||
}
|
||||
|
||||
const getSnodeListFromSeednodeOneAtAtime = async (seedNodes: Array<string>) =>
|
||||
allowOnlyOneAtATime('getSnodeListFromSeednode', () =>
|
||||
getSnodeListFromSeednode(seedNodes)
|
||||
) as Promise<Array<SnodeFromSeed>>;
|
||||
|
||||
/**
|
||||
* This call will try 4 times to contact a seed nodes (random) and get the snode list from it.
|
||||
* If all attempts fails, this function will throw the last error.
|
||||
|
@ -296,33 +302,6 @@ async function getSnodesFromSeedUrl(urlObj: URL): Promise<Array<any>> {
|
|||
}
|
||||
}
|
||||
|
||||
const storageSeed3Crt = `-----BEGIN CERTIFICATE-----
|
||||
MIIEITCCAwmgAwIBAgIUc486Dy9Y00bUFfDeYmJIgSS5xREwDQYJKoZIhvcNAQEL
|
||||
BQAwgYAxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhWaWN0b3JpYTESMBAGA1UEBwwJ
|
||||
TWVsYm91cm5lMSUwIwYDVQQKDBxPeGVuIFByaXZhY3kgVGVjaCBGb3VuZGF0aW9u
|
||||
MSMwIQYDVQQDDBpzdG9yYWdlLnNlZWQzLmxva2kubmV0d29yazAeFw0yMTA0MDcw
|
||||
MTIwNTJaFw0yMzA0MDcwMTIwNTJaMIGAMQswCQYDVQQGEwJBVTERMA8GA1UECAwI
|
||||
VmljdG9yaWExEjAQBgNVBAcMCU1lbGJvdXJuZTElMCMGA1UECgwcT3hlbiBQcml2
|
||||
YWN5IFRlY2ggRm91bmRhdGlvbjEjMCEGA1UEAwwac3RvcmFnZS5zZWVkMy5sb2tp
|
||||
Lm5ldHdvcmswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtokMlsFzf
|
||||
piYeD0EVNikMyvjltpF6fUEde9NOVrTtNTQT6kkDk+/0HF5LYgPaatv6v7fpUQHi
|
||||
kIwd6F0LTRGeWDFdsaWMdtlR1n/GxLPrOROsE8dcLt6GLavPf9rDabgva93m/JD6
|
||||
XW+Ne+MPEwqS8dAmFGhZd0gju6AtKFoSHnIf5pSQN6fSZUF/JQtHLVprAKKWKDiS
|
||||
ZwmWbmrZR2aofLD/VRpetabajnZlv9EeWloQwvUsw1C1hkAmmtFeeXtg7ePwrOzo
|
||||
6CnmcUJwOmi+LWqQV4A+58RZPFKaZoC5pzaKd0OYB8eZ8HB1F41UjGJgheX5Cyl4
|
||||
+amfF3l8dSq1AgMBAAGjgZAwgY0wHQYDVR0OBBYEFM9VSq4pGydjtX92Beul4+ml
|
||||
jBKtMB8GA1UdIwQYMBaAFM9VSq4pGydjtX92Beul4+mljBKtMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wJQYDVR0RBB4wHIIac3RvcmFnZS5zZWVkMy5sb2tpLm5ldHdvcmswEwYD
|
||||
VR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAAYxmhhkcKE1n6g1
|
||||
JqOa3UCBo4EfbqY5+FDZ0FVqv/cwemwVpKLbe6luRIS8poomdPCyMOS45V7wN3H9
|
||||
cFpfJ1TW19ydPVKmCXrl29ngmnY1q7YDwE/4qi3VK/UiqDkTHMKWjVPkenOyi8u6
|
||||
VVQANXSnKrn6GtigNFjGyD38O+j7AUSXBtXOJczaoF6r6BWgwQZ2WmgjuwvKTWSN
|
||||
4r8uObERoAQYVaeXfgdr4e9X/JdskBDaLFfoW/rrSozHB4FqVNFW96k+aIUgRa5p
|
||||
9kv115QcBPCSh9qOyTHij4tswS6SyOFaiKrNC4hgHQXP4QgioKmtsR/2Y+qJ6ddH
|
||||
6oo+4QU=
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
|
||||
const storageSeed1Crt = `-----BEGIN CERTIFICATE-----
|
||||
MIIEITCCAwmgAwIBAgIUJsox1ZQPK/6iDsCC+MUJfNAlFuYwDQYJKoZIhvcNAQEL
|
||||
BQAwgYAxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhWaWN0b3JpYTESMBAGA1UEBwwJ
|
||||
|
@ -350,6 +329,33 @@ const storageSeed1Crt = `-----BEGIN CERTIFICATE-----
|
|||
-----END CERTIFICATE-----
|
||||
`;
|
||||
|
||||
const storageSeed3Crt = `-----BEGIN CERTIFICATE-----
|
||||
MIIEITCCAwmgAwIBAgIUc486Dy9Y00bUFfDeYmJIgSS5xREwDQYJKoZIhvcNAQEL
|
||||
BQAwgYAxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhWaWN0b3JpYTESMBAGA1UEBwwJ
|
||||
TWVsYm91cm5lMSUwIwYDVQQKDBxPeGVuIFByaXZhY3kgVGVjaCBGb3VuZGF0aW9u
|
||||
MSMwIQYDVQQDDBpzdG9yYWdlLnNlZWQzLmxva2kubmV0d29yazAeFw0yMTA0MDcw
|
||||
MTIwNTJaFw0yMzA0MDcwMTIwNTJaMIGAMQswCQYDVQQGEwJBVTERMA8GA1UECAwI
|
||||
VmljdG9yaWExEjAQBgNVBAcMCU1lbGJvdXJuZTElMCMGA1UECgwcT3hlbiBQcml2
|
||||
YWN5IFRlY2ggRm91bmRhdGlvbjEjMCEGA1UEAwwac3RvcmFnZS5zZWVkMy5sb2tp
|
||||
Lm5ldHdvcmswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtokMlsFzf
|
||||
piYeD0EVNikMyvjltpF6fUEde9NOVrTtNTQT6kkDk+/0HF5LYgPaatv6v7fpUQHi
|
||||
kIwd6F0LTRGeWDFdsaWMdtlR1n/GxLPrOROsE8dcLt6GLavPf9rDabgva93m/JD6
|
||||
XW+Ne+MPEwqS8dAmFGhZd0gju6AtKFoSHnIf5pSQN6fSZUF/JQtHLVprAKKWKDiS
|
||||
ZwmWbmrZR2aofLD/VRpetabajnZlv9EeWloQwvUsw1C1hkAmmtFeeXtg7ePwrOzo
|
||||
6CnmcUJwOmi+LWqQV4A+58RZPFKaZoC5pzaKd0OYB8eZ8HB1F41UjGJgheX5Cyl4
|
||||
+amfF3l8dSq1AgMBAAGjgZAwgY0wHQYDVR0OBBYEFM9VSq4pGydjtX92Beul4+ml
|
||||
jBKtMB8GA1UdIwQYMBaAFM9VSq4pGydjtX92Beul4+mljBKtMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wJQYDVR0RBB4wHIIac3RvcmFnZS5zZWVkMy5sb2tpLm5ldHdvcmswEwYD
|
||||
VR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAAYxmhhkcKE1n6g1
|
||||
JqOa3UCBo4EfbqY5+FDZ0FVqv/cwemwVpKLbe6luRIS8poomdPCyMOS45V7wN3H9
|
||||
cFpfJ1TW19ydPVKmCXrl29ngmnY1q7YDwE/4qi3VK/UiqDkTHMKWjVPkenOyi8u6
|
||||
VVQANXSnKrn6GtigNFjGyD38O+j7AUSXBtXOJczaoF6r6BWgwQZ2WmgjuwvKTWSN
|
||||
4r8uObERoAQYVaeXfgdr4e9X/JdskBDaLFfoW/rrSozHB4FqVNFW96k+aIUgRa5p
|
||||
9kv115QcBPCSh9qOyTHij4tswS6SyOFaiKrNC4hgHQXP4QgioKmtsR/2Y+qJ6ddH
|
||||
6oo+4QU=
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
|
||||
const publicLokiFoundationCtr = `-----BEGIN CERTIFICATE-----
|
||||
MIIEEzCCAvugAwIBAgIUY9RQqbjhsQEkdeSgV9L0os9xZ7AwDQYJKoZIhvcNAQEL
|
||||
BQAwfDELMAkGA1UEBhMCQVUxETAPBgNVBAgMCFZpY3RvcmlhMRIwEAYDVQQHDAlN
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"rootDir": "./", // Specify the root directory of input files. Use to control the output directory structure with --outDir
|
||||
"removeComments": true, // Do not emit comments to output.
|
||||
// "noEmit": true, // Do not emit outputs.
|
||||
"importHelpers": true, // Import emit helpers from 'tslib'.
|
||||
"importHelpers": false, // Import emit helpers from 'tslib'.
|
||||
// "downlevelIteration": true, // Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'.
|
||||
// "isolatedModules": true, // Transpile each file as a separate module (similar to 'ts.transpileModule').
|
||||
// noImplicitAny
|
||||
|
|
Loading…
Reference in New Issue