diff --git a/packages/ipfs-cli/src/commands/daemon.js b/packages/ipfs-cli/src/commands/daemon.js index ad8085d64f..ee189a26ab 100644 --- a/packages/ipfs-cli/src/commands/daemon.js +++ b/packages/ipfs-cli/src/commands/daemon.js @@ -100,20 +100,29 @@ module.exports = { try { await daemon.start() - // @ts-ignore - _apiServers is possibly undefined - daemon._httpApi._apiServers.forEach(apiServer => { - print(`HTTP API listening on ${apiServer.info.ma}`) - }) - // @ts-ignore - _grpcServer is possibly undefined - print(`gRPC listening on ${daemon._grpcServer.info.ma}`) + + if (daemon._httpApi && daemon._httpApi._apiServers) { + daemon._httpApi._apiServers.forEach(apiServer => { + print(`HTTP API listening on ${apiServer.info.ma}`) + }) + } + // @ts-ignore - _httpGateway is possibly undefined - daemon._httpGateway._gatewayServers.forEach(gatewayServer => { - print(`Gateway (read only) listening on ${gatewayServer.info.ma}`) - }) - // @ts-ignore - _apiServers is possibly undefined - daemon._httpApi._apiServers.forEach(apiServer => { - print(`Web UI available at ${toUri(apiServer.info.ma)}/webui`) - }) + if (daemon._grpcServer && daemon._grpcServer) { + print(`gRPC listening on ${daemon._grpcServer.info.ma}`) + } + + if (daemon._httpGateway && daemon._httpGateway._gatewayServers) { + daemon._httpGateway._gatewayServers.forEach(gatewayServer => { + print(`Gateway (read only) listening on ${gatewayServer.info.ma}`) + }) + } + + if (daemon._httpApi && daemon._httpApi._apiServers) { + daemon._httpApi._apiServers.forEach(apiServer => { + print(`Web UI available at ${toUri(apiServer.info.ma)}/webui`) + }) + } } catch (err) { if (err.code === 'ERR_REPO_NOT_INITIALIZED' || err.message.match(/uninitialized/i)) { err.message = 'no initialized ipfs repo found in ' + repoPath + '\nplease run: jsipfs init' diff --git a/packages/ipfs-grpc-server/src/types.d.ts b/packages/ipfs-grpc-server/src/types.d.ts index f651214690..69ab04e844 100644 --- a/packages/ipfs-grpc-server/src/types.d.ts +++ b/packages/ipfs-grpc-server/src/types.d.ts @@ -1,5 +1,6 @@ import { Pushable } from 'it-pushable' import { EventEmitter } from 'events' +import { Multiaddr } from 'multiaddr' export interface Options { socket?: WebsocketServer @@ -16,8 +17,14 @@ export interface WebsocketMessage { channel: any } +export interface WebsocketServerInfo { + uri: string + ma: Multiaddr +} + export interface WebsocketServer extends EventEmitter { // events on: ((event: 'error', listener: (err: Error) => void) => this) & ((event: 'data', listener: (message: WebsocketMessage) => void) => this) stop: () => Promise + info: WebsocketServerInfo } diff --git a/packages/ipfs-grpc-server/src/utils/web-socket-server.js b/packages/ipfs-grpc-server/src/utils/web-socket-server.js index dbe52ff8d6..5e9cef2ceb 100644 --- a/packages/ipfs-grpc-server/src/utils/web-socket-server.js +++ b/packages/ipfs-grpc-server/src/utils/web-socket-server.js @@ -39,6 +39,11 @@ class Messages extends EventEmitter { this._wss = wss this.multiaddr = '' + this.info = { + uri: '', + ma: new Multiaddr('/ip4/127.0.0.1/tcp/0/ws') + } + wss.on('connection', (ws, request) => { ws.on('error', error => debug(`WebSocket Error: ${error.stack}`)) @@ -86,8 +91,6 @@ class Messages extends EventEmitter { } } else { this.info = { - address: info.address, - port: info.port, uri: `http://${info.address}:${info.port}`, ma: new Multiaddr(`/ip4/${info.address}/tcp/${info.port}/ws`) }