Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.11.2 / 0.10.6 several test failures after 2021-01-01 #2904

Closed
hobbes1069 opened this issue Jan 4, 2021 · 4 comments
Closed

0.11.2 / 0.10.6 several test failures after 2021-01-01 #2904

hobbes1069 opened this issue Jan 4, 2021 · 4 comments

Comments

@hobbes1069
Copy link

hobbes1069 commented Jan 4, 2021

Tests currently fail with Python 3.10 on 0.11.2.

https://bugzilla.redhat.com/show_bug.cgi?id=1912472

test result
ERROR: testDefaultTimeZone
(fail2ban.tests.datedetectortestcase.DateDetectorTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/datedetectortestcase.py", line 175, in
testDefaultTimeZone
    dd.default_tz=tz; datelog, _ = dd.getTime(log)
TypeError: cannot unpack non-iterable NoneType object

======================================================================
ERROR: testSampleRegexsAPACHE-FAKEGOOGLEBOT
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 293, in testFilter
    fail2banTime - jsonTime) )
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

======================================================================
ERROR: testSampleRegexsMYSQLD-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 293, in testFilter
    fail2banTime - jsonTime) )
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

======================================================================
ERROR: testSampleRegexsORACLEIMS
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 293, in testFilter
    fail2banTime - jsonTime) )
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

======================================================================
FAIL: testSeekToTimeLargeFile (fail2ban.tests.filtertestcase.LogFileFilterPoll)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/filtertestcase.py", line 766, in
testSeekToTimeLargeFile
    self.assertEqual(fc.getPos(), 47*count)
AssertionError: 0 != 470000

======================================================================
FAIL: testSeekToTimeSmallFile (fail2ban.tests.filtertestcase.LogFileFilterPoll)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/filtertestcase.py", line 702, in
testSeekToTimeSmallFile
    self.assertEqual(fc.getPos(), 53)
AssertionError: 0 != 53

======================================================================
FAIL: testGetFailuresWrongChar (fail2ban.tests.filtertestcase.GetFailures)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/filtertestcase.py", line 1734, in
testGetFailuresWrongChar
    _assert_correct_last_attempt(self, self.filter, output)
  File "./fail2ban/tests/filtertestcase.py", line 181, in
_assert_correct_last_attempt
    utest.assertEqual(len(found), 1)
AssertionError: 0 != 1

