Merge pull request #140 from Permissionless-Software-Foundation/ct-unstable

Removing Circuit Relay for nodes configured for direct connection
This commit is contained in:
Chris Troutner
2024-02-05 06:41:01 -08:00
committed by GitHub
5 changed files with 10359 additions and 383 deletions
+10323 -374
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -33,6 +33,7 @@
"@libp2p/keychain": "4.0.7",
"@libp2p/logger": "4.0.5",
"@libp2p/tcp": "9.0.7",
"@libp2p/webrtc": "4.0.17",
"axios": "0.27.2",
"bcryptjs": "2.4.3",
"blockstore-fs": "1.1.8",
+21 -9
View File
@@ -158,6 +158,26 @@ class IpfsAdapter {
console.log('Helia (IPFS) node IS NOT configured as Circuit Relay')
}
// Configure transports
let transports
if (process.env.CONNECT_PREF === 'direct') {
transports = [
tcp(),
webSockets(),
webRTC()
]
} else {
transports = [
tcp(),
webSockets(),
circuitRelayTransport({
discoverRelays: 3,
reservationConcurrency: 3
}),
webRTC()
]
}
// libp2p is the networking layer that underpins Helia
const libp2p = await this.createLibp2p({
peerId,
@@ -170,15 +190,7 @@ class IpfsAdapter {
'/webrtc'
]
},
transports: [
tcp(),
webSockets(),
circuitRelayTransport({
discoverRelays: 3,
reservationConcurrency: 3
}),
webRTC()
],
transports,
connectionEncryption: [
noise()
],
@@ -31,6 +31,7 @@ class IpfsRESTControllerLib {
this.handleError = this.handleError.bind(this)
this.connect = this.connect.bind(this)
this.getThisNode = this.getThisNode.bind(this)
this.downloadFile = this.downloadFile.bind(this)
}
/**
@@ -123,6 +124,18 @@ class IpfsRESTControllerLib {
}
}
async downloadFile (ctx) {
try {
const { cid } = ctx.params
const file = await this.adapters.ipfs.ipfs.blockstore.get(cid)
return file
} catch (err) {
wlogger.error('Error in ipfs/controller.js/downloadFile(): ', err)
this.handleError(ctx, err)
}
}
// DRY error handler
handleError (ctx, err) {
// If an HTTP status is specified by the buisiness logic, use that.
+1
View File
@@ -56,6 +56,7 @@ class IpfsRouter {
this.router.post('/relays', this.ipfsRESTController.getRelays)
this.router.post('/connect', this.ipfsRESTController.connect)
this.router.get('/node', this.ipfsRESTController.getThisNode)
this.router.get('/download/:cid', this.ipfsRESTController.downloadFile)
// Attach the Controller routes to the Koa app.
app.use(this.router.routes())