示例#1
0
 private void Download(WhoisRecord record, string domainSuffix = null)
 {
     using (var tcpReader = TcpReaderFactory.Create(Encoding))
     {
         record.Text = tcpReader.Read(record.Server.Url, 43, record.Domain + domainSuffix);
     }
 }
        public static WhoisRecord Translate(this WhoisRecord whoisRecord, string query, XmlDocument searchResult, XmlDocument orgResult, XmlDocument pocsSearchResult, List <XmlDocument> pocResults)
        {
            XmlElement netRef = searchResult["net"];
            XmlElement orgRef = orgResult["org"];

            whoisRecord = new WhoisRecord
            {
                DomainName   = query,
                RegistryData = new RegistryData
                {
                    CreatedDate = netRef.InnerText("registrationDate"),
                    UpdatedDate = netRef.InnerText("updateDate"),
                    RawText     = null,
                    Registrant  = new Registrant
                    {
                        City       = orgRef.InnerText("city"),
                        StateProv  = orgRef.InnerText("iso3166-2"),
                        PostalCode =
                            orgRef.InnerText("postalCode"),
                        Country =
                            orgRef["iso3166-1"].InnerText("code2"),
                        Name    = orgRef.InnerText("name"),
                        Address =
                            orgRef.InnerText("streetAddress")
                    }
                },
            };

            whoisRecord.TranslateContacts(pocsSearchResult, pocResults);

            return(whoisRecord);
        }
示例#3
0
        /// <summary>
        /// Determines whether a WHOIS record is a redirect record to another WHOIS server.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <param name="redirect">The redirect.</param>
        /// <returns></returns>
        public bool IsARedirectRecord(WhoisRecord record, out WhoisRedirect redirect)
        {
            var isARedirectRecord = false;

            redirect = null;

            if (record.Text.Contains("many different competing registrars"))
            {
                var reader  = new EmbeddedPatternReader();
                var pattern = reader.Read(GetType().Assembly, "Whois.Patterns.Redirects.Iana.txt");

                var tokenizer = new Tokenizer();

                var text = record.Text;

                var tokenResult = tokenizer.Parse <WhoisRedirect>(pattern, text);

                redirect = tokenResult.Value;

                isARedirectRecord = true;
            }


            return(isARedirectRecord);
        }
示例#4
0
 private void CheckForEnglishVersion(WhoisRecord record)
 {
     if (record.Text.Contains("add'/e'") && !record.Server.Url.EndsWith("/e"))
     {
         Download(record, "/e");
     }
 }
示例#5
0
        public string GetCompanyName(string ip)
        {
            string username = "******";
            string password = "******";
            string domain   = ip;


            string format = "XML";
            string url    = "http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=" + domain + "&username="******"&password="******"&outputFormat=" + format;

            var         settings = new XmlReaderSettings();
            var         reader   = XmlReader.Create(url, settings);
            WhoisRecord record   = new WhoisRecord();

            //Бесплатно можно сделать ограниченое число запросов на Whois сервер,
            //поэтому эта часть кода закомментирована.

            /*try
             * {
             *  var serializer = new System.Xml.Serialization.XmlSerializer(typeof(WhoisRecord));
             *  record = (WhoisRecord)serializer.Deserialize(reader);
             *
             *  reader.Close();
             *
             *  return record.administrativeContact.name;
             * }
             * catch
             * {
             *  return "Default name";
             * }*/
            return("Default name");
        }
        public static WhoisRecord Translate(this WhoisRecord whoisRecord, string query, XmlDocument searchResult, XmlDocument orgResult, XmlDocument pocsSearchResult, List<XmlDocument> pocResults)
        {
            XmlElement netRef = searchResult["net"];
            XmlElement orgRef = orgResult["org"];

            whoisRecord = new WhoisRecord
                              {
                                  DomainName = query,
                                  RegistryData = new RegistryData
                                                     {
                                                         CreatedDate = netRef.InnerText("registrationDate"),
                                                         UpdatedDate = netRef.InnerText("updateDate"),
                                                         RawText = null,
                                                         Registrant = new Registrant
                                                                          {
                                                                              City = orgRef.InnerText("city"),
                                                                              StateProv = orgRef.InnerText("iso3166-2"),
                                                                              PostalCode =
                                                                                  orgRef.InnerText("postalCode"),
                                                                              Country =
                                                                                  orgRef["iso3166-1"].InnerText("code2"),
                                                                              Name = orgRef.InnerText("name"),
                                                                              Address =
                                                                                  orgRef.InnerText("streetAddress")
                                                                          }
                                                     },
                              };

            whoisRecord.TranslateContacts(pocsSearchResult, pocResults);

            return whoisRecord;
        }
