コード例 #1
0
ファイル: IpTest.cs プロジェクト: jsakamoto/bjd5
 public void AddrV4で取得した値からIpオブジェクトを再構築する(string ipStr)
 {
     //setUp
     var sut = new Ip((new Ip(ipStr)).AddrV4);
     var expected = ipStr;
     //exercise
     var actual = sut.ToString();
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
コード例 #2
0
ファイル: ProxyTest.cs プロジェクト: jsakamoto/bjd5
        public void Test(string host,int port)
        {
            //int port = 8080;
            //string host = "127.0.0.1";
            var ip = new Ip(host);
            var listener = new TcpListener(ip.IPAddress, port);
            listener.Start();

            _proxy.Connect(this, host, port, "TEST", ProxyProtocol.Http);

            Assert.AreEqual(_proxy.HostName,ip.ToString());
            Assert.AreEqual(_proxy.Port,port);
        }
コード例 #3
0
ファイル: Lease.cs プロジェクト: jsakamoto/bjd5
        //public Lease(Logger logger, string fileName, Ip startIp, Ip endIp, int leaseTime, Dat2 macAcl) {
        public Lease(string fileName, Ip startIp, Ip endIp, int leaseTime, Dat macAcl)
        {
            //this.logger = logger;
            this.fileName = fileName;
            this.leaseTime = leaseTime;
            uint start = startIp.AddrV4;
            uint end = endIp.AddrV4;
            int count = 2048;//�ő�ێ���

            for (uint i = start; i <= end && count > 0; i++) {
                Ip ip = new Ip(i);
                ar.Add(new OneLease(ip));//MAC�w��Ȃ�
                count--;
            }

            foreach (var o in macAcl) {
                if (o.Enable) {//�L���ȃf�[�^������Ώۂɂ���
                    string macStr = o.StrList[0];//MAC�A�h���X(99-99-99-99-99-99)
                    Mac mac = new Mac(macStr);
                    Ip ip = new Ip(o.StrList[1]);//IP�A�h���X
                    if (ip.ToString() == "255.255.255.255") {
                        ar.Add(new OneLease(ip, mac));//MAC�w�肠��őS���lj�
                    } else {

                        // ��{�ݒ�͈̔͂̃e�[�u�������
                        bool find = false;
                        for (int i = 0; i < ar.Count; i++) {
                            if (ar[i].Ip == ip) {
                                ar[i] = new OneLease(ip, mac);//MAC�w�肠��ɕύX
                                find = true;
                                break;
                            }
                        }
                        if (!find) { // ��{�ݒ�͈̔͊O�̏ꍇ
                            ar.Add(new OneLease(ip, mac));//MAC�w�肠��Ƃ��Ēlj�
                        }
                    }
                }
            }
            // ���[�X���f�[�^�̓ǂݍ���
            Read();
        }
コード例 #4
0
ファイル: ReceivedHeader.cs プロジェクト: jsakamoto/bjd5
        public String Get(MailAddress to,String host,Ip addr)
        {
            //ユニークなID文字列の生成
            var uidStr = string.Format("bjd.{0:D20}.{1:D3}", DateTime.Now.Ticks, _idCounter++);
            //日付文字列の生成
            var date = Util.LocalTime2Str(DateTime.Now);

            var str = "";
            if (_headerStr != null) {
                str = _headerStr;

                //Ver5.0.0-b5 $aと$hをkernel.ChangeTag()に送る前に修正する
                str = Util.SwapStr("$a", addr.ToString(), str);
                str = Util.SwapStr("$h", host, str);

                str = Util.SwapStr("$i", uidStr, str);
                str = Util.SwapStr("$t", to.ToString(), str);
                str = Util.SwapStr("$d", date, str);
                str = _kernel.ChangeTag(str);
            }
            return str;
        }
コード例 #5
0
ファイル: Server.cs プロジェクト: jsakamoto/bjd5
 void AutoDeny(bool success, Ip remoteIp)
 {
     if (_attackDb == null)
         return;
     //�f�[�^�x�[�X�ւ̓o�^
     if (!_attackDb.IsInjustice(success, remoteIp))
         return;
     //�u���[�g�t�H�[�X�A�^�b�N
     if (!AclList.Append(remoteIp))
         return; //ACL�������ېݒ�(�u���‚���v�ɐݒ肳��Ă���ꍇ�A�@�\���Ȃ�)
     //�lj��ɐ��������ꍇ�A�I�v�V���������������
     var d = (Dat)Conf.Get("acl");
     var name = string.Format("AutoDeny-{0}", DateTime.Now);
     var ipStr = remoteIp.ToString();
     d.Add(true, string.Format("{0}\t{1}", name, ipStr));
     Conf.Set("acl", d);
     Conf.Save(Kernel.IniDb);
     //OneOption.SetVal("acl", d);
     //OneOption.Save(OptionIni.GetInstance());
     Logger.Set(LogKind.Secure, null, 9000055, string.Format("{0},{1}", name, ipStr));
 }
コード例 #6
0
ファイル: MailBox.cs プロジェクト: jsakamoto/bjd5
 public bool Login(string user, Ip addr)
 {
     foreach (var oneUser in _ar) {
         if (oneUser.User != user)
             continue;
         if (oneUser.Login(addr.ToString())) {
             return true;
         }
     }
     return false;
 }
コード例 #7
0
ファイル: MailBox.cs プロジェクト: jsakamoto/bjd5
 //�Ō�Ƀ��O�C���ɐ������������̎擾 (PopBeforeSMTP�p�j
 public DateTime LastLogin(Ip addr)
 {
     foreach (var oneMailBox in _ar.Where(oneMailBox => oneMailBox.Addr == addr.ToString())){
         return oneMailBox.Dt;
     }
     return new DateTime(0);
 }
コード例 #8
0
ファイル: Server.cs プロジェクト: jsakamoto/bjd5
 void Log(SockUdp sockUdp,int messageNo, Mac mac,Ip ip,DhcpType type)
 {
     string macStr = mac.ToString();
     foreach (var m in _macAcl) {
         if (m.StrList[0].ToUpper() == mac.ToString()) {
             macStr = string.Format("{0}({1})",mac,m.StrList[2]);
             break;
         }
     }
     Logger.Set(LogKind.Detail, sockUdp, messageNo, string.Format("{0} {1} {2}", macStr, (ip == null) ? "0.0.0.0" : ip.ToString(), type.ToString()));
 }
コード例 #9
0
ファイル: AclList.cs プロジェクト: jsakamoto/bjd5
        //Ver6.0.1以前
        //        public AclList(IEnumerable<OneDat> dat, int enableNum, Logger logger) {
        //            _enable = (enableNum == 1);
        //            _logger = logger;
        //            if (dat == null) {
        //                return;
        //            }
        //            foreach (var o in dat) {
        //                if (!o.Enable) {
        //                    continue;
        //                }
        //                //有効なデータだけを対象にする
        //                var name = o.StrList[0];
        //                var ipStr = o.StrList[1];
        //
        //                if (ipStr == "*") {
        //                    //全部
        //                    try {
        //                        var acl = new AclV4(name, ipStr);
        //                        _arV4.Add(acl);
        //                    } catch (ValidObjException) {
        //                        logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ipStr));
        //                    }
        //                    try {
        //                        var acl = new AclV6(name, ipStr);
        //                        _arV6.Add(acl);
        //                    } catch (ValidObjException) {
        //                        logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ipStr));
        //                    }
        //                } else if (ipStr.IndexOf('.') != -1) {
        //                    //IPv4ルール
        //                    try {
        //                        var acl = new AclV4(name, ipStr);
        //                        _arV4.Add(acl);
        //                    } catch (ValidObjException) {
        //                        logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ipStr));
        //                    }
        //                } else {
        //                    //IPv6ルール
        //                    try {
        //                        var acl = new AclV6(name, ipStr);
        //                        _arV6.Add(acl);
        //                    } catch (ValidObjException) {
        //                        logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ipStr));
        //                    }
        //                }
        //            }
        //        }
        //ACLリストへのIP追加 ダイナミックにアドレスをDenyリストに加えるためのメソッド<br>
        //追加に失敗した場合、Loggerにはエラー表示されるが、追加は無効(追加されない)
        public bool Append(Ip ip)
        {
            if (!_enable){
                return false;
            }

            if (ip.InetKind == InetKind.V4){
                if (_arV4.Any(a => a.IsHit(ip))){
                    return false;
                }
            } else{
                if (_arV6.Any(a => a.IsHit(ip))){
                    return false;
                }
            }

            var dt = DateTime.Now;
            var name = string.Format("AutoDeny-{0}", dt.ToString());

            if (ip.InetKind == InetKind.V4){
                try{
                    var acl = new AclV4(name, ip.ToString());
                    _arV4.Add(acl);
                } catch (ValidObjException){
                    _logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ip));
                }
            } else{
                try{
                    var acl = new AclV6(string.Format("AutoDeny-{0}", dt.ToString()), ip.ToString());
                    _arV6.Add(acl);
                } catch (ValidObjException){
                    _logger.Set(LogKind.Error, null, 9000034, string.Format("Name:{0} Address {1}", name, ip));
                }
            }
            return true;
        }
