From af8236b18948b083c408df39306fc36bc26b51b7 Mon Sep 17 00:00:00 2001 From: Alejandro Sirgo Rica Date: Wed, 19 Jun 2024 17:21:13 +0200 Subject: ogcp: add support to run scripts in clients Add view at /action/script/run to visualize the available scripts and run a single script file in the selected clients. Use shell/list to request the script list and shell/run API call to request the execution. --- ogcp/forms/action_forms.py | 9 +++++ ogcp/templates/actions/script_run.html | 25 ++++++++++++ ogcp/templates/commands.html | 9 +++++ ogcp/views.py | 71 +++++++++++++++++++++++++++++++++- 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 ogcp/templates/actions/script_run.html diff --git a/ogcp/forms/action_forms.py b/ogcp/forms/action_forms.py index 9e3a9f6..d650506 100644 --- a/ogcp/forms/action_forms.py +++ b/ogcp/forms/action_forms.py @@ -147,6 +147,15 @@ class ClientMoveForm(FlaskForm): scopes = SelectField(label=_l('Scopes'), validate_choice=False) submit = SubmitField(label=_l('Submit')) +class RunScriptForm(FlaskForm): + ips = HiddenField() + script = SelectField(label=_l('Script'), + choices=[], + validators=[InputRequired()], + validate_choice=False) + arguments = StringField(label=_l('Arguments')) + submit = SubmitField(label=_l('Submit')) + class ImportClientsForm(FlaskForm): server = HiddenField() room = SelectField(label=_l('Room')) diff --git a/ogcp/templates/actions/script_run.html b/ogcp/templates/actions/script_run.html new file mode 100644 index 0000000..700134e --- /dev/null +++ b/ogcp/templates/actions/script_run.html @@ -0,0 +1,25 @@ +{% extends 'commands.html' %} +{% import "bootstrap/wtf.html" as wtf %} +{% import "macros.html" as macros %} + +{% set sidebar_state = 'disabled' %} +{% set btn_back = true %} + +{% block nav_client %} active {% endblock %} +{% block nav_script_run %} active {% endblock %} +{% block content %} + +{% set ip_list = form.ips.data.split(' ') %} +{% set ip_count = ip_list | length %} +

+ {{ _('Run script for %(ip_count)d client(s)', ip_count=ip_count) }} +

+ +{{ macros.cmd_selected_clients(selected_clients) }} + +{{ wtf.quick_form(form, + method='post', + button_map={'submit': 'primary'}, + extra_classes="mx-5") }} + +{% endblock %} diff --git a/ogcp/templates/commands.html b/ogcp/templates/commands.html index aa3c4b4..eab9f29 100644 --- a/ogcp/templates/commands.html +++ b/ogcp/templates/commands.html @@ -87,6 +87,15 @@ +