示例#1
0
        //リストが無い場合は、allowList及びdenyListはnullでもよい
        //テスト用にlogger=nullも可
        public RelayList(IEnumerable<OneDat> dat,string name,Logger logger)
        {
            if (dat == null){ //リストなし
                return;
            }
            foreach (var o in dat) {
                if (!o.Enable){
                    continue;
                }
                var ipStr= o.StrList[0];

                if (ipStr.IndexOf('.') != -1) {//IPv4ルール
                    var acl = new AclV4(name,ipStr);
                    if (!acl.Status) {
                        if (logger != null){
                            logger.Set(LogKind.Error, null, 25, string.Format("{0} : {1}", name, ipStr));
                        }
                    } else {
                        _arV4.Add(acl);
                    }
                } else {//IPv6ルール
                    var acl = new AclV6(name,ipStr);
                    if (!acl.Status) {
                        if (logger != null){
                            logger.Set(LogKind.Error, null, 25, string.Format("{0} : {1}", name, ipStr));
                        }
                    } else {
                        _arV6.Add(acl);
                    }
                }
            }
        }
示例#2
0
 public void IsHitの検証(string aclStr, string ipStr, bool expected)
 {
     //setUp
     var sut = new AclV4("TAG",aclStr);
     //exercise
     var actual = sut.IsHit(new Ip(ipStr));
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
示例#3
0
 public void Startの検証(string aclStr,string startStr,string endStr)
 {
     //setUp
     var sut = new AclV4("TAG",aclStr);
     var expected = startStr;
     //exercise
     var actual = sut.Start.ToString();
     //verify
     Assert.That(actual, Is.EqualTo(expected));
 }
示例#4
0
//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);
        }
示例#5
0
        //(Dat)conf.Get("range")
        //(int)conf.Get("enableEsmtp")
        public SmtpAuthRange(IEnumerable<OneDat> range, int enableEsmtp,Logger logger)
        {
            _logger = logger;

            _enableEsmtp = enableEsmtp;

            if (range != null){
                foreach (var o in range){
                    if (o.Enable){//有効なデータだけを対象にする
                        var name = o.StrList[0];
                        var ipStr = o.StrList[1];

                        if (ipStr.IndexOf('.') != -1){//IPv4ルール
                            var acl = new AclV4(name, ipStr);
                            if (!acl.Status){
                                if (_logger != null){
                                    _logger.Set(LogKind.Error, null, 9000040,
                                                string.Format("Name:{0} Address{1}", name, ipStr));
                                }
                            }
                            else{
                                _arV4.Add(acl);
                            }
                        }else{//IPv6ルール
                            var acl = new AclV6(name, ipStr);
                            if (!acl.Status){
                                if (_logger != null){
                                    _logger.Set(LogKind.Error, null, 9000040,
                                                string.Format("Name:{0} Address{1}", name, ipStr));
                                }
                            }
                            else{
                                _arV6.Add(acl);
                            }
                        }
                    }
                }
            }
        }
示例#6
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;
        }
示例#7
0
文件: AclList.cs 项目: jsakamoto/bjd5
        //Dat dat==null で初期化された場合、全てenableNumで指定したものになる
        //dat=null enableNum=0(不許可) => All Deny
        //dat=null enableNum=1(許可) => All Allow
        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{
                    //IPv4指定かどうかの判断
                    var isV4 = true;
                    foreach (var c in ipStr){
                        if (char.IsNumber(c)){
                            continue;
                        }
                        if (c=='*' || c=='.' || c=='/' || c=='-'){
                            continue;
                        }
                        isV4 = false;
                        break;
                    }
                    if (isV4){
                        //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指定かどうかの判断
                        var isV6 = true;
                        foreach (var c in ipStr) {
                            if (char.IsNumber(c)) {
                                continue;
                            }
                            if (c == '*' || c == ':' || c == '[' || c == ']' || c == '-') {
                                continue;
                            }
                            isV6 = false;
                            break;
                        }
                        if (isV6){
                            //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));
                            }

                        }else{ //FQDN指定と判断する
                            _arFqdnAcls.Add(new FqdnAcl(name,ipStr));
                        }

                    }
                }
            }
        }
示例#8
0
        //Dat dat==null で初期化された場合、全てenableNumで指定したものになる
        //dat=null enableNum=0(不許可) => All Deny
        //dat=null enableNum=1(許可) => All Allow
        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
                {
                    //IPv4指定かどうかの判断
                    var isV4 = true;
                    foreach (var c in ipStr)
                    {
                        if (char.IsNumber(c))
                        {
                            continue;
                        }
                        if (c == '*' || c == '.' || c == '/' || c == '-')
                        {
                            continue;
                        }
                        isV4 = false;
                        break;
                    }
                    if (isV4)
                    {
                        //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指定かどうかの判断
                        var isV6 = true;
                        foreach (var c in ipStr)
                        {
                            if (char.IsNumber(c))
                            {
                                continue;
                            }
                            if (c == '*' || c == ':' || c == '[' || c == ']' || c == '-')
                            {
                                continue;
                            }
                            isV6 = false;
                            break;
                        }
                        if (isV6)
                        {
                            //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));
                            }
                        }
                        else   //FQDN指定と判断する
                        {
                            _arFqdnAcls.Add(new FqdnAcl(name, ipStr));
                        }
                    }
                }
            }
        }