From 3f4ebab7884c8ad6b78cba9bea5eda9120f1ffe2 Mon Sep 17 00:00:00 2001 From: jo Date: Tue, 21 Mar 2023 14:50:44 +0100 Subject: [PATCH] feat(playout): move liquidsoap auth to notify cli --- .../liquidsoap/1.4/ls_script.liq | 2 +- .../liquidsoap/entrypoint.py | 1 - .../liquidsoap/liquidsoap_auth.py | 36 ------------------- .../liquidsoap/templates/entrypoint.liq.j2 | 2 -- playout/libretime_playout/notify/main.py | 35 +++++++++++++++++- .../__snapshots__/entrypoint_test.ambr | 12 ------- 6 files changed, 35 insertions(+), 53 deletions(-) delete mode 100644 playout/libretime_playout/liquidsoap/liquidsoap_auth.py diff --git a/playout/libretime_playout/liquidsoap/1.4/ls_script.liq b/playout/libretime_playout/liquidsoap/1.4/ls_script.liq index 6cc70dcbd..6a244b83e 100644 --- a/playout/libretime_playout/liquidsoap/1.4/ls_script.liq +++ b/playout/libretime_playout/liquidsoap/1.4/ls_script.liq @@ -125,7 +125,7 @@ def make_input_auth_handler(input_name) log("user '#{user}' connected", label="#{input_name}_input") # Check auth based on return value from auth script - ret = test_process("python3 '#{auth_path}' '#{input_name}' '#{user}' '#{password}'") + ret = test_process("libretime-playout-notify live-auth '#{input_name}' '#{user}' '#{password}'") if ret then log("user '#{user}' authenticated", label="#{input_name}_input") else diff --git a/playout/libretime_playout/liquidsoap/entrypoint.py b/playout/libretime_playout/liquidsoap/entrypoint.py index e7c3b300a..869256b9d 100644 --- a/playout/libretime_playout/liquidsoap/entrypoint.py +++ b/playout/libretime_playout/liquidsoap/entrypoint.py @@ -25,7 +25,6 @@ def generate_entrypoint( version: Tuple[int, int, int], ) -> str: paths = {} - paths["auth_filepath"] = here / "liquidsoap_auth.py" paths["lib_filepath"] = here / f"{version[0]}.{version[1]}/ls_script.liq" if log_filepath is not None: diff --git a/playout/libretime_playout/liquidsoap/liquidsoap_auth.py b/playout/libretime_playout/liquidsoap/liquidsoap_auth.py deleted file mode 100644 index 4375fafa2..000000000 --- a/playout/libretime_playout/liquidsoap/liquidsoap_auth.py +++ /dev/null @@ -1,36 +0,0 @@ -from argparse import ArgumentParser -from typing import Literal - -from libretime_api_client.v1 import ApiClient as LegacyClient - - -def main(input_name: Literal["main", "show"], username: str, password: str) -> int: - legacy_client = LegacyClient() - - input_name_map = {"main": "master", "show": "dj"} - response: dict = legacy_client.check_live_stream_auth( - username, - password, - input_name_map[input_name], - ) - - if response.get("msg", False) is True: - return 0 - return 1 - - -if __name__ == "__main__": - parser = ArgumentParser() - - parser.add_argument("input_name", choices=["main", "show"]) - parser.add_argument("username") - parser.add_argument("password") - args = parser.parse_args() - - raise SystemExit( - main( - input_name=args.input_name, - username=args.username, - password=args.password, - ) - ) diff --git a/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 b/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 index 9a040ce79..0d6bab27f 100644 --- a/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 +++ b/playout/libretime_playout/liquidsoap/templates/entrypoint.liq.j2 @@ -9,8 +9,6 @@ input_show_mount = {{ config.stream.inputs.show.mount | quote }} input_show_port = {{ config.stream.inputs.show.port }} # Settings -auth_path = {{ paths.auth_filepath | quote }} - {% if paths.log_filepath is defined -%} set("log.file.path", "{{ paths.log_filepath }}") {%- else -%} diff --git a/playout/libretime_playout/notify/main.py b/playout/libretime_playout/notify/main.py index 650b6d9d4..a5dfb07cb 100644 --- a/playout/libretime_playout/notify/main.py +++ b/playout/libretime_playout/notify/main.py @@ -14,7 +14,7 @@ Main case: """ import logging from pathlib import Path -from typing import Optional +from typing import Literal, Optional import click from libretime_api_client.v1 import ApiClient as LegacyClient @@ -101,6 +101,39 @@ def live(app: App, name, status): app.api_client.notify_source_status(name, status) +@cli.command() +@click.argument("input_name", type=click.Choice(["main", "show"])) +@click.argument("username") +@click.argument("password") +@pass_app +def live_auth( + app: App, + input_name: Literal["main", "show"], + username: str, + password: str, +): + """ + Check live stream user authentication. + """ + input_name_map = {"main": "master", "show": "dj"} + + logger.info( + "Checking '%s' live stream user authentication '%s'", + input_name, + username, + ) + resp = app.api_client.check_live_stream_auth( + username, + password, + input_name_map[input_name], + ) + + payload: dict = resp.json() + if payload.get("msg", False) is True: + raise SystemExit(0) + raise SystemExit(1) + + @cli.command() @click.argument("stream_id") @click.argument("time") diff --git a/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr b/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr index e8d74e9f8..342873863 100644 --- a/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr +++ b/playout/tests/liquidsoap/__snapshots__/entrypoint_test.ambr @@ -12,8 +12,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true) @@ -49,8 +47,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true) @@ -111,8 +107,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true) @@ -169,8 +163,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true) @@ -252,8 +244,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true) @@ -297,8 +287,6 @@ input_show_port = 8002 # Settings - auth_path = "/fake/liquidsoap_auth.py" - set("log.file.path", "/var/log/radio.log") set("server.telnet", true)