/// <summary>
        /// Initializes a new instance of the <see cref="DownloadSecondaryServerVisitor"/> class.
        /// </summary>
        /// <param name="encoding">The encoding used to read and write strings.</param>
        public DownloadSecondaryServerVisitor(Encoding encoding)
        {
            // You should use an IoC container to do this.
            TcpReaderFactory = new TcpReaderFactory();

            CurrentEncoding = encoding;
        }
Пример #2
0
 /// <summary>
 /// Queries the WHOIS server with the given TLD.
 /// </summary>
 /// <param name="tld">The TLD.</param>
 /// <returns></returns>
 private string GetWhoisServerResponse(string tld)
 {
     using (var tcpReader = TcpReaderFactory.Create())
     {
         return(tcpReader.Read("whois.iana.org", 43, tld.ToUpper()));
     }
 }
Пример #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DownloadSecondaryServerVisitor"/> class.
        /// </summary>
        /// <param name="encoding">The encoding used to read and write strings.</param>
        public DownloadSecondaryServerVisitor(Encoding encoding)
        {
            // You should use an IoC container to do this.
            TcpReaderFactory = new TcpReaderFactory();

            CurrentEncoding = encoding;
        }
Пример #4
0
        public void TestLookupNotFound()
        {
            var response = reader.Read("whois.iana.org", "tld", "not_assigned.txt");

            TcpReaderFactory.Bind(() => new FakeTcpReader(response));

            var result = lookup.Lookup("test.be");

            Assert.IsNotNull(result);
            Assert.AreEqual("eh", result.Tld);
            Assert.AreEqual(WhoisServerStatus.NotFound, result.Status);
        }
Пример #5
0
        public void TestLookupCom()
        {
            var response = reader.Read("whois.iana.org", "tld", "com.txt");

            TcpReaderFactory.Bind(() => new FakeTcpReader(response));

            var result = lookup.Lookup("test.com");

            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.AdminContact.Address.Count);
            Assert.AreEqual("12061 Bluemont Way", result.AdminContact.Address[0]);
            Assert.AreEqual("Reston Virginia 20190", result.AdminContact.Address[1]);
            Assert.AreEqual("United States", result.AdminContact.Address[2]);
            Assert.AreEqual("*****@*****.**", result.AdminContact.Email);
            Assert.AreEqual("+1 703 948 3978", result.AdminContact.FaxNumber);
            Assert.AreEqual("Registry Customer Service", result.AdminContact.Name);
            Assert.AreEqual("VeriSign Global Registry Services", result.AdminContact.Organization);
            Assert.AreEqual("+1 703 925-6999", result.AdminContact.TelephoneNumber);
            Assert.AreEqual(new DateTime(2012, 2, 15), result.Changed);
            Assert.AreEqual(new DateTime(1985, 1, 1), result.Created);
            Assert.AreEqual(13, result.NameServers.Count);
            Assert.AreEqual("A.GTLD-SERVERS.NET 192.5.6.30 2001:503:a83e:0:0:0:2:30", result.NameServers[0]);
            Assert.AreEqual("B.GTLD-SERVERS.NET 192.33.14.30 2001:503:231d:0:0:0:2:30", result.NameServers[1]);
            Assert.AreEqual("C.GTLD-SERVERS.NET 192.26.92.30", result.NameServers[2]);
            Assert.AreEqual("D.GTLD-SERVERS.NET 192.31.80.30", result.NameServers[3]);
            Assert.AreEqual("E.GTLD-SERVERS.NET 192.12.94.30", result.NameServers[4]);
            Assert.AreEqual("F.GTLD-SERVERS.NET 192.35.51.30", result.NameServers[5]);
            Assert.AreEqual("G.GTLD-SERVERS.NET 192.42.93.30", result.NameServers[6]);
            Assert.AreEqual("H.GTLD-SERVERS.NET 192.54.112.30", result.NameServers[7]);
            Assert.AreEqual("I.GTLD-SERVERS.NET 192.43.172.30", result.NameServers[8]);
            Assert.AreEqual("J.GTLD-SERVERS.NET 192.48.79.30", result.NameServers[9]);
            Assert.AreEqual("K.GTLD-SERVERS.NET 192.52.178.30", result.NameServers[10]);
            Assert.AreEqual("L.GTLD-SERVERS.NET 192.41.162.30", result.NameServers[11]);
            Assert.AreEqual("M.GTLD-SERVERS.NET 192.55.83.30", result.NameServers[12]);
            Assert.AreEqual(3, result.Organization.Address.Count);
            Assert.AreEqual("12061 Bluemont Way", result.Organization.Address[0]);
            Assert.AreEqual("Reston Virginia 20190", result.Organization.Address[1]);
            Assert.AreEqual("United States", result.Organization.Address[2]);
            Assert.AreEqual("VeriSign Global Registry Services", result.Organization.Name);
            Assert.AreEqual("Registration information: http://www.verisign-grs.com", result.Remarks);
            Assert.AreEqual("com", result.Tld);
            Assert.AreEqual(3, result.TechContact.Address.Count);
            Assert.AreEqual("12061 Bluemont Way", result.TechContact.Address[0]);
            Assert.AreEqual("Reston Virginia 20190", result.TechContact.Address[1]);
            Assert.AreEqual("United States", result.TechContact.Address[2]);
            Assert.AreEqual("*****@*****.**", result.TechContact.Email);
            Assert.AreEqual("+1 703 948 3978", result.TechContact.FaxNumber);
            Assert.AreEqual("Registry Customer Service", result.TechContact.Name);
            Assert.AreEqual("VeriSign Global Registry Services", result.TechContact.Organization);
            Assert.AreEqual("+1 703 925-6999", result.TechContact.TelephoneNumber);
            Assert.AreEqual("whois.verisign-grs.com", result.Url);
        }