示例#7
0
        public void TestParseTopDomains()
        {
            var fails = new List<string>();
            var files = Directory.GetFiles("..\\..\\Samples", "*.txt");

            var visitor = new PatternExtractorVisitor();

            foreach (var file in files)
            {
                var text = File.ReadAllText(file);

                var record = new WhoisRecord(text);

                var matches = visitor.MatchPatterns(record);

                if (matches[0].Replacements.Count == 0)
                {
                    fails.Add(file);
                }
                else
                {
                    Console.WriteLine("{0} replacement(s) made in {1}", matches[0].Replacements.Count, file);
                }
            }

            foreach (var fail in fails)
            {
                Console.WriteLine("No replacements made in: {0}", fail);
            }

            if (fails.Count > 0)
            {
                Assert.Fail("No replacements made for some files, check output!");
            }
        }
示例#8
0
        public void TestParseTopDomains()
        {
            var fails = new List <string>();
            var files = Directory.GetFiles("..\\..\\Samples", "*.txt");

            var visitor = new PatternExtractorVisitor();

            foreach (var file in files)
            {
                var text = File.ReadAllText(file);

                var record = new WhoisRecord(text);

                var matches = visitor.MatchPatterns(record);

                if (matches[0].Value.Replacements.Count == 0)
                {
                    fails.Add(file);
                }
                else
                {
                    Console.WriteLine("{0} replacement(s) made in {1}", matches[0].Value.Replacements.Count, file);
                }
            }

            foreach (var fail in fails)
            {
                Console.WriteLine("No replacements made in: {0}", fail);
            }

            if (fails.Count > 0)
            {
                Assert.Fail("No replacements made for some files, check output!");
            }
        }
示例#9
0
文件: GetWhois.cs 项目: JamieH/Shapis
        /// <summary>
        /// Get information on a particular domain
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        public WhoisRecord FillRecord(WhoisRecord record)
        {
            record.Server = getServer(record).Server;
            var tcpClient = new TCPClient();
            record.Text = tcpClient.Read(record.Server, 43, record.Domain);

            return record;
        }