コード例 #10
0
ファイル: Server.cs プロジェクト: jsakamoto/bjd5
        //bool CheckAuthList(string requestUri) {
        //    // 【注意 ショートファイル名でアクセスした場合の、認証の回避を考慮する必要がある】
        //    //AnsiString S = ExtractShortPathName(ShortNamePath);
        //    var authList = (Dat)this.Conf.Get("authList");
        //    foreach (var o in authList) {
        //        if (!o.Enable)
        //            continue;
        //        string uri = o.StrList[0];
        //        if (requestUri.IndexOf(uri) == 0) {
        //            return false;
        //        }
        //    }
        //    return true;
        //}
        void AutoDeny(bool success, Ip remoteIp)
        {
            if (_attackDb == null)
                return;
            //データベースへの登録
            if (!_attackDb.IsInjustice(success, remoteIp))
                return;

            //ブルートフォースアタック
            if (AclList.Append(remoteIp)) {//ACL自動拒否設定(「許可する」に設定されている場合、機能しない)
                //追加に成功した場合、オプションを書き換える
                var d = (Dat)Conf.Get("acl");
                var name = string.Format("AutoDeny-{0}", DateTime.Now);
                var ipStr = remoteIp.ToString();
                d.Add(true, string.Format("{0}\t{1}", name, ipStr));
                Conf.Set("acl", d);
                Conf.Save(Kernel.IniDb);

                Logger.Set(LogKind.Secure, null, 9000055, string.Format("{0},{1}", name, ipStr));
            } else {
                Logger.Set(LogKind.Secure, null, 9000056, remoteIp.ToString());
            }
        }
