Removed UPnP port mapping.
This commit is contained in:
parent
9389c1c9c4
commit
3dfc999c38
@ -27,8 +27,6 @@ namespace MLAPI
|
||||
//Should only be used for dedicated servers and will require the servers RSA keypair being hard coded into clients in order to exchange a AES key
|
||||
//TODO
|
||||
public bool EncryptMessages = false;
|
||||
public bool UseUPnP = false;
|
||||
public Action<bool, IPAddress> UPnPCompleteCallback = null;
|
||||
|
||||
//Cached config hash
|
||||
private byte[] ConfigHash = null;
|
||||
|
@ -1,87 +0,0 @@
|
||||
using Open.Nat;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MLAPI.Helper
|
||||
{
|
||||
public static class UPnPHelper
|
||||
{
|
||||
//Needs to be threaded, Currently freezes the game for up to 10 sec
|
||||
internal static void AttemptPortMap(int port, Action<bool, IPAddress> callback)
|
||||
{
|
||||
bool invoked = false;
|
||||
NatDiscoverer nat = new NatDiscoverer();
|
||||
CancellationTokenSource cts = new CancellationTokenSource();
|
||||
cts.CancelAfter(10000);
|
||||
|
||||
NatDevice device = null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Task<NatDevice> natTask = nat.DiscoverDeviceAsync(PortMapper.Upnp, cts);
|
||||
Mapping tcpMapping = new Mapping(Protocol.Tcp, port, port, 0, Application.productName + " (TCP)");
|
||||
Mapping udpMapping = new Mapping(Protocol.Udp, port, port, 0, Application.productName + " (UDP)");
|
||||
IPAddress publicIPAddress = null;
|
||||
natTask.ContinueWith(tt =>
|
||||
{
|
||||
device = tt.Result;
|
||||
device.GetExternalIPAsync()
|
||||
.ContinueWith(task =>
|
||||
{
|
||||
publicIPAddress = task.Result;
|
||||
return device.CreatePortMapAsync(udpMapping);
|
||||
})
|
||||
.Unwrap()
|
||||
.ContinueWith(task =>
|
||||
{
|
||||
return device.CreatePortMapAsync(udpMapping);
|
||||
})
|
||||
.Unwrap()
|
||||
.ContinueWith(task =>
|
||||
{
|
||||
return device.GetAllMappingsAsync();
|
||||
})
|
||||
.Unwrap()
|
||||
.ContinueWith(task =>
|
||||
{
|
||||
Mapping[] mappings = task.Result.ToArray();
|
||||
if(mappings.Length == 0)
|
||||
{
|
||||
if (!invoked && callback != null)
|
||||
callback(false, publicIPAddress);
|
||||
invoked = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < mappings.Length; i++)
|
||||
{
|
||||
if(mappings[i].PrivatePort == port)
|
||||
{
|
||||
if (!invoked && callback != null)
|
||||
callback(true, publicIPAddress);
|
||||
invoked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}, TaskContinuationOptions.OnlyOnRanToCompletion);
|
||||
|
||||
try
|
||||
{
|
||||
natTask.Wait();
|
||||
}
|
||||
catch (AggregateException e)
|
||||
{
|
||||
if (e.InnerException is NatDeviceNotFoundException)
|
||||
{
|
||||
if (!invoked && callback != null)
|
||||
callback(false, publicIPAddress);
|
||||
invoked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -34,14 +34,8 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Open.Nat, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f22a6a4582336c76, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Open.NAT.2.1.0.0\lib\net35\Open.Nat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Threading, Version=1.0.2856.102, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Open.NAT.2.1.0.0\lib\net35\System.Threading.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
@ -52,7 +46,6 @@
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Helper\UPnPHelper.cs" />
|
||||
<Compile Include="MonoBehaviours\Core\NetworkedBehaviour.cs" />
|
||||
<Compile Include="Data\NetworkedClient.cs" />
|
||||
<Compile Include="MonoBehaviours\Core\NetworkedObject.cs" />
|
||||
@ -62,8 +55,5 @@
|
||||
<Compile Include="NetworkingManagerComponents\SpawnManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
@ -1,5 +1,4 @@
|
||||
using MLAPI.Helper;
|
||||
using MLAPI.NetworkingManagerComponents;
|
||||
using MLAPI.NetworkingManagerComponents;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
@ -124,10 +123,6 @@ namespace MLAPI
|
||||
Debug.LogWarning("MLAPI: No ConnectionApproval callback defined. Connection approval will timeout");
|
||||
}
|
||||
}
|
||||
if (NetworkConfig.UseUPnP)
|
||||
{
|
||||
UPnPHelper.AttemptPortMap(NetworkConfig.Port, NetworkConfig.UPnPCompleteCallback);
|
||||
}
|
||||
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
|
||||
hostId = NetworkTransport.AddHost(hostTopology, NetworkConfig.Port);
|
||||
isServer = true;
|
||||
@ -192,10 +187,6 @@ namespace MLAPI
|
||||
Debug.LogWarning("MLAPI: No ConnectionApproval callback defined. Connection approval will timeout");
|
||||
}
|
||||
}
|
||||
if(NetworkConfig.UseUPnP)
|
||||
{
|
||||
UPnPHelper.AttemptPortMap(NetworkConfig.Port, NetworkConfig.UPnPCompleteCallback);
|
||||
}
|
||||
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
|
||||
hostId = NetworkTransport.AddHost(hostTopology, NetworkConfig.Port, null);
|
||||
isServer = true;
|
||||
|
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Open.NAT" version="2.1.0.0" targetFramework="net35" />
|
||||
</packages>
|
@ -18,7 +18,6 @@ It's licenced under the MIT licence :D
|
||||
|
||||
## Done features
|
||||
* Host support (Client hosts the server) (done)
|
||||
* Port forwarding using Open.NAT using the UPnP protcol (done)
|
||||
* Object and player spawning (done)
|
||||
* Connection approval (done)
|
||||
* Message names (done)
|
||||
@ -33,8 +32,4 @@ That's all I can think of right now. But there is more to come, especially if pe
|
||||
|
||||
|
||||
## Indepth
|
||||
The project is not yet very tested. Examples will be created when it's more functional.
|
||||
|
||||
|
||||
## Dependencies
|
||||
Open.NAT - https://github.com/lontivero/Open.NAT (MIT)
|
||||
The project is not yet very tested. Examples will be created when it's more functional.
|
Loading…
x
Reference in New Issue
Block a user