示例#10
0
文件: Shapis.cs 项目: JamieH/Shapis
        /// <summary>
        /// Looks up the WHOIS infomration for the domain.
        /// </summary>
        /// <param name="domian">Domain Name</param>
        /// <returns></returns>
        public static WhoisRecord Lookup(string domian)
        {
            var rec = new WhoisRecord {Domain = domian};

            var get = new GetWhois();
            get.FillRecord(rec);
            return rec;
        }
        public void TestParseRecord()
        {
            var sample = File.ReadAllText("..\\..\\Samples\\Domains\\adobe.com.txt");

            var record = new WhoisRecord(sample);

            record = visitor.Visit(record);

            Assert.IsNotNull(record.Registrant);
            Assert.AreEqual("Domain Administrator", record.Registrant.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.Registrant.Organization);
            Assert.AreEqual("345 Park Avenue", record.Registrant.Street);
            Assert.AreEqual("San Jose", record.Registrant.City);
            Assert.AreEqual("CA", record.Registrant.State);
            Assert.AreEqual("95110", record.Registrant.PostalCode);
            Assert.AreEqual("US", record.Registrant.Country);
            Assert.AreEqual("+1.4085366000", record.Registrant.PhoneNumber);
            Assert.AreEqual("", record.Registrant.PhoneNumberExt);
            Assert.AreEqual("", record.Registrant.FaxNumber);
            Assert.AreEqual("", record.Registrant.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.Registrant.Email);

            Assert.IsNotNull(record.AdminContact);
            Assert.AreEqual("DNS Admin", record.AdminContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.AdminContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.AdminContact.Street);
            Assert.AreEqual("San Jose", record.AdminContact.City);
            Assert.AreEqual("CA", record.AdminContact.State);
            Assert.AreEqual("95110", record.AdminContact.PostalCode);
            Assert.AreEqual("US", record.AdminContact.Country);
            Assert.AreEqual("+1.4085366000", record.AdminContact.PhoneNumber);
            Assert.AreEqual("", record.AdminContact.PhoneNumberExt);
            Assert.AreEqual("", record.AdminContact.FaxNumber);
            Assert.AreEqual("", record.AdminContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.AdminContact.Email);

            Assert.IsNotNull(record.TechnicalContact);
            Assert.AreEqual("DNS Tech", record.TechnicalContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.TechnicalContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.TechnicalContact.Street);
            Assert.AreEqual("San Jose", record.TechnicalContact.City);
            Assert.AreEqual("CA", record.TechnicalContact.State);
            Assert.AreEqual("95110", record.TechnicalContact.PostalCode);
            Assert.AreEqual("US", record.TechnicalContact.Country);
            Assert.AreEqual("+1.4085366000", record.TechnicalContact.PhoneNumber);
            Assert.AreEqual("", record.TechnicalContact.PhoneNumberExt);
            Assert.AreEqual("", record.TechnicalContact.FaxNumber);
            Assert.AreEqual("", record.TechnicalContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.TechnicalContact.Email);

            Assert.AreEqual(5, record.Nameservers.Count);
            Assert.AreEqual("adobe-dns-03.adobe.com", record.Nameservers[0]);
            Assert.AreEqual("adobe-dns-01.adobe.com", record.Nameservers[1]);
            Assert.AreEqual("adobe-dns-02.adobe.com", record.Nameservers[2]);
            Assert.AreEqual("adobe-dns-05.adobe.com", record.Nameservers[3]);
            Assert.AreEqual("adobe-dns-04.adobe.com", record.Nameservers[4]);
        }
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            using (var tcpReader = TcpReaderFactory.Create(CurrentEncoding))
            {
                record.Text = tcpReader.Read(record.Server, 43, record.Domain);
            }

            return(record);
        }
        public void TestParseRecord()
        {
            var sample = File.ReadAllText("..\\..\\Samples\\Domains\\adobe.com.txt");

            var record = new WhoisRecord(sample);

            record = visitor.Visit(record);

            Assert.IsNotNull(record.Registrant);
            Assert.AreEqual("Domain Administrator", record.Registrant.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.Registrant.Organization);
            Assert.AreEqual("345 Park Avenue", record.Registrant.Street);
            Assert.AreEqual("San Jose", record.Registrant.City);
            Assert.AreEqual("CA", record.Registrant.State);
            Assert.AreEqual("95110", record.Registrant.PostalCode);
            Assert.AreEqual("US", record.Registrant.Country);
            Assert.AreEqual("+1.4085366000", record.Registrant.PhoneNumber);
            Assert.AreEqual("", record.Registrant.PhoneNumberExt);
            Assert.AreEqual("", record.Registrant.FaxNumber);
            Assert.AreEqual("", record.Registrant.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.Registrant.Email);

            Assert.IsNotNull(record.AdminContact);
            Assert.AreEqual("DNS Admin", record.AdminContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.AdminContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.AdminContact.Street);
            Assert.AreEqual("San Jose", record.AdminContact.City);
            Assert.AreEqual("CA", record.AdminContact.State);
            Assert.AreEqual("95110", record.AdminContact.PostalCode);
            Assert.AreEqual("US", record.AdminContact.Country);
            Assert.AreEqual("+1.4085366000", record.AdminContact.PhoneNumber);
            Assert.AreEqual("", record.AdminContact.PhoneNumberExt);
            Assert.AreEqual("", record.AdminContact.FaxNumber);
            Assert.AreEqual("", record.AdminContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.AdminContact.Email);

            Assert.IsNotNull(record.TechnicalContact);
            Assert.AreEqual("DNS Tech", record.TechnicalContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.TechnicalContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.TechnicalContact.Street);
            Assert.AreEqual("San Jose", record.TechnicalContact.City);
            Assert.AreEqual("CA", record.TechnicalContact.State);
            Assert.AreEqual("95110", record.TechnicalContact.PostalCode);
            Assert.AreEqual("US", record.TechnicalContact.Country);
            Assert.AreEqual("+1.4085366000", record.TechnicalContact.PhoneNumber);
            Assert.AreEqual("", record.TechnicalContact.PhoneNumberExt);
            Assert.AreEqual("", record.TechnicalContact.FaxNumber);
            Assert.AreEqual("", record.TechnicalContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.TechnicalContact.Email);

            Assert.AreEqual(5, record.Nameservers.Count);
            Assert.AreEqual("adobe-dns-03.adobe.com", record.Nameservers[0]);
            Assert.AreEqual("adobe-dns-01.adobe.com", record.Nameservers[1]);
            Assert.AreEqual("adobe-dns-02.adobe.com", record.Nameservers[2]);
            Assert.AreEqual("adobe-dns-05.adobe.com", record.Nameservers[3]);
            Assert.AreEqual("adobe-dns-04.adobe.com", record.Nameservers[4]);
        }
