/// <summary> /// Gets the exact domain. /// </summary> /// <param name="tldInput">The TLD input.</param> /// <returns></returns> private static imbTopLevelDomain getExactDomain(String tldInput) { if (tldInput.isNullOrEmpty()) { return(null); } tldInput = tldInput.Trim().ToLower().Trim(); tldInput = tldInput.TrimStart(".".ToArray()); imbTopLevelDomain tldObject = imbDomainManager.AllDomains.Find(x => isTLDMatch(x, tldInput)); // //(x => (x.domainName == tldInput) || (x.subDomainList.Contains(tldInput))); if (tldObject == null) { tldObject = systemKnowledge.topLevelDomains.GetFirstWhere(nameof(imbTopLevelDomain.domainName) + "='" + tldInput + "'"); if (tldObject == null) { tldObject = systemKnowledge.topLevelDomains.GetFirstWhere(nameof(imbTopLevelDomain.subDomainList) + " LIKE '%" + tldInput + "%'"); if (tldObject == null) { } } if (tldObject != null) { imbDomainManager.AllDomains.Add(tldObject); aceLog.log("TLD found [" + tldObject.domainName + "] for query [" + tldInput + "]"); } else { aceLog.log("TLD not found for query [" + tldInput + "]"); } } return(tldObject); }
/// <summary> /// Obradjuje XML node /// </summary> /// <param name="node"></param> /// <returns></returns> public void loadXml(XmlNode node) { domainName = imbXmlCommonTools.getAttributeValue(node, "name"); countryCode = domainName.Split('.').Last <String>(); //.ToString(); String countString = imbXmlCommonTools.getAttributeValue(node, "count"); count = imbStringFormats.getInt32Safe(countString); //count = (Int32)imbDataExecutor.convertValue(countString, imbReportCell_dataType.Int32); nic = imbXmlCommonTools.getAttributeValue(node, "nic"); countryName = imbXmlCommonTools.getAttributeValue(node, "country"); relatedServers.Add(relatedServer); foreach (XmlNode item in node.ChildNodes) { imbTopLevelDomain subDomain = new imbTopLevelDomain(); subDomain.relatedServer = relatedServer; subDomain.loadXml(item); subDomain.countryName = countryName; subDomain.countryCode = countryCode; subDomains.Add(subDomain); subDomainList += subDomain.domainName + "; "; } }
public static Boolean isTLDMatch(imbTopLevelDomain tld, String input) { if (tld == null) { return(false); } if (tld.domainName == input) { return(true); } if (tld.subTLDs.Contains(input)) { return(true); } //if (!tld.subDomainList.isNullOrEmptyString()) //{ // if (tld.subDomainList.Contains(input)) // { // return true; // } else // { // } //} return(false); }
public void learnFromTLD(imbTopLevelDomain input) { countryCode = input.countryCode.ToUpper().Trim(); countryName = input.countryName; tldList = ""; if (!(countryTLDindex.ContainsKey(input.countryCode))) { countryTLDindex.Add(input.countryCode, input); tldList += input.countryCode + "; "; } }
public void loadXml(XmlNode sourceNode) { url = imbXmlCommonTools.getAttributeValue(sourceNode, "host"); domainsThatHandle = new List <String>(); foreach (XmlNode item in sourceNode.ChildNodes) { switch (item.Name) { case "info": info = item.InnerText; break; case "availstring": notFoundMessage = item.InnerText; break; case "domain": imbTopLevelDomain subDomain = new imbTopLevelDomain(); subDomain.relatedServer = this; subDomain.loadXml(item); domains.Add(subDomain); mainDomainList += subDomain.domainName + "; "; domainsAll.Add(subDomain); domainsAll.AddRange(subDomain.subDomains); break; } } foreach (imbTopLevelDomain item in domainsAll) { domainsThatHandle.Add(item.countryCode); subDomainList += item.domainName + "; "; } }
//public static imbTopLevelDomain getDomainDescription(String domainNameOrUrl, Boolean inputIsFullUrl = true) //{ // String tmpTld = domainNameOrUrl; // String domainName = tmpTld.getDomainNameFromUrl(false); // List<String> parts = domainName.Split(".".ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); // parts.Reverse(); // if (parts.Count > 2) // { // tmpTld = parts[1] + "." + parts[0]; // } // else if (parts.Count == 2) // { // tmpTld = parts[0]; // } // else if (parts.Count == 1) // { // domainRootName = parts[0]; // isFound = false; // tld = ""; // return; // } //} /// <summary> /// Vraca TLD definiciju za upit: co.rs /// </summary> /// <param name="tldInput"></param> /// <returns></returns> public static imbTopLevelDomain getDomain(String tldInput) { imbTopLevelDomain tldObject = getExactDomain(tldInput); return(tldObject); }
/// <summary> /// Analyses the specified URL. /// </summary> /// <param name="__url">The URL.</param> private void analyse(String __url) { url = __url; if (url.isNullOrEmptyString()) { throw new aceGeneralException("Argument exception, __url is null or empty", null, this, "__url is empty"); } String tmpTld = ""; domainName = url.getDomainNameFromUrl(false); if (domainName.isNullOrEmpty()) { aceLog.log("Domain name extraction failed from [" + __url + "] + Domain name extraction failed"); } List <String> parts = domainName.SplitSmart(".", "", true); //.Split(".".ToArray(), StringSplitOptions.RemoveEmptyEntries).toList(); parts.Reverse(); if (parts.Count > 2) { tmpTld = parts[1] + "." + parts[0]; } else if (parts.Count == 2) { tmpTld = parts[0]; } else if (parts.Count == 1) { domainRootName = parts[0]; isFound = false; tld = ""; tmpTld = ""; } imbTopLevelDomain tmpTldDef = null; if (!tmpTld.isNullOrEmpty()) { tmpTldDef = domainAnalysisEngine.getDomain(tmpTld); if (tmpTldDef == null) { tmpTld = parts[0]; tmpTldDef = domainAnalysisEngine.getDomain(tmpTld); } if (tmpTldDef == null) { isFound = false; tld = tmpTld; } else { isFound = true; tld = tmpTldDef.domainName; } tldDefinition = tmpTldDef; } domainName = domainName.removeUrlShema(); domainName = domainName.removeStartsWith("www."); if (tmpTldDef != null) { domainRootName = tmpTldDef.RemoveTLD(domainName); } else { if (tld.Length > 0) { domainRootName = domainName.Replace(tld, ""); } } domainRootName = domainRootName.Trim('.'); if (domainRootName.Contains(".")) { // aceLog.log("domainAnalysis failed [" + __url + "] - root domain name contains dot -- you have to add support for this TLD to have this working properly"); } if (!domainRootName.isNullOrEmptyString()) { MatchCollection mchs = imbStringSelect._select_wordsFromDomainname.Matches(domainRootName); foreach (Match mch in mchs) { domainWords.Add(mch.Value); } } else { throw new Exception("domainAnalysis failed [" + __url + "] as domainRootName is empty"); } urlProper = "http://" + domainName.ensureStartsWith("www.").ensureEndsWith("/"); // url.validateUrlShema(aceCommonTypes.enums.urlShema.http); domainUrlTokens = new List <string>(); domainUrlTokens.Add("http"); domainUrlTokens.Add("www"); domainUrlTokens.AddRange(domainWords); }