mirror of
https://github.com/cerc-io/watcher-ts
synced 2024-11-19 12:26:19 +00:00
Add an option to use a domain name for a announce address (#320)
* Add an option to use a domain name for a announce address * Update chat CLI readme * Set port range for relay node * Add descriptive comment * Upgrade webrtc-direct version
This commit is contained in:
parent
b91f904f14
commit
e47f864966
@ -30,11 +30,12 @@ A basic CLI to pass messages between peers using `stdin`/`stdout`
|
||||
|
||||
```bash
|
||||
# In packages/peer
|
||||
yarn relay-node --host [LISTEN_HOST] --port [LISTEN_PORT] --peer-id-file [PEER_ID_FILE_PATH] --relay-peers [RELAY_PEERS_FILE_PATH]
|
||||
yarn relay-node --host [LISTEN_HOST] --port [LISTEN_PORT] --announce [ANNOUNCE_DOMAIN] --peer-id-file [PEER_ID_FILE_PATH] --relay-peers [RELAY_PEERS_FILE_PATH]
|
||||
```
|
||||
|
||||
* `host (h)`: Host to bind to (default: `127.0.0.1`)
|
||||
* `port (p)`: Port to start listening on (default: `9090`)
|
||||
* `host (h)`: host to bind to (default: `127.0.0.1`)
|
||||
* `port (p)`: port to start listening on (default: `9090`)
|
||||
* `announce (a)`: domain name to be used in the announce address
|
||||
* `peer-id-file (f)`: file path for peer id to be used (json)
|
||||
* `relay-peers (r)`: file path for relay peer multiaddr(s) to dial on startup (json)
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@cerc-io/libp2p": "0.42.2-laconic-0.1.1",
|
||||
"@cerc-io/webrtc-direct": "^5.0.0-laconic-0.1.2",
|
||||
"@cerc-io/webrtc-direct": "^5.0.0-laconic-0.1.3",
|
||||
"@chainsafe/libp2p-noise": "^11.0.0",
|
||||
"@libp2p/floodsub": "^6.0.0",
|
||||
"@libp2p/mplex": "^7.1.1",
|
||||
|
@ -35,6 +35,13 @@ export const RELAY_REDIAL_DELAY = 5000; // 5 sconds
|
||||
// Max number of relay node connections for a peer after which it starts igoring them
|
||||
export const DEFAULT_MAX_RELAY_CONNECTIONS = 2;
|
||||
|
||||
// Range of ports to be used for WebRTC connections
|
||||
// (option only availabe when running in nodejs)
|
||||
export const WEBRTC_PORT_RANGE = {
|
||||
min: 10000,
|
||||
max: 11000
|
||||
};
|
||||
|
||||
// Peer connection manager config constants
|
||||
|
||||
// Number of max concurrent dials per peer
|
||||
|
@ -20,7 +20,7 @@ import type { Connection } from '@libp2p/interface-connection';
|
||||
import { multiaddr } from '@multiformats/multiaddr';
|
||||
import type { PeerId } from '@libp2p/interface-peer-id';
|
||||
|
||||
import { HOP_TIMEOUT, PUBSUB_DISCOVERY_INTERVAL, PUBSUB_SIGNATURE_POLICY } from './constants.js';
|
||||
import { HOP_TIMEOUT, PUBSUB_DISCOVERY_INTERVAL, PUBSUB_SIGNATURE_POLICY, WEBRTC_PORT_RANGE } from './constants.js';
|
||||
import { PeerHearbeatChecker } from './peer-heartbeat-checker.js';
|
||||
|
||||
const log = debug('laconic:relay');
|
||||
@ -28,6 +28,7 @@ const log = debug('laconic:relay');
|
||||
interface Arguments {
|
||||
host: string;
|
||||
port: number;
|
||||
announce: string;
|
||||
peerIdFile: string;
|
||||
relayPeers: string;
|
||||
}
|
||||
@ -47,18 +48,26 @@ async function main (): Promise<void> {
|
||||
console.log('Creating a new peer id');
|
||||
}
|
||||
|
||||
const listenMultiaddr = `/ip4/${argv.host}/tcp/${argv.port}/http/p2p-webrtc-direct`;
|
||||
const listenMultiaddrs = [`/ip4/${argv.host}/tcp/${argv.port}/http/p2p-webrtc-direct`];
|
||||
const announceMultiaddrs = [];
|
||||
|
||||
if (argv.announce) {
|
||||
announceMultiaddrs.push(`/dns4/${argv.announce}/tcp/443/https/p2p-webrtc-direct`);
|
||||
}
|
||||
|
||||
const node = await createLibp2p({
|
||||
peerId,
|
||||
addresses: {
|
||||
listen: [listenMultiaddr]
|
||||
listen: listenMultiaddrs,
|
||||
announce: announceMultiaddrs
|
||||
},
|
||||
transports: [
|
||||
webRTCDirect({
|
||||
wrtc,
|
||||
enableSignalling: true,
|
||||
nodeType: WebRTCDirectNodeType.Relay
|
||||
nodeType: WebRTCDirectNodeType.Relay,
|
||||
initiatorOptions: { webRTCPortRange: WEBRTC_PORT_RANGE },
|
||||
receiverOptions: { webRTCPortRange: WEBRTC_PORT_RANGE }
|
||||
})
|
||||
],
|
||||
connectionEncryption: [noise()],
|
||||
@ -144,6 +153,11 @@ function _getArgv (): any {
|
||||
default: '9090',
|
||||
describe: 'Port to start listening on'
|
||||
},
|
||||
announce: {
|
||||
type: 'string',
|
||||
alias: 'a',
|
||||
describe: 'Domain name to be used in the announce address'
|
||||
},
|
||||
peerIdFile: {
|
||||
type: 'string',
|
||||
alias: 'f',
|
||||
|
18
yarn.lock
18
yarn.lock
@ -373,12 +373,12 @@
|
||||
wherearewe "^2.0.0"
|
||||
xsalsa20 "^1.1.0"
|
||||
|
||||
"@cerc-io/webrtc-direct@^5.0.0-laconic-0.1.2":
|
||||
version "5.0.0-laconic-0.1.2"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fwebrtc-direct/-/5.0.0-laconic-0.1.2/webrtc-direct-5.0.0-laconic-0.1.2.tgz#b0697f3efe297ce7ccccadd537a36b012425df61"
|
||||
integrity sha512-SSHpUHDjyTwFX1bYL+cMjKqbAiEJQRd0N5bVMQGl86hWmmVXu+09vtpHxO6VTUZNNpnYkOisQPvn9CUyAsfWng==
|
||||
"@cerc-io/webrtc-direct@^5.0.0-laconic-0.1.3":
|
||||
version "5.0.0-laconic-0.1.3"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fwebrtc-direct/-/5.0.0-laconic-0.1.3/webrtc-direct-5.0.0-laconic-0.1.3.tgz#14802ba88899c904bddc327082d96cb541523ffb"
|
||||
integrity sha512-HiRn2eoXbOFM2Dklecr+H76BB0H1H/k4I59Hnjj7tppdlr6wwts9MuA/SX0draXYEiRA5Ft4vXrfo469fGS68A==
|
||||
dependencies:
|
||||
"@cerc-io/webrtc-peer" "^2.0.2-laconic-0.1.3"
|
||||
"@cerc-io/webrtc-peer" "^2.0.2-laconic-0.1.4"
|
||||
"@libp2p/interface-transport" "^2.0.0"
|
||||
"@libp2p/interfaces" "^3.0.3"
|
||||
"@libp2p/logger" "^2.0.1"
|
||||
@ -399,10 +399,10 @@
|
||||
undici "^5.2.0"
|
||||
wherearewe "^2.0.1"
|
||||
|
||||
"@cerc-io/webrtc-peer@^2.0.2-laconic-0.1.3":
|
||||
version "2.0.2-laconic-0.1.3"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fwebrtc-peer/-/2.0.2-laconic-0.1.3/webrtc-peer-2.0.2-laconic-0.1.3.tgz#decfc53539f206d70f7250b8f913a5d74da5c505"
|
||||
integrity sha512-B0fcADAeU8W0EfdLp/ju6wBDrd/WOXnsqZuGAk+EVTXqvm2cSJiA/TzttmiKQIAvYuWTsLvmRUQ14KHCbtMdSA==
|
||||
"@cerc-io/webrtc-peer@^2.0.2-laconic-0.1.4":
|
||||
version "2.0.2-laconic-0.1.4"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fwebrtc-peer/-/2.0.2-laconic-0.1.4/webrtc-peer-2.0.2-laconic-0.1.4.tgz#9ce10477ad4f6391de61a3f6f9a6063b09c0e196"
|
||||
integrity sha512-tCXLCmDW1NKjn9m2ymgh6GbN3YWvEHMIsupW27L2Xt3q02DmWM7acZB04mjvuCDtQt5FC7ok0B6yTQ8a1liXnQ==
|
||||
dependencies:
|
||||
"@libp2p/interfaces" "^3.0.2"
|
||||
"@libp2p/logger" "^2.0.0"
|
||||
|
Loading…
Reference in New Issue
Block a user