} // End Function GetDnsHostName public static System.Collections.Generic.List <ARSoft.Tools.Net.Dns.SrvRecord> GetLdap() { System.Net.NetworkInformation.IPGlobalProperties ipgp = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties(); // IDnsResolver resolver = new RecursiveDnsResolver(); // Warning: Doesn't work ARSoft.Tools.Net.Dns.IDnsResolver resolver = new ARSoft.Tools.Net.Dns.DnsStubResolver(); ARSoft.Tools.Net.DomainName dn = ARSoft.Tools.Net.DomainName.Parse("_ldap._tcp." + ipgp.DomainName); System.Collections.Generic.List <ARSoft.Tools.Net.Dns.SrvRecord> srvRecords = resolver.Resolve <ARSoft.Tools.Net.Dns.SrvRecord>(dn, ARSoft.Tools.Net.Dns.RecordType.Srv); //foreach (ARSoft.Tools.Net.Dns.SrvRecord thisRecord in srvRecords) //{ // // System.Console.WriteLine(thisRecord.Name); // System.Console.WriteLine(thisRecord.Target); // System.Console.WriteLine(thisRecord.Port); // // Note: OR LDAPS:// - but Novell doesn't want these parts anyway // string url = "LDAP://" + thisRecord.Target + ":" + thisRecord.Port; // System.Console.WriteLine(url); //} // Next thisRecord return(srvRecords); } // End Function GetLdap
/// <summary> /// Reads the VPC for cacheing DNS-Records to overrides public IPAddresses /// like SQS.[zone].amazonaws.com to 10.10.10.10 /// </summary> /// <param name="awsCredentials">AwsCredintials for read the VPC</param> /// <param name="awsScanRules">Rules for Scaning</param> /// <param name="cancellationToken">Task Cancellation Toke</param> /// <returns>only a Task</returns> private async Task ReadVpcAsync(AWSCredentials awsCredentials, IAwsScanRules awsScanRules, CancellationToken cancellationToken) { try { var result = new List <DnsRecordBase>(); var endpoints = await _awsVpcReader.ReadEndpoints(awsCredentials, awsScanRules, cancellationToken) .ConfigureAwait(false); foreach (AwsAdapterBase adapter in _awsAdapter) { var adapterResult = await adapter .GetAdapterResultAsync(awsCredentials, endpoints, cancellationToken) .ConfigureAwait(false); result.AddRange(adapterResult.DnsRecords); _proxyBypassList.AddRange(adapterResult.ProxyBypassList); } var groupedResult = (from record in result group record by record.Name.ToString() into newRecords orderby newRecords.Key select newRecords).ToList(); foreach (var dnsRecordBases in groupedResult) { var dnsQuestion = new DnsQuestion(DomainName.Parse(dnsRecordBases.Key), RecordType.A, RecordClass.INet); StoreInCache(dnsQuestion, dnsRecordBases.ToList()); } } catch (AmazonEC2Exception aee) { if (aee.ErrorCode == "UnauthorizedOperation") { _logger.LogError(aee, "AWS ErrorCode=[{0}] ==> {1}", aee.ErrorCode, aee.Message); } else { throw; } } catch (Exception e) { _logger.LogCritical(e, e.Message); throw; } }
/// <summary> /// Read the Apt-Gateway VpcEndpoint and map all ApiGateway Configurations/Urls to the IPAddress /// Create DNs-Records /// </summary> public override async Task <AwsAdapterResult> GetAdapterResultAsync( AWSCredentials awsCredentials, IEnumerable <Endpoint> endpoints, CancellationToken cancellationToken) { using (var amazonApiGatewayClient = new AmazonAPIGatewayClient(awsCredentials, AmazonApiGatewayConfig)) { var result = new AwsAdapterResult(); var apiGatewayNetworkInterfaces = endpoints.Where(x => x.VpcEndpoint.ServiceName.Contains(".execute-api", StringComparison.InvariantCulture)).ToList(); var apis = await amazonApiGatewayClient.GetRestApisAsync(new GetRestApisRequest(), cancellationToken) .ConfigureAwait(false); var orderedApis = apis.Items.Where(x => x.EndpointConfiguration.Types.SingleOrDefault(y => "PRIVATE".Equals(y, StringComparison.InvariantCulture)) != null).ToArray(); foreach (var endpoint in apiGatewayNetworkInterfaces) { for (var i = orderedApis.Length - 1; i >= 0; i--) { var item = orderedApis[i]; var net = endpoint.NetworkInterfaces.First(); var domainName = CreateApiGatewayDomainName(endpoint.VpcEndpoint.ServiceName, item.Id); result.ProxyBypassList.Add(domainName); result.DnsRecords.Add(new ARecord( ARSoft.Tools.Net.DomainName.Parse(domainName), Ttl, IPAddress.Parse(net.PrivateIpAddress))); result.DnsRecords.Add(new ARecord( DomainName.Parse(net.PrivateDnsName), Ttl, IPAddress.Parse(net.PrivateIpAddress))); } } return(result); } }
} // End Sub Test2 // Get reverse lookup adress for an ip address public static void Test3() { ARSoft.Tools.Net.DomainName lookedUpDomainName = ARSoft.Tools.Net.IPAddressExtensions.GetReverseLookupDomain( System.Net.IPAddress.Parse("192.0.2.1") ); DnsMessage dnsMessage = DnsClient.Default.Resolve(lookedUpDomainName, RecordType.Ptr); if ((dnsMessage == null) || ((dnsMessage.ReturnCode != ReturnCode.NoError) && (dnsMessage.ReturnCode != ReturnCode.NxDomain))) { throw new System.Exception("DNS request failed"); } else { foreach (DnsRecordBase dnsRecord in dnsMessage.AnswerRecords) { PtrRecord ptrRecord = dnsRecord as PtrRecord; if (ptrRecord != null) { System.Console.WriteLine(ptrRecord.PointerDomainName); } } } } // End Sub Test3
public static DomainName ToDomainName(this ARSoft.Tools.Net.DomainName domainName) { return(new DomainName(domainName.ToString())); }
} // End Sub Test1 // Get reverse domain name for a specified IP address using local configured DNS servers public static void Test2() { IDnsResolver resolver = new DnsStubResolver(); ARSoft.Tools.Net.DomainName name = resolver.ResolvePtr(System.Net.IPAddress.Parse("192.0.2.1")); } // End Sub Test2