Fixed wrong IP getting sent to unity client

This commit is contained in:
Derek S 2021-04-06 12:54:42 -05:00
parent e464ebc26f
commit bdee2d039b
3 changed files with 11 additions and 6 deletions

View file

@ -30,6 +30,7 @@ namespace LightReflectiveMirror.LoadBalancing
string receivedAuthKey = req.Headers["Auth"];
string endpointPort = req.Headers["EndpointPort"];
string gamePort = req.Headers["GamePort"];
string publicIP = req.Headers["PIP"];
string address = context.Request.RemoteEndPoint.Address.ToString();
@ -46,7 +47,7 @@ namespace LightReflectiveMirror.LoadBalancing
{
var _gamePort = Convert.ToUInt16(gamePort);
var _endpointPort = Convert.ToUInt16(endpointPort);
await Program.instance.AddServer(address, _gamePort, _endpointPort);
await Program.instance.AddServer(address, _gamePort, _endpointPort, publicIP);
}
catch
{

View file

@ -58,9 +58,9 @@ namespace LightReflectiveMirror.LoadBalancing
}
public async Task AddServer(string serverIP, ushort port, ushort endpointPort)
public async Task AddServer(string serverIP, ushort port, ushort endpointPort, string publicIP)
{
var relayAddr = new RelayAddress { Port = port, EndpointPort = endpointPort, Address = serverIP };
var relayAddr = new RelayAddress { Port = port, EndpointPort = endpointPort, Address = publicIP, EndpointAddress = serverIP };
if (availableRelayServers.ContainsKey(relayAddr))
{
@ -121,7 +121,7 @@ namespace LightReflectiveMirror.LoadBalancing
for (int i = 0; i < keys.Count; i++)
{
string url = $"http://{keys[i].Address}:{keys[i].EndpointPort}{API_PATH}";
string url = $"http://{keys[i].EndpointAddress}:{keys[i].EndpointPort}{API_PATH}";
using (WebClient wc = new WebClient())
{
@ -206,12 +206,14 @@ namespace LightReflectiveMirror.LoadBalancing
}
// container for relay address info
[Serializable]
[JsonObject(MemberSerialization.OptOut)]
public struct RelayAddress
{
public ushort Port;
public ushort EndpointPort;
public string Address;
[JsonIgnore]
public string EndpointAddress;
}
[Serializable]

View file

@ -23,7 +23,8 @@ namespace LightReflectiveMirror
WriteTitle();
instance = this;
_startupTime = DateTime.Now;
publicIP = new WebClient().DownloadString("http://icanhazip.com").Replace("\\r\\n", "").Replace("\\n", "").Trim();
using (WebClient wc = new WebClient())
publicIP = wc.DownloadString("http://icanhazip.com").Replace("\\r", "").Replace("\\n", "").Trim();
if (!File.Exists(CONFIG_PATH))
{
@ -204,6 +205,7 @@ namespace LightReflectiveMirror
authReq.Headers.Add("Auth", conf.LoadBalancerAuthKey);
authReq.Headers.Add("EndpointPort", endpointPort);
authReq.Headers.Add("GamePort", gamePort);
authReq.Headers.Add("PIP", publicIP); // Public IP
var res = await authReq.GetResponseAsync();