Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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 + "; ";
            }
        }
Exemplo n.º 3
0
        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 + "; ";
            }
        }
Exemplo n.º 5
0
        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 + "; ";
            }
        }
Exemplo n.º 6
0
        //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);
        }
Exemplo n.º 7
0
        /// <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);
        }