kaven-utils
Version:
Utils for Node.js.
46 lines (45 loc) • 1.79 kB
JavaScript
/********************************************************************
* @author: Kaven
* @email: kaven@wuwenkai.com
* @website: http://blog.kaven.xyz
* @file: [Kaven-Utils] /src/net/proxy/TlsProxyClient.ts
* @create: 2022-04-20 13:47:57.734
* @modify: 2025-10-14 22:58:04.854
* @version: 6.1.0
* @times: 24
* @lines: 50
* @copyright: Copyright © 2022-2025 Kaven. All Rights Reserved.
* @description: [description]
* @license: [license]
********************************************************************/
import { Strings_CR_LF, TrimEnd } from "kaven-basic";
import { connect } from "node:tls";
import { HttpProxyServer } from "./HttpProxyServer.js";
export class TlsProxyClient extends HttpProxyServer {
options;
constructor(options) {
super();
this.options = options;
}
connect(port, host) {
return new Promise((resolve, reject) => {
const socket = connect(this.options, () => {
const localToRemote = `[${socket.localAddress}:${socket.localPort} -> ${socket.remoteAddress}:${socket.remotePort}]`;
this.Logger?.Info(`[TlsProxyClient]${localToRemote} Server connected, authorized: ${socket.authorized}`);
socket.write(`${host}:${port}${Strings_CR_LF}`);
socket.once("data", (data) => {
const line = TrimEnd(data.toString(), Strings_CR_LF);
if (line === "OK") {
resolve(socket);
}
else {
reject(new Error(line));
}
});
});
socket.on("error", err => {
reject(err);
});
});
}
}