hide info
This commit is contained in:
Vendored
+2
-3
@@ -66,7 +66,6 @@ export declare type ExtendedRpcInfo = RpcInfo & {
|
|||||||
uniqueName: string;
|
uniqueName: string;
|
||||||
};
|
};
|
||||||
export declare const rpcToRpcinfo: (rpc: socketioRPC, owner: string) => RpcInfo;
|
export declare const rpcToRpcinfo: (rpc: socketioRPC, owner: string) => RpcInfo;
|
||||||
export declare const rpcHooker: (socket: Socket, owner: string, RPCs: socketioRPC[], makeUnique?: boolean) => ExtendedRpcInfo[];
|
|
||||||
declare type OnFunction = (type: 'error' | 'close', f: (e?: any) => void) => Socket;
|
declare type OnFunction = (type: 'error' | 'close', f: (e?: any) => void) => Socket;
|
||||||
export interface Socket {
|
export interface Socket {
|
||||||
port: number;
|
port: number;
|
||||||
@@ -92,7 +91,7 @@ export declare class RPCSocketServer {
|
|||||||
private wsServer;
|
private wsServer;
|
||||||
constructor(port: number, rpcExporters?: RPCExporter[], visibility?: Visibility, conf?: RPCSocketConf);
|
constructor(port: number, rpcExporters?: RPCExporter[], visibility?: Visibility, conf?: RPCSocketConf);
|
||||||
private startWebsocket;
|
private startWebsocket;
|
||||||
protected initApis(socket: Socket): void;
|
protected initRPCs(socket: Socket): void;
|
||||||
protected initPublicApis(socket: Socket): void;
|
protected initPublicRPCs(socket: Socket): void;
|
||||||
}
|
}
|
||||||
export {};
|
export {};
|
||||||
|
|||||||
@@ -61,7 +61,9 @@ exports.rpcToRpcinfo = (rpc, owner) => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
exports.rpcHooker = (socket, owner, RPCs, makeUnique = true) => {
|
function rpcHooker(socket, exporter, makeUnique = true) {
|
||||||
|
const owner = exporter.name;
|
||||||
|
const RPCs = [...exporter.exportPublicRPCs(), ...exporter.exportRPCs()];
|
||||||
const suffix = makeUnique ? "-" + uuid().substr(0, 4) : "";
|
const suffix = makeUnique ? "-" + uuid().substr(0, 4) : "";
|
||||||
return RPCs.map(rpc => exports.rpcToRpcinfo(rpc, owner))
|
return RPCs.map(rpc => exports.rpcToRpcinfo(rpc, owner))
|
||||||
.map(info => {
|
.map(info => {
|
||||||
@@ -77,7 +79,7 @@ exports.rpcHooker = (socket, owner, RPCs, makeUnique = true) => {
|
|||||||
socket.on('close', () => socket.unhook(info.name));
|
socket.on('close', () => socket.unhook(info.name));
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
const hookGenerator = (rpc) => {
|
const hookGenerator = (rpc) => {
|
||||||
const argsArr = extractArgs(rpc.func);
|
const argsArr = extractArgs(rpc.func);
|
||||||
argsArr.pop();
|
argsArr.pop();
|
||||||
@@ -124,9 +126,9 @@ class RPCSocketServer {
|
|||||||
socket.on('error', this.conf.errorHandler(socket));
|
socket.on('error', this.conf.errorHandler(socket));
|
||||||
socket.on('close', this.conf.closeHandler(socket));
|
socket.on('close', this.conf.closeHandler(socket));
|
||||||
if (this.visibility === "127.0.0.1")
|
if (this.visibility === "127.0.0.1")
|
||||||
this.initApis(socket);
|
this.initRPCs(socket);
|
||||||
else
|
else
|
||||||
this.initPublicApis(socket);
|
this.initPublicRPCs(socket);
|
||||||
});
|
});
|
||||||
this.wsServer.listen(this.port, this.visibility);
|
this.wsServer.listen(this.port, this.visibility);
|
||||||
}
|
}
|
||||||
@@ -135,30 +137,16 @@ class RPCSocketServer {
|
|||||||
this.errorHandler(undefined)("Unable to connect to socket");
|
this.errorHandler(undefined)("Unable to connect to socket");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
initApis(socket) {
|
initRPCs(socket) {
|
||||||
const adminRPCs = [
|
socket.hook('info', () => rpcInfos);
|
||||||
{
|
|
||||||
name: 'info',
|
|
||||||
type: 'call',
|
|
||||||
func: async () => rpcInfos
|
|
||||||
}
|
|
||||||
];
|
|
||||||
const rpcInfos = [
|
const rpcInfos = [
|
||||||
...exports.rpcHooker(socket, "Admin", adminRPCs, false),
|
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter))
|
||||||
...this.rpcExporters.flatMap(exporter => exports.rpcHooker(socket, exporter.name, [...exporter.exportPublicRPCs(), ...exporter.exportRPCs()]))
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
initPublicApis(socket) {
|
initPublicRPCs(socket) {
|
||||||
const adminRPCs = [
|
socket.hook('info', () => rpcInfos);
|
||||||
{
|
|
||||||
name: 'info',
|
|
||||||
type: 'call',
|
|
||||||
func: async () => rpcInfos
|
|
||||||
}
|
|
||||||
];
|
|
||||||
const rpcInfos = [
|
const rpcInfos = [
|
||||||
...exports.rpcHooker(socket, "Admin", adminRPCs, false),
|
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter))
|
||||||
...this.rpcExporters.flatMap(exporter => exports.rpcHooker(socket, exporter.name, exporter.exportPublicRPCs()))
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ new RPCSocketServer_1.RPCSocketServer(20000, [{
|
|||||||
name: 'echo',
|
name: 'echo',
|
||||||
func: async (s) => s,
|
func: async (s) => s,
|
||||||
}],
|
}],
|
||||||
}], "0.0.0.0");
|
}]);
|
||||||
const caller = new RPCSocket_1.RPCSocket(20000, 'localhost');
|
const caller = new RPCSocket_1.RPCSocket(20000, 'localhost');
|
||||||
caller.connect().then(_ => {
|
caller.connect().then(_ => {
|
||||||
caller.info().then(console.log);
|
caller.info().then(console.log);
|
||||||
|
|||||||
@@ -132,7 +132,10 @@ export const rpcToRpcinfo = (rpc : socketioRPC, owner: string):RpcInfo => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const rpcHooker = (socket: Socket, owner:string, RPCs: socketioRPC[], makeUnique = true):ExtendedRpcInfo[] => {
|
|
||||||
|
function rpcHooker(socket: Socket, exporter:RPCExporter, makeUnique = true):ExtendedRpcInfo[]{
|
||||||
|
const owner = exporter.name
|
||||||
|
const RPCs = [...exporter.exportPublicRPCs(), ...exporter.exportRPCs()]
|
||||||
const suffix = makeUnique?"-"+uuid().substr(0,4):""
|
const suffix = makeUnique?"-"+uuid().substr(0,4):""
|
||||||
return RPCs.map(rpc => rpcToRpcinfo(rpc, owner))
|
return RPCs.map(rpc => rpcToRpcinfo(rpc, owner))
|
||||||
.map(info => {
|
.map(info => {
|
||||||
@@ -236,32 +239,18 @@ export class RPCSocketServer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected initRPCs(socket:Socket){
|
protected initRPCs(socket:Socket){
|
||||||
const infoRPC:socketioRPC[] = [
|
socket.hook('info', () => rpcInfos)
|
||||||
{
|
|
||||||
name: 'info',
|
|
||||||
type: 'call',
|
|
||||||
func: async () => rpcInfos
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
const rpcInfos:ExtendedRpcInfo[] = [
|
const rpcInfos:ExtendedRpcInfo[] = [
|
||||||
...rpcHooker(socket, "RPC", infoRPC, false),
|
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter))
|
||||||
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter.name, [...exporter.exportPublicRPCs(), ...exporter.exportRPCs()]))
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
protected initPublicRPCs(socket:Socket){
|
protected initPublicRPCs(socket:Socket){
|
||||||
const adminRPCs:socketioRPC[] = [
|
socket.hook('info', () => rpcInfos)
|
||||||
{
|
|
||||||
name: 'info',
|
|
||||||
type: 'call',
|
|
||||||
func: async () => rpcInfos
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
const rpcInfos:ExtendedRpcInfo[] = [
|
const rpcInfos:ExtendedRpcInfo[] = [
|
||||||
...rpcHooker(socket, "Admin", adminRPCs, false),
|
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter))
|
||||||
...this.rpcExporters.flatMap(exporter => rpcHooker(socket, exporter.name, exporter.exportPublicRPCs()))
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user