示例#14
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public override WhoisRecord Visit(WhoisRecord record)
        {
            var server = WhoisServerLookup.Lookup(record.Domain);

            // TODO: Validation on server

            record.Server = server;

            return(record);
        }
        public void TestDownloadWhoisResults()
        {
            var record = new WhoisRecord { Domain = "flipbit.co.uk", Server = new WhoisServer("uk", "whois.com") };

            factory.Reader = new FakeTcpReader("WHOIS Data");

            visitor.Visit(record);

            Assert.AreEqual("WHOIS Data", record.Text);
        }
        public void TestWhoisServerNameIsAssigned()
        {
            var record = new WhoisRecord { Domain = "example.com" };

            Assert.IsNull(record.Server);

            record = visitor.Visit(record);

            Assert.AreEqual("test.whois.com", record.Server.Url);
        }
示例#17
0
        /// <summary>
        /// Lookups the WHOIS information for the specified <see cref="domain"/>.
        /// </summary>
        /// <param name="domain">The domain.</param>
        /// <returns></returns>
        public WhoisRecord Lookup(string domain)
        {
            var record = new WhoisRecord { Domain = domain };

            foreach (var visitor in Visitors)
            {
                record = visitor.Visit(record);
            }

            return record;
        }
示例#18
0
        private void CheckForNewWhoIsServer(WhoisRecord record)
        {
            var lines = record.Text.ToLines().Select(l => l.Trim());
            var line  = lines.FirstOrDefault(l => l.StartsWith("Registrar WHOIS Server:", StringComparison.OrdinalIgnoreCase));

            if (line != null)
            {
                var url = line.Remove(0, "Registrar WHOIS Server:".Length).Trim();
                record.Server.Url = url;
            }
        }
示例#19
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            var results = MatchPatterns(record);

            if (results.Any())
            {
                record = results.First().Value;
            }

            return(record);
        }
示例#20
0
 /// <summary>
 /// Visits the specified record.
 /// </summary>
 /// <param name="record">The record.</param>
 /// <returns></returns>
 public WhoisRecord Visit(WhoisRecord record)
 {
     // Check to narrow down search results
     if (record.Text.Contains("=xxx"))
     {
         using (var tcpReader = TcpReaderFactory.Create(Encoding))
         {
             record.Text = tcpReader.Read(record.Server.Url, 43, "=" + record.Domain);
         }
     }
     return(record);
 }
示例#21
0
        public void TestWhoisServerNameIsAssigned()
        {
            var record = new WhoisRecord {
                Domain = "example.com"
            };

            Assert.IsNull(record.Server);

            record = visitor.Visit(record);

            Assert.AreEqual("test.whois.com", record.Server.Url);
        }
示例#22
0
        public void TestDownloadWhoisResults()
        {
            var record = new WhoisRecord {
                Domain = "flipbit.co.uk", Server = new WhoisServer("uk", "whois.com")
            };

            factory.Reader = new FakeTcpReader("WHOIS Data");

            visitor.Visit(record);

            Assert.AreEqual("WHOIS Data", record.Text);
        }
示例#23
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            if (record.Server == null)
            {
                throw new ArgumentException("Given WhoisRecord does not have the Server property set");
            }

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

            return(record);
        }
示例#24
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            if (record.Server == null)
            {
                throw new ArgumentException("Given WhoisRecord does not have the Server property set");
            }

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

            return record;
        }
示例#25
0
 /// <summary>
 /// Visits the specified record.
 /// </summary>
 /// <param name="record">The record.</param>
 /// <returns></returns>
 public override WhoisRecord Visit(WhoisRecord record)
 {
     if (record.Registrant?.Name != null && record.Registrant?.Organization == null)
     {
         record.Registrant.Organization = record.Registrant?.Name;
     }
     if (record.Domain != null && record.Registrant?.Organization == null)
     {
         if (record.Registrant == null)
         {
             record.Registrant = new Contact();
         }
         record.Registrant.Organization = record.Domain;
     }
     return(record);
 }
