From eca064a21abb258cc1394eb8c19554c7a9a10c9b Mon Sep 17 00:00:00 2001 From: farhoud Date: Sun, 1 May 2022 16:53:20 +0430 Subject: [PATCH 1/2] Fix OrbitDB close gracefully and add TCP to Transport and listening. --- apps/box/config/default.json | 3 ++- apps/box/package.json | 1 + apps/box/src/app.ts | 4 +++- apps/box/src/config.ts | 6 +++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/box/config/default.json b/apps/box/config/default.json index ce12638..3682d4c 100644 --- a/apps/box/config/default.json +++ b/apps/box/config/default.json @@ -4,7 +4,8 @@ "key_path": "", "listen": [ "/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star", - "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star" + "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star", + "/ip4/0.0.0.0/tcp/4001" ] }, "ipfs": { diff --git a/apps/box/package.json b/apps/box/package.json index 29a96ed..c96c0a8 100644 --- a/apps/box/package.json +++ b/apps/box/package.json @@ -46,6 +46,7 @@ "libp2p-webrtc-direct": "~0.7.1", "libp2p-webrtc-star": "~0.25.0", "libp2p-websockets": "~0.16.2", + "libp2p-tcp": "^0.17.2", "multiformats": "~9.6.4", "openpgp": "~5.2.0", "orbit-db": "~0.28.3", diff --git a/apps/box/src/app.ts b/apps/box/src/app.ts index c965c99..e9aa17b 100644 --- a/apps/box/src/app.ts +++ b/apps/box/src/app.ts @@ -4,7 +4,7 @@ import { resolveLater } from 'async-later'; import debug from 'debug'; import {registerFile} from "./file"; import {libConfig, ipfsConfig} from "./config"; -import {registerGraph} from "./graph"; +import {registerGraph, getOrbitDb} from "./graph"; import {IPFS_PATH, IPFS_HTTP} from "./const"; import config from "config"; import {create} from "ipfs-http-client"; @@ -77,6 +77,8 @@ export async function graceful() { debug('\nStopping server...'); const ipfs = await getIPFS(); const libp2p = await getLibp2p(); + const otbitDb = await getOrbitDb(); + await otbitDb.stop(); if(!IPFS_HTTP) await ipfs.stop(); await libp2p.stop() diff --git a/apps/box/src/config.ts b/apps/box/src/config.ts index b58b856..62f596b 100644 --- a/apps/box/src/config.ts +++ b/apps/box/src/config.ts @@ -10,11 +10,11 @@ import config from "config" import * as fs from "fs" import peerId from "peer-id" import {LIBP2P_PATH, FULA_NODES, IPFS_HTTP} from "./const"; - +import TCP from 'libp2p-tcp' const getPeerId = async () => { if (fs.existsSync(LIBP2P_PATH + '/identity.json')) { - let identity = JSON.parse(fs.readFileSync(LIBP2P_PATH + '/identity.json')); + const identity = JSON.parse(fs.readFileSync(LIBP2P_PATH + '/identity.json')); return await peerId.createFromJSON(identity) } else { let identity = await peerId.create() @@ -42,7 +42,7 @@ export const libConfig = async (config: Partial): Promise Date: Sun, 1 May 2022 17:48:24 +0430 Subject: [PATCH 2/2] Add websocket and TCP transport. --- apps/box/config/default.json | 3 ++- apps/box/src/config.ts | 8 +++----- libraries/fula-client/package.json | 2 ++ libraries/fula-client/scripts/build-test.js | 6 ++++-- libraries/fula-client/scripts/build.js | 2 +- libraries/fula-client/src/config.ts | 5 ++++- libraries/fula-client/src/constant.ts | 2 +- libraries/fula-client/tests/fula.test.ts | 2 +- 8 files changed, 18 insertions(+), 12 deletions(-) diff --git a/apps/box/config/default.json b/apps/box/config/default.json index 3682d4c..1f989ca 100644 --- a/apps/box/config/default.json +++ b/apps/box/config/default.json @@ -5,7 +5,8 @@ "listen": [ "/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star", "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star", - "/ip4/0.0.0.0/tcp/4001" + "/ip4/0.0.0.0/tcp/4002", + "/ip4/0.0.0.0/tcp/4003/ws" ] }, "ipfs": { diff --git a/apps/box/src/config.ts b/apps/box/src/config.ts index 62f596b..e1f27ea 100644 --- a/apps/box/src/config.ts +++ b/apps/box/src/config.ts @@ -11,6 +11,7 @@ import * as fs from "fs" import peerId from "peer-id" import {LIBP2P_PATH, FULA_NODES, IPFS_HTTP} from "./const"; import TCP from 'libp2p-tcp' +import WS from 'libp2p-websockets' const getPeerId = async () => { if (fs.existsSync(LIBP2P_PATH + '/identity.json')) { @@ -42,7 +43,7 @@ export const libConfig = async (config: Partial): Promise): Promise ({ Addresses: { - Swarm: [ - '/ip4/0.0.0.0/tcp/4002', - '/ip4/127.0.0.1/tcp/4003/ws' - ], + Swarm: listen, Announce: [], NoAnnounce: [], API: '/ip4/127.0.0.1/tcp/5002', diff --git a/libraries/fula-client/package.json b/libraries/fula-client/package.json index 8ac2dc3..bb41e41 100644 --- a/libraries/fula-client/package.json +++ b/libraries/fula-client/package.json @@ -28,6 +28,8 @@ "libp2p": "~0.36.2", "libp2p-mplex": "~0.10.7", "libp2p-webrtc-star": "~0.25.0", + "libp2p-tcp": "^0.17.2", + "libp2p-websockets": "~0.16.2", "@chainsafe/libp2p-noise": "~5.0.2", "events": "~3.3.0" }, diff --git a/libraries/fula-client/scripts/build-test.js b/libraries/fula-client/scripts/build-test.js index f2279f4..aad08cd 100644 --- a/libraries/fula-client/scripts/build-test.js +++ b/libraries/fula-client/scripts/build-test.js @@ -31,7 +31,8 @@ await build({ 'libp2p-webrtc-star', 'libp2p-bootstrap', 'libp2p-mplex', - 'libp2p-websockets' + 'libp2p-websockets', + 'libp2p-tcp' ] }); @@ -66,7 +67,8 @@ await build({ 'libp2p-bootstrap', 'libp2p-mplex', 'libp2p-websockets', - 'wrtc' + 'wrtc', + 'libp2p-tcp' ] }); diff --git a/libraries/fula-client/scripts/build.js b/libraries/fula-client/scripts/build.js index cd3dea4..c921f95 100644 --- a/libraries/fula-client/scripts/build.js +++ b/libraries/fula-client/scripts/build.js @@ -32,7 +32,7 @@ await build({ bundle: true, sourcemap: false, outfile: 'dist/node/index.cjs', - external: ['wrtc','libp2p-webrtc-star','libp2p-mplex','libp2p','@chainsafe/libp2p-noise'] + external: ['wrtc','libp2p-webrtc-star','libp2p-mplex','libp2p','@chainsafe/libp2p-noise','libp2p-tcp','libp2p-websockets'] }); diff --git a/libraries/fula-client/src/config.ts b/libraries/fula-client/src/config.ts index b96aa02..89129d2 100644 --- a/libraries/fula-client/src/config.ts +++ b/libraries/fula-client/src/config.ts @@ -5,6 +5,9 @@ import { NOISE, Noise } from '@chainsafe/libp2p-noise'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import Mplex from 'libp2p-mplex'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import WS from 'libp2p-websockets' import { constructorOptions, Libp2pOptions } from 'libp2p'; import { SIG_SERVER } from './constant'; import Protector from "libp2p/src/pnet/index.js" @@ -26,7 +29,7 @@ export async function configure(option?:Option): Promise { diff --git a/libraries/fula-client/tests/fula.test.ts b/libraries/fula-client/tests/fula.test.ts index 5023d16..a1a7918 100644 --- a/libraries/fula-client/tests/fula.test.ts +++ b/libraries/fula-client/tests/fula.test.ts @@ -3,7 +3,7 @@ import {createClient} from '../src'; import {Status} from "../src/connection"; import {File} from '@web-std/file' -const serverIds = ['12D3KooWPRpVw8od6xtsGTjzoKkQMN2xdEnAssQi8mQeK1VTizKa']; +const serverIds = ['12D3KooWQnEmxzocejZTHHSP2VxWs9z93rzAjkiWo2xhXgaWcBbK']; const testFile = new File(['test'], 'test', { lastModified: 1639579330347,