Files
linker/linker.tunnel/adapter/ITunnelAdapter.cs
snltty 5d2754d6cb sync
2024-06-24 21:59:50 +08:00

90 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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