Resolve fallback dns addrs during build
This commit is contained in:
parent
f5787ba1bc
commit
e3dbcc1e0f
10 changed files with 151 additions and 34 deletions
71
ts/scripts/generate-dns-fallback.ts
Normal file
71
ts/scripts/generate-dns-fallback.ts
Normal file
|
@ -0,0 +1,71 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { join } from 'path';
|
||||
import { lookup as lookupCb } from 'dns';
|
||||
import { writeFile } from 'fs/promises';
|
||||
import { promisify } from 'util';
|
||||
import type { ResolvedEndpoint } from 'electron';
|
||||
|
||||
import { isNotNil } from '../util/isNotNil';
|
||||
|
||||
const lookup = promisify(lookupCb);
|
||||
|
||||
const FALLBACK_DOMAINS = [
|
||||
'chat.signal.org',
|
||||
'storage.signal.org',
|
||||
'cdsi.signal.org',
|
||||
'cdn.signal.org',
|
||||
'cdn2.signal.org',
|
||||
'cdn3.signal.org',
|
||||
'updates2.signal.org',
|
||||
'sfu.voip.signal.org',
|
||||
'create.signal.art',
|
||||
];
|
||||
|
||||
async function main() {
|
||||
const config = await Promise.all(
|
||||
FALLBACK_DOMAINS.sort().map(async domain => {
|
||||
const addresses = await lookup(domain, { all: true });
|
||||
|
||||
const endpoints = addresses
|
||||
.map(({ address, family }): ResolvedEndpoint | null => {
|
||||
if (family === 4) {
|
||||
return { family: 'ipv4', address };
|
||||
}
|
||||
if (family === 6) {
|
||||
return { family: 'ipv6', address };
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.filter(isNotNil)
|
||||
.sort((a, b) => {
|
||||
if (a.family < b.family) {
|
||||
return -1;
|
||||
}
|
||||
if (a.family > b.family) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (a.address < b.address) {
|
||||
return -1;
|
||||
}
|
||||
if (a.address > b.address) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
return { domain, endpoints };
|
||||
})
|
||||
);
|
||||
|
||||
const outPath = join(__dirname, '../../build/dns-fallback.json');
|
||||
|
||||
await writeFile(outPath, `${JSON.stringify(config, null, 2)}\n`);
|
||||
}
|
||||
|
||||
main().catch(error => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue