@@ -39,13 +39,13 @@ namespace DigitalRuby.IPBanTests
39
39
[ TestFixture ]
40
40
public class IPBanBanTests
41
41
{
42
-
43
-
44
42
private const string ip1 = "99.99.99.97" ;
45
43
private const string ip2 = "99.99.99.98" ;
44
+ private const string ip3 = "2a0f:5840::" ;
46
45
private static readonly IPAddressLogEvent info1 = new ( ip1 , "test_user" , "RDP" , 98 , IPAddressEventType . FailedLogin ) ;
47
46
private static readonly IPAddressLogEvent info2 = new ( ip2 , "test_user2" , "SSH" , 99 , IPAddressEventType . FailedLogin ) ;
48
47
private static readonly IPAddressLogEvent info3 = new ( ip1 , "test_user" , "RDP" , 1 , IPAddressEventType . FailedLogin ) ;
48
+ private static readonly IPAddressLogEvent info4 = new ( ip3 , "test_user" , "RDP" , 25 , IPAddressEventType . FailedLogin ) ;
49
49
50
50
private IPBanService service ;
51
51
@@ -64,7 +64,7 @@ public void Teardown()
64
64
IPBanService . DisposeIPBanTestService ( service ) ;
65
65
}
66
66
67
- private void AddFailedLogins ( int count = - 1 )
67
+ private void AddFailedLogins ( int count = - 1 , bool ipv6 = false )
68
68
{
69
69
int count1 = ( count < 0 ? info1 . Count : count ) ;
70
70
int count2 = ( count < 0 ? info2 . Count : count ) ;
@@ -73,13 +73,24 @@ private void AddFailedLogins(int count = -1)
73
73
new IPAddressLogEvent ( info1 . IPAddress , info1 . UserName , info1 . Source , count1 , info1 . Type ) ,
74
74
new IPAddressLogEvent ( info2 . IPAddress , info2 . UserName , info2 . Source , count2 , info2 . Type )
75
75
} ) ;
76
+ if ( ipv6 )
77
+ {
78
+ service . AddIPAddressLogEvents ( new IPAddressLogEvent [ ]
79
+ {
80
+ new IPAddressLogEvent ( info4 . IPAddress , info4 . UserName , info4 . Source , count < 0 ? info4 . Count : count , info4 . Type ) ,
81
+ } ) ;
82
+ }
76
83
service . RunCycleAsync ( ) . Sync ( ) ;
77
84
}
78
85
79
- private void AssertIPAddressesAreBanned ( int failCount1 = - 1 , int failCount2 = - 1 )
86
+ private void AssertIPAddressesAreBanned ( int failCount1 = - 1 , int failCount2 = - 1 , int failCount3 = - 1 , bool ipv6 = false )
80
87
{
81
88
Assert . IsTrue ( service . Firewall . IsIPAddressBlocked ( ip1 , out _ ) ) ;
82
89
Assert . IsTrue ( service . Firewall . IsIPAddressBlocked ( ip2 , out _ ) ) ;
90
+ if ( ipv6 )
91
+ {
92
+ Assert . IsTrue ( service . Firewall . IsIPAddressBlocked ( ip3 , out _ ) ) ;
93
+ }
83
94
Assert . IsTrue ( service . DB . TryGetIPAddress ( ip1 , out IPBanDB . IPAddressEntry e1 ) ) ;
84
95
Assert . IsTrue ( service . DB . TryGetIPAddress ( ip2 , out IPBanDB . IPAddressEntry e2 ) ) ;
85
96
failCount1 = ( failCount1 < 0 ? info1 . Count : failCount1 ) ;
@@ -88,12 +99,20 @@ private void AssertIPAddressesAreBanned(int failCount1 = -1, int failCount2 = -1
88
99
Assert . AreEqual ( failCount2 , e2 . FailedLoginCount ) ;
89
100
Assert . AreEqual ( IPBanDB . IPAddressState . Active , e1 . State ) ;
90
101
Assert . AreEqual ( IPBanDB . IPAddressState . Active , e2 . State ) ;
102
+ if ( ipv6 )
103
+ {
104
+ failCount3 = ( failCount3 < 0 ? info4 . Count : failCount3 ) ;
105
+ Assert . IsTrue ( service . DB . TryGetIPAddress ( ip3 , out IPBanDB . IPAddressEntry e3 ) ) ;
106
+ Assert . AreEqual ( failCount3 , e3 . FailedLoginCount ) ;
107
+ Assert . AreEqual ( IPBanDB . IPAddressState . Active , e3 . State ) ;
108
+ }
91
109
}
92
110
93
- private void AssertIPAddressesAreNotBanned ( bool exists1 = false , bool exists2 = false )
111
+ private void AssertIPAddressesAreNotBanned ( bool exists1 = false , bool exists2 = false , bool exists3 = false )
94
112
{
95
113
Assert . IsFalse ( service . Firewall . IsIPAddressBlocked ( ip1 , out _ ) ) ;
96
114
Assert . IsFalse ( service . Firewall . IsIPAddressBlocked ( ip2 , out _ ) ) ;
115
+ Assert . IsFalse ( service . Firewall . IsIPAddressBlocked ( ip3 , out _ ) ) ;
97
116
if ( exists1 )
98
117
{
99
118
Assert . IsTrue ( service . DB . TryGetIPAddress ( ip1 , out IPBanDB . IPAddressEntry e1 ) ) ;
@@ -112,12 +131,22 @@ private void AssertIPAddressesAreNotBanned(bool exists1 = false, bool exists2 =
112
131
{
113
132
Assert . IsFalse ( service . DB . TryGetIPAddress ( ip2 , out _ ) ) ;
114
133
}
134
+ if ( exists3 )
135
+ {
136
+ Assert . IsTrue ( service . DB . TryGetIPAddress ( ip3 , out IPBanDB . IPAddressEntry e3 ) ) ;
137
+ Assert . AreNotEqual ( IPBanDB . IPAddressState . Active , e3 . State ) ;
138
+ }
139
+ else
140
+ {
141
+ Assert . IsFalse ( service . DB . TryGetIPAddress ( ip3 , out _ ) ) ;
142
+ }
115
143
}
116
144
117
145
private void AssertNoIPInDB ( )
118
146
{
119
147
Assert . IsFalse ( service . DB . TryGetIPAddress ( ip1 , out _ ) ) ;
120
148
Assert . IsFalse ( service . DB . TryGetIPAddress ( ip2 , out _ ) ) ;
149
+ Assert . IsFalse ( service . DB . TryGetIPAddress ( ip3 , out _ ) ) ;
121
150
}
122
151
123
152
[ Test ]
@@ -199,11 +228,11 @@ public void TestBlockIPAddressesMethodCall()
199
228
[ Test ]
200
229
public void TestUnblockIPAddresesUnblockFile ( )
201
230
{
202
- AddFailedLogins ( ) ;
203
- AssertIPAddressesAreBanned ( ) ;
231
+ AddFailedLogins ( ipv6 : true ) ;
232
+ AssertIPAddressesAreBanned ( ipv6 : true ) ;
204
233
205
234
// put an unban.txt file in path, service should pick it up
206
- File . WriteAllLines ( service . UnblockIPAddressesFileName , new string [ ] { ip1 , ip2 } ) ;
235
+ File . WriteAllLines ( service . UnblockIPAddressesFileName , new string [ ] { ip1 , ip2 , ip3 } ) ;
207
236
208
237
// this should un ban the ip addresses
209
238
service . RunCycleAsync ( ) . Sync ( ) ;
0 commit comments