======================================================================
FAIL: testFullYearMatch_gh130
(fail2ban.tests.datedetectortestcase.DateDetectorTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/datedetectortestcase.py", line 277, in
testFullYearMatch_gh130
    self.assertNotEqual(logdate, None)
AssertionError: None == None

======================================================================
FAIL: testAmbiguousDatePattern
(fail2ban.tests.datedetectortestcase.CustomDateFormatsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/datedetectortestcase.py", line 530, in
testAmbiguousDatePattern
    self.assertEqual(matched, date[1].group(1))
AssertionError: 'Aug 8 11:25:50 2014' != 'Aug 8 11:25:50'
- Aug 8 11:25:50 2014
?               -----
+ Aug 8 11:25:50


======================================================================
FAIL: testSampleRegexs3PROXY
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: 3proxy: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/3proxy:2, line:
  11-06-2013 02:09:40 +0300 PROXY.3128 00004 - 1.2.3.4:28783 0.0.0.0:0 0 0 0
GET http://www.yandex.ua/?ncrnd=2169807731 HTTP/1.1
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2013-06-11T02:09:40'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-auth: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/apache-auth:7, line:
  [Thu Jul 11 01:21:41 2013] [error] [client 194.228.20.113] user  not found: /
regex (-1):
  None
faildata: {'host': '194.228.20.113', 'match': True, 'time':
'2013-07-11T01:21:41'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-BOTSEARCH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-botsearch: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/apache-botsearch:5, line:
  [Mon Dec 23 09:49:10 2013] [error] [client 115.249.248.145] File does not
exist: /var/www/pma
regex (-1):
  None
faildata: {'host': '115.249.248.145', 'match': True, 'time':
'2013-12-23T09:49:10'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-MODSECURITY
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-modsecurity: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/apache-modsecurity:2, line:
  [Mon Dec 23 13:12:31 2013] [error] [client 173.255.225.101] ModSecurity:
[file
"/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_21_protocol_anomalies.conf"]
[line "47"] [id "960015"] [rev "1"] [msg "Request Missing an Accept Header"]
[severity "NOTICE"] [ver "OWASP_CRS/2.2.8"] [maturity "9"] [accuracy "9"] [tag
"OWASP_CRS/PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag
"WASCTC/WASC-21"][tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] Access denied with
code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [hostname
"www.mysite.net"] [uri "/"] [unique_id "Urf@f12qgHIAACrFOlgAAABA"]
regex (-1):
  None
faildata: {'host': '173.255.225.101', 'match': True, 'time':
'2013-12-23T13:12:31'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-NOHOME
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-nohome: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/apache-nohome:3, line:
  [Sat Jun 01 11:23:08 2013] [error] [client 1.2.3.4] File does not exist:
/xxx/~
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2013-06-01T11:23:08'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-NOSCRIPT
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-noscript: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/apache-noscript:2, line:
  [Sun Jun 09 07:57:47 2013] [error] [client 192.0.43.10] script
'/usr/lib/cgi-bin/gitweb.cgiwp-login.php' not found or unable to stat
regex (-1):
  None
faildata: {'host': '192.0.43.10', 'match': True, 'time': '2013-06-09T07:57:47'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-OVERFLOWS
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-overflows: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/apache-overflows:3, line:
  [Tue Mar 16 15:39:29 2010] [error] [client 58.179.109.179] Invalid URI in
request \xf9h\xa9\xf3\x88\x8cXKj
\xbf-l*4\x87n\xe4\xfe\xd4\x1d\x06\x8c\xf8m\\rS\xf6n\xeb\x8
regex (-1):
  None
faildata: {'host': '58.179.109.179', 'match': True, 'time':
'2010-03-16T15:39:29'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-PASS
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-pass: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/apache-pass:2, line:
  192.0.2.12 - user1 [27/Jun/2013:11:55:44] "GET /knocking/ HTTP/1.1" 200 266
"http://domain.net/hello-world/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64;
rv:40.0) Gecko/20100101 Firefox/40.0"
regex (-1):
  None
faildata: {'host': '192.0.2.12', 'match': True, 'time': '2013-06-27T11:55:44'}
fail: {}

======================================================================
FAIL: testSampleRegexsAPACHE-SHELLSHOCK
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: apache-shellshock: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/apache-shellshock:2, line:
  [Thu Sep 25 09:27:18.813902 2014] [cgi:error] [pid 16860] [client
89.207.132.76:59635] AH01215: /bin/bash: warning: HTTP_TEST: ignoring function
definition attempt
regex (-1):
  None
faildata: {'host': '89.207.132.76', 'match': True, 'time':
'2014-09-25T09:27:18'}
fail: {}

======================================================================
FAIL: testSampleRegexsASSP (fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: assp: True is not false : Line not matched when should have on:
./fail2ban/tests/files/logs/assp:2, line:
  Apr-07-13 07:08:36 [SSL-out] 68.171.223.68 SSL negotiation with client
failed: SSL accept attempt failed with unknown errorerror:140760FC:SSL
routines:SSL23_GET_CLIENT_HELLO:unknown protocol;
regex (-1):
  None
faildata: {'host': '68.171.223.68', 'match': True, 'time':
'2013-04-07T07:08:36'}
fail: {}

======================================================================
FAIL: testSampleRegexsASTERISK
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: asterisk: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/asterisk:3, line:
  [2012-02-13 17:21:54] NOTICE[1638] chan_sip.c: Registration from
'<sip:301@example.com>' failed for '1.2.3.4' - Wrong password
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2012-02-13T17:21:54'}
fail: {}

======================================================================
FAIL: testSampleRegexsBITWARDEN
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: bitwarden: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/bitwarden:2, line:
  2019-11-26 01:04:49.008 +08:00 [WRN] Failed login attempt. 192.168.0.16
regex (-1):
  None
faildata: {'host': '192.168.0.16', 'match': True, 'time':
'2019-11-25T18:04:49'}
fail: {}

======================================================================
FAIL: testSampleRegexsDOMINO-SMTP
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: domino-smtp: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/domino-smtp:4, line:
  [28325:00010-3735542592] 22-06-2014 09:56:12   smtp: postmaster [1.2.3.4]
authentication failure using internet password
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2014-06-22T09:56:12'}
fail: {}

======================================================================
FAIL: testSampleRegexsDOVECOT
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: dovecot: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/dovecot:32, line:
  2013-08-11 03:56:40 auth-worker(default): Info: pam(username,1.2.3.4):
pam_authenticate() failed: Authentication failure (password mismatch?)
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2013-08-11T03:56:40'}
fail: {}

======================================================================
FAIL: testSampleRegexsEJABBERD-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: ejabberd-auth: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/ejabberd-auth:9, line:
  I(<0.1440.0>:ejabberd_c2s:813) :
({socket_state,tls,{tlssock,#Port<0.6910>,#Port<0.6912>},<0.1439.0>}) Failed
authentication for user@example.com from IP 192.0.2.4 ({{192,0,2,4},12716})
regex (-1):
  None
faildata: {'host': '192.0.2.4', 'match': True, 'time': '2013-07-14T17:53:40'}
fail: {}

======================================================================
FAIL: testSampleRegexsEXIM (fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: exim: True is not false : Line not matched when should have on:
./fail2ban/tests/files/logs/exim:3, line:
  2013-01-04 17:03:46 login authenticator failed for
rrcs-24-106-174-74.se.biz.rr.com ([192.168.2.33]) [24.106.174.74]: 535
Incorrect authentication data (set_id=brian)
regex (-1):
  None
faildata: {'host': '24.106.174.74', 'match': True, 'time':
'2013-01-04T17:03:46'}
fail: {}

======================================================================
FAIL: testSampleRegexsEXIM-SPAM
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: exim-spam: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/exim-spam:10, line:
  2013-06-15 11:19:33 [2249] H=([2.181.148.95]) [2.181.148.95]:52391
I=[1.2.3.4]:25 F=fantasizesg4@google.com rejected RCPT some@email.com: rejected
found in dnsbl zen.spamhaus.org
regex (-1):
  None
faildata: {'host': '2.181.148.95', 'match': True, 'time':
'2013-06-15T11:19:33'}
fail: {}

======================================================================
FAIL: testSampleRegexsGROUPOFFICE
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: groupoffice: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/groupoffice:2, line:
  [2014-01-06 10:59:38]LOGIN FAILED for user: "asdsad" from IP: 127.0.0.1
regex (-1):
  None
faildata: {'host': '127.0.0.1', 'match': True, 'time': '2014-01-06T10:59:38'}
fail: {}

======================================================================
FAIL: testSampleRegexsGUACAMOLE
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 289, in testFilter
    self.assertEqual(fail2banTime, jsonTime,
AssertionError: 1124013600 != 1366050848.0 : UTC Time  mismatch 1124013600
(2005-08-14T10:00:00) != 1366050848.0 (2013-04-15T18:34:08)  (diff
-242037248.000 seconds)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: guacamole: 1124013600 != 1366050848.0 : UTC Time  mismatch
1124013600 (2005-08-14T10:00:00) != 1366050848.0 (2013-04-15T18:34:08)  (diff
-242037248.000 seconds) on: ./fail2ban/tests/files/logs/guacamole:4, line:
  WARNING: Authentication attempt from 192.0.2.0 for user "null" failed.
regex (0):
  ^.*\nWARNING: Authentication attempt from
(?:\[?(?:(?:::f{4,6}:)?(?P<ip4>(?:\d{1,3}\.){3}\d{1,3})|(?P<ip6>(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):)))\]?|(?P<dns>[\w\-.^_]*\w))
for user "[^"]*" failed\.$
faildata: {'host': '192.0.2.0', 'match': True, 'time': '2013-04-15T20:34:08'}
fail: {'dns': None,
 'ip4': '192.0.2.0',
 'ip6': None,
 'matches': [('',
              '',
              'apr 15, 2013 8:34:08 PM org.slf4j.impl.JCLLoggerAdapter warn'),
             ('WARNING:',
              '',
              ' Authentication attempt from 192.0.2.0 for user "null" '
              'failed.')]}

======================================================================
FAIL: testSampleRegexsLIGHTTPD-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: lighttpd-auth: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/lighttpd-auth:3, line:
  2011-12-25 17:09:20: (http_auth.c.875) password doesn't match for /gitweb/
username: francois, IP: 4.4.4.4
regex (-1):
  None
faildata: {'host': '4.4.4.4', 'match': True, 'time': '2011-12-25T17:09:20'}
fail: {}

======================================================================
FAIL: testSampleRegexsMONGODB-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: mongodb-auth: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/mongodb-auth:4, line:
  2016-11-20T00:04:00.111+0100 [conn1] end connection 192.0.2.35:53276 (0
connections now open)
regex (-1):
  None
faildata: {'host': '192.0.2.35', 'match': True, 'time': '2016-11-20T00:04:00'}
fail: {}

======================================================================
FAIL: testSampleRegexsMURMUR
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: murmur: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/murmur:2, line:
  <W>2015-11-29 16:38:01.818 1 => <4:testUsernameOne(-1)> Rejected connection
from 192.168.0.1:29530: Invalid server password
regex (-1):
  None
faildata: {'host': '192.168.0.1', 'match': True, 'time': '2015-11-29T16:38:01'}
fail: {}

======================================================================
FAIL: testSampleRegexsNAMED-REFUSED
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: named-refused: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/named-refused:14, line:
  11-Aug-2013 03:36:11.372 error: client 1.2.3.4#52115: zone transfer
'domain.com/AXFR/IN' denied
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2013-08-11T03:36:11'}
fail: {}

======================================================================
FAIL: testSampleRegexsNGINX-BOTSEARCH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: nginx-botsearch: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/nginx-botsearch:2, line:
  12.34.56.78 - - [20/Jan/2015:19:53:28 +0100] "GET
//phpMyAdmin-2.8.2.3/scripts/setup.php HTTP/1.1" 404 47 "-" "-" "-"
regex (-1):
  None
faildata: {'host': '12.34.56.78', 'match': True, 'time': '2015-01-20T19:53:28'}
fail: {}

======================================================================
FAIL: testSampleRegexsNGINX-HTTP-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: nginx-http-auth: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/nginx-http-auth:3, line:
  2012/04/09 11:53:29 [error] 2865#0: *66647 user "xyz" was not found in
"/var/www/.htpasswd", client: 192.0.43.10, server: www.myhost.com, request:
"GET / HTTP/1.1", host: "www.myhost.com"
regex (-1):
  None
faildata: {'host': '192.0.43.10', 'match': True, 'time': '2012-04-09T11:53:29'}
fail: {}

======================================================================
FAIL: testSampleRegexsNGINX-LIMIT-REQ
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: nginx-limit-req: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/nginx-limit-req:3, line:
  2015/10/29 20:01:02 [error] 256554#0: *99927 limiting requests, excess: 1.852
by zone "one", client: 1.2.3.4, server: example.com, request: "POST /index.htm
HTTP/1.0", host: "exmaple.com"
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2015-10-29T20:01:02'}
fail: {}

======================================================================
FAIL: testSampleRegexsOPENWEBMAIL
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: openwebmail: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/openwebmail:2, line:
  Sat Dec 28 19:03:53 2013 - [72926] (178.123.108.196) gsdfg - userinfo error -
auth_unix.pl, ret -4, User gsdfg doesn't exist
regex (-1):
  None
faildata: {'host': '178.123.108.196', 'match': True, 'time':
'2013-12-28T19:03:53'}
fail: {}

======================================================================
FAIL: testSampleRegexsPROFTPD
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: proftpd: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/proftpd:20, line:
  2013-11-16 21:59:30,121 novo proftpd[25891] localhost (andy[1.2.3.4]): USER
kjsad: no such user found from andy [1.2.3.5] to ::ffff:192.168.1.14:21
regex (-1):
  None
faildata: {'desc': 'proftpd-basic 1.3.5~rc3-2.1 on Debian uses date format with
'
         'milliseconds if logging under /var/log/proftpd/proftpd.log',
 'host': '1.2.3.4',
 'match': True,
 'time': '2013-11-16T21:59:30'}
fail: {}

======================================================================
FAIL: testSampleRegexsROUNDCUBE-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: roundcube-auth: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/roundcube-auth:2, line:
  [22-Jan-2013 22:28:21 +0200]: FAILED login for user1 from 192.0.43.10
regex (-1):
  None
faildata: {'host': '192.0.43.10', 'match': True, 'time': '2013-01-22T21:28:21'}
fail: {}

======================================================================
FAIL: testSampleRegexsSCREENSHARINGD
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: screensharingd: True is not false : Line not matched when
should have on: ./fail2ban/tests/files/logs/screensharingd:8, line:
  Oct 27 2015 12:35:40 test1.beezwax.net screensharingd[1170]: Authentication:
FAILED :: User Name: sdfsdfs () mro :: Viewer Address: 192.168.5.247 :: Type:
DH
regex (-1):
  None
faildata: {'host': '192.168.5.247', 'match': True, 'time':
'2015-10-27T12:35:40'}
fail: {}

======================================================================
FAIL: testSampleRegexsSSHD (fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: sshd{'mode': 'aggressive'}: True is not false : Line not
matched when should have on: ./fail2ban/tests/files/logs/sshd:221, line:
  2015-04-16T18:02:50.568798+00:00 host sshd[2716]: Connection closed by
192.0.2.112 [preauth]
regex (-1):
  None
faildata: {'constraint': "opts.get('mode') == 'aggressive'",
 'desc': 'Should catch failure - no success/no accepted password',
 'host': '192.0.2.112',
 'match': True,
 'time': '2015-04-16T20:02:50'}
fail: {}

======================================================================
FAIL: testSampleRegexsSTUNNEL
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: stunnel: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/stunnel:2, line:
  2011.11.21 14:29:16 LOG3[28228:140093368055552]: SSL_accept from
10.7.41.61:33454 : 140890C7: error:140890C7:SSL
routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate
regex (-1):
  None
faildata: {'host': '10.7.41.61', 'match': True, 'time': '2011-11-21T14:29:16'}
fail: {}

======================================================================
FAIL: testSampleRegexsTINE20
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: tine20: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/tine20:3, line:
  78017 00cff -- none -- - 2014-01-13T05:02:22+00:00 WARN (4):
Tinebase_Controller::login::106 Login with username sdfsadf from 127.0.0.1
failed (-1)!
regex (-1):
  None
faildata: {'host': '127.0.0.1', 'match': True, 'time': '2014-01-13T06:02:22'}
fail: {}

======================================================================
FAIL: testSampleRegexsTRAEFIK-AUTH
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: traefik-auth{'mode': 'normal'}: True is not false : Line not
matched when should have on: ./fail2ban/tests/files/logs/traefik-auth:14, line:
  10.0.0.2 - username [18/Nov/2018:21:34:34 +0000] "GET /dashboard/ HTTP/2.0"
401 17 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101
Firefox/57.0" 72 "Auth for frontend-Host-traefik-0" "/dashboard/" 0ms
regex (-1):
  None
faildata: {'host': '10.0.0.2', 'match': True, 'time': '2018-11-18T22:34:34'}
fail: {}

======================================================================
FAIL: testSampleRegexsVSFTPD
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: vsftpd: True is not false : Line not matched when should have
on: ./fail2ban/tests/files/logs/vsftpd:17, line:
  Thu Sep  8 00:39:49 2016 [pid 15019] [guest] FAIL LOGIN: Client
"::ffff:192.0.2.1", "User is not in the allow user list."
regex (-1):
  None
faildata: {'host': '192.0.2.1', 'match': True, 'time': '2016-09-08T00:39:49'}
fail: {}

======================================================================
FAIL: testSampleRegexsZNC-ADMINLOG
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: znc-adminlog: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/znc-adminlog:2, line:
  [2018-10-27 01:40:55] [girst] failed to login from 1.2.3.4
regex (-1):
  None
faildata: {'host': '1.2.3.4', 'match': True, 'time': '2018-10-27T01:40:55'}
fail: {}

======================================================================
FAIL: testSampleRegexsZONEMINDER
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: zoneminder: True is not false : Line not matched when should
have on: ./fail2ban/tests/files/logs/zoneminder:2, line:
  [Mon Mar 28 16:50:49.522240 2016] [:error] [pid 1795] [client 10.1.1.1:50700]
WAR [Login denied for user "username1"], referer: https://zoneminder/
regex (-1):
  None
faildata: {'host': '10.1.1.1', 'match': True, 'time': '2016-03-28T16:50:49'}
fail: {}

======================================================================
FAIL: testSampleRegexsZZZ-SSHD-OBSOLETE-MULTILINE
(fail2ban.tests.samplestestcase.FilterSamplesRegex)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 252, in testFilter
    self.assertFalse(faildata.get('match', False),
AssertionError: True is not false : Line not matched when should have

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./fail2ban/tests/samplestestcase.py", line 299, in testFilter
    raise AssertionError("%s: %s on: %s:%i, line:\n  %s\nregex (%s):\n  %s\n"
AssertionError: zzz-sshd-obsolete-multiline{'mode': 'aggressive'}: True is not
false : Line not matched when should have on:
./fail2ban/tests/files/logs/sshd:221, line:
  2015-04-16T18:02:50.568798+00:00 host sshd[2716]: Connection closed by
192.0.2.112 [preauth]
regex (-1):
  None
faildata: {'constraint': "opts.get('mode') == 'aggressive'",
 'desc': 'Should catch failure - no success/no accepted password',
 'host': '192.0.2.112',
 'match': True,
 'time': '2015-04-16T20:02:50'}
fail: {}

----------------------------------------------------------------------
Ran 502 tests in 26.067s

FAILED (failures=43, errors=4, skipped=17)
@hobbes1069
Copy link
Author

May not be Python 3.10 related but an upgrade of another package:

https://koschei.fedoraproject.org/package/fail2ban?collection=f34

@sebres
Copy link
Contributor

sebres commented Jan 4, 2021

Don't know it'll be only this issue with 3.10, but several should be fixed with newest commit - 747d468 (0.10), f259dac (0.11)
A switch to year 2021 caused that several dates in tests (with year 201\d) are not recognized anymore (only 200\d and 202\d).

Probably I should release a fix for that, or can you made a patch firstly?

@hobbes1069
Copy link
Author

Applying the commit as a patch worked. Thanks!

@sebres
Copy link
Contributor

sebres commented Jan 6, 2021

CI of master (1.0) extended now with 3.10(alpha)

@sebres sebres changed the title RFE: Python 3.10 support 0.11.2 / 0.10.6 several test failures after 2021-01-01 Feb 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants