|
1 | | -using System; |
| 1 | +using DnsClient; |
| 2 | +using DnsClient.Protocol; |
| 3 | +using System; |
2 | 4 | using System.Collections.Generic; |
| 5 | +using System.Diagnostics; |
3 | 6 | using System.Linq; |
4 | 7 | using System.Net; |
5 | 8 | using System.Net.NetworkInformation; |
6 | 9 | using System.Threading.Tasks; |
7 | | -using DnsClient; |
8 | | -using DnsClient.Protocol; |
9 | 10 |
|
10 | 11 | namespace NETworkManager.Models.Network; |
11 | 12 |
|
@@ -213,57 +214,73 @@ private void ProcessDnsAnswers(IEnumerable<DnsResourceRecord> answers, NameServe |
213 | 214 | if (answers is not DnsResourceRecord[] dnsResourceRecords) |
214 | 215 | return; |
215 | 216 |
|
| 217 | + Debug.WriteLine(dnsResourceRecords); |
| 218 | + |
216 | 219 | // A |
217 | | - foreach (var record in dnsResourceRecords.ARecords()) |
| 220 | + foreach (var record in dnsResourceRecords.OfType<ARecord>()) |
218 | 221 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
219 | 222 | new DNSLookupRecordInfo( |
220 | 223 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
221 | 224 | $"{record.Address}", $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
222 | 225 |
|
223 | 226 | // AAAA |
224 | | - foreach (var record in dnsResourceRecords.AaaaRecords()) |
| 227 | + foreach (var record in dnsResourceRecords.OfType<AaaaRecord>()) |
225 | 228 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
226 | 229 | new DNSLookupRecordInfo( |
227 | 230 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
228 | 231 | $"{record.Address}", $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
229 | 232 |
|
230 | 233 | // CNAME |
231 | | - foreach (var record in dnsResourceRecords.CnameRecords()) |
| 234 | + foreach (var record in dnsResourceRecords.OfType<CNameRecord>()) |
232 | 235 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
233 | 236 | new DNSLookupRecordInfo( |
234 | 237 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
235 | 238 | record.CanonicalName, $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
236 | 239 |
|
| 240 | + // DNSKEY |
| 241 | + foreach (var record in dnsResourceRecords.OfType<DnsKeyRecord>()) |
| 242 | + OnRecordReceived(new DNSLookupRecordReceivedArgs( |
| 243 | + new DNSLookupRecordInfo( |
| 244 | + record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
| 245 | + $"{record.Flags} {record.Protocol} {record.Algorithm} {Convert.ToBase64String(record.PublicKey.ToArray())}", $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
| 246 | + |
237 | 247 | // MX |
238 | | - foreach (var record in dnsResourceRecords.MxRecords()) |
| 248 | + foreach (var record in dnsResourceRecords.OfType<MxRecord>()) |
239 | 249 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
240 | 250 | new DNSLookupRecordInfo( |
241 | 251 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
242 | 252 | record.Exchange, $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
243 | 253 |
|
244 | 254 | // NS |
245 | | - foreach (var record in dnsResourceRecords.NsRecords()) |
| 255 | + foreach (var record in dnsResourceRecords.OfType<NsRecord>()) |
246 | 256 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
247 | 257 | new DNSLookupRecordInfo( |
248 | 258 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
249 | 259 | record.NSDName, $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
250 | 260 |
|
251 | 261 | // PTR |
252 | | - foreach (var record in dnsResourceRecords.PtrRecords()) |
| 262 | + foreach (var record in dnsResourceRecords.OfType<PtrRecord>()) |
253 | 263 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
254 | 264 | new DNSLookupRecordInfo( |
255 | 265 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
256 | 266 | record.PtrDomainName, $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
257 | 267 |
|
258 | 268 | // SOA |
259 | | - foreach (var record in dnsResourceRecords.SoaRecords()) |
| 269 | + foreach (var record in dnsResourceRecords.OfType<SoaRecord>()) |
260 | 270 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
261 | 271 | new DNSLookupRecordInfo( |
262 | 272 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
263 | 273 | record.MName + ", " + record.RName, $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
264 | 274 |
|
| 275 | + // SRV |
| 276 | + foreach (var record in dnsResourceRecords.OfType<SrvRecord>()) |
| 277 | + OnRecordReceived(new DNSLookupRecordReceivedArgs( |
| 278 | + new DNSLookupRecordInfo( |
| 279 | + record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
| 280 | + $"{record.Priority} {record.Weight} {record.Port} {record.Target}", $"{nameServer.Address}", nameServerHostname, nameServer.Port))); |
| 281 | + |
265 | 282 | // TXT |
266 | | - foreach (var record in dnsResourceRecords.TxtRecords()) |
| 283 | + foreach (var record in dnsResourceRecords.OfType<TxtRecord>()) |
267 | 284 | OnRecordReceived(new DNSLookupRecordReceivedArgs( |
268 | 285 | new DNSLookupRecordInfo( |
269 | 286 | record.DomainName, record.TimeToLive, $"{record.RecordClass}", $"{record.RecordType}", |
|
0 commit comments