Ejemplo n.º 1
0
        //ネームサーバ一覧から、そのアドレスの一覧を作成する
        private List <Ip> GetNsIpList(IEnumerable <string> nsList, Ip remoteAddr)
        {
            var ipList = new List <Ip>();

            foreach (var ns in nsList)
            {
                var rrList = _rootCache.GetList(ns, DnsType.A);

                //IP情報が無い場合、再帰検索
                if (ipList.Count == 0 && rrList.Count == 0)
                {
                    SearchLoop(ns, DnsType.A, remoteAddr);
                    rrList = _rootCache.GetList(ns, DnsType.A);
                }

                rrList.AddRange(_rootCache.GetList(ns, DnsType.Aaaa));

                foreach (var o in rrList)
                {
                    Ip ip = null;
                    if (o.DnsType == DnsType.A)
                    {
                        ip = ((RrA)o).Ip;
                    }
                    else if (o.DnsType == DnsType.Aaaa)
                    {
                        ip = ((RrAaaa)o).Ip;
                    }
                    //重複は追加しない
                    if (ipList.IndexOf(ip) == -1)
                    {
                        ipList.Add(ip);
                    }
                }
            }
            return(ipList);
        }
Ejemplo n.º 2
0
        private List <OneRr> GetAllCname(RrDb rrDb, String name, List <OneRr> rrList)
        {
            var ar = rrDb.GetList(name, DnsType.Cname);

            if (ar.Count == 0)
            {
                return(rrList);
            }
            foreach (RrCname a in ar)
            {
                rrList.Add(a);
                rrList = GetAllCname(rrDb, a.CName, rrList);
            }
            return(rrList);
        }
Ejemplo n.º 3
0
        public void GetListを使用すると期限の切れたリソースが削除される()
        {
            //setUp
            var ttl = 1u; //TTL=1秒
            var sut = new RrDb(null, null, null, "example.com", true);
            sut.Add(new RrA("www.example.com.", ttl, new Ip("1.1.1.1")));
            sut.Add(new RrA("www.example.com.", ttl, new Ip("2.2.2.2")));
            var expected = 0;

            TestUtil.WaitDisp("RrDb.getList()で期限切れリソースの削除を確認するため、TTL指定時間が経過するまで待機");
            Thread.Sleep(2000); //2秒経過
            //exercise
            sut.GetList("www.example.com.", DnsType.A);
            var actual = RrDbTest.Size(sut); //DBのサイズは0になっている
            //verify
            Assert.That(actual, Is.EqualTo(expected));
            //TearDown
            TestUtil.WaitDisp(null);
        }
Ejemplo n.º 4
0
 public void GetListによる検索_名前が同じでタイプのデータが存在する場合()
 {
     //setUp
     var sut = new RrDb(null, null, null, "example.com", true);
     sut.Add(new RrAaaa("www.example.com.", 100, new Ip("::1")));
     var expected = 0;
     //exercise
     var actual = sut.GetList("www.example.com.", DnsType.A).Count;
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
Ejemplo n.º 5
0
 public void getListによる検索_ヒットするデータが存在する場合()
 {
     //setUp
     var sut = new RrDb(null, null, null, "example.com", true);
     sut.Add(new RrA("www.example.com.", 100, new Ip("192.168.0.1")));
     var expected = 1;
     //exercise
     int actual = sut.GetList("www.example.com.", DnsType.A).Count;
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
Ejemplo n.º 6
0
 private List<OneRr> GetAllCname(RrDb rrDb, String name, List<OneRr> rrList)
 {
     var ar = rrDb.GetList(name, DnsType.Cname);
     if (ar.Count == 0) {
         return rrList;
     }
     foreach (RrCname a in ar) {
         rrList.Add(a);
         rrList = GetAllCname(rrDb, a.CName, rrList);
     }
     return rrList;
 }