示例#26
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);
        }
        private static void TranslateContacts(this WhoisRecord whoisRecord, XmlDocument pocsSearchResult, List <XmlDocument> pocResults)
        {
            XmlElement pocsRef = pocsSearchResult["pocs"];

            var contactTable = new List <KeyValuePair <string, string> >();

            foreach (XmlElement child in pocsRef.ChildNodes)
            {
                contactTable.Add(new KeyValuePair <string, string>(child.Attributes["description"].Value,
                                                                   child.Attributes["handle"].Value));
            }

            foreach (XmlDocument document in pocResults)
            {
                XmlElement pocRef = document["poc"];
                KeyValuePair <string, string> contactType =
                    contactTable.Where(c => c.Value == pocRef.InnerText("handle")).FirstOrDefault();
                Contact contact = new Contact().Translate(pocRef);

                switch (contactType.Key)
                {
                case "Abuse":
                    whoisRecord.RegistryData.AbuseContact = contact;
                    break;

                case "Admin":
                    whoisRecord.RegistryData.AdministrativeContact = contact;
                    break;

                case "Billing":
                    whoisRecord.RegistryData.BillingContact = contact;
                    break;

                case "Tech":
                    whoisRecord.RegistryData.TechnicalContact = contact;
                    break;

                case "Zone":
                    whoisRecord.RegistryData.ZoneContact = contact;
                    break;
                }

                contactTable.Remove(contactType);
            }
        }
        public void ShouldVerifyWhoisClientWorksOnShaw()
        {
            var whoisClient = new WhoisClient("68.146.10.100");

            Assert.IsNotNull(whoisClient);
            foreach (var item in whoisClient.Errors)
            {
                Console.WriteLine(item.Value);
            }
            Assert.IsTrue(whoisClient.Errors.Count == 0);

            WhoisRecord response = whoisClient.GetWhoisRecord();

            Assert.AreEqual("CA", response.RegistryData.Registrant.Country);
            Assert.AreEqual("AB", response.RegistryData.Registrant.StateProv);
            Assert.AreEqual("Calgary", response.RegistryData.Registrant.City);
            Assert.IsTrue(response.RegistryData.Registrant.Name.ToLower().Contains("shaw"));
        }
        public void VerifyWhoisResultIsTranslated()
        {
            var response = new WhoisRecord().Translate("68.146.10.100", TestHelper.SearchResult, TestHelper.ShawcResult, TestHelper.PocsResult, TestHelper.Pocs);

            Assert.IsNotNull(response);

            Assert.IsNotNull(response.DomainName);
            Assert.IsNotNull(response.RegistryData);
            Assert.AreEqual("CA", response.RegistryData.Registrant.Country);
            Assert.AreEqual("AB", response.RegistryData.Registrant.StateProv);
            Assert.AreEqual("Calgary", response.RegistryData.Registrant.City);
            Assert.AreEqual("Suite 800, 630 - 3rd Ave. SW", response.RegistryData.Registrant.Address);
            Assert.IsNotNull(response.RegistryData.AbuseContact);
            Assert.AreEqual("+1-403-750-7420", response.RegistryData.AbuseContact.Phone);
            Assert.AreEqual("*****@*****.**", response.RegistryData.AbuseContact.Email);
            Assert.AreEqual("SHAW ABUSE", response.RegistryData.AbuseContact.Name);
            Assert.IsNotNull(response.RegistryData.AdministrativeContact);
            Assert.IsNotNull(response.RegistryData.TechnicalContact);
        }
        public IList<TokenResult<WhoisRecord>> MatchPatterns(WhoisRecord record)
        {
            var results = new List<TokenResult<WhoisRecord>>();

            var patterns = GetEmbeddedPatterns();

            foreach (var pattern in patterns)
            {
                var tokenizer = new Tokenizer();

                var clone = record.Clone() as WhoisRecord;

                var result = tokenizer.Parse(clone, pattern, record.Text);

                results.Add(result);
            }

            return results.OrderBy(r => r.Replacements.Count).ToList();
        }
