Core/Network: Refactor local/remote ip address selection code and allow using hostnames in LoginREST bnetserver config options
Port From (https://github.com/TrinityCore/TrinityCore/commit/6be536a73bc8a6e331ce20e7d19e2ea56b99b4d0)
This commit is contained in:
@@ -18,7 +18,7 @@ public class Realm : IEquatable<Realm>
|
||||
|
||||
public IPEndPoint GetAddressForClient(IPAddress clientAddr)
|
||||
{
|
||||
IPAddress realmIp;
|
||||
IPAddress realmIp = ExternalAddress;
|
||||
|
||||
// Attempt to send best address for client
|
||||
if (IPAddress.IsLoopback(clientAddr))
|
||||
@@ -33,13 +33,6 @@ public class Realm : IEquatable<Realm>
|
||||
realmIp = LocalAddress;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (clientAddr.AddressFamily == AddressFamily.InterNetwork && clientAddr.GetNetworkAddress(LocalSubnetMask).Equals(LocalAddress.GetNetworkAddress(LocalSubnetMask)))
|
||||
realmIp = LocalAddress;
|
||||
else
|
||||
realmIp = ExternalAddress;
|
||||
}
|
||||
|
||||
IPEndPoint endpoint = new(realmIp, Port);
|
||||
|
||||
@@ -66,7 +59,6 @@ public class Realm : IEquatable<Realm>
|
||||
{
|
||||
return other.ExternalAddress.Equals(ExternalAddress)
|
||||
&& other.LocalAddress.Equals(LocalAddress)
|
||||
&& other.LocalSubnetMask.Equals(LocalSubnetMask)
|
||||
&& other.Port == Port
|
||||
&& other.Name == Name
|
||||
&& other.Type == Type
|
||||
@@ -78,14 +70,13 @@ public class Realm : IEquatable<Realm>
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return new { ExternalAddress, LocalAddress, LocalSubnetMask, Port, Name, Type, Flags, Timezone, AllowedSecurityLevel, PopulationLevel }.GetHashCode();
|
||||
return new { ExternalAddress, LocalAddress, Port, Name, Type, Flags, Timezone, AllowedSecurityLevel, PopulationLevel }.GetHashCode();
|
||||
}
|
||||
|
||||
public RealmId Id;
|
||||
public uint Build;
|
||||
public IPAddress ExternalAddress;
|
||||
public IPAddress LocalAddress;
|
||||
public IPAddress LocalSubnetMask;
|
||||
public ushort Port;
|
||||
public string Name;
|
||||
public string NormalizedName;
|
||||
|
||||
@@ -94,23 +94,22 @@ public class RealmManager : Singleton<RealmManager>
|
||||
realm.Name = result.Read<string>(1);
|
||||
realm.ExternalAddress = IPAddress.Parse(result.Read<string>(2));
|
||||
realm.LocalAddress = IPAddress.Parse(result.Read<string>(3));
|
||||
realm.LocalSubnetMask = IPAddress.Parse(result.Read<string>(4));
|
||||
realm.Port = result.Read<ushort>(5);
|
||||
RealmType realmType = (RealmType)result.Read<byte>(6);
|
||||
realm.Port = result.Read<ushort>(4);
|
||||
RealmType realmType = (RealmType)result.Read<byte>(5);
|
||||
if (realmType == RealmType.FFAPVP)
|
||||
realmType = RealmType.PVP;
|
||||
if (realmType >= RealmType.MaxType)
|
||||
realmType = RealmType.Normal;
|
||||
|
||||
realm.Type = (byte)realmType;
|
||||
realm.Flags = (RealmFlags)result.Read<byte>(7);
|
||||
realm.Timezone = result.Read<byte>(8);
|
||||
AccountTypes allowedSecurityLevel = (AccountTypes)result.Read<byte>(9);
|
||||
realm.Flags = (RealmFlags)result.Read<byte>(6);
|
||||
realm.Timezone = result.Read<byte>(7);
|
||||
AccountTypes allowedSecurityLevel = (AccountTypes)result.Read<byte>(8);
|
||||
realm.AllowedSecurityLevel = (allowedSecurityLevel <= AccountTypes.Administrator ? allowedSecurityLevel : AccountTypes.Administrator);
|
||||
realm.PopulationLevel = result.Read<float>(10);
|
||||
realm.Build = result.Read<uint>(11);
|
||||
byte region = result.Read<byte>(12);
|
||||
byte battlegroup = result.Read<byte>(13);
|
||||
realm.PopulationLevel = result.Read<float>(9);
|
||||
realm.Build = result.Read<uint>(10);
|
||||
byte region = result.Read<byte>(11);
|
||||
byte battlegroup = result.Read<byte>(12);
|
||||
|
||||
realm.Id = new RealmId(region, battlegroup, realmId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user