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); }