示例#31
0
        public void VerifyWhoisResultIsTranslated()
        {
            var response = new WhoisRecord().Translate("68.146.10.100", TestHelper.SearchResult, TestHelper.ShawcResult, TestHelper.PocsResult, TestHelper.Pocs);

            Assert.IsNotNull(response);

            Assert.IsNotNull(response.DomainName);
            Assert.IsNotNull(response.RegistryData);
            Assert.AreEqual("CA", response.RegistryData.Registrant.Country);
            Assert.AreEqual("AB", response.RegistryData.Registrant.StateProv);
            Assert.AreEqual("Calgary", response.RegistryData.Registrant.City);
            Assert.AreEqual("Suite 800, 630 - 3rd Ave. SW", response.RegistryData.Registrant.Address);
            Assert.IsNotNull(response.RegistryData.AbuseContact);
            Assert.AreEqual("+1-403-750-7420", response.RegistryData.AbuseContact.Phone);
            Assert.AreEqual("*****@*****.**", response.RegistryData.AbuseContact.Email);
            Assert.AreEqual("SHAW ABUSE", response.RegistryData.AbuseContact.Name);
            Assert.IsNotNull(response.RegistryData.AdministrativeContact);
            Assert.IsNotNull(response.RegistryData.TechnicalContact);
        }
示例#32
0
        public IList <TokenResult <WhoisRecord> > MatchPatterns(WhoisRecord record)
        {
            var results = new List <TokenResult <WhoisRecord> >();

            var patterns = GetEmbeddedPatterns();

            foreach (var pattern in patterns)
            {
                var tokenizer = new Tokenizer();

                var clone = record.Clone() as WhoisRecord;

                var result = tokenizer.Parse(clone, pattern, record.Text);

                results.Add(result);
            }

            return(results.OrderBy(r => r.Replacements.Count).ToList());
        }
        public void TestIsARedirectWhenTrue()
        {
            var record = new WhoisRecord(File.ReadAllText(@"..\..\Samples\Domains\sphinn.com.txt"));
            WhoisRedirect redirect;

            var result = visitor.IsARedirectRecord(record, out redirect);

            Assert.IsTrue(result);
            Assert.IsNotNull(redirect);
            Assert.AreEqual(new DateTime(2007, 4, 25), redirect.CreatedDate);
            Assert.AreEqual("sphinn.com", redirect.Domain);
            Assert.AreEqual(new DateTime(2015, 4, 25), redirect.ExpirationDate);
            Assert.AreEqual(new DateTime(2014, 4, 25), redirect.ModifiedDate);
            Assert.AreEqual("NS1.TIGERTECH.NET", redirect.Nameservers[0]);
            Assert.AreEqual("NS2.TIGERTECH.BIZ", redirect.Nameservers[1]);
            Assert.AreEqual("NS3.TIGERTECH.ORG", redirect.Nameservers[2]);
            Assert.AreEqual("http://www.tigertech.net", redirect.ReferralUrl);
            Assert.AreEqual("TIGER TECHNOLOGIES LLC", redirect.Registrar);
            Assert.AreEqual("whois.tigertech.net", redirect.Url);
        }
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            var referralIndex = record.Text.IndexOfLineContaining("created:     ");

            if (referralIndex > -1)
            {
                var registationString = record.Text.Containing("created:     ", referralIndex);

                registationString = registationString.SubstringAfterChar(":").SubstringBeforeChar("#").Trim();

                DateTime registrationDate;

                if (DateTime.TryParseExact(registationString, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out registrationDate))
                {
                    record.Created = registrationDate;
                }
            }

            return(record); //created:
        }
示例#35
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            var referralIndex = record.Text.IndexOfLineContaining("Created on");

            if (referralIndex > -1)
            {
                var registationString = record.Text.Containing("Created on", referralIndex);

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

                DateTime registrationDate;

                if (DateTime.TryParse(registationString, out registrationDate))
                {
                    record.Created = registrationDate;
                }
            }

            return(record);
        }
示例#36
0
        public void TestIsARedirectWhenTrue()
        {
            var           record = new WhoisRecord(File.ReadAllText(@"..\..\Samples\Domains\sphinn.com.txt"));
            WhoisRedirect redirect;

            var result = visitor.IsARedirectRecord(record, out redirect);

            Assert.IsTrue(result);
            Assert.IsNotNull(redirect);
            Assert.AreEqual(new DateTime(2007, 4, 25), redirect.CreatedDate);
            Assert.AreEqual("sphinn.com", redirect.Domain);
            Assert.AreEqual(new DateTime(2015, 4, 25), redirect.ExpirationDate);
            Assert.AreEqual(new DateTime(2014, 4, 25), redirect.ModifiedDate);
            Assert.AreEqual("NS1.TIGERTECH.NET", redirect.Nameservers[0]);
            Assert.AreEqual("NS2.TIGERTECH.BIZ", redirect.Nameservers[1]);
            Assert.AreEqual("NS3.TIGERTECH.ORG", redirect.Nameservers[2]);
            Assert.AreEqual("http://www.tigertech.net", redirect.ReferralUrl);
            Assert.AreEqual("TIGER TECHNOLOGIES LLC", redirect.Registrar);
            Assert.AreEqual("whois.tigertech.net", redirect.Url);
        }
