Add support for Minecraft Service DNS Records

- Add DnDns library for performing DNS queries
 - Add query method for SRV record
 - Resolve Minecraft services

This allows resolving actual server addresses for
servers using SRV records on their domain names

SRV records are basically DNS redirection eg:

  myserver.net -> srv1.myserver.net:12345

Should solve #186 reported by sammyvsparks and many others.
This commit is contained in:
ORelio 2016-10-06 19:13:58 +02:00
parent 69542872d0
commit 9cd983c50d
44 changed files with 5062 additions and 25 deletions

View file

@ -123,6 +123,46 @@
<Compile Include="Mapping\Material.cs" />
<Compile Include="Mapping\Movement.cs" />
<Compile Include="Mapping\World.cs" />
<Compile Include="Protocol\Dns\DnsHelpers.cs" />
<Compile Include="Protocol\Dns\Enums\NsClass.cs" />
<Compile Include="Protocol\Dns\Enums\NsFlags.cs" />
<Compile Include="Protocol\Dns\Enums\NsType.cs" />
<Compile Include="Protocol\Dns\Enums\TcpServices.cs" />
<Compile Include="Protocol\Dns\Enums\UdpServices.cs" />
<Compile Include="Protocol\Dns\Query\DnsQueryBase.cs" />
<Compile Include="Protocol\Dns\Query\DnsQueryRequest.cs" />
<Compile Include="Protocol\Dns\Query\DnsQueryResponse.cs" />
<Compile Include="Protocol\Dns\Records\AaaaRecord.cs" />
<Compile Include="Protocol\Dns\Records\AfsdbRecord.cs" />
<Compile Include="Protocol\Dns\Records\ARecord.cs" />
<Compile Include="Protocol\Dns\Records\AtmaRecord.cs" />
<Compile Include="Protocol\Dns\Records\BaseDnsRecord.cs" />
<Compile Include="Protocol\Dns\Records\CNameRecord.cs" />
<Compile Include="Protocol\Dns\Records\HInfoRecord.cs" />
<Compile Include="Protocol\Dns\Records\IDnsRecord.cs" />
<Compile Include="Protocol\Dns\Records\IsdnRecord.cs" />
<Compile Include="Protocol\Dns\Records\LocRecord.cs" />
<Compile Include="Protocol\Dns\Records\MbRecord.cs" />
<Compile Include="Protocol\Dns\Records\MgRecord.cs" />
<Compile Include="Protocol\Dns\Records\MInfoRecord.cs" />
<Compile Include="Protocol\Dns\Records\MrRecord.cs" />
<Compile Include="Protocol\Dns\Records\MxRecord.cs" />
<Compile Include="Protocol\Dns\Records\NsRecord.cs" />
<Compile Include="Protocol\Dns\Records\PtrRecord.cs" />
<Compile Include="Protocol\Dns\Records\RecordFactory.cs" />
<Compile Include="Protocol\Dns\Records\RecordHeader.cs" />
<Compile Include="Protocol\Dns\Records\RpRecord.cs" />
<Compile Include="Protocol\Dns\Records\RtRecord.cs" />
<Compile Include="Protocol\Dns\Records\SoaRecord.cs" />
<Compile Include="Protocol\Dns\Records\SrvRecord.cs" />
<Compile Include="Protocol\Dns\Records\TSigRecord.cs" />
<Compile Include="Protocol\Dns\Records\TxtRecord.cs" />
<Compile Include="Protocol\Dns\Records\UnknownRecord.cs" />
<Compile Include="Protocol\Dns\Records\WksRecord.cs" />
<Compile Include="Protocol\Dns\Records\X25Record.cs" />
<Compile Include="Protocol\Dns\Security\IMessageSecurityProvider.cs" />
<Compile Include="Protocol\Dns\Security\TsigMessageSecurityProvider.cs" />
<Compile Include="Protocol\Dns\Tools.cs" />
<Compile Include="Protocol\Handlers\Forge\FMLHandshakeClientState.cs" />
<Compile Include="Protocol\Handlers\Forge\FMLHandshakeDiscriminator.cs" />
<Compile Include="Protocol\Handlers\Forge\ForgeInfo.cs" />