private void NatUtility_DeviceLost(object sender, Mono.Nat.DeviceEventArgs e) { //do port forwarding with UPNP Mono.Nat.INatDevice natd = e.Device; natd.DeletePortMap(new Mono.Nat.Mapping(Mono.Nat.Protocol.Tcp,GlobalVars.ServerPort,GlobalVars.ServerPort)); natd.DeletePortMap(new Mono.Nat.Mapping(Mono.Nat.Protocol.Udp,GlobalVars.ServerPort,GlobalVars.ServerPort)); }
private void NatUtility_DeviceFound(object sender, Mono.Nat.DeviceEventArgs e) { //do port forwarding with UPNP Mono.Nat.INatDevice natd = e.Device; natd.CreatePortMap(new Mono.Nat.Mapping(Mono.Nat.Protocol.Tcp,GlobalVars.ServerPort,GlobalVars.ServerPort)); natd.CreatePortMap(new Mono.Nat.Mapping(Mono.Nat.Protocol.Udp,GlobalVars.ServerPort,GlobalVars.ServerPort)); ConsolePrint("Port " + GlobalVars.ServerPort.ToString() + " registered to device " + natd.GetExternalIP().ToString(), 3); evNATdoneargs args = new evNATdoneargs(); args.IP = natd.GetExternalIP().ToString(); args.port = GlobalVars.ServerPort; evNATdone(this, args); //MessageBox.Show("NAT done! My public IP is " + IP); }
static void NatUtility_DeviceFound(object sender, Mono.Nat.DeviceEventArgs e) { #if ENABLE_NAT try { if (e.Device is Mono.Nat.Upnp.UpnpNatDevice) //TODO, see if Pmp should work as well { // var current = e.Device.GetAllMappings(); // if (current != null) // { // foreach (var map in current) // { // if (map.Protocol == Mono.Nat.Protocol.Tcp && map.PrivatePort == Terraria.Netplay.portForwardPort && map.PublicPort == Terraria.Netplay.portForwardPort) // { // Terraria.Netplay.portForwardOpen = true; // } // } // } if (!Terraria.Netplay.portForwardOpen) { _devices.Add(e.Device); _map = new Mono.Nat.Mapping(Mono.Nat.Protocol.Tcp, Terraria.Netplay.portForwardPort, Terraria.Netplay.portForwardPort) { Description = "Terraria Server" }; e.Device.CreatePortMap(_map); ProgramLog.Admin.Log("Created a new NAT map record for Terraria Server"); Terraria.Netplay.portForwardOpen = true; } else { ProgramLog.Admin.Log("Detected an existing NAT map record for Terraria Server"); } } } catch (Exception ex) { ProgramLog.Log(ex, "Failed to create NAT device mapping"); } #endif }
static void NatUtility_DeviceFound(object sender, Mono.Nat.DeviceEventArgs e) { #if ENABLE_NAT try { if (e.Device is Mono.Nat.Upnp.UpnpNatDevice) //TODO, see if Pmp should work as well { var current = e.Device.GetAllMappings(); if (current != null) { foreach (var map in current) { if (map.Protocol == Mono.Nat.Protocol.Tcp && map.PrivatePort == Netplay.portForwardPort && map.PublicPort == Netplay.portForwardPort) { Netplay.portForwardOpen = true; } } } if (!Netplay.portForwardOpen) { var terrariaMap = new Mono.Nat.Mapping(Mono.Nat.Protocol.Tcp, Netplay.portForwardPort, Netplay.portForwardPort) { Description = "Terraria Server" }; e.Device.CreatePortMap(terrariaMap); Tools.WriteLine("Created a new NAT map record for Terraria Server"); Netplay.portForwardOpen = true; } else { Tools.WriteLine("Detected an existing NAT map record for Terraria Server"); } } } catch (Exception ex) { Tools.WriteLine(ex); } #endif }