From dd66bf3dc9bc2c0cce88f737324ac3ad0c3542f2 Mon Sep 17 00:00:00 2001 From: Ruben van Staveren Date: Sun, 15 Jan 2023 18:45:28 +0100 Subject: [PATCH] Try the pfctl_table_op and set http code accordingly --- jail2ban/__init__.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/jail2ban/__init__.py b/jail2ban/__init__.py index 9491bf6..d1801f3 100644 --- a/jail2ban/__init__.py +++ b/jail2ban/__init__.py @@ -88,10 +88,17 @@ def create_app(): name = untaint(PAT_NAME, name) app.logger.info(f'Flushing table f2b-{name}' f' in anchor f2b-jail/{remote_user}') - res = pfctl_table_op('f2b-jail/{remote_user}', - table='f2b-{name}', - operation='show', - verbose=True) + try: + res = pfctl_table_op('f2b-jail/{remote_user}', + table='f2b-{name}', + operation='show', + verbose=True) + except CalledProcessError as err: + if err.stderr.find(b'pfctl: Table does not exist.') > 0: + res = [] + else: + raise err + result = [entry.groupdict() for entry in re.finditer(_PFCTL_TABLE_PAT, '\n'.join([x.decode('ascii') for x in res]), @@ -100,7 +107,7 @@ def create_app(): return jsonify({'anchor': f'f2b-jail/{remote_user}', 'table': f'f2b-{name}', 'operation': 'list', - 'result': result }) + 'result': result }), 200 if len(res) else 404 @app.route("/register", methods=['PUT', 'DELETE']) @auth.login_required