mirror of
https://github.com/Yubico/yubiadmin.git
synced 2025-02-17 23:54:14 +01:00
Added FreeRADIUS daemon status and controls.
This commit is contained in:
parent
d3a499a554
commit
1e15bcba4d
@ -26,9 +26,9 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from yubiadmin.util.app import App, render
|
||||
from yubiadmin.util.system import run
|
||||
from yubiadmin.util.system import run, invoke_rc_d
|
||||
from wtforms import Form
|
||||
from wtforms.fields import TextField, PasswordField
|
||||
from wtforms.fields import TextField
|
||||
import os
|
||||
|
||||
__all__ = [
|
||||
@ -38,10 +38,19 @@ __all__ = [
|
||||
CLIENTS_CONFIG_FILE = '/etc/freeradius/clients.conf'
|
||||
|
||||
|
||||
def is_freerad_running():
|
||||
status, _ = run('cat /var/run/freeradius/freeradius.pid | xargs kill -0')
|
||||
return status == 0
|
||||
|
||||
|
||||
class RadTestForm(Form):
|
||||
legend = 'RADIUS test'
|
||||
description = """
|
||||
This utility allows you to test authentication against the RADIUS server
|
||||
using the credentials entered below.
|
||||
"""
|
||||
username = TextField('Username')
|
||||
password = PasswordField('Password')
|
||||
password = TextField('Password')
|
||||
|
||||
|
||||
class FreeRadius(App):
|
||||
@ -63,12 +72,17 @@ class FreeRadius(App):
|
||||
General
|
||||
"""
|
||||
alerts = []
|
||||
form = RadTestForm()
|
||||
|
||||
if 'username' in request.params:
|
||||
username = request.params['username']
|
||||
password = request.params.get('password', '')
|
||||
form.process(request.params)
|
||||
username = form.username.data
|
||||
password = form.password.data
|
||||
cmd = 'radtest %s %s localhost 0 testing123' % (username, password)
|
||||
status, output = run(cmd)
|
||||
alert = {'title': cmd, 'message': '<pre>%s</pre>' % output}
|
||||
alert = {'title': 'Command: %s' % cmd}
|
||||
alert['message'] = '<pre style="white-space: pre-wrap;">%s</pre>' \
|
||||
% output
|
||||
if status == 0:
|
||||
alert['type'] = 'success'
|
||||
elif status == 1:
|
||||
@ -79,7 +93,8 @@ class FreeRadius(App):
|
||||
'Exit code: %d' % status
|
||||
alerts.append(alert)
|
||||
|
||||
return render('freerad/general', form=RadTestForm(), alerts=alerts)
|
||||
return render('freerad/general', form=form, alerts=alerts,
|
||||
running=is_freerad_running())
|
||||
|
||||
def clients(self, request):
|
||||
"""
|
||||
@ -87,4 +102,16 @@ class FreeRadius(App):
|
||||
"""
|
||||
return ''
|
||||
|
||||
def server(self, request):
|
||||
if request.params['server'] == 'toggle':
|
||||
if is_freerad_running():
|
||||
invoke_rc_d('freeradius', 'stop')
|
||||
else:
|
||||
invoke_rc_d('freeradius', 'start')
|
||||
else:
|
||||
invoke_rc_d('freeradius', 'restart')
|
||||
|
||||
return self.redirect('/%s/general' % self.name)
|
||||
|
||||
|
||||
app = FreeRadius()
|
||||
|
@ -1,7 +1,31 @@
|
||||
{% from 'form.html' import form_fieldset %}
|
||||
|
||||
{% if running %}
|
||||
{% set status_cls = 'label label-success' %}
|
||||
{% set status_txt = 'Running' %}
|
||||
{% set toggle_txt = 'Stop FreeRADIUS' %}
|
||||
{% set restart_cls = 'btn' %}
|
||||
{% else %}
|
||||
{% set status_cls = 'label label-important' %}
|
||||
{% set status_txt = 'Not Running' %}
|
||||
{% set toggle_txt = 'Start FreeRADIUS' %}
|
||||
{% set restart_cls = 'btn disabled' %}
|
||||
{% set restart_attrs = 'disabled="disabled"' %}
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
<legend>FreeRADIUS Server</legend>
|
||||
Current status: <span class="{{ status_cls }}">{{ status_txt }}</span>
|
||||
</p>
|
||||
<form action="server" method="post">
|
||||
<button name="server" value="toggle" class="btn">{{ toggle_txt }}</button>
|
||||
<button name="server" value="restart" class="{{ restart_cls }}" {{ restart_attrs }}>Restart FreeRADIUS</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<form action="/freerad/general" method="post">
|
||||
{{ form_fieldset(form) }}
|
||||
<input type="submit" class="btn" value="Test" />
|
||||
<input type="submit" class="btn" value="Authenticate" />
|
||||
</form>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user