61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
// Firewall — config panel
|
|
|
|
function loadConfig() {
|
|
$.get('./api/config', function (data) {
|
|
$('#fw-enabled').prop('checked', data.enabled);
|
|
$('#enabled-label').text(data.enabled ? 'Firewall Enabled' : 'Firewall Disabled');
|
|
$('#waf-url').val(data.waf_url);
|
|
$('#backend-url').val(data.backend_url);
|
|
$('#health-interval').val(data.health_interval);
|
|
$('#timeout-ms').val(data.timeout_ms);
|
|
});
|
|
}
|
|
|
|
function loadStats() {
|
|
$.get('./api/stats', function (data) {
|
|
$('#circuit-state').text(data.circuit).attr('class', 'stat-value ' +
|
|
(data.circuit === 'open' ? 'warn' : data.circuit === 'closed' ? 'ok' : 'warn'));
|
|
$('#fw-status').text(data.enabled ? 'Active' : 'Disabled').attr('class', 'stat-value ' +
|
|
(data.enabled ? 'ok' : 'off'));
|
|
$('#stat-total').text(data.total || 0);
|
|
$('#stat-allowed').text(data.allowed || 0);
|
|
$('#stat-blocked').text(data.blocked || 0);
|
|
$('#stat-bypassed').text(data.bypassed || 0);
|
|
});
|
|
}
|
|
|
|
function saveConfig() {
|
|
$('#save-status').text('Saving...');
|
|
$.cjax({
|
|
url: './api/config/save',
|
|
type: 'POST',
|
|
data: {
|
|
enabled: $('#fw-enabled').is(':checked'),
|
|
waf_url: $('#waf-url').val().trim(),
|
|
backend_url: $('#backend-url').val().trim(),
|
|
health_interval: $('#health-interval').val(),
|
|
timeout_ms: $('#timeout-ms').val()
|
|
},
|
|
success: function () {
|
|
$('#save-status').text('Saved ✓');
|
|
loadConfig();
|
|
loadStats();
|
|
setTimeout(function () { $('#save-status').text(''); }, 2000);
|
|
},
|
|
error: function () {
|
|
$('#save-status').css('color', '#d63031').text('Save failed');
|
|
}
|
|
});
|
|
}
|
|
|
|
$('#fw-enabled').on('change', function () {
|
|
$('#enabled-label').text(this.checked ? 'Firewall Enabled' : 'Firewall Disabled');
|
|
});
|
|
|
|
$('#save-btn').on('click', saveConfig);
|
|
|
|
$(document).ready(function () {
|
|
loadConfig();
|
|
loadStats();
|
|
setInterval(loadStats, 5000);
|
|
});
|