56 lines
1.4 KiB
C#
56 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Threading.Tasks;
|
|
using IPMeow.Dns;
|
|
|
|
namespace IPMeow.Test;
|
|
|
|
public class DnsTest
|
|
{
|
|
[Fact]
|
|
public async Task TestDns()
|
|
{
|
|
DnsMessage msg = new()
|
|
{
|
|
IsRecursionDesired = true,
|
|
IsRecursionAvailable = true,
|
|
MessageId = 0xbabe,
|
|
MessageType = DnsMessageType.Query,
|
|
Opcode = DnsMessageOpcode.Query,
|
|
Questions = new List<ResourceRecord>()
|
|
{
|
|
new ResourceRecord()
|
|
{
|
|
Class = ResourceRecordClass.IN,
|
|
Ttl = TimeSpan.Zero,
|
|
Name = "meow.lgbt",
|
|
Type = ResourceRecordType.A
|
|
},
|
|
},
|
|
ResponseCode = 0,
|
|
};
|
|
|
|
await Send(msg);
|
|
Console.WriteLine("sendt");
|
|
|
|
msg.IsRecursionDesired = false;
|
|
msg.IsAuthoritative = true;
|
|
msg.MessageType = DnsMessageType.Reply;
|
|
msg.Opcode = DnsMessageOpcode.Status;
|
|
msg.ResponseCode = DnsResponseCode.NxDomain;
|
|
|
|
await Send(msg);
|
|
}
|
|
|
|
private async Task Send(DnsMessage msg)
|
|
{
|
|
var data = msg.Serialize();
|
|
|
|
using UdpClient udp = new UdpClient(AddressFamily.InterNetwork);
|
|
udp.Connect(IPAddress.Parse("1.1.1.1"), 53);
|
|
await udp.SendAsync(data);
|
|
}
|
|
}
|