mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 07:59:35 +00:00
* Added host alert historical flow url filter for attacker and victim * Added error toast on invalid configuration import #9007
199 lines
No EOL
7 KiB
Text
199 lines
No EOL
7 KiB
Text
{#
|
|
(C) 2020-23 - ntop.org
|
|
|
|
This is the template for the manage configurations page.
|
|
#}
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="card card-shadow">
|
|
<div class="card-body">
|
|
<div class="radio-list">
|
|
{% for key, config in pairsByField(manage_configurations.configuration_items, 'order', asc) do %}
|
|
<div class="form-check">
|
|
<input class="form-check-input" {{ (config.key==manage_configurations.selected_item
|
|
and 'checked' or '' ) }} type="radio" name="configuration" id="{{key}}-radio"
|
|
value="{{config.key}}">
|
|
<label class="form-check-label" for="{{key}}-radio">
|
|
{{config.label}}
|
|
</label>
|
|
</div>
|
|
{% if key == 'all' then %}
|
|
<hr> {% end %}
|
|
{% end %}
|
|
</div>
|
|
</div>
|
|
<div class="card-footer">
|
|
<button id="btn-import" data-bs-toggle="modal" data-bs-target="#import-modal" type="submit"
|
|
value="import" class="btn btn-primary">
|
|
<i class='fas fa-file-import'></i>
|
|
<span>{{ i18n("import") }}</span>
|
|
</button>
|
|
<a id="btn-export" download="{{ manage_configurations.selected_item }}_config.json"
|
|
class="btn btn-primary"
|
|
href="{{ ntop.getHttpPrefix() }}/lua/rest/v2/export/{{ manage_configurations.selected_item }}/config.lua?download=1">
|
|
<i class='fas fa-file-export'></i>
|
|
<span>{{ i18n("export") }}</span>
|
|
</a>
|
|
<button id="btn-factory-reset" data-bs-target='#reset-modal' data-bs-toggle="modal"
|
|
class="btn btn-danger">
|
|
<i class="fas fa-undo-alt"></i> {{ i18n("factory_reset")}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
{% if true then %}
|
|
<div class="notes bg-light border">
|
|
<b>{{ i18n('notes') }}</b>
|
|
<p class="mb-1">{{ i18n('manage_configurations.snmp_config_moved') }}</p>
|
|
</div>
|
|
{% end %}
|
|
</div>
|
|
</div>
|
|
|
|
{*
|
|
template_utils.gen("pages/modals/scripts_config/import_modal.html", {
|
|
dialog={
|
|
id = "import-modal",
|
|
title = i18n("manage_configurations.import_modal.title", {import_element =
|
|
manage_configurations.configuration_items[manage_configurations.selected_item].label}),
|
|
label = "",
|
|
message = i18n("host_pools.config_import_message"),
|
|
cancel = i18n("cancel"),
|
|
apply = i18n("apply"),
|
|
}
|
|
})
|
|
*}
|
|
|
|
{*
|
|
template_utils.gen("modal_confirm_dialog.html", {
|
|
dialog={
|
|
id = "reset-modal",
|
|
message = i18n('manage_configurations.factory_reset.body', {
|
|
reset_element = manage_configurations.configuration_items[manage_configurations.selected_item].label
|
|
}),
|
|
title = i18n("manage_configurations.factory_reset.title", {
|
|
reset_element = manage_configurations.configuration_items[manage_configurations.selected_item].label
|
|
}),
|
|
confirm = i18n("factory_reset"),
|
|
custom_alert_class = 'alert alert-danger',
|
|
confirm_button = 'btn-danger'
|
|
}
|
|
})
|
|
*}
|
|
|
|
<script type="text/javascript">
|
|
|
|
const importCSRF = "{{ ntop.getRandomCSRFValue() }}";
|
|
|
|
i18n_ext.invalid_file = "{{ i18n('invalid_file') }}"
|
|
|
|
i18n_ext.manage_configurations = { messagges: {} };
|
|
|
|
i18n_ext.manage_configurations.messagges.reset_success = "{{ i18n('manage_configurations.messages.reset_success') }}";
|
|
i18n_ext.manage_configurations.messagges.reset_all_success = "{* i18n('manage_configurations.messages.reset_all_success', {product=info.product}) *}";
|
|
|
|
const setImportExportButtonLabels = (key) => {
|
|
|
|
$(`#btn-import span, #btn-confirm-import`).text((key == 'all') ? i18n('restore') : i18n('import'));
|
|
$(`#btn-export span`).text((key == 'all') ? i18n('backup') : i18n('export'));
|
|
|
|
if (key == 'all') {
|
|
$(`.import-title`).hide();
|
|
$(`.restore-title`).show();
|
|
}
|
|
else {
|
|
$(`.import-title`).show();
|
|
$(`.restore-title`).hide();
|
|
}
|
|
|
|
}
|
|
|
|
const updateExportLink = (key) => {
|
|
|
|
if (key === undefined) {
|
|
console.warn("A key must be provided!");
|
|
return;
|
|
}
|
|
|
|
// create a filename for the selectec config
|
|
const filename = `${key}_config.json`;
|
|
const href = new URL(`/lua/rest/v2/export/${key}/config.lua`, location.origin);
|
|
href.searchParams.set('download', '1');
|
|
|
|
// update the export button link
|
|
$(`#btn-export`)
|
|
.attr("download", filename)
|
|
.attr("href", href.toString());
|
|
}
|
|
|
|
$(`input[name='configuration']`).change(function () {
|
|
const key = $(this).val();
|
|
let label = $(this).parent("div").find("label").text();
|
|
if (label.indexOf('(') >= 0) label = label.substr(0, label.indexOf('('));
|
|
|
|
$(`.selected-item`).text((key == 'all') ? 'ntopng' : label);
|
|
|
|
setImportExportButtonLabels(key);
|
|
updateExportLink(key);
|
|
});
|
|
|
|
$(`#btn-confirm-action_reset-modal`).click(async function () {
|
|
|
|
$(this).attr("disabled", "disabled");
|
|
const key = $(`input[name='configuration']:checked`).val();
|
|
|
|
try {
|
|
const request = await fetch(`${http_prefix}/lua/rest/v2/reset/${key}/config.lua`);
|
|
const response = await request.json();
|
|
|
|
// check if the request failed
|
|
if (response.rc < 0) {
|
|
return;
|
|
}
|
|
|
|
const body = (key == 'all') ? i18n_ext.manage_configurations.messagges.reset_all_success : i18n_ext.manage_configurations.messagges.reset_success;
|
|
|
|
ToastUtils.showToast({
|
|
id: 'reset-configuration-alert',
|
|
level: 'success',
|
|
title: i18n('success'),
|
|
body: body,
|
|
delay: 2000
|
|
});
|
|
|
|
$(`#reset-modal`).modal('hide');
|
|
|
|
if ($(`.modal-backdrop`).length > 0) $(`.modal-backdrop`).remove()
|
|
}
|
|
catch (exception) {
|
|
console.error("Exception:", exception);
|
|
}
|
|
finally {
|
|
$(this).removeAttr("disabled");
|
|
}
|
|
});
|
|
|
|
$("#btn-confirm-import").click(() => $("#import-modal").modal("hide"));
|
|
|
|
// configure import config modal
|
|
NtopUtils.importModalHelper({
|
|
loadConfigXHR: (jsonConf) => {
|
|
const key = $(`input[name='configuration']:checked`).val();
|
|
|
|
let json_str = jsonConf;
|
|
|
|
/* Cleanup configuation to avoid huge uploads */
|
|
let conf = JSON.parse(json_str);
|
|
if (conf && conf['modules'] && conf['modules']['all'] &&
|
|
conf['modules']['all']['ntopng.prefs.config_save_backup']) {
|
|
delete conf['modules']['all']['ntopng.prefs.config_save_backup'];
|
|
json_str = JSON.stringify(conf);
|
|
}
|
|
|
|
return $.post(`${http_prefix}/lua/rest/v2/import/${key}/config.lua`, {
|
|
JSON: json_str,
|
|
csrf: importCSRF
|
|
});
|
|
}
|
|
});
|
|
</script> |