Пример #1
0
        } // 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
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
        } // 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 
Пример #5
0
 public static DomainName ToDomainName(this ARSoft.Tools.Net.DomainName domainName)
 {
     return(new DomainName(domainName.ToString()));
 }
Пример #6
0
        } // 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