mirror of
https://github.com/Yubico/yubiadmin.git
synced 2025-02-20 14:54:30 +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.
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
from yubiadmin.util.app import App, render
|
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 import Form
|
||||||
from wtforms.fields import TextField, PasswordField
|
from wtforms.fields import TextField
|
||||||
import os
|
import os
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
@ -38,10 +38,19 @@ __all__ = [
|
|||||||
CLIENTS_CONFIG_FILE = '/etc/freeradius/clients.conf'
|
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):
|
class RadTestForm(Form):
|
||||||
legend = 'RADIUS test'
|
legend = 'RADIUS test'
|
||||||
|
description = """
|
||||||
|
This utility allows you to test authentication against the RADIUS server
|
||||||
|
using the credentials entered below.
|
||||||
|
"""
|
||||||
username = TextField('Username')
|
username = TextField('Username')
|
||||||
password = PasswordField('Password')
|
password = TextField('Password')
|
||||||
|
|
||||||
|
|
||||||
class FreeRadius(App):
|
class FreeRadius(App):
|
||||||
@ -63,12 +72,17 @@ class FreeRadius(App):
|
|||||||
General
|
General
|
||||||
"""
|
"""
|
||||||
alerts = []
|
alerts = []
|
||||||
|
form = RadTestForm()
|
||||||
|
|
||||||
if 'username' in request.params:
|
if 'username' in request.params:
|
||||||
username = request.params['username']
|
form.process(request.params)
|
||||||
password = request.params.get('password', '')
|
username = form.username.data
|
||||||
|
password = form.password.data
|
||||||
cmd = 'radtest %s %s localhost 0 testing123' % (username, password)
|
cmd = 'radtest %s %s localhost 0 testing123' % (username, password)
|
||||||
status, output = run(cmd)
|
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:
|
if status == 0:
|
||||||
alert['type'] = 'success'
|
alert['type'] = 'success'
|
||||||
elif status == 1:
|
elif status == 1:
|
||||||
@ -79,7 +93,8 @@ class FreeRadius(App):
|
|||||||
'Exit code: %d' % status
|
'Exit code: %d' % status
|
||||||
alerts.append(alert)
|
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):
|
def clients(self, request):
|
||||||
"""
|
"""
|
||||||
@ -87,4 +102,16 @@ class FreeRadius(App):
|
|||||||
"""
|
"""
|
||||||
return ''
|
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()
|
app = FreeRadius()
|
||||||
|
@ -1,7 +1,31 @@
|
|||||||
{% from 'form.html' import form_fieldset %}
|
{% 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 action="/freerad/general" method="post">
|
||||||
{{ form_fieldset(form) }}
|
{{ form_fieldset(form) }}
|
||||||
<input type="submit" class="btn" value="Test" />
|
<input type="submit" class="btn" value="Authenticate" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user