32 lines
988 B
JavaScript
32 lines
988 B
JavaScript
const https = require('https');
|
|
const WebSocket = require('ws');
|
|
const logger = require("./logger");
|
|
|
|
module.exports = (address, port, api) => {
|
|
// console.log(global.openSSH);
|
|
// console.log(global.openSSH.cert.toString("utf-8"));
|
|
|
|
const wss = new WebSocket.Server({ address, port });
|
|
|
|
wss.on('connection', function connection(ws, req) {
|
|
const peerAddress = `${req.socket.remoteAddress}:${req.socket.remotePort}`;
|
|
console.log("peerAddress is", peerAddress);
|
|
ws.on('message', async (message) => {
|
|
//console.log('received: %s', message);
|
|
logger.wslog("api received:", message);
|
|
try {
|
|
message = Buffer.from(message, "base64");
|
|
} catch (_) {}
|
|
await api.exec(peerAddress, message, (rs, encryptor) => {
|
|
logger.wslog("api sended:", rs);
|
|
let result = JSON.stringify(rs);
|
|
if (encryptor)
|
|
result = encryptor.encrypt(result).toString('base64');
|
|
ws.send(result);
|
|
});
|
|
});
|
|
});
|
|
|
|
logger.log(`WebSocket API successful runned at port ${port}`);
|
|
}
|