示例#37
0
        public IList <TokenizerResult> MatchPatterns(WhoisRecord record)
        {
            var results = new List <TokenizerResult>();

            var patterns = GetEmbeddedPatterns();

            foreach (var pattern in patterns)
            {
                var tokenizer = new Tokenizer();

                var clone = record.Clone() as WhoisRecord;

                var result = tokenizer.Parse(clone, pattern.Value, record.Text);

                results.Add(new TokenizerResult {
                    Name = pattern.Name, Value = result
                });
            }

            return(results.OrderByDescending(r => r.Value.Replacements.Count).ToList());
        }
示例#38
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);
        }
示例#39
0
        /// <summary>
        /// Get basic WHOIS info
        /// </summary>
        /// <param name="domain"></param>
        /// <returns></returns>
        public WhoisRecord GetWhoisInfo(string domain)
        {
            //validate domain before making whois Query
            try
            {
                domain = Cleanse(domain);
            }
            catch (Exception)
            {
                throw;
            }
            var record      = new WhoisRecord();
            var whoisResult = new WhoisLookup().Lookup(domain);
            var records     = whoisResult.ParsedResponse;

            record.Raw    = whoisResult.Content;
            record.Domain = domain;
            // try to populate whois record,
            try
            {
                record.Created = records.Registered;

                record.Expired = records.Expiration;

                record.DomainStatus = records.DomainStatus;

                record.Nameservers = records.NameServers;

                record.Registrant.Email = records.Registrant.Email;
                record.Admin.Email      = records.AdminContact.Email;
            }
            catch (Exception)
            {
                return(record);
            }

            return(record);
        }
示例#40
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public override WhoisRecord Visit(WhoisRecord record)
        {
            if (record.Server == null)
            {
                throw new ArgumentException("Given WhoisRecord does not have the Server property set");
            }

            string url;

            do
            {
                url = record.Server.Url;
                if (url == null)
                {
                    return(record);
                }
                Download(record);
                CheckForEnglishVersion(record);
                CheckForNewWhoIsServer(record);
            } while (url != record.Server.Url);

            return(record);
        }
示例#41
0
        /// <summary>
        /// Determines whether a WHOIS record is a redirect record to another WHOIS server.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <param name="redirect">The redirect.</param>
        /// <returns></returns>
        public bool IsARedirectRecord(WhoisRecord record, out WhoisRedirect redirect)
        {
            var isARedirectRecord = false;

            redirect = null;

            if (record.Text.Contains("many different competing registrars"))
            {
                var reader = new EmbeddedPatternReader();
                var pattern = reader.Read(GetType().Assembly, "Whois.Patterns.Redirects.Iana.txt");

                var tokenizer = new Tokenizer();

                var text = record.Text;

                var tokenResult = tokenizer.Parse<WhoisRedirect>(pattern, text);

                redirect = tokenResult.Value;

                isARedirectRecord = true;
            }

            return isARedirectRecord;
        }