Пример #6
0
        private async Task <string> GetWhoisServerResponse(string tld)
        {
            string response;

            Log.Debug("Looking up Root TLD server for {0} from {1}", tld, IanaUrl);

            using (var tcpReader = TcpReaderFactory.Create())
            {
                response = await tcpReader.Read(IanaUrl, 43, tld.ToUpper(), Encoding.UTF8);
            }

            Log.Debug("Received {0:###,###,##0} byte(s).", response.Length);

            return(response);
        }
Пример #7
0
        public async Task TestRedirectedWhoisData()
        {
            TcpReaderFactory.Bind(() => new FakeTcpReader("Redirected WHOIS Data"));

            var record = new WhoisResponse(File.ReadAllText(@"..\..\..\Samples\Redirects\MarkMonitor.txt"));
            var state  = new LookupState
            {
                Response = record,
                Options  = WhoisOptions.Defaults,
                Domain   = "example.com"
            };

            var result = await visitor.Visit(state);

            Assert.AreEqual("Redirected WHOIS Data", result.Response.Content);
        }
Пример #8
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            WhoisRedirect redirect;

            if (IsARedirectRecord(record, out redirect))
            {
                record.Redirect = redirect;

                using (var tcpReader = TcpReaderFactory.Create(Encoding))
                {
                    record.Text = tcpReader.Read(redirect.Url, 43, record.Domain);
                }
            }

            return(record);
        }
Пример #9
0
        public async Task <LookupState> Visit(LookupState state)
        {
            using (var tcpReader = TcpReaderFactory.Create())
            {
                var response = await tcpReader.Read(state.WhoisServer.Url, 43, state.Domain, state.Options.DefaultEncoding);

                state.Response = new WhoisResponse
                {
                    Domain  = state.Domain,
                    Content = response
                };
            }

            Log.Debug("Lookup {0}: Downloaded {1:###,###,##0} byte(s) from {2}.", state.Domain, state.Response.Content.Length, state.WhoisServer.Url);

            return(state);
        }
Пример #10
0
        public void TestDownloadWhoisResults()
        {
            TcpReaderFactory.Bind(() => new FakeTcpReader("WHOIS Data"));

            var server = new WhoisServer("uk", "whois.com");

            var lookup = new LookupState
            {
                WhoisServer = server,
                Domain      = "flipbit.co.uk",
                Options     = WhoisOptions.Defaults
            };

            visitor.Visit(lookup);

            Assert.AreEqual("WHOIS Data", lookup.Response.Content);
        }
