//リストが無い場合は、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); } } } }
public void IsHitの検証(string aclStr, string ipStr, bool expected) { //setUp var sut = new AclV6("TAG", aclStr); //exercise var actual = sut.IsHit(new Ip(ipStr)); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void Startの検証(string aclStr, string startStr, string endStr) { //setUp var sut = new AclV6("TAG", aclStr); var expected = startStr; //exercise var actual = sut.Start.ToString(); //verify Assert.That(actual, Is.EqualTo(expected)); }
//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); }
//(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); } } } } } }
//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; }
//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)); } } } } }
//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)); } } } } }