UNPKG

kaven-utils

Version:

Utils for Node.js.

46 lines (45 loc) 1.79 kB
/******************************************************************** * @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); }); }); } }