Пример #11
0
        public void TestLookupBe()
        {
            var response = reader.Read("whois.iana.org", "tld", "be.txt");

            TcpReaderFactory.Bind(() => new FakeTcpReader(response));

            var result = lookup.Lookup("test.be");

            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.AdminContact.Address.Count);
            Assert.AreEqual("Ubicenter, Philipssite 5, bus 13", result.AdminContact.Address[0]);
            Assert.AreEqual("Leuven  3001", result.AdminContact.Address[1]);
            Assert.AreEqual("Belgium", result.AdminContact.Address[2]);
            Assert.AreEqual("*****@*****.**", result.AdminContact.Email);
            Assert.AreEqual("+32 16 28 49 71", result.AdminContact.FaxNumber);
            Assert.AreEqual("Philip Du Bois", result.AdminContact.Name);
            Assert.AreEqual("DNS Belgium vzw/asbl", result.AdminContact.Organization);
            Assert.AreEqual("+32 16 28 49 70", result.AdminContact.TelephoneNumber);
            Assert.AreEqual(new DateTime(2014, 7, 30), result.Changed);
            Assert.AreEqual(new DateTime(1988, 8, 5), result.Created);
            Assert.AreEqual(6, result.NameServers.Count);
            Assert.AreEqual("A.NS.DNS.BE 194.0.6.1 2001:678:9:0:0:0:0:1", result.NameServers[0]);
            Assert.AreEqual("B.NS.DNS.BE 194.0.37.1 2001:678:64:0:0:0:0:1", result.NameServers[1]);
            Assert.AreEqual("C.NS.DNS.BE 194.0.43.1 2001:678:68:0:0:0:0:1", result.NameServers[2]);
            Assert.AreEqual("D.NS.DNS.BE 194.0.44.1 2001:678:6c:0:0:0:0:1", result.NameServers[3]);
            Assert.AreEqual("X.NS.DNS.BE 194.0.1.10 2001:678:4:0:0:0:0:a", result.NameServers[4]);
            Assert.AreEqual("Y.NS.DNS.BE 120.29.253.8 2001:dcd:7:0:0:0:0:8", result.NameServers[5]);
            Assert.AreEqual(3, result.Organization.Address.Count);
            Assert.AreEqual("Ubicenter, Philipssite 5, bus 13", result.Organization.Address[0]);
            Assert.AreEqual("Leuven  3001", result.Organization.Address[1]);
            Assert.AreEqual("Belgium", result.Organization.Address[2]);
            Assert.AreEqual("DNS Belgium vzw/asbl", result.Organization.Name);
            Assert.AreEqual("Registration information: http://www.dns.be", result.Remarks);
            Assert.AreEqual("be", result.Tld);
            Assert.AreEqual(3, result.TechContact.Address.Count);
            Assert.AreEqual("Ubicenter, Philipssite 5, bus 13", result.TechContact.Address[0]);
            Assert.AreEqual("Leuven  3001", result.TechContact.Address[1]);
            Assert.AreEqual("Belgium", result.TechContact.Address[2]);
            Assert.AreEqual("*****@*****.**", result.TechContact.Email);
            Assert.AreEqual("+32 16 28 49 71", result.TechContact.FaxNumber);
            Assert.AreEqual("David Goelen", result.TechContact.Name);
            Assert.AreEqual("DNS Belgium vzw/asbl", result.TechContact.Organization);
            Assert.AreEqual("+32 16 28 49 70", result.TechContact.TelephoneNumber);
            Assert.AreEqual("whois.dns.be", result.Url);
        }
Пример #12
0
        public async Task <LookupState> Visit(LookupState state)
        {
            if (IsARedirectRecord(state.Response, out var redirect))
            {
                using (var tcpReader = TcpReaderFactory.Create())
                {
                    var response = await tcpReader.Read(redirect.Url, 43, state.Domain, state.Options.DefaultEncoding);

                    Log.Debug("Lookup {0}: Downloaded {1:###,###,##0} byte(s) from {2}.", state.Domain, response.Length, redirect.Url);

                    state.Response = new WhoisResponse
                    {
                        Domain  = state.Domain,
                        Content = response
                    };
                }
            }

            return(state);
        }
Пример #13
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            var referralIndex = record.Text.IndexOfLineEndingWith(": " + record.Domain);

            if (referralIndex > -1)
            {
                var whoIsServer = record.Text.Containing("whois", referralIndex);

                whoIsServer = whoIsServer.SubstringAfterChar(":").Trim();

                if (!string.IsNullOrEmpty(whoIsServer))
                {
                    using (var tcpReader = TcpReaderFactory.Create(CurrentEncoding))
                    {
                        record.Text = tcpReader.Read(whoIsServer, 43, record.Domain);
                    }
                }
            }

            return(record);
        }
Пример #14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DownloadVisitor"/> class.
        /// </summary>
        /// <param name="encoding">The encoding used to read and write strings.</param>
        public DownloadVisitor(Encoding encoding)
        {
            TcpReaderFactory = new TcpReaderFactory();

            Encoding = encoding;
        }
Пример #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExpandResultsVisitor"/> class.
 /// </summary>
 public ExpandResultsVisitor()
 {
     // You should use an IoC container to do this.
     TcpReaderFactory = new TcpReaderFactory();
 }
Пример #16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RedirectVisitor"/> class.
        /// </summary>
        /// <param name="encoding">The encoding used to read and write strings.</param>
        public RedirectVisitor(Encoding encoding)
        {
            TcpReaderFactory = new TcpReaderFactory();

            Encoding = encoding;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DownloadSecondaryServerVisitor"/> class.
 /// </summary>
 public DownloadSecondaryServerVisitor()
 {
     // You should use an IoC container to do this.
     TcpReaderFactory = new TcpReaderFactory();
 }
Пример #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InternicServerLookup"/> class.
 /// </summary>
 public IanaServerLookup()
 {
     TcpReaderFactory = new TcpReaderFactory();
 }
Пример #19
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RedirectVisitor"/> class.
        /// </summary>
        /// <param name="encoding">The encoding used to read and write strings.</param>
        public RedirectVisitor(Encoding encoding)
        {
            TcpReaderFactory = new TcpReaderFactory();

            Encoding = encoding;
        }