public static bool Handle(EagleTunnelHandler.EagleTunnelRequestType type, EagleTunnelArgs e) { bool result = false; if (e != null) { switch (type) { case EagleTunnelHandler.EagleTunnelRequestType.DNS: SendDNSReq(e); break; case EagleTunnelHandler.EagleTunnelRequestType.TCP: result = SendTCPReq(e); break; case EagleTunnelHandler.EagleTunnelRequestType.LOCATION: SendLOCATIONReq(e); break; case EagleTunnelHandler.EagleTunnelRequestType.Unknown: default: break; } } return(result); }
public static Tunnel Handle(EagleTunnelHandler.EagleTunnelRequestType type, EagleTunnelArgs e) { Tunnel result = null; if (type != EagleTunnelHandler.EagleTunnelRequestType.Unknown && e != null) { IPEndPoint ipeOfServer = Conf.GetRemoteIPEndPoint(); Socket socket2Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket2Server.Connect(ipeOfServer); } catch { socket2Server = null; } Tunnel tunnel = CheckVersion(socket2Server); if (tunnel != null) { bool done = CheckUser(tunnel); if (done) { switch (type) { case EagleTunnelHandler.EagleTunnelRequestType.DNS: DNSReqSender(tunnel, e); done = false; // no need to continue; break; case EagleTunnelHandler.EagleTunnelRequestType.TCP: done = TCPReqSender(tunnel, e); break; } } if (done) { result = tunnel; } else { tunnel.Close(); } } } return(result); }