Handle pfctl_cfg_write output as expected

This commit is contained in:
Ruben van Staveren 2022-03-10 23:29:14 +01:00
parent c33e63978e
commit af1fef189c
Signed by: ruben
GPG Key ID: 886F6BECD477A93F
3 changed files with 8 additions and 9 deletions

View File

@ -54,7 +54,7 @@ def create_app():
return jsonify({'anchor': f'f2b-jail/{remote_user}', return jsonify({'anchor': f'f2b-jail/{remote_user}',
'table': f'f2b-{name}', 'table': f'f2b-{name}',
'operation': 'flush', 'operation': 'flush',
'result': res}) 'result': [x.decode('ascii') for x in res]})
@app.route("/register", methods=['PUT', 'DELETE']) @app.route("/register", methods=['PUT', 'DELETE'])
@auth.login_required @auth.login_required
@ -88,12 +88,11 @@ def create_app():
table=f'f2b-{name}', table=f'f2b-{name}',
operation='kill') operation='kill')
app.logger.info(f'pfctl -a f2b-jail/{remote_user} -f-') app.logger.info(f'pfctl -a f2b-jail/{remote_user} -f-')
return jsonify({'remote_user': remote_user, 'data': data})
return jsonify({'anchor': f'f2b-jail/{remote_user}', return jsonify({'anchor': f'f2b-jail/{remote_user}',
'table': f'f2b-{name}', 'table': f'f2b-{name}',
'action': 'start' if request.method == 'PUT' 'action': 'start' if request.method == 'PUT'
else 'stop', else 'stop',
'result': res}) 'result': [x.decode('ascii') for x in res]})
@app.route("/ban", methods=['PUT', 'DELETE']) @app.route("/ban", methods=['PUT', 'DELETE'])
@auth.login_required @auth.login_required

View File

@ -29,7 +29,7 @@ def pfctl_cfg_write(anchor, cfg):
if res: if res:
logging.info('Result: %s', res) logging.info('Result: %s', res)
res.check_returncode() res.check_returncode()
return res return res.stdout.splitlines()
def pfctl_table_op(anchor, **kwargs): def pfctl_table_op(anchor, **kwargs):

View File

@ -1,5 +1,5 @@
import base64 import base64
from types import SimpleNamespace from subprocess import CompletedProcess
pfctl_stdout_lines = b''' pfctl_stdout_lines = b'''
block drop quick proto tcp from <f2b-sendmail-auth> to any port = submission block drop quick proto tcp from <f2b-sendmail-auth> to any port = submission
@ -22,7 +22,7 @@ def test_register_unauth(client):
def test_register_valid(client, mocker): def test_register_valid(client, mocker):
def noop(): def noop():
pass pass
run_res = SimpleNamespace() run_res = CompletedProcess(args=['true'], returncode=0)
run_res.stdout = pfctl_stdout_lines run_res.stdout = pfctl_stdout_lines
run_res.check_returncode = noop run_res.check_returncode = noop
@ -37,13 +37,13 @@ def test_register_valid(client, mocker):
json=json_payload, json=json_payload,
headers={"Authorization": "Basic " + valid_credentials}) headers={"Authorization": "Basic " + valid_credentials})
assert response.json['action'] == 'delete' assert response.json['action'] == 'stop'
def test_unregister_valid(client, mocker): def test_unregister_valid(client, mocker):
def noop(): def noop():
pass pass
run_res = SimpleNamespace() run_res = CompletedProcess(args=['true'], returncode=0)
run_res.stdout = pfctl_stdout_lines run_res.stdout = pfctl_stdout_lines
run_res.check_returncode = noop run_res.check_returncode = noop
@ -64,7 +64,7 @@ def test_unregister_valid(client, mocker):
def test_register_invalid(client, mocker): def test_register_invalid(client, mocker):
def noop(): def noop():
pass pass
run_res = SimpleNamespace() run_res = CompletedProcess(args=['true'], returncode=0)
run_res.stdout = pfctl_stdout_lines run_res.stdout = pfctl_stdout_lines
run_res.check_returncode = noop run_res.check_returncode = noop