/// import Accept from "./accept"; import { net } from "../adapter"; import ConnectFactor from "../connect"; import Socks5Accept from "./socks5.accept"; import HttpAccept from "./http.accept"; import LightAccept from "./light.accept"; import AigoAccept from "./aigo.accept"; import { CreateCallback, AcceptOptions, AcceptData, // StreamEvent, AuthData, AcceptSocket, ProtocolType, PeerOptions } from "../types"; import EventEmitter from "eventemitter3"; import Peer from "../stream/peer/peer"; export type EventName = StreamEvent & { open: () => void; accept: (data: AcceptData) => void; /** * 接入风险警告 */ risk: (data: { ip: string; port: number; message: string; }) => void; auth: (data: AuthData) => void; }; /** * 本地代理接收协议包装类, 用于接入本地的连接接入 */ export default class AcceptFactor extends EventEmitter { static HttpAccept: typeof HttpAccept; static Socks5Accept: typeof Socks5Accept; static LightAccept: typeof LightAccept; static AigoAccept: typeof AigoAccept; static Accept: typeof Accept; /** 接入协议类列表 */ accepts: Map; /** 连接远程代理的连接封装类 */ protected connectFactor: ConnectFactor; server: net.Server; peer: Peer; private imageServer; options: AcceptOptions; private id; private _open; private acceptSockets; get open(): boolean; constructor(options?: AcceptOptions); init(): Promise; close(): void; /** * 注册本地代理的可接入协议类 * @param accept */ register(accept: Accept): this; getAccept(protocol: ProtocolType): Accept | undefined; /** * 注册连接远程代理的协议封装类 * @param connectFactor */ registerConnectFactor(connectFactor: ConnectFactor): this; /** * 注册已经创建的本地服务, 注册这个就可以不用另行创建本地代理服务 * @param server */ registerServer(server: net.Server): void; /** * 创建镜像服务(需要把目标域名配置到hosts文件 指定到127.0.0.1, 如: 127.0.0.1 hub.docker.io) * @param port * @param host * @param callback * @returns */ createImageServer(port: number, host?: string, callback?: CreateCallback): Promise; /** * 创建本地代理服务 * @param port * @param host */ createServer(port: number, host?: string, callback?: CreateCallback): Promise; createPeerServer(options: PeerOptions, callback?: (peer: Peer) => void): Promise; registerPipe(): void; get acceptTotal(): number; /** * 接入处理本地的连接接入 * @param socket */ accept(socket: AcceptSocket): Promise; private notiryNoSupportAccept; }