Strictify server.tsx
Summary: As per title Reviewed By: danielbuechele Differential Revision: D17267564 fbshipit-source-id: d99fe62cc22fa3664d5aa6d4770d864fdd212ef4
This commit is contained in:
committed by
Facebook Github Bot
parent
72a8b8967d
commit
a492ddaae8
@@ -108,7 +108,7 @@ export default class Client extends EventEmitter {
|
|||||||
lessPlugins: Plugins;
|
lessPlugins: Plugins;
|
||||||
showAllPlugins: boolean;
|
showAllPlugins: boolean;
|
||||||
connection: RSocketClientSocket<any, any> | null | undefined;
|
connection: RSocketClientSocket<any, any> | null | undefined;
|
||||||
responder: Partial<Responder<any, any>>;
|
responder: Partial<Responder<string, any>>;
|
||||||
store: Store;
|
store: Store;
|
||||||
activePlugins: Set<string>;
|
activePlugins: Set<string>;
|
||||||
device: Promise<BaseDevice>;
|
device: Promise<BaseDevice>;
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ import {reportPlatformFailures} from './utils/metrics';
|
|||||||
import EventEmitter from 'events';
|
import EventEmitter from 'events';
|
||||||
import invariant from 'invariant';
|
import invariant from 'invariant';
|
||||||
import tls from 'tls';
|
import tls from 'tls';
|
||||||
import net from 'net';
|
import net, {Socket} from 'net';
|
||||||
import {RSocketClientSocket} from 'rsocket-core/RSocketClient';
|
import {RSocketClientSocket} from 'rsocket-core/RSocketClient';
|
||||||
|
import {Responder, Payload, ReactiveSocket} from 'rsocket-types';
|
||||||
|
|
||||||
type ClientInfo = {
|
type ClientInfo = {
|
||||||
connection: RSocketClientSocket<any, any> | null | undefined;
|
connection: RSocketClientSocket<any, any> | null | undefined;
|
||||||
@@ -49,6 +50,12 @@ class Server extends EventEmitter {
|
|||||||
this.connections = new Map();
|
this.connections = new Map();
|
||||||
this.certificateProvider = new CertificateProvider(this, logger);
|
this.certificateProvider = new CertificateProvider(this, logger);
|
||||||
this.connectionTracker = new ConnectionTracker(logger);
|
this.connectionTracker = new ConnectionTracker(logger);
|
||||||
|
// eslint-disable-next-line prefer-promise-reject-errors
|
||||||
|
this.secureServer = Promise.reject();
|
||||||
|
// eslint-disable-next-line prefer-promise-reject-errors
|
||||||
|
this.insecureServer = Promise.reject();
|
||||||
|
// eslint-disable-next-line prefer-promise-reject-errors
|
||||||
|
this.initialisePromise = Promise.reject();
|
||||||
this.store = store;
|
this.store = store;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +79,7 @@ class Server extends EventEmitter {
|
|||||||
const server = this;
|
const server = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let rsServer: RSocketServer<any, any> | undefined; // eslint-disable-line prefer-const
|
let rsServer: RSocketServer<any, any> | undefined; // eslint-disable-line prefer-const
|
||||||
const serverFactory = onConnect => {
|
const serverFactory = (onConnect: (socket: Socket) => void) => {
|
||||||
const transportServer = sslConfig
|
const transportServer = sslConfig
|
||||||
? tls.createServer(sslConfig, socket => {
|
? tls.createServer(sslConfig, socket => {
|
||||||
onConnect(socket);
|
onConnect(socket);
|
||||||
@@ -96,7 +103,6 @@ class Server extends EventEmitter {
|
|||||||
});
|
});
|
||||||
return transportServer;
|
return transportServer;
|
||||||
};
|
};
|
||||||
|
|
||||||
rsServer = new RSocketServer({
|
rsServer = new RSocketServer({
|
||||||
getRequestHandler: sslConfig
|
getRequestHandler: sslConfig
|
||||||
? this._trustedRequestHandler
|
? this._trustedRequestHandler
|
||||||
@@ -106,22 +112,24 @@ class Server extends EventEmitter {
|
|||||||
serverFactory: serverFactory,
|
serverFactory: serverFactory,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
rsServer.start();
|
rsServer && rsServer.start();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_trustedRequestHandler = (
|
_trustedRequestHandler = (
|
||||||
conn: RSocketClientSocket<any, any>,
|
socket: ReactiveSocket<string, any>,
|
||||||
connectRequest: {data: string},
|
payload: Payload<string, any>,
|
||||||
) => {
|
): Partial<Responder<string, any>> => {
|
||||||
const server = this;
|
const server = this;
|
||||||
|
if (!payload.data) {
|
||||||
const clientData: ClientQuery = JSON.parse(connectRequest.data);
|
return {};
|
||||||
|
}
|
||||||
|
const clientData: ClientQuery = JSON.parse(payload.data);
|
||||||
this.connectionTracker.logConnectionAttempt(clientData);
|
this.connectionTracker.logConnectionAttempt(clientData);
|
||||||
|
|
||||||
const client = this.addConnection(conn, clientData);
|
const client = this.addConnection(socket, clientData);
|
||||||
|
|
||||||
conn.connectionStatus().subscribe({
|
socket.connectionStatus().subscribe({
|
||||||
onNext(payload) {
|
onNext(payload) {
|
||||||
if (payload.kind == 'ERROR' || payload.kind == 'CLOSED') {
|
if (payload.kind == 'ERROR' || payload.kind == 'CLOSED') {
|
||||||
console.debug(`Device disconnected ${client.id}`, 'server');
|
console.debug(`Device disconnected ${client.id}`, 'server');
|
||||||
@@ -137,10 +145,13 @@ class Server extends EventEmitter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_untrustedRequestHandler = (
|
_untrustedRequestHandler = (
|
||||||
_conn: RSocketClientSocket<any, any>,
|
socket: ReactiveSocket<string, any>,
|
||||||
connectRequest: {data: string},
|
payload: Payload<string, any>,
|
||||||
) => {
|
): Partial<Responder<string, any>> => {
|
||||||
const clientData: ClientQuery = JSON.parse(connectRequest.data);
|
if (!payload.data) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
const clientData: ClientQuery = JSON.parse(payload.data);
|
||||||
this.connectionTracker.logConnectionAttempt(clientData);
|
this.connectionTracker.logConnectionAttempt(clientData);
|
||||||
|
|
||||||
const client: UninitializedClient = {
|
const client: UninitializedClient = {
|
||||||
@@ -151,9 +162,11 @@ class Server extends EventEmitter {
|
|||||||
this.emit('start-client-setup', client);
|
this.emit('start-client-setup', client);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
requestResponse: (payload: {data: string}) => {
|
requestResponse: (
|
||||||
|
payload: Payload<string, any>,
|
||||||
|
): Single<Payload<string, any>> => {
|
||||||
if (typeof payload.data !== 'string') {
|
if (typeof payload.data !== 'string') {
|
||||||
return;
|
return new Single(_ => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
let rawData;
|
let rawData;
|
||||||
@@ -165,7 +178,7 @@ class Server extends EventEmitter {
|
|||||||
'clientMessage',
|
'clientMessage',
|
||||||
'server',
|
'server',
|
||||||
);
|
);
|
||||||
return;
|
return new Single(_ => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
const json: {
|
const json: {
|
||||||
@@ -205,12 +218,13 @@ class Server extends EventEmitter {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return new Single(_ => {});
|
||||||
},
|
},
|
||||||
|
|
||||||
// Leaving this here for a while for backwards compatibility,
|
// Leaving this here for a while for backwards compatibility,
|
||||||
// but for up to date SDKs it will no longer used.
|
// but for up to date SDKs it will no longer used.
|
||||||
// We can delete it after the SDK change has been using requestResponse for a few weeks.
|
// We can delete it after the SDK change has been using requestResponse for a few weeks.
|
||||||
fireAndForget: (payload: {data: string}) => {
|
fireAndForget: (payload: Payload<string, any>) => {
|
||||||
if (typeof payload.data !== 'string') {
|
if (typeof payload.data !== 'string') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -229,7 +243,7 @@ class Server extends EventEmitter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (json.method === 'signCertificate') {
|
if (json && json.method === 'signCertificate') {
|
||||||
console.debug('CSR received from device', 'server');
|
console.debug('CSR received from device', 'server');
|
||||||
const {csr, destination} = json;
|
const {csr, destination} = json;
|
||||||
this.certificateProvider
|
this.certificateProvider
|
||||||
|
|||||||
Reference in New Issue
Block a user