Пример #1
0
        DNSEntity CheckRule(DNSEntity dns)
        {
            var rq   = dns.Questions[0];
            var list = Rule.FindAllByQueryTypeAndName((Int32)rq.Type, rq.Name);

            if (list == null || list.Count == 0)
            {
                return(null);
            }

            var rs = new DNSEntity();

            rs.Questions = dns.Questions;
            var drs = new List <DNSRecord>();

            foreach (var item in list)
            {
                if (item.QueryType <= 0)
                {
                    continue;
                }

                var r = DNSEntity.CreateRecord((DNSQueryType)item.QueryType);
                r.Name = item.Name;
                if (r.Name[0] == '*')
                {
                    r.Name = r.Name.Substring(1);
                }
                if (r.Name[0] == '.')
                {
                    r.Name = r.Name.Substring(1);
                }
                r.Text = item.Address;
                // 生存时间3分钟
                r.TTL = new TimeSpan(0, 3, 0);
                drs.Add(r);

                item.Hits++;
                item.SaveAsync();
            }
            rs.Answers = drs.ToArray();

            return(rs);
        }