コード例 #11
0
ファイル: IpTest.cs プロジェクト: jsakamoto/bjd5
 public void 文字列のコンストラクタで生成してToStringで確認する(string ipStr, string expected)
 {
     //setUp
     var sut = new Ip(ipStr);
     //exercise
     var actual = sut.ToString();
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
コード例 #12
0
ファイル: MailBoxTest.cs プロジェクト: jsakamoto/bjd5
        public void SaveDfTest(string user, bool status, string uid, int size, string hostname, string from, string to)
        {
            var mail = new Mail();
            var ip = new Ip("10.0.0.1");
            var mailInfo = new MailInfo(uid, size, hostname, ip, new MailAddress(from),new MailAddress(to));

            var b = sut.Save(user, mail, mailInfo);
            //メールボックス内に蓄積されたファイル数を検証する
            var path = string.Format("{0}\\{1}", sut.Dir, user);
            var di = new DirectoryInfo(path);

            if (status){
                Assert.AreEqual(b,true);//保存成功

                var files = di.GetFiles("DF_*");

                //メールボックス内に蓄積されたファイル数を検証する
                var lines = File.ReadAllLines(files[0].FullName);
                Assert.AreEqual(lines[0], uid); //1行目 uid
                Assert.AreEqual(lines[1], size.ToString()); //2行目 size
                Assert.AreEqual(lines[2], hostname); //3行目 hostname
                Assert.AreEqual(lines[3], ip.ToString()); //4行目 ip
                Assert.AreEqual(lines[7], from); //8行目 from
                Assert.AreEqual(lines[8], to); //9行目 to
            }else{
                Assert.AreEqual(b, false);//保存失敗
                Assert.AreEqual(Directory.Exists(di.FullName),false);
            }
        }