示例#42
0
        static void Main(string[] args)
        {
            //////////////////////////
            // Fill in your details //
            //////////////////////////
            string username = "******";
            string password = "******";
            string domain = "google.com";

            /////////////////////////
            // Use a JSON resource //
            /////////////////////////
            string format = "JSON";
            string url = "http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=" + domain + "&username="******"&password="******"&outputFormat=" + format;
            
            // Create our JSON parser
            JavaScriptSerializer jsc = new JavaScriptSerializer();
            jsc.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });        

            // Download and parse the JSON into a dynamic object
            dynamic result = jsc.Deserialize(new System.Net.WebClient().DownloadString(url), typeof(object)) as dynamic;

            // Print a nice informative string
            try
            {
                Console.WriteLine("JSON:\n");
                result.PrintPairs();
            }
            catch (Exception e)
            {
                try
                {
                    Console.WriteLine("JSON:\nErrorMessage:\n\t{0}", result.ErrorMessage.msg);
                }
                catch (Exception e2)
                {
                    Console.WriteLine("An unkown error has occurred!");
                }
            }

            /////////////////////////
            // Use an XML resource //
            /////////////////////////
            format = "XML";
            url = "http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=" + domain + "&username="******"&password="******"&outputFormat=" + format;
            
            var settings = new XmlReaderSettings();
            var reader = XmlReader.Create(url, settings);
            WhoisRecord record = new WhoisRecord();
            
            try
            {
                var serializer = new System.Xml.Serialization.XmlSerializer(typeof(WhoisRecord));
                record = (WhoisRecord)serializer.Deserialize(reader);

                reader.Close();

                // Print a nice informative string
                Console.WriteLine("XML:");
                record.PrintToConsole();
            }
            catch (Exception e)
            {
                try
                {
                    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(ErrorMessage));
                    ErrorMessage errorMessage = (ErrorMessage)serializer.Deserialize(reader);

                    reader.Close();

                    // Print a nice informative string
                    Console.WriteLine("XML:\nErrorMessage:\n\t{0}", errorMessage.msg);
                }
                catch (Exception e2)
                {
                    Console.WriteLine("XML:\nException: {0}", e2.Message);
                }
            }

            // Prevent command window from automatically closing during debugging
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            var results = MatchPatterns(record);

            if (results.Any())
            {
                record = results.First().Value;
            }

            return record;
        }
示例#44
0
        /// <summary>
        /// Visits the specified record.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <returns></returns>
        public WhoisRecord Visit(WhoisRecord record)
        {
            record.Server = WhoisServerLookup.Lookup(record.Domain);

            return(record);
        }
示例#45
0
        static void Main(string[] args)
        {
            //////////////////////////
            // Fill in your details //
            //////////////////////////
            string username = "******";
            string password = "******";
            string domain   = "google.com";

            /////////////////////////
            // Use a JSON resource //
            /////////////////////////
            string format = "JSON";
            string url    = "http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=" + domain + "&username="******"&password="******"&outputFormat=" + format;

            // Create our JSON parser
            JavaScriptSerializer jsc = new JavaScriptSerializer();

            jsc.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });

            // Download and parse the JSON into a dynamic object
            dynamic result = jsc.Deserialize(new System.Net.WebClient().DownloadString(url), typeof(object)) as dynamic;

            // Print a nice informative string
            try
            {
                Console.WriteLine("JSON:\n");
                result.PrintPairs();
            }
            catch (Exception e)
            {
                try
                {
                    Console.WriteLine("JSON:\nErrorMessage:\n\t{0}", result.ErrorMessage.msg);
                }
                catch (Exception e2)
                {
                    Console.WriteLine("An unkown error has occurred!");
                }
            }

            /////////////////////////
            // Use an XML resource //
            /////////////////////////
            format = "XML";
            url    = "http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=" + domain + "&username="******"&password="******"&outputFormat=" + format;

            var         settings = new XmlReaderSettings();
            var         reader   = XmlReader.Create(url, settings);
            WhoisRecord record   = new WhoisRecord();

            try
            {
                var serializer = new System.Xml.Serialization.XmlSerializer(typeof(WhoisRecord));
                record = (WhoisRecord)serializer.Deserialize(reader);

                reader.Close();

                // Print a nice informative string
                Console.WriteLine("XML:");
                record.PrintToConsole();
            }
            catch (Exception e)
            {
                try
                {
                    var          serializer   = new System.Xml.Serialization.XmlSerializer(typeof(ErrorMessage));
                    ErrorMessage errorMessage = (ErrorMessage)serializer.Deserialize(reader);

                    reader.Close();

                    // Print a nice informative string
                    Console.WriteLine("XML:\nErrorMessage:\n\t{0}", errorMessage.msg);
                }
                catch (Exception e2)
                {
                    Console.WriteLine("XML:\nException: {0}", e2.Message);
                }
            }

            // Prevent command window from automatically closing during debugging
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
示例#46
0
文件: GetWhois.cs 项目: JamieH/Shapis
 private WhoisRecord getServer(WhoisRecord record)
 {
     var serverGetter = new GetWhoisServer();
     record.Server = serverGetter.GetServer(record.Domain);
     return record;
 }
示例#47
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;
        }