mirror of https://git.48k.eu/ogcp
Add set ogLive to commands
This action is related to /oglive in ogServer's API. Allows changing the ogLive for a set of given clients, previously selected in the /commands view.multi-ogserver
parent
695c19f86e
commit
e07c8afcce
|
@ -110,6 +110,11 @@ class BootModeForm(FlaskForm):
|
|||
boot = SelectField(label=_('Boot mode'))
|
||||
ok = SubmitField(label=_('Ok'))
|
||||
|
||||
class OgliveForm(FlaskForm):
|
||||
ips = HiddenField()
|
||||
oglive = SelectField(label=_('ogLive'))
|
||||
ok = SubmitField(label=_('Ok'))
|
||||
|
||||
class ImageCreateForm(FlaskForm):
|
||||
ip = HiddenField()
|
||||
os = SelectField(label=_('OS'), choices=[])
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{% extends 'commands.html' %}
|
||||
{% import "bootstrap/wtf.html" as wtf %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set ip_list = form.ips.data.split(' ') %}
|
||||
{% set ip_count = ip_list | length %}
|
||||
<h1 class="m-5">Changing ogLive of {{ip_count}} {%if ip_count > 1%}computers{% else %}computer{% endif %}</h1>
|
||||
|
||||
<ul class="list-group mx-5 list-group-horizontal-sm">
|
||||
{% for ip in ip_list %}
|
||||
<li class="list-group-item flex-fill list-group-item-info">{{ ip }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{{ wtf.quick_form(form,
|
||||
action=url_for('action_oglive'),
|
||||
method='post',
|
||||
button_map={'ok': 'primary'},
|
||||
extra_classes="m-5") }}
|
||||
|
||||
{% endblock %}
|
|
@ -40,6 +40,8 @@
|
|||
form="scopesForm" formaction="{{ url_for('action_image_create') }}" formmethod="get">
|
||||
<input class="btn btn-light" type="submit" value="{{ _('Set boot mode') }}"
|
||||
form="scopesForm" formaction="{{ url_for('action_mode') }}" formmethod="get">
|
||||
<input class="btn btn-light" type="submit" value="{{ _('Set ogLive') }}"
|
||||
form="scopesForm" formaction="{{ url_for('action_oglive') }}" formmethod="get">
|
||||
<input class="btn btn-light" type="submit" value="{{ _('Log') }}"
|
||||
form="scopesForm" formaction="{{ url_for('action_legacy_log') }}" formmethod="get">
|
||||
<input class="btn btn-light" type="submit" value="{{ _('Real time log') }}"
|
||||
|
|
|
@ -11,7 +11,7 @@ from flask import (
|
|||
from ogcp.forms.action_forms import (
|
||||
WOLForm, SetupForm, ClientDetailsForm, ImageDetailsForm, HardwareForm,
|
||||
SessionForm, ImageRestoreForm, ImageCreateForm, SoftwareForm, BootModeForm,
|
||||
RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm
|
||||
RoomForm, DeleteRoomForm, CenterForm, DeleteCenterForm, OgliveForm
|
||||
)
|
||||
from flask_login import (
|
||||
current_user, LoginManager,
|
||||
|
@ -666,6 +666,43 @@ def action_mode():
|
|||
return render_template('actions/mode.html', form=form, scopes=scopes, clients=clients)
|
||||
|
||||
|
||||
@app.route('/action/oglive', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def action_oglive():
|
||||
form = OgliveForm(request.form)
|
||||
if request.method == 'POST':
|
||||
ips = form.ips.data.split(' ')
|
||||
payload = {'clients': ips, 'name': form.oglive.data}
|
||||
r = g.server.post('/oglive/set', payload)
|
||||
if r.status_code == requests.codes.ok:
|
||||
flash(_('Client set ogLive request sent successfully'),
|
||||
category='info')
|
||||
else:
|
||||
flash(_('Ogserver replied with status code not ok'),
|
||||
category='error')
|
||||
return redirect(url_for('commands'))
|
||||
|
||||
else:
|
||||
r = g.server.get('/oglive/list')
|
||||
if r.status_code != requests.codes.ok:
|
||||
flash(_('Ogserver replied with status code not ok'),
|
||||
category='error')
|
||||
return redirect(url_for('commands'))
|
||||
available_oglives = [(oglive.get('directory'), oglive.get('directory'))
|
||||
for oglive in r.json()['oglive']]
|
||||
available_oglives.insert(0, ('default', 'default'))
|
||||
form.oglive.choices = list(available_oglives)
|
||||
|
||||
ips = parse_elements(request.args.to_dict())
|
||||
form.ips.data = " ".join(ips)
|
||||
if not validate_elements(ips):
|
||||
return redirect(url_for('commands'))
|
||||
|
||||
form.ok.render_kw = {'formaction': url_for('action_oglive')}
|
||||
scopes, clients = get_scopes(set(ips))
|
||||
return render_template('actions/oglive.html', form=form, scopes=scopes)
|
||||
|
||||
|
||||
@app.route('/action/image/create', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def action_image_create():
|
||||
|
|
Loading…
Reference in New Issue