static void Main(string[] args) { byte clientId = 0; var serv = new TunnelServer(clientId, new IPEndPoint(IPAddress.Loopback, 8899)); var client = new TunnelClient(clientId, Utils.DetectHost(), new IPEndPoint(IPAddress.Loopback, 8888)); GlobalEventLoop.Instance().EventLoop(); }
static void Main(string[] args) { IPAddress remoteAddr = IPAddress.Parse(args[0]); byte thisClientId = 1; byte thisServerId = 2; if (args[1] == "1") { var temp = thisClientId; thisClientId = thisServerId; thisServerId = temp; } var serv = new TunnelServer(thisServerId, new IPEndPoint(IPAddress.Loopback, 8899)); var client = new TunnelClient(thisClientId, remoteAddr, new IPEndPoint(IPAddress.Loopback, 8888)); GlobalEventLoop.Instance().EventLoop(); }
public void SetState(bool state) { if (state == currentState) { return; } if (state) { clientConnected = -1; tunnelSettings = new TunnelSettings(); tunnelSettings.Load("TunnelSettings.txt"); guiData.statistics = new Statistics(); udpServer = new UDPServer(tunnelSettings, guiData.statistics); if (tunnelSettings.tunnelServer == "") { tunnelServer = new TunnelServer(tunnelSettings, udpServer); } else { tunnelClient = new TunnelClient(tunnelSettings, udpServer); } currentState = state; } else { currentState = state; if (tunnelClient != null) { tunnelClient.Stop(); tunnelClient = null; } tunnelServer = null; udpServer.Stop(); udpServer = null; tunnelSettings = null; guiData.labelText = "Disconnected"; guiData.iconName = "gtk-no"; UpdateGUI(); } }
public new void WritePacket(G2Protocol protocol, G2Frame root, byte name) { byte[] payload = new byte[PAYLOAD_SIZE]; BitConverter.GetBytes(UserID).CopyTo(payload, 0); BitConverter.GetBytes(ClientID).CopyTo(payload, 8); BitConverter.GetBytes(UdpPort).CopyTo(payload, 10); BitConverter.GetBytes(TcpPort).CopyTo(payload, 12); G2Frame address = protocol.WritePacket(root, name, payload); protocol.WritePacket(address, Packet_IP, IP.GetAddressBytes()); if (TunnelServer != null) { TunnelServer.WritePacket(protocol, address, Packet_Server); } if (TunnelClient != null) { protocol.WritePacket(address, Packet_Client, TunnelClient.ToBytes()); } }
static int Main(string[] args) { Settings settings = new Settings(); settings.isServer = false; settings.ipEndpointStr = "minecraft1.52k.de:25560"; settings.listenPort = 0; int serverCount = 0; foreach (string arg in args) { if (serverCount == 2) { settings.ipEndpointStr = arg; } if (serverCount == 1) { settings.listenPort = Int32.Parse(arg); } if (serverCount > 0) { serverCount--; continue; } if (arg == "--server") { settings.isServer = true; serverCount = 2; } if (arg == "--ipv6") { settings.ipv4only = false; settings.ipv6only = true; } if (arg == "--ipv4") { settings.ipv4only = true; settings.ipv6only = false; } } //ParseIPEndpoint string addPart = settings.ipEndpointStr.Substring(0, settings.ipEndpointStr.LastIndexOf(":")); //Trim [] parts; if (addPart.Contains("[")) { addPart.Substring(1, addPart.Length - 2); } if (!IPAddress.TryParse(addPart, out IPAddress ipAddr)) { IPAddress[] addrs = null; try { addrs = Dns.GetHostAddresses(addPart); } catch (Exception e) { Console.WriteLine("DNS error: " + e.Message); return(-1); } foreach (IPAddress testIP in addrs) { if (!settings.ipv4only && !settings.ipv6only) { ipAddr = testIP; break; } if (settings.ipv4only && testIP.AddressFamily == AddressFamily.InterNetwork) { ipAddr = testIP; break; } if (settings.ipv6only && testIP.AddressFamily == AddressFamily.InterNetworkV6) { ipAddr = testIP; break; } } } if (ipAddr == null) { Console.WriteLine("DNS returned no usable results"); return(-2); } string portPart = settings.ipEndpointStr.Substring(settings.ipEndpointStr.LastIndexOf(":") + 1); settings.ipEndpoint = new IPEndPoint(ipAddr, Int32.Parse(portPart)); if (settings.listenPort == 0) { settings.listenPort = Int32.Parse(portPart); } //Init running = true; NetworkHandler networkHandler = new NetworkHandler(); UDPTunnel udpt = new UDPTunnel(networkHandler, settings); if (settings.isServer) { TunnelServer ts = new TunnelServer(networkHandler, settings); Console.WriteLine("Press Ctrl+C key to quit"); Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { running = false; ts.Shutdown(); udpt.Shutdown(); }; DisplayMain(networkHandler); } else { TunnelClient tc = new TunnelClient(networkHandler, settings); Console.WriteLine("Press Ctrl+C to quit"); Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { running = false; tc.Shutdown(); udpt.Shutdown(); }; DisplayMain(networkHandler); } return(0); }
public void SetServer(TunnelServer tunnelServer) { this.tunnelServer = tunnelServer; }