using linker.tunnel.wanport; using linker.tunnel.transport; using System.Net; using System.Security.Cryptography.X509Certificates; namespace linker.tunnel.adapter { public interface ITunnelAdapter { /// /// 本机局域网IP /// public IPAddress LocalIP { get; } /// /// ssl加密证书 /// public X509Certificate2 Certificate { get; } /// /// 获取外网端口协议列表 /// /// public List GetTunnelWanPortCompacts(); /// /// 保存外网端口协议列表 /// /// public void SetTunnelWanPortCompacts(List compacts); /// /// 获取打洞协议列表 /// /// public List GetTunnelTransports(); /// /// 保存打洞协议列表 /// /// public void SetTunnelTransports(List transports); /// /// 获取本地网络信息 /// /// public NetworkInfo GetLocalConfig(); /// /// 获取远端的外网信息,比如你是A,你要获取B的信息,可以在B调用 TunnelTransfer.GetWanPort() 发送回来 /// /// /// public Task GetRemoteWanPort(string remoteMachineId); /// /// 发送开始打洞 /// /// /// public Task SendConnectBegin(TunnelTransportInfo tunnelTransportInfo); /// /// 发送打洞失败 /// /// /// public Task SendConnectFail(TunnelTransportInfo tunnelTransportInfo); /// /// 发送打洞成功 /// /// /// public Task SendConnectSuccess(TunnelTransportInfo tunnelTransportInfo); } public sealed class NetworkInfo { /// /// 本机局域网IP列表 /// public IPAddress[] LocalIps { get; set; } /// /// 本机与外网的距离,通过多少网关 /// public int RouteLevel { get; set; } /// /// 本机名 /// public string MachineId { get; set; } } }