Esempio n. 1
0
        public DnsMapping AddDnsMapping(string alias, string ip, string source)
        {
            string     address = GetAddress(ip);
            DnsMapping mapping = new DnsMapping(alias, address, ip, source);

            _mappings = _mappings.InsertIntoNew(mapping.Alias, mapping);
            return(mapping);
        }
Esempio n. 2
0
        public string AddTmpMapping(string address, string smapping)
        {
            string[]   parts   = smapping.Split(DnsMapping.DELIM);
            string     ip      = GetIP(parts[1]);
            string     source  = GetUid(address);
            DnsMapping mapping = new DnsMapping(parts[0], parts[1], ip, source);

            return(AddTmpMapping(mapping));
        }
Esempio n. 3
0
        public string AddTmpMapping(DnsMapping mapping)
        {
            string id = mapping.ToIDString();

            if (!_tmappings.ContainsKey(id))
            {
                _tmappings = _tmappings.InsertIntoNew(id, mapping);
            }
            return(_node.Address);
        }
Esempio n. 4
0
        public void DnsMappingTest()
        {
            DnsMapping mapping = new DnsMapping("pierre.sdns", "brunet123",
                                                "172.31.0.2", "*****@*****.**");

            mapping.AddResponder("*****@*****.**");
            mapping.AddResponder("*****@*****.**");
            mapping.AddResponder("*****@*****.**");

            Assert.AreEqual(2, mapping.Responders.Count);
            Assert.AreEqual("*****@*****.**", mapping.Responders[0]);
            Assert.AreEqual("*****@*****.**", mapping.Responders[1]);
        }
Esempio n. 5
0
 public string SearchMapping(string address, string query,
                             IRpcSender sender)
 {
     foreach (string alias in _mappings.Keys)
     {
         if (Regex.IsMatch(alias, query, RegexOptions.IgnoreCase))
         {
             DnsMapping mapping = _mappings[alias];
             sender.SendRpcMessage(address, "AddTmpMapping", mapping.ToString());
         }
     }
     return(_node.Address);
 }
Esempio n. 6
0
        public List <DnsMapping> SearchLocalCache(string pattern, bool exact,
                                                  bool random)
        {
            List <DnsMapping> searchlist = new List <DnsMapping>();

            if (pattern == "")
            {
                return(searchlist);
            }

            foreach (DnsMapping mapping in _tmappings.Values)
            {
                if (Regex.IsMatch(mapping.Alias, pattern, RegexOptions.IgnoreCase))
                {
                    bool mapping_found = false;
                    foreach (DnsMapping tmp_mapping in searchlist)
                    {
                        if (tmp_mapping.WeakEquals(mapping))
                        {
                            tmp_mapping.Rating++;
                            tmp_mapping.AddResponder(mapping.Source);
                            mapping_found = true;
                            break;
                        }
                    }
                    if (exact && pattern != mapping.Alias)
                    {
                        continue;
                    }
                    if (!mapping_found)
                    {
                        DnsMapping new_mapping = mapping.WeakCopy();
                        new_mapping.AddResponder(mapping.Source);
                        searchlist.Add(new_mapping);
                    }
                }
            }
            if (random)
            {
                searchlist.Sort(new RandomMappingComparer());
            }
            else
            {
                searchlist.Sort(new MappingComparer());
            }
            return(searchlist);
        }
Esempio n. 7
0
 public bool Equals(DnsMapping mapping)
 {
     return(mapping.Alias == Alias && mapping.Address == Address &&
            mapping.Source == Source);
 }
Esempio n. 8
0
 public bool WeakEquals(DnsMapping mapping)
 {
     return(mapping.Alias == Alias && mapping.Address == Address);
 }