Browse Source

[WebUI] Distinguish read-only interface, multiple bugs fixed

pull/1130/head
Vsevolod Stakhov 9 years ago
parent
commit
c721be3313
  1. 75
      interface/js/rspamd.js
  2. 6
      src/controller.c

75
interface/js/rspamd.js

@ -30,6 +30,9 @@
var history;
var graph;
var symbols;
var read_only = false;
var btn_class = "";
var stat_timeout;
var selected = []; // Keep graph selectors state
@ -63,6 +66,7 @@
symbols.destroy();
symbols = null;
}
clearTimeout(stat_timeout);
cleanCredentials();
connectRSPAMD();
// window.location.reload();
@ -99,37 +103,6 @@
// @detect session storate
supportsSessionStorage();
// @request credentials
function requestCredentials() {
$.ajax({
dataType: 'json',
type: 'GET',
url: 'auth',
jsonp: false,
beforeSend: function (xhr) {
xhr.setRequestHeader('Password', getPassword());
},
success: function (data) {
if (data.auth === 'failed') {
connectRSPAMD();
}
}
});
}
// @request credentials
function updateCredentials() {
$.ajax({
dataType: 'json',
type: 'GET',
url: 'auth',
beforeSend: function (xhr) {
xhr.setRequestHeader('Password', getPassword());
},
success: function (data) {
saveCredentials(data, password);
}
});
}
// @save credentials
function saveCredentials(data, password) {
if (!supportsSessionStorage()) {
@ -232,7 +205,7 @@
$.each(data, function (i, item) {
var caption;
var label;
if ((item.editable == false)) {
if ((item.editable == false || read_only)) {
caption = 'View';
label = '<span class="label label-default">Read</span>';
} else {
@ -291,7 +264,7 @@
},
success: function (text) {
var disabled = '';
if ((item.editable == false)) {
if ((item.editable == false || read_only)) {
disabled = 'disabled="disabled"';
}
@ -334,7 +307,6 @@
// @show widgets
function statWidgets() {
var widgets = $('#statWidgets');
updateCredentials();
$(widgets).empty().hide();
var data;
if (!supportsSessionStorage()) {
@ -376,7 +348,7 @@
});
$('#statWidgets .left,#statWidgets .right').wrapAll('<li class="stat-box pull-right"><div class="widget"></div></li>');
$(widgets).show();
window.setTimeout(statWidgets, 10000);
stat_timeout = window.setTimeout(statWidgets, 10000);
}
// @opem modal with target form enabled
$(document).on('click', '[data-toggle="modal"]', function (e) {
@ -704,8 +676,8 @@
'" id="_sym_' + item.symbol + '"></span></td>' +
'<td data-order="' + item.frequency + '">' + item.frequency + '</td>' +
'<td data-order="' + item.time + '">' + Number(item.time).toFixed(2) + 'ms</td>' +
'<td><button type="button" class="btn btn-primary btn-sm">Save</button></td>' +
'</tr>');
'<td><button type="button" class="btn btn-primary btn-sm ' + btn_class +
'">Save</button></td></tr>');
});
});
$('<tbody/>', {
@ -1002,8 +974,8 @@
return e.html;
}).join('') +
'<br><div class="form-group">' +
'<button class="btn btn-primary" ' +
'type="submit">Save actions</button></div></form>');
'<button class="btn btn-primary ' + btn_class +
'" type="submit">Save actions</button></div></form>');
}
});
}
@ -1032,7 +1004,6 @@
alertMessage('alert-modal alert-error', data.statusText);
}
});
getMapById('update');
return false;
});
// @catch changes of file upload form
@ -1121,17 +1092,6 @@
displayUI();
return;
}
$.ajax({
type: 'GET',
url: 'stat',
jsonp: false,
success: function () {
saveCredentials({}, 'nopassword');
$(dialog).hide();
$(backdrop).hide();
displayUI();
},
});
var nav = $('#navBar');
var ui = $('#mainUI');
var dialog = $('#connectDialog');
@ -1141,7 +1101,7 @@
$(dialog).show();
$('#connectHost').focus();
$(backdrop).show();
$(document).on('submit', '#connectForm', function (e) {
$('#connectForm').one('submit', function (e) {
e.preventDefault();
var password = $('#connectPassword').val();
document.getElementById('connectPassword').value = '';
@ -1160,6 +1120,17 @@
$('.form-group').addClass('error');
});
} else {
if (data.read_only) {
read_only = true;
btn_class = "disabled";
$('#learning_nav').parent().addClass('disabled');
}
else {
read_only = false;
btn_class = "";
$('#learning_nav').parent().removeClass('disabled')
}
saveCredentials(data, password);
$(dialog).hide();
$(backdrop).hide();

6
src/controller.c

@ -442,8 +442,8 @@ rspamd_controller_check_forwarded (struct rspamd_controller_session *session,
}
/* Check for password if it is required by configuration */
static gboolean rspamd_controller_check_password(
struct rspamd_http_connection_entry *entry,
static gboolean
rspamd_controller_check_password (struct rspamd_http_connection_entry *entry,
struct rspamd_controller_session *session,
struct rspamd_http_message *msg, gboolean is_enable)
{
@ -678,6 +678,8 @@ rspamd_controller_handle_auth (struct rspamd_http_connection_entry *conn_ent,
st->messages_scanned), "scanned", 0, false);
ucl_object_insert_key (obj, ucl_object_fromint (
st->messages_learned), "learned", 0, false);
ucl_object_insert_key (obj, ucl_object_frombool (!session->is_enable),
"read_only", 0, false);
rspamd_controller_send_ucl (conn_ent, obj);
ucl_object_unref (obj);

Loading…
Cancel
Save