mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-27 07:44:35 +02:00
Merge remote-tracking branch 'origin/develop' into ent-7427-nexcon-datos-de-monitorizacion-con-origen-en-netflow
This commit is contained in:
commit
4adaf31a5a
@ -6,21 +6,22 @@
|
||||
#
|
||||
# (c) A. Kevin Rojas <kevin.rojas@pandorafms.com>
|
||||
#
|
||||
# Edited in 2023 by Alejandro Sánchez <alejandro.sanchez@pandorafms.com>
|
||||
#
|
||||
# TO DO LIST:
|
||||
# - Enable child services detection (Windows)
|
||||
# - Make CPU/Memory usage available for child services (Windows)
|
||||
#
|
||||
###################################################
|
||||
|
||||
try:
|
||||
from sys import argv
|
||||
from sys import stderr
|
||||
from sys import exit
|
||||
import psutil
|
||||
from subprocess import Popen
|
||||
from subprocess import PIPE
|
||||
from subprocess import DEVNULL
|
||||
from subprocess import getstatusoutput
|
||||
import psutil
|
||||
except ModuleNotFoundError as err:
|
||||
print("{} error: {}. Exiting...".format(argv[0], err), file=stderr)
|
||||
exit(1)
|
||||
@ -28,99 +29,100 @@ except ModuleNotFoundError as err:
|
||||
module_list = []
|
||||
VERSION = "1.2"
|
||||
|
||||
def win_service(servicelist, option=False, memcpu=False):
|
||||
|
||||
#########################################################################################
|
||||
# Powershell class
|
||||
#########################################################################################
|
||||
class PSCheck:
|
||||
@staticmethod
|
||||
def check_service(servicename, option=False, memcpu=False):
|
||||
"""Check services with powershell by parsing their DisplayName. Returns a dict\
|
||||
list with the name of the service and a boolean with its status.\n
|
||||
Requires service name (case insensitive)."""
|
||||
pscall = Popen(["powershell", "Get-Service", "-Name", "'*"+ str(servicename) + "*'",
|
||||
"|", "Select-Object", "-ExpandProperty", "Name"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
result = pscall.communicate()
|
||||
result = str(result[0]).strip().split("\n")
|
||||
procname = ''
|
||||
if result != '':
|
||||
output = []
|
||||
for element in result:
|
||||
if element != '':
|
||||
# Get process name
|
||||
procname = PSCheck.get_serviceprocess(element)
|
||||
# Get process status
|
||||
parstatus = PSCheck.getstatus(element)
|
||||
if memcpu and parstatus == 1:
|
||||
usage = get_memcpu(str(procname), str(element))
|
||||
output += usage
|
||||
# Generate module with name and status
|
||||
parent = service_module(str(element), parstatus)
|
||||
output += parent
|
||||
if option:
|
||||
children = PSCheck.getchildren(element, memcpu)
|
||||
if isinstance(children, list) and len(children) > 1:
|
||||
for child in children:
|
||||
output += child
|
||||
else:
|
||||
output += children
|
||||
else:
|
||||
next
|
||||
|
||||
if output and element and procname:
|
||||
return ({"name" : element, "process" : procname, "modules": output})
|
||||
modules_default = []
|
||||
modules_percentage=[]
|
||||
## take all services
|
||||
services=psutil.win_service_iter()
|
||||
for service in services:
|
||||
if service.name() in servicelist:
|
||||
serv=service.as_dict()
|
||||
if serv['status']=='running':
|
||||
value=1
|
||||
else:
|
||||
return (None)
|
||||
value=0
|
||||
|
||||
@staticmethod
|
||||
def getchildren(servicename, memcpu=False):
|
||||
"""Gets Dependent services of a given Windows service"""
|
||||
pschild = Popen(["powershell", "Get-Service", "-Name '" + str(servicename) +
|
||||
"' -DS", "|", "Select-Object", "-ExpandProperty", "Name"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
children = pschild.communicate()[0].strip()
|
||||
kids = []
|
||||
for child in (children.split("\n") if children != "" else []):
|
||||
status = PSCheck.getstatus(child)
|
||||
kids += service_module(str(child), status, "Service " + str(servicename) + " - Status")
|
||||
if status:
|
||||
if memcpu:
|
||||
kidsusage = get_memcpu(str(child))
|
||||
for usage in kidsusage:
|
||||
kids += usage
|
||||
## create module for each service
|
||||
parent = build_module("Service " + str(serv['name']) + " - Status", value,"generic_proc")
|
||||
modules_default +=parent
|
||||
|
||||
# memory and cpu percentage
|
||||
if memcpu:
|
||||
## process
|
||||
srv_pid = service.pid()
|
||||
process = psutil.Process(srv_pid)
|
||||
proc_name = process.name()
|
||||
##cpu
|
||||
value_cpu=process.cpu_percent(interval=0.5)
|
||||
parent = build_module("Service " + str(proc_name) + " - CPU usage", value_cpu,"generic_data")
|
||||
parent[0].update([("unit","%"),("module_parent",str(serv['name']))])
|
||||
modules_percentage +=parent
|
||||
##mem
|
||||
value_mem=process.memory_percent()
|
||||
parent = build_module("Service " + str(proc_name) + " - Memory usage", value_mem,"generic_data")
|
||||
parent[0].update([("unit","%"),("module_parent",str(serv['name']))])
|
||||
modules_percentage +=parent
|
||||
|
||||
|
||||
for module in modules_default:
|
||||
print_module(module, 1)
|
||||
if memcpu:
|
||||
for module in modules_percentage:
|
||||
print_module(module, 1)
|
||||
|
||||
def lnx_service(services_list, memcpu=False):
|
||||
"""Creates modules for Linux servers"""
|
||||
modules = []
|
||||
sysctl = getstatusoutput("command -v systemctl")[0]
|
||||
servic = getstatusoutput("command -v service")[0]
|
||||
for srvc in services_list:
|
||||
status = None
|
||||
if sysctl == 0:
|
||||
### Systemd available
|
||||
syscall = Popen(["systemctl", "show", "-pLoadState", "-pActiveState", srvc], stdout=PIPE,
|
||||
stdin=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()
|
||||
srvstatus = result[0].strip().lower().split("\n")
|
||||
if srvstatus[0] == "loadstate=not-found":
|
||||
next
|
||||
else:
|
||||
if srvstatus[1] == "activestate=active":
|
||||
modules += build_module("Service " + srvc + " - Status", 1, "generic_proc")
|
||||
status = 1
|
||||
elif srvstatus[1] == "activestate=inactive":
|
||||
modules += build_module("Service " +srvc+ " - Status", 0, "generic_proc")
|
||||
status = 0
|
||||
elif sysctl != 0 and servic == 0:
|
||||
### Systemd not available, switch to service command
|
||||
syscall = Popen(["service", srvc, "status"], stdout=PIPE,
|
||||
stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()[0].lower()
|
||||
if "is running" in result:
|
||||
modules += build_module("Service " + srvc + " - Status", 1, "generic_proc")
|
||||
status = 1
|
||||
elif "is stopped" in result:
|
||||
modules += build_module("Service " +srvc+ " - Status", 0, "generic_proc")
|
||||
status = 0
|
||||
else:
|
||||
next
|
||||
return kids
|
||||
else:
|
||||
print("No systemd or service commands available. Exiting...", file=stderr)
|
||||
exit()
|
||||
if status:
|
||||
module_list.append(srvc)
|
||||
if memcpu:
|
||||
modules += get_memcpu(srvc, None)
|
||||
|
||||
@staticmethod
|
||||
def getstatus(servicename):
|
||||
"""Gets the status of a given Windows service"""
|
||||
running = Popen(["powershell", "Get-Service", "-Name '" + str(servicename) +
|
||||
"' |", "Select-Object", "-ExpandProperty", "Status"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
status = running.communicate()[0].strip()
|
||||
return int(status == "Running")
|
||||
|
||||
@staticmethod
|
||||
def get_serviceprocess(servicename):
|
||||
"""Gets name of the process of the service"""
|
||||
service = psutil.win_service_get(servicename)
|
||||
srv_pid = service.pid()
|
||||
process = psutil.Process(srv_pid)
|
||||
proc_name = process.name()
|
||||
return proc_name
|
||||
for m in modules:
|
||||
print_module(m, 1)
|
||||
|
||||
|
||||
#########################################################################################
|
||||
# Services creation
|
||||
#########################################################################################
|
||||
|
||||
def service_module(name, value, parent=None):
|
||||
def build_module(name, value, module_type, parent=None):
|
||||
#print ("service_module BEGIN "+str(now(0,1)))
|
||||
module = [{
|
||||
"name" : "Service "+ name + " - Status",
|
||||
"type" : "generic_proc",
|
||||
"name" : name ,
|
||||
"type" : module_type,
|
||||
"value" : value,
|
||||
"module_parent" : parent,
|
||||
}]
|
||||
@ -167,74 +169,6 @@ def proc_percentbyname(procname): ############# 03/03/2020
|
||||
next
|
||||
#print ("proc_percentbyname END "+str(now(0,1)))
|
||||
return [sum(memory),sum(cpu)]
|
||||
|
||||
def win_service(servicelist, option=False, memcpu=False):
|
||||
"""Creates modules for Windows servers."""
|
||||
modules = []
|
||||
for srvc in servicelist:
|
||||
if srvc and len(srvc) > 2:
|
||||
output = PSCheck.check_service(srvc, option, memcpu)
|
||||
if output is not None and output["modules"]:
|
||||
modules += PSCheck.check_service(srvc.strip(), option, memcpu)["modules"]
|
||||
module_list.append(srvc)
|
||||
#winprocess = output["name"]
|
||||
#if memcpu == True:
|
||||
# modules += get_memcpu(winprocess) ## Only available for parent service ATM.
|
||||
else:
|
||||
next
|
||||
else:
|
||||
next
|
||||
for module in modules:
|
||||
print_module(module, 1)
|
||||
|
||||
|
||||
def lnx_service(services_list, memcpu=False):
|
||||
"""Creates modules for Linux servers"""
|
||||
modules = []
|
||||
sysctl = getstatusoutput("command -v systemctl")[0]
|
||||
servic = getstatusoutput("command -v service")[0]
|
||||
for srvc in services_list:
|
||||
status = None
|
||||
if sysctl == 0:
|
||||
### Systemd available
|
||||
syscall = Popen(["systemctl", "show", "-pLoadState", "-pActiveState", srvc], stdout=PIPE,
|
||||
stdin=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()
|
||||
srvstatus = result[0].strip().lower().split("\n")
|
||||
if srvstatus[0] == "loadstate=not-found":
|
||||
next
|
||||
else:
|
||||
if srvstatus[1] == "activestate=active":
|
||||
modules += service_module(srvc, 1)
|
||||
status = 1
|
||||
elif srvstatus[1] == "activestate=inactive":
|
||||
modules += service_module(srvc, 0)
|
||||
status = 0
|
||||
elif sysctl != 0 and servic == 0:
|
||||
### Systemd not available, switch to service command
|
||||
syscall = Popen(["service", srvc, "status"], stdout=PIPE,
|
||||
stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()[0].lower()
|
||||
if "is running" in result:
|
||||
modules += service_module(srvc, 1)
|
||||
status = 1
|
||||
elif "is stopped" in result:
|
||||
modules += service_module(srvc, 0)
|
||||
status = 0
|
||||
else:
|
||||
next
|
||||
else:
|
||||
print("No systemd or service commands available. Exiting...", file=stderr)
|
||||
exit()
|
||||
if status:
|
||||
module_list.append(srvc)
|
||||
if memcpu:
|
||||
modules += get_memcpu(srvc, None)
|
||||
|
||||
for m in modules:
|
||||
print_module(m, 1)
|
||||
|
||||
|
||||
#########################################################################################
|
||||
# print_module function
|
||||
#########################################################################################
|
||||
@ -356,6 +290,7 @@ def main():
|
||||
service_list = ["MySQL", "postgresql", "pgsql", "oracle", "MSSQL", "IISADMIN",
|
||||
"apache", "nginx", "W3svc", "NTDS", "Netlogon", "DNS", "MSExchangeADTopology",
|
||||
"MSExchangeServiceHost", "MSExchangeSA", "MSExchangeTransport"]
|
||||
|
||||
discover(OS, service_list)
|
||||
elif psutil.LINUX:
|
||||
OS = "Linux"
|
||||
|
@ -155,6 +155,8 @@ INSERT INTO `twelcome_tip_file` (`twelcome_tip_file`, `filename`, `path`) VALUES
|
||||
(20, 'zoom_en_graficas.png', 'images/tips/'),
|
||||
(22, 'politica_de_pass.png', 'images/tips/');
|
||||
|
||||
ALTER TABLE `tusuario` ADD COLUMN `show_tips_startup` TINYINT UNSIGNED NOT NULL DEFAULT 1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tfavmenu_user` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`id_user` VARCHAR(255) NOT NULL,
|
||||
|
@ -407,7 +407,6 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
||||
|
||||
|
||||
// User.
|
||||
// $headerUserImage = (is_user_admin($config['id_user']) === true) ? 'images/header_user_admin_green.png' : 'images/header_user_green.png';
|
||||
$headerUser = [];
|
||||
$headerUser[] = html_print_image(
|
||||
'images/edit_user@header.svg',
|
||||
|
@ -406,9 +406,9 @@ $filterTable->data[1][0] = html_print_submit_button(
|
||||
);
|
||||
|
||||
// Print filter table.
|
||||
echo '<form method=\'post\' action=\'index.php?sec=gagente&sec2=godmode/agentes/modificar_agente\'>';
|
||||
$form = '<form method=\'post\' action=\'index.php?sec=gagente&sec2=godmode/agentes/modificar_agente\'>';
|
||||
ui_toggle(
|
||||
html_print_table($filterTable, true),
|
||||
$form.html_print_table($filterTable, true).'</form>',
|
||||
'<span class="subsection_header_title">'.__('Filter').'</span>',
|
||||
__('Filter'),
|
||||
'filter',
|
||||
@ -418,7 +418,6 @@ ui_toggle(
|
||||
'white-box-content no_border',
|
||||
'filter-datatable-main box-flat white_table_graph fixed_filter_bar'
|
||||
);
|
||||
echo '</form>';
|
||||
|
||||
// Data table.
|
||||
$selected = true;
|
||||
|
@ -1071,27 +1071,50 @@ if ((bool) check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === tr
|
||||
echo '</form>';
|
||||
}
|
||||
|
||||
$modalCreateModule = '<form name="create_module_form" method="post">';
|
||||
$input_type = html_print_input_hidden('edit_module', 1, true);
|
||||
$input_type .= html_print_select(
|
||||
policies_type_modules_availables($sec2),
|
||||
'moduletype',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'max-width:300px;'
|
||||
// Form table for Module creation.
|
||||
$createModuleTable = new stdClass();
|
||||
$createModuleTable->id = 'module_creation_modal';
|
||||
$createModuleTable->class = 'filter-table-adv';
|
||||
$createModuleTable->data = [];
|
||||
|
||||
$createModuleTable->data[0][] = html_print_label_input_block(
|
||||
__('Select module type'),
|
||||
html_print_select(
|
||||
policies_type_modules_availables($sec2),
|
||||
'moduletype',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'max-width:300px;'
|
||||
)
|
||||
);
|
||||
|
||||
$modalCreateModule .= $input_type;
|
||||
$createModuleTable->data[1][] = html_print_label_input_block(
|
||||
'',
|
||||
html_print_anchor(
|
||||
[
|
||||
'href' => 'https://pandorafms.com/Library/Library/',
|
||||
'class' => 'color-black-grey invert_filter',
|
||||
'content' => __('Get more modules on Monitoring Library'),
|
||||
],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$createModuleFormTable = html_print_input_hidden('edit_module', 1, true);
|
||||
$createModuleFormTable .= html_print_table($createModuleTable, true);
|
||||
// Form definition.
|
||||
$modalCreateModule = '<form name="create_module_form" method="post">';
|
||||
$modalCreateModule .= $createModuleFormTable;
|
||||
$modalCreateModule .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'class' => 'action-buttons-right-forced',
|
||||
'content' => html_print_submit_button(
|
||||
__('Create'),
|
||||
'create_module',
|
||||
|
@ -444,7 +444,8 @@ $tableBasicThresholds->data = [];
|
||||
$tableBasicThresholds->rowclass['caption_warning_threshold'] = 'field_half_width pdd_t_10px';
|
||||
$tableBasicThresholds->rowclass['warning_threshold'] = 'field_half_width';
|
||||
$tableBasicThresholds->data['caption_warning_threshold'][0] .= __('Warning threshold').' ';
|
||||
if ($edit_module === false && (isset($stringTypeModule) === false || $stringTypeModule === false)) {
|
||||
|
||||
if ((isset($stringTypeModule) === false || $stringTypeModule === false)) {
|
||||
$tableBasicThresholds->data['caption_warning_threshold'][0] .= '<span class="font_11" id="caption_minmax_warning">('.__('Min / Max').')</span>';
|
||||
$tableBasicThresholds->data['warning_threshold'][0] .= html_print_input_text(
|
||||
'min_warning',
|
||||
@ -482,7 +483,7 @@ if ($edit_module === false && (isset($stringTypeModule) === false || $stringType
|
||||
);
|
||||
}
|
||||
|
||||
if ($edit_module === false && isset($stringTypeModule) === true && $stringTypeModule === true) {
|
||||
if (isset($stringTypeModule) === true && $stringTypeModule === true) {
|
||||
$basicThresholdsIntervalWarning = [];
|
||||
$basicThresholdsIntervalWarning[] = '<span>'.__('Inverse interval').'</span>';
|
||||
$basicThresholdsIntervalWarning[] = html_print_checkbox_switch(
|
||||
@ -531,7 +532,7 @@ $tableBasicThresholds->data['switch_warning_threshold'][0] .= html_print_div(
|
||||
$tableBasicThresholds->rowclass['caption_critical_threshold'] = 'field_half_width pdd_t_10px';
|
||||
$tableBasicThresholds->rowclass['critical_threshold'] = 'field_half_width';
|
||||
$tableBasicThresholds->data['caption_critical_threshold'][0] .= __('Critical threshold').' ';
|
||||
if ($edit_module === false && (isset($stringTypeModule) === false || $stringTypeModule === false)) {
|
||||
if ((isset($stringTypeModule) === false || $stringTypeModule === false)) {
|
||||
$tableBasicThresholds->data['caption_critical_threshold'][0] .= '<span class="font_11" id="caption_minmax_critical">('.__('Min / Max').')</span>';
|
||||
$tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text(
|
||||
'min_critical',
|
||||
@ -569,7 +570,7 @@ if ($edit_module === false && (isset($stringTypeModule) === false || $stringType
|
||||
);
|
||||
}
|
||||
|
||||
if ($edit_module === false && isset($stringTypeModule) === true && $stringTypeModule === true) {
|
||||
if (isset($stringTypeModule) === true && $stringTypeModule === true) {
|
||||
$basicThresholdsIntervalCritical = [];
|
||||
$basicThresholdsIntervalCritical[] = '<span>'.__('Inverse interval').'</span>';
|
||||
$basicThresholdsIntervalCritical[] = html_print_checkbox_switch(
|
||||
@ -1906,77 +1907,50 @@ $(document).ready (function () {
|
||||
|
||||
$('.switch_radio_button label').on('click', function(){
|
||||
var thisLabel = $(this).attr('for');
|
||||
$('#'+thisLabel).attr('checked', 'checked');
|
||||
$('#'+thisLabel).siblings().attr('checked', false);
|
||||
$('#'+thisLabel).prop('checked', true);
|
||||
$('#'+thisLabel).siblings().prop('checked', false);
|
||||
|
||||
if ($('#radius-warning_inverse').prop('checked') === true) {
|
||||
//$('#percentage_warning').hide();
|
||||
$("#svg_dinamic").show();
|
||||
}
|
||||
|
||||
if ($('#radius-critical_inverse').prop('checked') === true) {
|
||||
//$('#percentage_critical').hide();
|
||||
if ($('#radius-percentage_warning').prop('checked') === true || $('#radius-percentage_critical').prop('checked') === true) {
|
||||
$("#svg_dinamic").hide();
|
||||
} else {
|
||||
paint_graph_values();
|
||||
$("#svg_dinamic").show();
|
||||
}
|
||||
|
||||
if ($('#radius-percentage_warning').prop('checked') === true) {
|
||||
//$('#warning_inverse').hide();
|
||||
$("#svg_dinamic").hide();
|
||||
$('#radius-warning_inverse').hide();
|
||||
$('#label-radius-warning_inverse').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-warning_inverse').prop('checked') === true) {
|
||||
$('#radius-percentage_warning').hide();
|
||||
$('#label-radius-percentage_warning').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-normal_warning').prop('checked') === true) {
|
||||
$('#radius-warning_inverse').show();
|
||||
$('#label-radius-warning_inverse').show();
|
||||
$('#radius-percentage_warning').show();
|
||||
$('#label-radius-percentage_warning').show();
|
||||
}
|
||||
|
||||
|
||||
if ($('#radius-percentage_critical').prop('checked') === true) {
|
||||
//$('#critical_inverse').hide();
|
||||
$("#svg_dinamic").hide();
|
||||
$('#radius-critical_inverse').hide();
|
||||
$('#label-radius-critical_inverse').hide();
|
||||
}
|
||||
|
||||
$('#radius-warning_inverse').change (function() {
|
||||
paint_graph_values();
|
||||
if ($('#radius-warning_inverse').prop('checked') === true){
|
||||
$('#radius-percentage_warning').prop('checked', false);
|
||||
$('#percentage_warning').attr('onClick', 'return false;');
|
||||
$('#percentage_warning>em').addClass('color_666');
|
||||
} else {
|
||||
$('#percentage_warning').removeAttr('onClick');
|
||||
$('#percentage_warning>em').removeClass('color_666');
|
||||
}
|
||||
});
|
||||
if ($('#radius-critical_inverse').prop('checked') === true) {
|
||||
$('#radius-percentage_critical').hide();
|
||||
$('#label-radius-percentage_critical').hide();
|
||||
}
|
||||
|
||||
$('#radius-critical_inverse').change (function() {
|
||||
paint_graph_values();
|
||||
|
||||
if ($('#radius-critical_inverse').prop('checked') === true){
|
||||
$('#radius-percentage_critical').prop('checked', false);
|
||||
$('#percentage_critical').attr('onClick', 'return false;');
|
||||
$('#percentage_critical>em').addClass('color_666');
|
||||
} else {
|
||||
$('#percentage_critical').removeAttr('onClick');
|
||||
$('#percentage_critical>em').removeClass('color_666');
|
||||
}
|
||||
});
|
||||
|
||||
$('#radius-percentage_warning').change (function() {
|
||||
paint_graph_values();
|
||||
if ($('#radius-percentage_warning').prop('checked') === true){
|
||||
$('#radius-warning_inverse').prop('checked', false);
|
||||
$('#warning_inverse').attr('onClick', 'return false;');
|
||||
$('#warning_inverse>em').addClass('color_666');
|
||||
} else {
|
||||
$('#warning_inverse').removeAttr('onClick');
|
||||
$('#warning_inverse>em').removeClass('color_666');
|
||||
}
|
||||
});
|
||||
|
||||
$('#radius-percentage_critical').change (function() {
|
||||
paint_graph_values();
|
||||
if ($('#radius-percentage_critical').prop('checked') === true){
|
||||
$('#radius-critical_inverse').prop('checked', false);
|
||||
$('#critical_inverse').attr('onClick', 'return false;');
|
||||
$('#critical_inverse>em').addClass('color_666');
|
||||
} else {
|
||||
$('#critical_inverse').removeAttr('onClick');
|
||||
$('#critical_inverse>em').removeClass('color_666');
|
||||
}
|
||||
});
|
||||
if ($('#radius-normal_critical').prop('checked') === true) {
|
||||
$('#radius-critical_inverse').show();
|
||||
$('#label-radius-critical_inverse').show();
|
||||
$('#radius-percentage_critical').show();
|
||||
$('#label-radius-percentage_critical').show();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -2235,91 +2209,66 @@ function validate_post_process() {
|
||||
}
|
||||
}
|
||||
|
||||
//function paint graph
|
||||
//function paint graph.
|
||||
function paint_graph_values(){
|
||||
//Parse integrer
|
||||
var min_w = parseFloat($('#text-min_warning').val());
|
||||
if(min_w == '0.00'){ min_w = 0; }
|
||||
var max_w = parseFloat($('#text-max_warning').val());
|
||||
if(max_w == '0.00'){ max_w = 0; }
|
||||
var min_c = parseFloat($('#text-min_critical').val());
|
||||
if(min_c =='0.00'){ min_c = 0; }
|
||||
var max_c = parseFloat($('#text-max_critical').val());
|
||||
if(max_c =='0.00'){ max_c = 0; }
|
||||
var inverse_w = $('input:radio[name=warning_inverse]:checked').val();
|
||||
if(!inverse_w){ inverse_w = 0; }
|
||||
var inverse_c = $('input:radio[name=critical_inverse]:checked').val();
|
||||
if(!inverse_c){ inverse_c = 0; }
|
||||
if(min_w == '0.00' || isNaN(min_w)){ min_w = 0; }
|
||||
|
||||
//inicialiced error
|
||||
var max_w = parseFloat($('#text-max_warning').val());
|
||||
if(max_w == '0.00' || isNaN(max_w)){ max_w = 0; }
|
||||
|
||||
var min_c = parseFloat($('#text-min_critical').val());
|
||||
if(min_c =='0.00' || isNaN(min_c)){ min_c = 0; }
|
||||
|
||||
var max_c = parseFloat($('#text-max_critical').val());
|
||||
if(max_c =='0.00' || isNaN(max_c)){ max_c = 0; }
|
||||
|
||||
var inverse_w = $('input:radio[value=warning_inverse]:checked').val();
|
||||
if(!inverse_w){ inverse_w = 0; }
|
||||
|
||||
var inverse_c = $('input:radio[value=critical_inverse]:checked').val();
|
||||
if(!inverse_c){ inverse_c = 0; }
|
||||
|
||||
//inicialiced error.
|
||||
var error_w = 0;
|
||||
var error_c = 0;
|
||||
//messages legend
|
||||
|
||||
//messages legend.
|
||||
var legend_normal = '<?php echo __('Normal Status'); ?>';
|
||||
var legend_warning = '<?php echo __('Warning Status'); ?>';
|
||||
var legend_critical = '<?php echo __('Critical Status'); ?>';
|
||||
//messages error
|
||||
|
||||
//messages error.
|
||||
var message_error_warning = '<?php echo __('Please introduce a maximum warning higher than the minimun warning'); ?>';
|
||||
var message_error_critical = '<?php echo __('Please introduce a maximum critical higher than the minimun critical'); ?>';
|
||||
var message_error_percentage = '<?php echo __('Please introduce a positive percentage value'); ?>';
|
||||
|
||||
|
||||
//Percentage selector
|
||||
var percentage_w = $('#checkbox-percentage_warning').prop('checked');
|
||||
var percentage_c = $('#checkbox-percentage_critical').prop('checked');
|
||||
|
||||
if(percentage_w == true || percentage_c == true) {
|
||||
d3.select("#svg_dinamic rect").remove();
|
||||
//create svg
|
||||
var svg = d3.select("#svg_dinamic");
|
||||
svg.selectAll("g").remove();
|
||||
if (percentage_w === true) {
|
||||
if(max_w < 0 || min_w < 0) {
|
||||
paint_graph_status(0,0,0,0,0,0,1,0,legend_normal,legend_warning,legend_critical,message_error_percentage,message_error_percentage);
|
||||
} else {
|
||||
$("#text-max_warning").removeClass("input_error");
|
||||
$("#text-min_warning").removeClass("input_error");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(percentage_c === true) {
|
||||
if(max_c < 0 || min_c < 0) {
|
||||
paint_graph_status(0,0,0,0,0,0,0,1,legend_normal,legend_warning,legend_critical,message_error_percentage,message_error_percentage);
|
||||
} else {
|
||||
$("#text-min-critical").removeClass("input_error");
|
||||
$("#text-max_critical").removeClass("input_error");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
} else {
|
||||
$('#svg_dinamic').show();
|
||||
}
|
||||
|
||||
//if haven't error
|
||||
if(max_w == 0 || max_w > min_w){
|
||||
if(max_c == 0 || max_c > min_c){
|
||||
paint_graph_status(min_w, max_w, min_c, max_c, inverse_w,
|
||||
inverse_c, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical);
|
||||
paint_graph_status(
|
||||
min_w, max_w, min_c, max_c, inverse_w,
|
||||
inverse_c, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
} else {
|
||||
error_c = 1;
|
||||
paint_graph_status(0,0,0,0,0,0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical);
|
||||
paint_graph_status(
|
||||
0,0,0,0,0,0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
}
|
||||
} else {
|
||||
error_w = 1;
|
||||
paint_graph_status(0,0,0,0,0,0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical);
|
||||
paint_graph_status(
|
||||
0,0,0,0,0,0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
}
|
||||
}
|
||||
/* End of relationship javascript */
|
||||
|
||||
/* ]]> */
|
||||
</script>
|
||||
|
@ -672,7 +672,7 @@ foreach ($simple_alerts as $alert) {
|
||||
'[…]',
|
||||
''
|
||||
);
|
||||
$data[2] .= ' <a class="template_details patatas"
|
||||
$data[2] .= ' <a class="template_details"
|
||||
href="'.ui_get_full_url(false, false, false, false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">';
|
||||
$data[2] .= html_print_image(
|
||||
'images/details.svg',
|
||||
|
@ -61,13 +61,19 @@ if ($default_action != 0) {
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_page_header(
|
||||
ui_print_standard_header(
|
||||
__('Alert details'),
|
||||
'images/op_alerts.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
''
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Alerts'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
// TABLE DETAILS.
|
||||
|
@ -1,16 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Netflow Filter view
|
||||
*
|
||||
* @category Netflow
|
||||
* @package Pandora FMS
|
||||
* @subpackage Community
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2023 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_ui.php';
|
||||
@ -30,35 +45,25 @@ if (! check_acl($config['id_user'], 0, 'AW')) {
|
||||
|
||||
$pure = get_parameter('pure', 0);
|
||||
|
||||
// Header
|
||||
if (! defined('METACONSOLE')) {
|
||||
ui_print_page_header(
|
||||
__('Manage Netflow Filter'),
|
||||
'images/gm_netflow.png',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
);
|
||||
|
||||
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN';
|
||||
if ($is_windows) {
|
||||
ui_print_error_message(__('Not supported in Windows systems'));
|
||||
}
|
||||
} else {
|
||||
$nav_bar = [
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Manage Filters'),
|
||||
'images/gm_netflow.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => 'index.php?sec=main',
|
||||
'text' => __('Main'),
|
||||
'link' => '',
|
||||
'label' => __('Netflow'),
|
||||
],
|
||||
[
|
||||
'link' => 'index.php?sec=netf&sec2=godmode/netflow/nf_edit',
|
||||
'text' => __('Netflow filters'),
|
||||
],
|
||||
];
|
||||
],
|
||||
);
|
||||
|
||||
ui_meta_print_page_header($nav_bar);
|
||||
|
||||
ui_meta_print_header(__('Netflow filters'));
|
||||
$is_windows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
|
||||
if ($is_windows === true) {
|
||||
ui_print_error_message(__('Not supported in Windows systems'));
|
||||
}
|
||||
|
||||
$delete = (bool) get_parameter('delete');
|
||||
@ -190,30 +195,37 @@ foreach ($filters as $filter) {
|
||||
|
||||
if (check_acl_restricted_all($config['id_user'], $filter['id_group'], 'AW')) {
|
||||
$table->cellclass[][3] = 'table_action_buttons';
|
||||
$data[3] = "<a onclick='if(confirm(\"".__('Are you sure?')."\")) return true; else return false;'
|
||||
href='".$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit&delete=1&id='.$filter['id_sg']."&offset=0&pure=$pure'>".html_print_image('images/delete.svg', true, ['title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[3] = '<a onclick="if(confirm(\''.__('Are you sure?').'\')) return true; else return false;" href="'.$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit&delete=1&id='.$filter['id_sg'].'&offset=0&pure='.$pure.'">';
|
||||
$data[3] .= html_print_image('images/delete.svg', true, ['title' => __('Delete'), 'class' => 'main_menu_icon invert_filter']);
|
||||
$data[3] .= '</a>';
|
||||
}
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
|
||||
if (isset($data)) {
|
||||
echo "<form method='post' action='".$config['homeurl']."index.php?sec=netf&sec2=godmode/netflow/nf_edit&pure=$pure'>";
|
||||
$buttons = html_print_submit_button(
|
||||
__('Create filter'),
|
||||
'crt',
|
||||
false,
|
||||
['icon' => 'wand'],
|
||||
true
|
||||
);
|
||||
|
||||
// hd($filters);
|
||||
if (empty($filters) === false) {
|
||||
echo '<form id="multiple_delete" method="POST" action="'.$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit&pure='.$pure.'">';
|
||||
html_print_input_hidden('multiple_delete', 1);
|
||||
html_print_table($table);
|
||||
echo "<div class='right'>";
|
||||
|
||||
html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"');
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
$buttons .= html_print_submit_button(__('Delete'), 'delete_btn', false, ['icon' => 'delete', 'mode' => 'secondary', 'form' => 'multiple_delete'], true);
|
||||
} else {
|
||||
ui_print_info_message(['no_close' => true, 'message' => __('There are no defined filters') ]);
|
||||
}
|
||||
|
||||
echo '<form method="post" action="'.$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit_form&pure='.$pure.'">';
|
||||
echo "<div class='mrgn_right_5px right'>";
|
||||
html_print_submit_button(__('Create filter'), 'crt', false, 'class="sub wand"');
|
||||
echo '</div>';
|
||||
html_print_action_buttons(
|
||||
$buttons
|
||||
);
|
||||
echo '</form>';
|
||||
|
||||
?>
|
||||
@ -221,27 +233,14 @@ echo '</form>';
|
||||
<script type="text/javascript">
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('[id^=checkbox-delete_multiple]').change(function(){
|
||||
if($(this).parent().parent().hasClass('checkselected')){
|
||||
$(this).parent().parent().removeClass('checkselected');
|
||||
$('[id^=checkbox-all_delete]').change(function() {
|
||||
if ($("input[name=all_delete]").prop("checked")) {
|
||||
$(".custom_checkbox_input").prop("checked", true);
|
||||
}
|
||||
else{
|
||||
$(this).parent().parent().addClass('checkselected');
|
||||
else {
|
||||
$(".custom_checkbox_input").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
||||
$('[id^=checkbox-all_delete]').change(function(){
|
||||
if ($("#checkbox-all_delete").prop("checked")) {
|
||||
$('[id^=checkbox-delete_multiple]').parent().parent().addClass('checkselected');
|
||||
$(".check_delete").prop("checked", true);
|
||||
}
|
||||
else{
|
||||
$('[id^=checkbox-delete_multiple]').parent().parent().removeClass('checkselected');
|
||||
$(".check_delete").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
@ -1,4 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Netflow Filter Editor.
|
||||
*
|
||||
* @category Netflow
|
||||
* @package Pandora FMS
|
||||
* @subpackage Community
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2023 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
@ -46,40 +72,28 @@ if ($id) {
|
||||
}
|
||||
}
|
||||
|
||||
// Header
|
||||
if (! defined('METACONSOLE')) {
|
||||
$buttons['edit']['text'] = '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit">'.html_print_image('images/list.png', true, ['title' => __('Filter list')]).'</a>';
|
||||
// Header Buttons.
|
||||
$buttons = [];
|
||||
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit">'.html_print_image('images/logs@svg.svg', true, ['title' => __('Filter list')]).'</a>'];
|
||||
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit_form">'.html_print_image('images/plus@svg.svg', true, ['title' => __('Add filter')]).'</a>'];
|
||||
// Header Caption.
|
||||
$headerTitle = ($id) ? __('Update filter') : __('Create filter');
|
||||
|
||||
$buttons['add']['text'] = '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit_form">'.html_print_image('images/add_mc.png', true, ['title' => __('Add filter')]).'</a>';
|
||||
|
||||
ui_print_page_header(
|
||||
__('Netflow Filter'),
|
||||
'images/gm_netflow.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
$buttons
|
||||
);
|
||||
} else {
|
||||
$nav_bar = [
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
$headerTitle,
|
||||
'images/gm_netflow.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
$buttons,
|
||||
[
|
||||
[
|
||||
'link' => 'index.php?sec=main',
|
||||
'text' => __('Main'),
|
||||
'link' => '',
|
||||
'label' => __('Netflow'),
|
||||
],
|
||||
[
|
||||
'link' => 'index.php?sec=netf&sec2=godmode/netflow/nf_edit',
|
||||
'text' => __('Netflow filters'),
|
||||
],
|
||||
[
|
||||
'link' => 'index.php?sec=netf&sec2=godmode/netflow/nf_edit_form',
|
||||
'text' => __('Add filter'),
|
||||
],
|
||||
];
|
||||
|
||||
ui_meta_print_page_header($nav_bar);
|
||||
|
||||
ui_meta_print_header(__('Netflow filters'));
|
||||
}
|
||||
],
|
||||
);
|
||||
|
||||
if ($id) {
|
||||
$filter = netflow_filter_get_filter($id);
|
||||
@ -143,7 +157,7 @@ if ($update) {
|
||||
'traffic_warning' => $traffic_warning,
|
||||
];
|
||||
|
||||
// Save filter args
|
||||
// Save filter args.
|
||||
$values['filter_args'] = netflow_get_filter_arguments($values, true);
|
||||
|
||||
$result = db_process_sql_update('tnetflow_filter', $values, ['id_sg' => $id]);
|
||||
@ -171,18 +185,14 @@ if ($create) {
|
||||
$traffic_warning = get_parameter('traffic_warning', 0);
|
||||
|
||||
$values = [
|
||||
'id_name' => $name,
|
||||
'id_group' => $assign_group,
|
||||
'ip_dst' => $ip_dst,
|
||||
'ip_src' => $ip_src,
|
||||
'dst_port' => $dst_port,
|
||||
'src_port' => $src_port,
|
||||
'aggregate' => $aggregate,
|
||||
'advanced_filter' => $advanced_filter,
|
||||
'netflow_monitoring' => $netflow_monitoring,
|
||||
'traffic_max' => $traffic_max,
|
||||
'traffic_critical' => $traffic_critical,
|
||||
'traffic_warning' => $traffic_warning,
|
||||
'id_name' => $name,
|
||||
'id_group' => $assign_group,
|
||||
'ip_dst' => $ip_dst,
|
||||
'ip_src' => $ip_src,
|
||||
'dst_port' => $dst_port,
|
||||
'src_port' => $src_port,
|
||||
'aggregate' => $aggregate,
|
||||
'advanced_filter' => $advanced_filter,
|
||||
];
|
||||
|
||||
// Save filter args
|
||||
@ -196,83 +206,8 @@ if ($create) {
|
||||
}
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'table1';
|
||||
$table->width = '100%';
|
||||
$table->border = 0;
|
||||
$table->cellspacing = 0;
|
||||
$table->cellpadding = 0;
|
||||
$table->class = 'databox filters';
|
||||
$table->style[0] = 'font-weight: bold';
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
if ($id) {
|
||||
$table->head[0] = __('Update filter');
|
||||
} else {
|
||||
$table->head[0] = __('Create filter');
|
||||
}
|
||||
|
||||
$table->head_colspan[0] = 5;
|
||||
$table->headstyle[0] = 'text-align: center';
|
||||
}
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = '<b>'.__('Name').'</b>';
|
||||
$table->data[0][1] = html_print_input_text('name', $name, false, 20, 80, true);
|
||||
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
$table->data[1][0] = '<b>'.__('Group').'</b>';
|
||||
// Fix: Netflow filters have to check RW ACL
|
||||
$table->data[1][1] = html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'RW',
|
||||
$own_info['is_admin'],
|
||||
'assign_group',
|
||||
$assign_group,
|
||||
'',
|
||||
'',
|
||||
-1,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'id_grupo',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'250px'
|
||||
);
|
||||
|
||||
if ($advanced_filter != '') {
|
||||
$filter_type = 1;
|
||||
} else {
|
||||
$filter_type = 0;
|
||||
}
|
||||
|
||||
$table->data[2][0] = '<b>'.__('Filter:').'</b>';
|
||||
$table->data[2][1] = __('Normal').' '.html_print_radio_button_extended('filter_type', 0, '', $filter_type, false, 'displayNormalFilter();', 'class="mrgn_right_40px"', true);
|
||||
$table->data[2][1] .= __('Advanced').' '.html_print_radio_button_extended('filter_type', 1, '', $filter_type, false, 'displayAdvancedFilter();', 'class="mrgn_right_40px"', true);
|
||||
|
||||
$table->data[3][0] = __('Dst Ip').ui_print_help_tip(__('Destination IP. A comma separated list of destination ip. If we leave the field blank, will show all ip. Example filter by ip:<br>25.46.157.214,160.253.135.249'), true);
|
||||
$table->data[3][1] = html_print_input_text('ip_dst', $ip_dst, false, 40, 80, true);
|
||||
|
||||
$table->data[4][0] = __('Src Ip').ui_print_help_tip(__('Source IP. A comma separated list of source ip. If we leave the field blank, will show all ip. Example filter by ip:<br>25.46.157.214,160.253.135.249'), true);
|
||||
$table->data[4][1] = html_print_input_text('ip_src', $ip_src, false, 40, 80, true);
|
||||
|
||||
$table->data[5][0] = __('Dst Port').ui_print_help_tip(__('Destination port. A comma separated list of destination ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:<br>80,22'), true);
|
||||
$table->data[5][1] = html_print_input_text('dst_port', $dst_port, false, 40, 80, true);
|
||||
|
||||
$table->data[6][0] = __('Src Port').ui_print_help_tip(__('Source port. A comma separated list of source ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:<br>80,22'), true);
|
||||
$table->data[6][1] = html_print_input_text('src_port', $src_port, false, 40, 80, true);
|
||||
|
||||
$table->data[7][1] = html_print_textarea('advanced_filter', 4, 40, $advanced_filter, '', true);
|
||||
|
||||
$table->data[8][0] = '<b>'.__('Aggregate by').'</b>';
|
||||
$filter_type = (empty($advanced_filter) === false) ? 1 : 0;
|
||||
$aggregate_list = [
|
||||
'srcip' => __('Src Ip Address'),
|
||||
'dstip' => __('Dst Ip Address'),
|
||||
@ -280,83 +215,249 @@ $aggregate_list = [
|
||||
'dstport' => __('Dst Port'),
|
||||
];
|
||||
|
||||
$table->data[8][1] = html_print_select($aggregate_list, 'aggregate', $aggregate, '', '', 0, true, false, true, '', false);
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'table1';
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filter-table-adv';
|
||||
$table->size = [];
|
||||
$table->size[0] = '50%';
|
||||
$table->size[1] = '50%';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data['first_line'][] = html_print_label_input_block(
|
||||
__('Name'),
|
||||
html_print_input_text(
|
||||
'name',
|
||||
$name,
|
||||
false,
|
||||
20,
|
||||
80,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data['first_line'][] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'RW',
|
||||
$own_info['is_admin'],
|
||||
'assign_group',
|
||||
$assign_group,
|
||||
'',
|
||||
'',
|
||||
-1,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'id_grupo',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'250px'
|
||||
)
|
||||
);
|
||||
|
||||
$table->data['filter_line'][] = html_print_label_input_block(
|
||||
__('Filter'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'flex',
|
||||
'content' => html_print_div(
|
||||
[
|
||||
'class' => 'flex-row-end',
|
||||
'content' => __('Normal').' '.html_print_radio_button_extended('filter_type', 0, '', $filter_type, false, 'displayNormalFilter();', 'class="mrgn_right_40px"', true),
|
||||
],
|
||||
true
|
||||
).html_print_div(
|
||||
[
|
||||
'class' => 'flex-row-end',
|
||||
'content' => __('Advanced').' '.html_print_radio_button_extended('filter_type', 1, '', $filter_type, false, 'displayAdvancedFilter();', 'class="mrgn_right_40px"', true),
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
),
|
||||
);
|
||||
|
||||
$table->data['filter_line'][] = html_print_label_input_block(
|
||||
__('Aggregate by'),
|
||||
html_print_select(
|
||||
$aggregate_list,
|
||||
'aggregate',
|
||||
$aggregate,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
$table->data['ip_line'][] = html_print_label_input_block(
|
||||
__('Dst Ip'),
|
||||
html_print_input_text(
|
||||
'ip_dst',
|
||||
$ip_dst,
|
||||
false,
|
||||
40,
|
||||
80,
|
||||
true
|
||||
).ui_print_input_placeholder(__('Destination IP. A comma separated list of destination ip. If we leave the field blank, will show all ip. Example filter by ip:<br>25.46.157.214,160.253.135.249'), true)
|
||||
);
|
||||
|
||||
$table->data['ip_line'][] = html_print_label_input_block(
|
||||
__('Src Ip'),
|
||||
html_print_input_text(
|
||||
'ip_src',
|
||||
$ip_src,
|
||||
false,
|
||||
40,
|
||||
80,
|
||||
true
|
||||
).ui_print_input_placeholder(__('Source IP. A comma separated list of source ip. If we leave the field blank, will show all ip. Example filter by ip:<br>25.46.157.214,160.253.135.249'), true)
|
||||
);
|
||||
|
||||
$table->data['ports_line'][] = html_print_label_input_block(
|
||||
__('Dst Port'),
|
||||
html_print_input_text(
|
||||
'dst_port',
|
||||
$dst_port,
|
||||
false,
|
||||
40,
|
||||
80,
|
||||
true
|
||||
).ui_print_input_placeholder(__('Destination port. A comma separated list of destination ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:<br>80,22'), true)
|
||||
);
|
||||
|
||||
$table->data['ports_line'][] = html_print_label_input_block(
|
||||
__('Src Port'),
|
||||
html_print_input_text(
|
||||
'src_port',
|
||||
$src_port,
|
||||
false,
|
||||
40,
|
||||
80,
|
||||
true
|
||||
).ui_print_input_placeholder(__('Source port. A comma separated list of source ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:<br>80,22'), true)
|
||||
);
|
||||
|
||||
$table->colspan['advanced_filters'][] = 2;
|
||||
$table->data['advanced_filters'][] = html_print_label_input_block(
|
||||
__('Advanced filters'),
|
||||
html_print_textarea('advanced_filter', 4, 40, $advanced_filter, '', true, 'w50p')
|
||||
);
|
||||
|
||||
|
||||
// Netflow server options.
|
||||
$table->data[9][0] = __('Enable Netflow monitoring').ui_print_help_tip(__('Allows you to create an agent that monitors the traffic volume of this filter. It also creates a module that measures if the traffic of any IP of this filter exceeds a certain threshold. A text type module will be created with the traffic rate for each IP within this filter every five minutes (the 10 IP\'s with the most traffic). Only available for Enterprise version.'), true);
|
||||
$table->data[9][1] = html_print_checkbox_switch(
|
||||
'netflow_monitoring',
|
||||
1,
|
||||
(bool) $netflow_monitoring,
|
||||
true,
|
||||
false,
|
||||
$table->colspan['netflow_monitoring'][] = 1;
|
||||
$table->data['netflow_server_filters'][] = html_print_label_input_block(
|
||||
__('Enable Netflow monitoring'),
|
||||
html_print_checkbox_switch(
|
||||
'netflow_monitoring',
|
||||
1,
|
||||
(bool) $netflow_monitoring,
|
||||
true,
|
||||
false,
|
||||
).ui_print_input_placeholder(
|
||||
__('Allows you to create an agent that monitors the traffic volume of this filter. It also creates a module that measures if the traffic of any IP of this filter exceeds a certain threshold. A text type module will be created with the traffic rate for each IP within this filter every five minutes (the 10 IP\'s with the most traffic). Only available for Enterprise version.'),
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[10][0] = __('Maximum traffic value of the filter').ui_print_help_tip(__('Specifies the maximum rate (in bytes/sec) of traffic in the filter. It is then used to calculate the % of maximum traffic per IP.'), true);
|
||||
$table->data[10][1] = html_print_input_number(
|
||||
[
|
||||
'step' => 1,
|
||||
'name' => 'traffic_max',
|
||||
'id' => 'traffic_max',
|
||||
'value' => $traffic_max,
|
||||
]
|
||||
$table->data['netflow_server_filters'][] = html_print_label_input_block(
|
||||
__('Maximum traffic value of the filter'),
|
||||
html_print_input_number(
|
||||
[
|
||||
'step' => 1,
|
||||
'name' => 'traffic_max',
|
||||
'id' => 'traffic_max',
|
||||
'value' => $traffic_max,
|
||||
]
|
||||
).ui_print_input_placeholder(__('Specifies the maximum rate (in bytes/sec) of traffic in the filter. It is then used to calculate the % of maximum traffic per IP.'), true)
|
||||
);
|
||||
|
||||
$table->data[11][0] = __('CRITICAL threshold for the maximum % of traffic for an IP.').ui_print_help_tip(__('If this % is exceeded by any IP within the filter, a CRITICAL status will be generated.'), true);
|
||||
$table->data[11][1] = html_print_input_number(
|
||||
[
|
||||
'step' => 1,
|
||||
'name' => 'traffic_critical',
|
||||
'id' => 'traffic_critical',
|
||||
'value' => $traffic_critical,
|
||||
]
|
||||
$table->colspan['netflow_thresholds'][] = 1;
|
||||
$table->data['netflow_thresholds'][] = html_print_label_input_block(
|
||||
__('CRITICAL threshold for the maximum % of traffic for an IP.'),
|
||||
html_print_input_number(
|
||||
[
|
||||
'step' => 0.1,
|
||||
'name' => 'traffic_critical',
|
||||
'id' => 'traffic_critical',
|
||||
'value' => $traffic_critical,
|
||||
'size' => 40,
|
||||
'maxlength' => 80,
|
||||
]
|
||||
).ui_print_input_placeholder(__('If this % is exceeded by any IP within the filter, a CRITICAL status will be generated.'), true)
|
||||
);
|
||||
|
||||
$table->data[12][0] = __('WARNING threshold for the maximum % of traffic of an IP.').ui_print_help_tip(__('If this % is exceeded by any IP within the filter, a WARNING status will be generated.'), true);
|
||||
$table->data[12][1] = html_print_input_number(
|
||||
[
|
||||
'step' => 1,
|
||||
'name' => 'traffic_warning',
|
||||
'id' => 'traffic_warning',
|
||||
'value' => $traffic_warning,
|
||||
]
|
||||
$table->data['netflow_thresholds'][] = html_print_label_input_block(
|
||||
__('WARNING threshold for the maximum % of traffic for an IP.'),
|
||||
html_print_input_number(
|
||||
[
|
||||
'step' => 0.1,
|
||||
'name' => 'traffic_warning',
|
||||
'id' => 'traffic_warning',
|
||||
'value' => $traffic_warning,
|
||||
'size' => 40,
|
||||
'maxlength' => 80,
|
||||
]
|
||||
).ui_print_input_placeholder(__('If this % is exceeded by any IP within the filter, a WARNING status will be generated.'), true)
|
||||
);
|
||||
|
||||
|
||||
echo '<form method="post" action="'.$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit_form&pure='.$pure.'">';
|
||||
html_print_table($table);
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
$hiddens = '';
|
||||
if ($id) {
|
||||
html_print_input_hidden('update', 1);
|
||||
html_print_input_hidden('id', $id);
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Update'),
|
||||
'crt',
|
||||
false,
|
||||
['icon' => 'update'],
|
||||
true
|
||||
)
|
||||
);
|
||||
$buttonTitle = __('Update');
|
||||
$hiddens .= html_print_input_hidden('update', 1, true);
|
||||
$hiddens .= html_print_input_hidden('id', $id, true);
|
||||
} else {
|
||||
html_print_input_hidden('create', 1);
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Create'),
|
||||
'crt',
|
||||
false,
|
||||
['icon' => 'update'],
|
||||
true
|
||||
)
|
||||
);
|
||||
$buttonTitle = __('Create');
|
||||
$hiddens .= html_print_input_hidden('create', 1, true);
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
echo '<form class="max_floating_element_size" id="nf_edit_form" method="post" action="'.$config['homeurl'].'index.php?sec=netf&sec2=godmode/netflow/nf_edit_form&pure='.$pure.'">';
|
||||
echo $hiddens;
|
||||
html_print_table($table);
|
||||
echo '</form>';
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
$buttonTitle,
|
||||
'crt',
|
||||
false,
|
||||
[
|
||||
'icon' => 'upd',
|
||||
'form' => 'nf_edit_form',
|
||||
],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
var filter_type = <?php echo $filter_type; ?>;
|
||||
if (filter_type == 0) {
|
||||
displayNormalFilter ();
|
||||
}
|
||||
else {
|
||||
displayAdvancedFilter ();
|
||||
}
|
||||
});
|
||||
|
||||
function displayAdvancedFilter () {
|
||||
// Erase the normal filter
|
||||
document.getElementById("text-ip_dst").value = '';
|
||||
@ -365,13 +466,15 @@ echo '</form>';
|
||||
document.getElementById("text-src_port").value = '';
|
||||
|
||||
// Hide the normal filter
|
||||
document.getElementById("table1-3").style.display = 'none';
|
||||
document.getElementById("table1-4").style.display = 'none';
|
||||
document.getElementById("table1-5").style.display = 'none';
|
||||
document.getElementById("table1-6").style.display = 'none';
|
||||
|
||||
//document.getElementById("table1-3").style.display = 'none';
|
||||
//document.getElementById("table1-4").style.display = 'none';
|
||||
//document.getElementById("table1-5").style.display = 'none';
|
||||
//document.getElementById("table1-6").style.display = 'none';
|
||||
$("#table1-ip_line").css("display", "none");
|
||||
$("#table1-ports_line").css("display", "none");
|
||||
// Show the advanced filter
|
||||
document.getElementById("table1-7").style.display = '';
|
||||
$("#table1-advanced_filters").css("display", "table-row");
|
||||
//document.getElementById("table1-7").style.display = '';
|
||||
};
|
||||
|
||||
function displayNormalFilter () {
|
||||
@ -379,20 +482,16 @@ echo '</form>';
|
||||
document.getElementById("textarea_advanced_filter").value = '';
|
||||
|
||||
// Hide the advanced filter
|
||||
document.getElementById("table1-7").style.display = 'none';
|
||||
|
||||
//document.getElementById("table1-7").style.display = 'none';
|
||||
$("#table1-advanced_filters").css("display", "none");
|
||||
// Show the normal filter
|
||||
$("#table1-ip_line").css("display", "table-row");
|
||||
$("#table1-ports_line").css("display", "table-row");
|
||||
/*
|
||||
document.getElementById("table1-3").style.display = '';
|
||||
document.getElementById("table1-4").style.display = '';
|
||||
document.getElementById("table1-5").style.display = '';
|
||||
document.getElementById("table1-6").style.display = '';
|
||||
*/
|
||||
};
|
||||
|
||||
var filter_type = <?php echo $filter_type; ?>;
|
||||
if (filter_type == 0) {
|
||||
displayNormalFilter ();
|
||||
}
|
||||
else {
|
||||
displayAdvancedFilter ();
|
||||
}
|
||||
</script>
|
||||
|
@ -875,7 +875,7 @@ if (defined('METACONSOLE')) {
|
||||
],
|
||||
true
|
||||
);
|
||||
$form .= html_print_input_hidden('action', 'filter', true);
|
||||
$form .= html_print_input_hidden('action', 'sort_items', true);
|
||||
$form .= '</form>';
|
||||
|
||||
ui_toggle($form, __('Sort items'), '', '', false);
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* User creation / update.
|
||||
*
|
||||
@ -60,7 +59,7 @@ if ($enterprise_include === true) {
|
||||
$id = get_parameter('id', get_parameter('id_user', ''));
|
||||
// Check if we are the same user for edit or we have a proper profile for edit users.
|
||||
if ($id !== $config['id_user']) {
|
||||
if ((is_centralized() === true) || (bool) check_acl($config['id_user'], 0, 'UM') === false) {
|
||||
if ((bool) check_acl($config['id_user'], 0, 'UM') === false) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access User Management'
|
||||
@ -996,28 +995,19 @@ if (!users_is_admin() && $config['id_user'] !== $id && $new_user === false) {
|
||||
}
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'user_form_title',
|
||||
'content' => ((bool) $id === true) ? sprintf('%s [ %s ]', __('Update User'), $id) : __('Create User'),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if (!$new_user) {
|
||||
$user_id = '<div class="label_select_simple"><p class="edit_user_labels">'.__('User ID').': </p>';
|
||||
$user_id .= '<span>'.$id.'</span>';
|
||||
$user_id .= html_print_input_hidden('id_user', $id, true);
|
||||
$user_id .= '</div>';
|
||||
|
||||
$apiTokenContentElements[] = '<span style="height: 15px;font-size: 14px;">'.__('API Token').'</span>';
|
||||
$apiTokenContentElements[] = '<span style="line-height: 15px; height: 15px;font-size: 14px;">'.__('API Token').'</span>';
|
||||
$apiTokenContentElements[] = html_print_button(
|
||||
__('Renew'),
|
||||
'renew_api_token',
|
||||
false,
|
||||
sprintf(
|
||||
'javascript:renewAPIToken(\'%s\', \'%s\', \'%s\')',
|
||||
'javascript:renewAPIToken("%s", "%s", "%s")',
|
||||
__('Warning'),
|
||||
__('The API token will be renewed. After this action, the last token you were using will not work. Are you sure?'),
|
||||
'user_profile_form',
|
||||
@ -1033,7 +1023,7 @@ if (!$new_user) {
|
||||
'show_api_token',
|
||||
false,
|
||||
sprintf(
|
||||
'javascript:showAPIToken(\'%s\', \'%s\')',
|
||||
'javascript:showAPIToken("%s", "%s")',
|
||||
__('API Token'),
|
||||
base64_encode(__('Your API Token is:').' <br><span class="font_12pt bolder">'.users_get_API_token($id).'</span><br> '.__('Please, avoid share this string with others.')),
|
||||
),
|
||||
@ -1282,8 +1272,9 @@ if (is_metaconsole() === false) {
|
||||
if (is_metaconsole() === true) {
|
||||
$array_filters = get_filters_custom_fields_view(0, true);
|
||||
|
||||
$search_custom_fields_view = '<div class="label_select"><p class="edit_user_labels">'.__('Search custom field view').' '.ui_print_help_tip(__('Load by default the selected view in custom field view'), true).'</p>';
|
||||
$search_custom_fields_view .= html_print_select(
|
||||
$searchCustomFieldView = [];
|
||||
$searchCustomFieldView[] = __('Search custom field view');
|
||||
$searchCustomFieldView[] = html_print_select(
|
||||
$array_filters,
|
||||
'default_custom_view',
|
||||
$user_info['default_custom_view'],
|
||||
@ -1295,7 +1286,10 @@ if (is_metaconsole() === true) {
|
||||
true,
|
||||
'',
|
||||
false
|
||||
).'</div>';
|
||||
).ui_print_input_placeholder(
|
||||
__('Load by default the selected view in custom field view'),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$values = [
|
||||
@ -1377,6 +1371,8 @@ $home_screen .= html_print_input_text(
|
||||
false
|
||||
);
|
||||
|
||||
$home_screen = '';
|
||||
|
||||
$size_pagination = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Block size for pagination').'</p>';
|
||||
$size_pagination .= html_print_input_text(
|
||||
'block_size',
|
||||
@ -1395,19 +1391,20 @@ if ($id === $config['id_user']) {
|
||||
);
|
||||
}
|
||||
|
||||
if (enterprise_installed() && is_metaconsole() === true) {
|
||||
if (enterprise_installed() === true && is_metaconsole() === true) {
|
||||
$user_info_metaconsole_access = 'only_console';
|
||||
if (isset($user_info['metaconsole_access'])) {
|
||||
$user_info_metaconsole_access = $user_info['metaconsole_access'];
|
||||
}
|
||||
|
||||
// TODO review help tips on meta.
|
||||
$meta_access = '<div class="label_select"><p class="edit_user_labels">'.__('Metaconsole access').' './* ui_print_help_icon('meta_access', true). */ '</p>';
|
||||
$metaconsole_accesses = [
|
||||
'basic' => __('Basic'),
|
||||
'advanced' => __('Advanced'),
|
||||
];
|
||||
$meta_access .= html_print_select(
|
||||
|
||||
$outputMetaAccess = [];
|
||||
$outputMetaAccess[] = __('Metaconsole access');
|
||||
$outputMetaAccess[] = html_print_select(
|
||||
$metaconsole_accesses,
|
||||
'metaconsole_access',
|
||||
$user_info_metaconsole_access,
|
||||
@ -1417,51 +1414,9 @@ if (enterprise_installed() && is_metaconsole() === true) {
|
||||
true,
|
||||
false,
|
||||
false
|
||||
).'</div>';
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
$not_login = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Not Login').'</p>';
|
||||
$not_login .= ui_print_help_tip(
|
||||
__('The user with not login set only can access to API.'),
|
||||
true
|
||||
);
|
||||
$not_login .= html_print_checkbox_switch(
|
||||
'not_login',
|
||||
1,
|
||||
$user_info['not_login'],
|
||||
true
|
||||
).'</div>';
|
||||
|
||||
$local_user = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Local user').'</p>';
|
||||
$local_user .= ui_print_help_tip(
|
||||
__('The user with local authentication enabled will always use local authentication.'),
|
||||
true
|
||||
);
|
||||
$local_user .= html_print_checkbox_switch(
|
||||
'local_user',
|
||||
1,
|
||||
$user_info['local_user'],
|
||||
true
|
||||
).'</div>';
|
||||
|
||||
$session_time = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Session Time');
|
||||
$session_time .= ui_print_help_tip(
|
||||
__('This is defined in minutes, If you wish a permanent session should putting -1 in this field.'),
|
||||
true
|
||||
).'</p>';
|
||||
$session_time .= html_print_input_text(
|
||||
'session_time',
|
||||
$user_info['session_time'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true.false,
|
||||
false,
|
||||
'',
|
||||
'class="input_line_small"'
|
||||
).'</div>';
|
||||
*/
|
||||
$user_groups = implode(',', array_keys((users_get_groups($id, 'AR', $display_all_group))));
|
||||
|
||||
if (empty($user_groups) === false) {
|
||||
@ -1582,31 +1537,6 @@ if (empty($doubleAuthElementsContent) === false) {
|
||||
$doubleAuthentication = '';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if (isset($double_authentication)) {
|
||||
$double_authentication .= '</div>';
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$autorefresh_list_out = [];
|
||||
if (is_metaconsole() === false || is_centralized() === true) {
|
||||
$autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
|
||||
@ -1665,31 +1595,32 @@ if (isset($autorefresh_list) === false) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
enterprise_include_once('include/functions_metaconsole.php');
|
||||
|
||||
$access_node = db_get_value('metaconsole_access_node', 'tusuario', 'id_user', $id);
|
||||
|
||||
$metaconsole_agents_manager = '<div class="label_select_simple" id="metaconsole_agents_manager_div"><p class="edit_user_labels">'.__('Enable agents managment').'</p>';
|
||||
$metaconsole_agents_manager .= html_print_checkbox_switch(
|
||||
$metaconsoleAgentManager = [];
|
||||
$metaconsoleAgentManager[] = __('Enable agents managment');
|
||||
$metaconsoleAgentManager[] = html_print_checkbox_switch(
|
||||
'metaconsole_agents_manager',
|
||||
1,
|
||||
$user_info['metaconsole_agents_manager'],
|
||||
true
|
||||
).'</div>';
|
||||
);
|
||||
|
||||
$metaconsole_access_node = '<div class="label_select_simple" id="metaconsole_access_node_div"><p class="edit_user_labels">'.__('Enable node access').ui_print_help_tip(__('With this option enabled, the user will can access to nodes console'), true).'</p>';
|
||||
$metaconsole_access_node .= html_print_checkbox(
|
||||
$metaconsoleAgentManager[] = __('Enable node access').ui_print_help_tip(
|
||||
__('With this option enabled, the user will can access to nodes console'),
|
||||
true
|
||||
);
|
||||
$metaconsoleAgentManager[] = html_print_checkbox_switch(
|
||||
'metaconsole_access_node',
|
||||
1,
|
||||
$access_node,
|
||||
true
|
||||
).'</div>';
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
echo '<div class="max_floating_element_size">';
|
||||
echo '<form id="user_profile_form" name="user_profile_form" method="post" autocomplete="off" action="#">';
|
||||
|
||||
@ -1701,137 +1632,8 @@ if (!$id) {
|
||||
$user_id_create = $user_id;
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$access_or_pagination = $meta_access;
|
||||
if ($id != '' && !$is_err) {
|
||||
$div_user_info = '<div class="edit_user_info_left">'.$avatar.$user_id_create.'</div>
|
||||
<div class="edit_user_info_right">'.$user_id_update_view.$full_name.$new_pass.$new_pass_confirm.$own_pass_confirm.$global_profile.'</div>';
|
||||
} else {
|
||||
$div_user_info = '<div class="edit_user_info_left">'.$avatar.'</div>
|
||||
<div class="edit_user_info_right">'.$user_id_create.$user_id_update_view.$full_name.$new_pass.$new_pass_confirm.$global_profile.'</div>';
|
||||
}
|
||||
|
||||
echo '<div id="user_form">
|
||||
<div class="user_edit_first_row">
|
||||
<div class="edit_user_info white_box">'.$div_user_info.'</div>
|
||||
<div class="edit_user_autorefresh white_box"><p class="bolder">Extra info</p>'.$email.$phone.$not_login.$local_user.$session_time.'</div>
|
||||
</div>
|
||||
<div class="user_edit_second_row white_box">
|
||||
<div class="edit_user_options">'.$language.$access_or_pagination.$skin.$default_event_filter.$double_authentication.'</div>
|
||||
|
||||
<div class="edit_user_timezone">'.$timezone;
|
||||
|
||||
echo $search_custom_fields_view.$metaconsole_agents_manager.$metaconsole_access_node;
|
||||
|
||||
$autorefresh_show = '<p class="edit_user_labels">'._('Autorefresh').ui_print_help_tip(
|
||||
__('This will activate autorefresh in selected pages'),
|
||||
true
|
||||
).'</p>';
|
||||
$select_out = html_print_select(
|
||||
$autorefresh_list_out,
|
||||
'autorefresh_list_out[]',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width:100%'
|
||||
);
|
||||
$arrows = ' ';
|
||||
$select_in = html_print_select(
|
||||
$autorefresh_list,
|
||||
'autorefresh_list[]',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width:100%'
|
||||
);
|
||||
|
||||
$table_ichanges = '<div class="autorefresh_select">
|
||||
<div class="autorefresh_select_list_out">
|
||||
<p class="autorefresh_select_text">'.__('Full list of pages').': </p>
|
||||
<div>'.$select_out.'</div>
|
||||
</div>
|
||||
<div class="autorefresh_select_arrows" style="display:grid">
|
||||
<a href="javascript:">'.html_print_image(
|
||||
'images/darrowright_green.png',
|
||||
true,
|
||||
[
|
||||
'id' => 'right_autorefreshlist',
|
||||
'alt' => __('Push selected pages into autorefresh list'),
|
||||
'title' => __('Push selected pages into autorefresh list'),
|
||||
]
|
||||
).'</a>
|
||||
<a href="javascript:">'.html_print_image(
|
||||
'images/darrowleft_green.png',
|
||||
true,
|
||||
[
|
||||
'id' => 'left_autorefreshlist',
|
||||
'alt' => __('Pop selected pages out of autorefresh list'),
|
||||
'title' => __('Pop selected pages out of autorefresh list'),
|
||||
]
|
||||
).'</a>
|
||||
</div>
|
||||
<div class="autorefresh_select_list">
|
||||
<p class="autorefresh_select_text">'.__('List of pages with autorefresh').': </p>
|
||||
<div>'.$select_in.'</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$autorefresh_show .= $table_ichanges;
|
||||
|
||||
// Time autorefresh.
|
||||
$times = get_refresh_time_array();
|
||||
$time_autorefresh = '<div class="label_select"><p class="edit_user_labels">'.__('Time autorefresh');
|
||||
$time_autorefresh .= ui_print_help_tip(
|
||||
__('Interval of autorefresh of the elements, by default they are 30 seconds, needing to enable the autorefresh first'),
|
||||
true
|
||||
).'</p>';
|
||||
$time_autorefresh .= html_print_select(
|
||||
$times,
|
||||
'time_autorefresh',
|
||||
$user_info['time_autorefresh'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false
|
||||
).'</div>';
|
||||
|
||||
|
||||
echo '</div>
|
||||
</div>
|
||||
<div class="edit_user_autorefresh white_box">'.$autorefresh_show.$time_autorefresh.'</div>
|
||||
<div class="user_edit_third_row white_box">
|
||||
<div class="edit_user_comments">'.$comments.'</div>
|
||||
</div>';
|
||||
|
||||
if (empty($ehorus) === false) {
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'user_edit_third_row white_box',
|
||||
'content' => $ehorus,
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$access_or_pagination = $size_pagination;
|
||||
// WIP: Only for node.
|
||||
include_once 'user_management.php';
|
||||
}
|
||||
|
||||
// User management form.
|
||||
require_once 'user_management.php';
|
||||
|
||||
if ((bool) $config['admin_can_add_user'] === true) {
|
||||
html_print_csrf_hidden();
|
||||
@ -1912,7 +1714,7 @@ if (is_metaconsole() === false) {
|
||||
$(document).ready(function() {
|
||||
// Set up the picker to update target timezone and country select lists.
|
||||
$('#timezone-image').timezonePicker({
|
||||
target: '#timezone',
|
||||
target: '#timezone1',
|
||||
});
|
||||
|
||||
// Optionally an auto-detect button to trigger JavaScript geolocation.
|
||||
@ -1934,23 +1736,13 @@ if (is_metaconsole() === false) {
|
||||
var json_profile = $('#hidden-json_profile');
|
||||
/* <![CDATA[ */
|
||||
$(document).ready(function() {
|
||||
|
||||
// Set up the picker to update target timezone and country select lists.
|
||||
$('#timezone-image').timezonePicker({
|
||||
target: '#timezone1',
|
||||
});
|
||||
|
||||
// Optionally an auto-detect button to trigger JavaScript geolocation.
|
||||
$('#timezone-detect').click(function() {
|
||||
$('#timezone-image').timezonePicker('detectLocation');
|
||||
});
|
||||
|
||||
$("#right_autorefreshlist").click(function() {
|
||||
jQuery.each($("select[name='autorefresh_list_out[]'] option:selected"), function(key, value) {
|
||||
imodule_name = $(value).html();
|
||||
if (imodule_name != <?php echo "'".__('None')."'"; ?>) {
|
||||
id_imodule = $(value).attr('value');
|
||||
$("select[name='autorefresh_list[]']").append($("<option></option>").val(id_imodule).html('<i>' + imodule_name + '</i>'));
|
||||
$("select[name='autorefresh_list[]'] option").each(function() { $(this).attr("selected", true) });
|
||||
$("select[name='autorefresh_list[]']").append($("<option></option>").val(id_imodule).html('<i>' + imodule_name + '</i>').attr("selected", true));
|
||||
$("#autorefresh_list_out").find("option[value='" + id_imodule + "']").remove();
|
||||
$("#autorefresh_list").find("option[value='']").remove();
|
||||
$("#autorefresh_list").find("option[value='0']").remove();
|
||||
|
@ -395,8 +395,6 @@ if ($delete_user === true) {
|
||||
__('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
|
||||
);
|
||||
}
|
||||
|
||||
header('Refresh:1');
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('There was a problem deleting the user'));
|
||||
@ -463,43 +461,72 @@ if (($filter_group == 0) && ($filter_search == '')) {
|
||||
|
||||
$filterTable = new stdClass();
|
||||
$filterTable->width = '100%';
|
||||
$filterTable->class = 'fixed_filter_bar';
|
||||
$filterTable->class = 'filter-table-adv';
|
||||
$filterTable->rowclass[0] = '';
|
||||
$filterTable->cellstyle[0][0] = 'width:0';
|
||||
$filterTable->cellstyle[0][1] = 'width:0';
|
||||
$filterTable->data[0][0] = __('Group');
|
||||
$filterTable->data[1][0] = html_print_select_groups(
|
||||
false,
|
||||
'AR',
|
||||
true,
|
||||
'filter_group',
|
||||
$filter_group,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
$filterTable->data[0][] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
false,
|
||||
'AR',
|
||||
true,
|
||||
'filter_group',
|
||||
$filter_group,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
)
|
||||
);
|
||||
$filterTable->data[0][1] = __('Search').ui_print_help_tip(__('Search by username, fullname or email'), true);
|
||||
$filterTable->data[1][1] = html_print_input_text(
|
||||
'filter_search',
|
||||
$filter_search,
|
||||
__('Search by username, fullname or email'),
|
||||
30,
|
||||
90,
|
||||
true
|
||||
);
|
||||
$filterTable->cellstyle[1][2] = 'vertical-align: bottom';
|
||||
$filterTable->data[1][2] = html_print_submit_button(
|
||||
|
||||
$filterTable->data[0][] = html_print_label_input_block(
|
||||
__('Search'),
|
||||
'search',
|
||||
false,
|
||||
html_print_input_text(
|
||||
'filter_search',
|
||||
$filter_search,
|
||||
__('Search by username, fullname or email'),
|
||||
30,
|
||||
90,
|
||||
true
|
||||
).ui_print_input_placeholder(
|
||||
__('Search by username, fullname or email'),
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$form_filter = "<form method='post'>";
|
||||
$form_filter .= html_print_table($filterTable, true);
|
||||
$form_filter .= html_print_div(
|
||||
[
|
||||
'icon' => 'search',
|
||||
'class' => 'float-right',
|
||||
'mode' => 'secondary mini',
|
||||
'class' => 'action-buttons-right-forced',
|
||||
'content' => html_print_submit_button(
|
||||
__('Search'),
|
||||
'search',
|
||||
false,
|
||||
[
|
||||
'icon' => 'search',
|
||||
'class' => 'float-right',
|
||||
'mode' => 'secondary mini',
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
$form_filter .= '</form>';
|
||||
|
||||
ui_toggle(
|
||||
$form_filter,
|
||||
'<span class="subsection_header_title">'.__('Filter').'</span>',
|
||||
__('Filter'),
|
||||
'filter',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content no_border',
|
||||
'filter-datatable-main box-flat white_table_graph fixed_filter_bar'
|
||||
);
|
||||
|
||||
$is_management_allowed = true;
|
||||
if (is_metaconsole() === false && is_management_allowed() === false) {
|
||||
@ -520,20 +547,6 @@ if (is_metaconsole() === false && is_management_allowed() === false) {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$filterTable->width = '96%';
|
||||
$form_filter = "<form class='filters_form' method='post'>";
|
||||
$form_filter .= html_print_table($filterTable, true);
|
||||
$form_filter .= '</form>';
|
||||
ui_toggle($form_filter, __('Show Options'));
|
||||
} else {
|
||||
$form_filter = "<form method='post'>";
|
||||
$form_filter .= html_print_table($filterTable, true);
|
||||
$form_filter .= '</form>';
|
||||
echo $form_filter;
|
||||
}
|
||||
|
||||
// Urls to sort the table.
|
||||
$url_up_id = '?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=id_user&sort=up&pure='.$pure;
|
||||
$url_down_id = '?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=id_user&sort=down&pure='.$pure;
|
||||
|
@ -325,53 +325,55 @@ if ($new_user === false) {
|
||||
|
||||
$userManagementTable->data['passwordManage_table'] = html_print_table($passwordManageTable, true);
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
$userManagementTable->rowclass['captions_loginErrorUser'] = 'field_half_width w50p';
|
||||
$userManagementTable->cellclass['captions_loginErrorUser'][0] = 'wrap';
|
||||
$userManagementTable->cellclass['captions_loginErrorUser'][1] = 'wrap';
|
||||
$notLoginCheckContent = [];
|
||||
$notLoginCheckContent[] = '<span>'.__('Not Login').'</span>';
|
||||
$notLoginCheckContent[] = html_print_checkbox_switch(
|
||||
'not_login',
|
||||
1,
|
||||
$user_info['not_login'],
|
||||
true
|
||||
);
|
||||
|
||||
$userManagementTable->rowclass['captions_loginErrorUser'] = 'field_half_width w50p';
|
||||
$userManagementTable->cellclass['captions_loginErrorUser'][0] = 'wrap';
|
||||
$userManagementTable->cellclass['captions_loginErrorUser'][1] = 'wrap';
|
||||
$notLoginCheckContent = [];
|
||||
$notLoginCheckContent[] = '<span>'.__('Not Login').'</span>';
|
||||
$notLoginCheckContent[] = html_print_checkbox_switch(
|
||||
'not_login',
|
||||
1,
|
||||
$user_info['not_login'],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][0] = html_print_div(
|
||||
[
|
||||
'class' => 'margin-top-10',
|
||||
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
|
||||
'content' => implode('', $notLoginCheckContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][0] .= ui_print_input_placeholder(
|
||||
__('The user with not login set only can access to API.'),
|
||||
true
|
||||
);
|
||||
|
||||
$userManagementTable->data['captions_loginErrorUser'][0] = html_print_div(
|
||||
[
|
||||
'class' => 'margin-top-10',
|
||||
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
|
||||
'content' => implode('', $notLoginCheckContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][0] .= ui_print_input_placeholder(
|
||||
__('The user with not login set only can access to API.'),
|
||||
true
|
||||
);
|
||||
$localUserCheckContent = [];
|
||||
$localUserCheckContent[] = '<span>'.__('Local User').'</span>';
|
||||
$localUserCheckContent[] = html_print_checkbox_switch(
|
||||
'local_user',
|
||||
1,
|
||||
$user_info['local_user'],
|
||||
true
|
||||
);
|
||||
|
||||
$localUserCheckContent = [];
|
||||
$localUserCheckContent[] = '<span>'.__('Local User').'</span>';
|
||||
$localUserCheckContent[] = html_print_checkbox_switch(
|
||||
'local_user',
|
||||
1,
|
||||
$user_info['local_user'],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][1] = html_print_div(
|
||||
[
|
||||
'class' => 'margin-top-10',
|
||||
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
|
||||
'content' => implode('', $localUserCheckContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_placeholder(
|
||||
__('The user with local authentication enabled will always use local authentication.'),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$userManagementTable->data['captions_loginErrorUser'][1] = html_print_div(
|
||||
[
|
||||
'class' => 'margin-top-10',
|
||||
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
|
||||
'content' => implode('', $localUserCheckContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_placeholder(
|
||||
__('The user with local authentication enabled will always use local authentication.'),
|
||||
true
|
||||
);
|
||||
$userManagementTable->data['show_tips_startup'][0] = html_print_checkbox_switch('show_tips_startup', 1, ($user_info['show_tips_startup'] === null) ? true : $user_info['show_tips_startup'], true);
|
||||
$userManagementTable->data['show_tips_startup'][1] = '<span>'.__('Show usage tips at startup').'</span>';
|
||||
|
||||
@ -551,10 +553,10 @@ $userManagementTable->data['fields_autorefreshTime'][0] .= ui_print_input_placeh
|
||||
// Title for Language and Appearance.
|
||||
$userManagementTable->data['title_lookAndFeel'] = html_print_subtitle_table(__('Language and Appearance'));
|
||||
// Language and color scheme.
|
||||
$userManagementTable->rowclass['captions_lang_colorscheme'] = 'field_half_width';
|
||||
$userManagementTable->rowclass['fields_lang_colorscheme'] = 'field_half_width';
|
||||
$userManagementTable->data['captions_lang_colorscheme'][0] = __('Language');
|
||||
$userManagementTable->data['fields_lang_colorscheme'][0] = html_print_select_from_sql(
|
||||
$userManagementTable->rowclass['line1_looknfeel'] = 'field_half_width';
|
||||
$userManagementTable->rowclass['line2_looknfeel'] = 'field_half_width';
|
||||
$userManagementTable->data['line1_looknfeel'][0] = __('Language');
|
||||
$userManagementTable->data['line2_looknfeel'][0] = html_print_select_from_sql(
|
||||
'SELECT id_language, name FROM tlanguage',
|
||||
'language',
|
||||
$user_info['language'],
|
||||
@ -564,8 +566,15 @@ $userManagementTable->data['fields_lang_colorscheme'][0] = html_print_select_fro
|
||||
true
|
||||
);
|
||||
|
||||
$userManagementTable->data['captions_lang_colorscheme'][1] = __('User color scheme');
|
||||
$userManagementTable->data['fields_lang_colorscheme'][1] = skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true);
|
||||
if (is_metaconsole() === true) {
|
||||
if (users_is_admin() === true) {
|
||||
$userManagementTable->data['line1_looknfeel'][1] = $outputMetaAccess[0];
|
||||
$userManagementTable->data['line2_looknfeel'][1] = $outputMetaAccess[1];
|
||||
}
|
||||
} else {
|
||||
$userManagementTable->data['line1_looknfeel'][1] = __('User color scheme');
|
||||
$userManagementTable->data['line2_looknfeel'][1] = skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true);
|
||||
}
|
||||
|
||||
$userManagementTable->rowclass['captions_blocksize_eventfilter'] = 'field_half_width';
|
||||
$userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width';
|
||||
@ -591,41 +600,55 @@ $userManagementTable->data['fields_blocksize_eventfilter'][1] = html_print_selec
|
||||
false,
|
||||
false
|
||||
);
|
||||
if (is_metaconsole() === false) {
|
||||
// Home screen table.
|
||||
$homeScreenTable = new stdClass();
|
||||
$homeScreenTable->class = 'w100p table_section full_section';
|
||||
$homeScreenTable->id = 'home_screen_table';
|
||||
$homeScreenTable->style = [];
|
||||
$homeScreenTable->rowclass = [];
|
||||
$homeScreenTable->data = [];
|
||||
// Home screen.
|
||||
$homeScreenTable->data['captions_homescreen'][0] = __('Home screen');
|
||||
$homeScreenTable->colspan['captions_homescreen'][0] = 2;
|
||||
$homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width';
|
||||
$homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex';
|
||||
$homeScreenTable->data['fields_homescreen'][0] = html_print_select(
|
||||
$homeScreenValues,
|
||||
'section',
|
||||
io_safe_output($user_info['section']),
|
||||
'show_data_section();',
|
||||
'',
|
||||
-1,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
);
|
||||
$homeScreenTable->data['fields_homescreen'][1] = html_print_div(
|
||||
[
|
||||
'class' => 'w100p',
|
||||
'content' => $customHomeScreenDataField,
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Home screen table.
|
||||
$homeScreenTable = new stdClass();
|
||||
$homeScreenTable->class = 'w100p table_section full_section';
|
||||
$homeScreenTable->id = 'home_screen_table';
|
||||
$homeScreenTable->style = [];
|
||||
$homeScreenTable->rowclass = [];
|
||||
$homeScreenTable->data = [];
|
||||
$userManagementTable->rowclass['homescreen_table'] = 'w100p';
|
||||
$userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true);
|
||||
}
|
||||
|
||||
// Home screen.
|
||||
$homeScreenTable->data['captions_homescreen'][0] = __('Home screen');
|
||||
$homeScreenTable->colspan['captions_homescreen'][0] = 2;
|
||||
$homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width';
|
||||
$homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex';
|
||||
$homeScreenTable->data['fields_homescreen'][0] = html_print_select(
|
||||
$homeScreenValues,
|
||||
'section',
|
||||
io_safe_output($user_info['section']),
|
||||
'show_data_section();',
|
||||
'',
|
||||
-1,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
);
|
||||
$homeScreenTable->data['fields_homescreen'][1] = html_print_div(
|
||||
[
|
||||
'class' => 'w100p',
|
||||
'content' => $customHomeScreenDataField,
|
||||
],
|
||||
true
|
||||
);
|
||||
if (is_metaconsole() === true && users_is_admin() === true) {
|
||||
$userManagementTable->rowclass['search_custom1_looknfeel'] = 'field_half_width';
|
||||
$userManagementTable->rowclass['search_custom2_looknfeel'] = 'field_half_width flex-column';
|
||||
$userManagementTable->data['search_custom1_looknfeel'][0] = $searchCustomFieldView[0];
|
||||
$userManagementTable->data['search_custom2_looknfeel'][0] = $searchCustomFieldView[1];
|
||||
|
||||
$userManagementTable->rowclass['homescreen_table'] = 'w100p';
|
||||
$userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true);
|
||||
$userManagementTable->rowclass['agent_manager1_looknfeel'] = 'field_half_width';
|
||||
$userManagementTable->rowclass['agent_manager2_looknfeel'] = 'field_half_width flex-column';
|
||||
$userManagementTable->data['agent_manager1_looknfeel'][0] = $metaconsoleAgentManager[0];
|
||||
$userManagementTable->data['agent_manager1_looknfeel'][1] = $metaconsoleAgentManager[2];
|
||||
$userManagementTable->data['agent_manager2_looknfeel'][0] = $metaconsoleAgentManager[1];
|
||||
$userManagementTable->data['agent_manager2_looknfeel'][1] = $metaconsoleAgentManager[3];
|
||||
}
|
||||
|
||||
// Timezone.
|
||||
$userManagementTable->rowclass['captions_timezone'] = 'field_half_width';
|
||||
@ -639,14 +662,15 @@ $userManagementTable->data['fields_timezone'][0] .= ui_print_input_placeholder(
|
||||
__('The timezone must be that of the associated server.'),
|
||||
true
|
||||
);
|
||||
|
||||
$userManagementTable->data['fields_timezone'][1] = html_print_div(
|
||||
[
|
||||
'id' => 'timezone-picker',
|
||||
'content' => implode('', $timezoneContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
if (is_metaconsole() === false) {
|
||||
$userManagementTable->data['fields_timezone'][1] = html_print_div(
|
||||
[
|
||||
'id' => 'timezone-picker',
|
||||
'content' => implode('', $timezoneContent),
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
// Title for Language and Appearance.
|
||||
$userManagementTable->data['title_additionalSettings'] = html_print_subtitle_table(__('Additional settings'));
|
||||
@ -743,3 +767,19 @@ html_print_table($userManagementTable);
|
||||
if ($new_user === false && ((bool) check_acl($config['id_user'], 0, 'UM') === true)) {
|
||||
profile_print_profile_table($id, io_safe_output($json_profile), false, ($is_err === true));
|
||||
}
|
||||
|
||||
?>
|
||||
<!--
|
||||
<script>
|
||||
paint_qrcode(
|
||||
"
|
||||
<?php
|
||||
// echo ui_get_full_url('mobile/index.php?page=agent&id='.$id_agente);
|
||||
?>
|
||||
",
|
||||
"#qr_code_agent_view",
|
||||
128,
|
||||
128
|
||||
);
|
||||
</script>
|
||||
-->
|
@ -731,7 +731,7 @@ class DiscoveryTaskList extends HTML
|
||||
case DISCOVERY_CLOUD_AZURE_COMPUTE:
|
||||
// Discovery Applications MySQL.
|
||||
$data[6] = html_print_image(
|
||||
'images/plugin@svg.svg',
|
||||
'images/plugins@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Discovery Cloud Azure Compute'),
|
||||
@ -744,7 +744,7 @@ class DiscoveryTaskList extends HTML
|
||||
case DISCOVERY_CLOUD_AWS_EC2:
|
||||
// Discovery Applications MySQL.
|
||||
$data[6] = html_print_image(
|
||||
'images/plugin@svg.svg',
|
||||
'images/plugins@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Discovery Cloud AWS EC2'),
|
||||
@ -856,7 +856,7 @@ class DiscoveryTaskList extends HTML
|
||||
} else {
|
||||
// APP or external script recon task.
|
||||
$data[6] = html_print_image(
|
||||
'images/plugin@svg.svg',
|
||||
'images/plugins@svg.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
).' ';
|
||||
|
@ -27,8 +27,6 @@
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
require_once 'config.php';
|
||||
|
||||
require_once __DIR__.'/config.php';
|
||||
require_once __DIR__.'/functions.php';
|
||||
require_once __DIR__.'/functions_db.php';
|
||||
@ -87,7 +85,7 @@ if (check_login(false) === false) {
|
||||
</head>
|
||||
<body>
|
||||
<h1>Access is not granted</h1>
|
||||
<div id="container-chart-generator-item" style="display:none; margin:0px;">
|
||||
<div id="container-chart-generator-item" style="display:none; margin:0px;width:100px;height:100px;">
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -246,6 +244,9 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
break;
|
||||
|
||||
case 'slicebar':
|
||||
// TO-DO Cambiar esto para que se pase por POST, NO SE PUEDE PASAR POR GET.
|
||||
$params['graph_data'] = json_decode(io_safe_output($config[$params['tokem_config']]), true);
|
||||
delete_config_token($params['tokem_config']);
|
||||
echo flot_slicesbar_graph(
|
||||
$params['graph_data'],
|
||||
$params['period'],
|
||||
|
@ -1329,7 +1329,7 @@ class AgentWizard extends HTML
|
||||
$table->rowstyle[$i] = 'color:#ccc;';
|
||||
$data[0] .= ' ';
|
||||
$data[0] .= html_print_image(
|
||||
'images/error.png',
|
||||
'images/alert-warning@svg.svg',
|
||||
true,
|
||||
['title' => $msgError]
|
||||
);
|
||||
@ -1347,7 +1347,7 @@ class AgentWizard extends HTML
|
||||
// Img Server.
|
||||
if ($this->serverType == SERVER_TYPE_ENTERPRISE_SATELLITE) {
|
||||
$img_server = html_print_image(
|
||||
'images/satellite.png',
|
||||
'images/satellite@os.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Enterprise Satellite server'),
|
||||
@ -1357,7 +1357,7 @@ class AgentWizard extends HTML
|
||||
} else {
|
||||
if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) {
|
||||
$img_server = html_print_image(
|
||||
'images/plugin.png',
|
||||
'images/plugins@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Plugin server'),
|
||||
@ -1367,7 +1367,7 @@ class AgentWizard extends HTML
|
||||
} else {
|
||||
if ($this->protocol === 'wmi') {
|
||||
$img_server = html_print_image(
|
||||
'images/wmi.png',
|
||||
'images/WMI@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('WMI server'),
|
||||
@ -1376,7 +1376,7 @@ class AgentWizard extends HTML
|
||||
);
|
||||
} else {
|
||||
$img_server = html_print_image(
|
||||
'images/op_network.png',
|
||||
'images/network@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Network server'),
|
||||
@ -4090,7 +4090,7 @@ class AgentWizard extends HTML
|
||||
$blockTitle .= '<b>'.$block['name'];
|
||||
$blockTitle .= ' ';
|
||||
$blockTitle .= html_print_image(
|
||||
'images/tip_help.png',
|
||||
'images/info@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Modules selected'),
|
||||
@ -4110,7 +4110,7 @@ class AgentWizard extends HTML
|
||||
|
||||
$blockTitle .= ' ';
|
||||
$blockTitle .= html_print_image(
|
||||
'images/tip_help.png',
|
||||
'images/info@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Modules selected'),
|
||||
@ -4205,6 +4205,9 @@ class AgentWizard extends HTML
|
||||
$table->size[4] = '140px';
|
||||
$table->size[5] = '3%';
|
||||
|
||||
$table->align = [];
|
||||
$table->align[1] = 'center';
|
||||
|
||||
// If is needed show current value, we must correct the table.
|
||||
if ($showCurrentValue === true) {
|
||||
// Correct headers.
|
||||
@ -4273,7 +4276,7 @@ class AgentWizard extends HTML
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
$md5IdBlock,
|
||||
$md5IdBlock.' w100p',
|
||||
'',
|
||||
'',
|
||||
false,
|
||||
@ -4293,8 +4296,9 @@ class AgentWizard extends HTML
|
||||
1,
|
||||
20,
|
||||
$module['description'],
|
||||
'form=\'form-create-modules\' class=\'min-height-50px\'',
|
||||
true
|
||||
'form=\'form-create-modules\'',
|
||||
true,
|
||||
'w100p'
|
||||
);
|
||||
}
|
||||
|
||||
@ -4703,8 +4707,6 @@ class AgentWizard extends HTML
|
||||
'toggle_class' => '',
|
||||
'container_class' => 'white-box-content',
|
||||
'main_class' => $class,
|
||||
'img_a' => 'images/arrow_down_green.png',
|
||||
'img_b' => 'images/arrow_right_green.png',
|
||||
'clean' => false,
|
||||
'reverseImg' => $reverseImg,
|
||||
'switch' => $buttonSwitch,
|
||||
|
@ -3548,6 +3548,18 @@ function update_config_token($cfgtoken, $cfgvalue)
|
||||
}
|
||||
|
||||
|
||||
function delete_config_token($cfgtoken)
|
||||
{
|
||||
$delete = db_process_sql(sprintf('DELETE FROM tconfig WHERE token = "%s"', $cfgtoken));
|
||||
|
||||
if ($delete) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function get_number_of_mr($package, $ent, $offline)
|
||||
{
|
||||
global $config;
|
||||
@ -4275,6 +4287,7 @@ function generator_chart_to_pdf(
|
||||
];
|
||||
}
|
||||
|
||||
unset($data['data']['graph_data']);
|
||||
// If not install chromium avoid 500 convert tu images no data to show.
|
||||
$chromium_dir = io_safe_output($config['chromium_path']);
|
||||
$result_ejecution = exec($chromium_dir.' --version');
|
||||
|
@ -2668,7 +2668,7 @@ function events_print_type_img(
|
||||
|
||||
switch ($type) {
|
||||
case 'alert_recovered':
|
||||
$icon = 'images/alert@svg.svg';
|
||||
$style .= ' alert_module_background_state icon_background_normal ';
|
||||
break;
|
||||
|
||||
case 'alert_manual_validation':
|
||||
@ -4356,7 +4356,7 @@ function events_page_details($event, $server_id=0)
|
||||
|
||||
$graph_params_str = http_build_query($graph_params);
|
||||
|
||||
$link = "winopeng_var('".$url.'?'.$graph_params_str."','".$win_handle."', 800, 480)";
|
||||
$link = 'winopeng_var("'.$url.'?'.$graph_params_str.'","'.$win_handle.'", 800, 480)';
|
||||
$data[1] = html_print_button(__('View graph'), 'view_graph_button', false, $link, ['mode' => 'link'], true);
|
||||
$table_details->data[] = $data;
|
||||
}
|
||||
|
@ -1153,6 +1153,27 @@ function modules_get_raw_data($id_agent_module, $date_init, $date_end)
|
||||
}
|
||||
|
||||
|
||||
function module_get_min_max_tagente_datos($id_agent_module, $date_init, $date_end)
|
||||
{
|
||||
$table = modules_get_table_data($id_agent_module, null);
|
||||
|
||||
$datelimit = ($date_init - $date_end);
|
||||
$search_in_history_db = db_search_in_history_db($datelimit);
|
||||
|
||||
$data = db_get_all_rows_sql(
|
||||
'
|
||||
SELECT max(datos) as max, min(datos) as min
|
||||
FROM '.$table.'
|
||||
WHERE id_agente_modulo = '.$id_agent_module.'
|
||||
AND utimestamp >= '.$date_init.'
|
||||
AND utimestamp <= '.$date_end,
|
||||
$search_in_history_db
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
function modules_get_agent_groups($id_agent_module)
|
||||
{
|
||||
$return = false;
|
||||
|
@ -191,15 +191,9 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
|
||||
$table->id = 'table_profiles';
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
if (is_metaconsole() === true) {
|
||||
$table->head_colspan[0] = 0;
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox_tactical data';
|
||||
$table->title = $title;
|
||||
} else {
|
||||
echo '<div id="edit_user_profiles" class="floating_form white_box">';
|
||||
echo '<p class="subsection_header_title padding-lft-10">'.$title.'</p>';
|
||||
}
|
||||
|
||||
echo '<div id="edit_user_profiles" class="floating_form white_box">';
|
||||
echo '<p class="subsection_header_title padding-lft-10">'.$title.'</p>';
|
||||
|
||||
$table->data = [];
|
||||
$table->head = [];
|
||||
@ -405,9 +399,7 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
|
||||
array_push($table->data, $data);
|
||||
html_print_table($table, $return);
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
echo '</div>';
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
unset($table);
|
||||
}
|
||||
|
@ -1053,17 +1053,17 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
||||
$table1->head = [];
|
||||
if ($item['show_summary_group']) {
|
||||
$table1->head[0] = __('Status');
|
||||
$table1->head[1] = __('Count');
|
||||
$table1->head[2] = __('Name');
|
||||
$table1->head[3] = __('Type');
|
||||
$table1->head[1] = __('Type');
|
||||
$table1->head[2] = __('Count');
|
||||
$table1->head[3] = __('Name');
|
||||
$table1->head[4] = __('Agent');
|
||||
$table1->head[5] = __('Severity');
|
||||
$table1->head[6] = __('Val. by');
|
||||
$table1->head[7] = __('Timestamp');
|
||||
} else {
|
||||
$table1->head[0] = __('Status');
|
||||
$table1->head[1] = __('Name');
|
||||
$table1->head[2] = __('Type');
|
||||
$table1->head[1] = __('Type');
|
||||
$table1->head[2] = __('Name');
|
||||
$table1->head[3] = __('Agent');
|
||||
$table1->head[4] = __('Severity');
|
||||
$table1->head[5] = __('Val. by');
|
||||
@ -1077,15 +1077,15 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
||||
foreach ($item['data'] as $k => $event) {
|
||||
// First pass along the class of this row.
|
||||
if ($item['show_summary_group']) {
|
||||
$table1->cellclass[$k][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][5] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][6] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][7] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][8] = get_priority_class($event['criticity']);
|
||||
} else {
|
||||
$table1->cellclass[$k][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$k][5] = get_priority_class($event['criticity']);
|
||||
@ -1125,6 +1125,8 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
||||
]
|
||||
);
|
||||
|
||||
$data[] = events_print_type_img($event['event_type'], true);
|
||||
|
||||
if ($item['show_summary_group']) {
|
||||
$data[] = $event['event_rep'];
|
||||
}
|
||||
@ -1136,8 +1138,6 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
||||
true
|
||||
);
|
||||
|
||||
$data[] = events_print_type_img($event['event_type'], true);
|
||||
|
||||
if (empty($event['alias']) === false) {
|
||||
$alias = $event['alias'];
|
||||
if (is_metaconsole() === true) {
|
||||
@ -1313,20 +1313,20 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
||||
$table1->class = 'info_table';
|
||||
$table1->data = [];
|
||||
$table1->head = [];
|
||||
$table1->align = [];
|
||||
$table1->align[2] = 'center';
|
||||
$table1->align = 'left';
|
||||
|
||||
if ($show_summary_group) {
|
||||
$table1->head[0] = __('Status');
|
||||
$table1->head[1] = __('Event name');
|
||||
$table1->head[2] = __('Type');
|
||||
$table1->head[1] = __('Type');
|
||||
$table1->head[2] = __('Event name');
|
||||
$table1->head[3] = __('Severity');
|
||||
$table1->head[4] = __('Count');
|
||||
$table1->head[5] = __('Timestamp');
|
||||
$table1->style[0] = 'text-align: center;';
|
||||
} else {
|
||||
$table1->head[0] = __('Status');
|
||||
$table1->head[1] = __('Event name');
|
||||
$table1->head[2] = __('Type');
|
||||
$table1->head[1] = __('Type');
|
||||
$table1->head[2] = __('Event name');
|
||||
$table1->head[3] = __('Severity');
|
||||
$table1->head[4] = __('Timestamp');
|
||||
$table1->style[0] = 'text-align: center;';
|
||||
@ -1344,14 +1344,13 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
||||
foreach ($item_data as $i => $event) {
|
||||
$data = [];
|
||||
if ($show_summary_group) {
|
||||
$table1->cellclass[$i][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][5] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][6] = get_priority_class($event['criticity']);
|
||||
} else {
|
||||
$table1->cellclass[$i][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][6] = get_priority_class($event['criticity']);
|
||||
@ -1386,8 +1385,9 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
||||
'id' => 'status_img_'.$event['id_evento'],
|
||||
]
|
||||
);
|
||||
$data[1] = io_safe_output($event['evento']);
|
||||
$data[2] = events_print_type_img($event['event_type'], true);
|
||||
|
||||
$data[1] = events_print_type_img($event['event_type'], true);
|
||||
$data[2] = io_safe_output($event['evento']);
|
||||
$data[3] = get_priority_name($event['criticity']);
|
||||
if ($show_summary_group) {
|
||||
$data[4] = $event['event_rep'];
|
||||
@ -2178,7 +2178,7 @@ function reporting_html_agent_module($table, $item)
|
||||
if ($module === null) {
|
||||
$table_data .= '<td></td>';
|
||||
} else {
|
||||
$table_data .= "<td class='center'>";
|
||||
$table_data .= '<td style="text-align: left;">';
|
||||
if (isset($row['show_type']) === true && $row['show_type'] === '1') {
|
||||
$table_data .= $module;
|
||||
} else {
|
||||
@ -2657,12 +2657,12 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
||||
|
||||
$table1->head = [];
|
||||
$table1->head[0] = __('Status');
|
||||
$table1->head[3] = __('Type');
|
||||
if ($item['show_summary_group']) {
|
||||
$table1->head[1] = __('Count');
|
||||
}
|
||||
|
||||
$table1->head[2] = __('Name');
|
||||
$table1->head[3] = __('Type');
|
||||
$table1->head[4] = __('Severity');
|
||||
$table1->head[5] = __('Val. by');
|
||||
$table1->head[6] = __('Timestamp');
|
||||
@ -2672,14 +2672,14 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
||||
|
||||
foreach ($item['data'] as $i => $event) {
|
||||
if ($item['show_summary_group']) {
|
||||
$table1->cellclass[$i][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][5] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][6] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][7] = get_priority_class($event['criticity']);
|
||||
} else {
|
||||
$table1->cellclass[$i][1] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][2] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][3] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][4] = get_priority_class($event['criticity']);
|
||||
$table1->cellclass[$i][5] = get_priority_class($event['criticity']);
|
||||
@ -2716,6 +2716,8 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
||||
]
|
||||
);
|
||||
|
||||
$data[] = events_print_type_img($event['type'], true);
|
||||
|
||||
if ($item['show_summary_group']) {
|
||||
$data[] = $event['count'];
|
||||
}
|
||||
@ -2727,8 +2729,6 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
||||
true
|
||||
);
|
||||
|
||||
$data[] = events_print_type_img($event['type'], true);
|
||||
|
||||
$data[] = get_priority_name($event['criticity']);
|
||||
if (empty($event['validated_by']) && $event['status'] == EVENT_VALIDATE) {
|
||||
$data[] = '<i>'.__('System').'</i>';
|
||||
@ -3919,6 +3919,8 @@ function reporting_html_value(
|
||||
if ($item['visual_format'] != 2) {
|
||||
$table1 = new stdClass();
|
||||
$table1->width = '100%';
|
||||
$table1->headstyle[0] = 'text-align:left';
|
||||
$table1->headstyle[1] = 'text-align:left';
|
||||
switch ($item['type']) {
|
||||
case 'max_value':
|
||||
$table1->head = [
|
||||
|
@ -3885,6 +3885,7 @@ function ui_print_datatable(array $parameters)
|
||||
$("div.dataTables_paginate").hide();
|
||||
$("div.dataTables_info").hide();
|
||||
$("div.dataTables_length").hide();
|
||||
$("div.dt-buttons").hide();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages > 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").show()
|
||||
@ -3895,6 +3896,7 @@ function ui_print_datatable(array $parameters)
|
||||
$("div.dataTables_paginate").show();
|
||||
$("div.dataTables_info").show();
|
||||
$("div.dataTables_length").show();
|
||||
$("div.dt-buttons").show();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages == 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").hide()
|
||||
@ -7086,20 +7088,6 @@ function ui_query_result_editor($name='default')
|
||||
true
|
||||
);
|
||||
|
||||
$editorSubContainer .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons edit-button',
|
||||
'content' => html_print_submit_button(
|
||||
__('Execute query'),
|
||||
'execute_query',
|
||||
false,
|
||||
['icon' => 'next'],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$editorContainer = html_print_div(
|
||||
[
|
||||
'id' => $name.'_editor_container',
|
||||
@ -7157,6 +7145,11 @@ function ui_query_result_editor($name='default')
|
||||
'content' => ui_get_full_url(false, false, false, false),
|
||||
]
|
||||
);
|
||||
|
||||
$buttons = html_print_submit_button(__('Execute query'), 'execute_query', false, ['icon' => 'update'], true);
|
||||
html_print_action_buttons(
|
||||
$buttons
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
@ -730,8 +730,9 @@ function flot_slicesbar_graph(
|
||||
global $config;
|
||||
|
||||
if ($ttl == 2) {
|
||||
$tokem_config = uniqid('slicebar');
|
||||
$params = [
|
||||
'graph_data' => $graph_data,
|
||||
'tokem_config' => $tokem_config,
|
||||
'period' => $period,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
@ -752,7 +753,10 @@ function flot_slicesbar_graph(
|
||||
'return_img_base_64' => true,
|
||||
'date_to' => $date_to,
|
||||
'server_id' => $server_id,
|
||||
'backgroundColor' => '#f6f7fb',
|
||||
];
|
||||
// TO-DO Cambiar esto para que se pase por POST, NO SE PUEDE PASAR POR GET.
|
||||
update_config_token($tokem_config, json_encode($graph_data));
|
||||
|
||||
$graph = '<img src="data:image/png;base64,';
|
||||
$graph .= generator_chart_to_pdf('slicebar', $params);
|
||||
|
@ -9,7 +9,7 @@ view.renderer.setShowGutter(false);
|
||||
view.setReadOnly(true);
|
||||
view.setShowPrintMargin(false);
|
||||
|
||||
$("#submit-execute_query").click(function() {
|
||||
$("#button-execute_query").click(function() {
|
||||
view.setValue("");
|
||||
let text;
|
||||
let selectText = editor.getSelectedText();
|
||||
|
@ -316,6 +316,10 @@ class AvgSumMaxMinModule extends Widget
|
||||
$values['unit'] = $decoder['unit'];
|
||||
}
|
||||
|
||||
if (isset($decoder['layout']) === true) {
|
||||
$values['layout'] = $decoder['layout'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
@ -501,6 +505,18 @@ class AvgSumMaxMinModule extends Widget
|
||||
],
|
||||
];
|
||||
|
||||
// Layout.
|
||||
$inputs[] = [
|
||||
'label' => __('Layout').ui_print_help_tip(__('Off: vertical. On: horizontal'), true),
|
||||
'arguments' => [
|
||||
'wrapper' => 'div',
|
||||
'name' => 'layout',
|
||||
'type' => 'switch',
|
||||
'value' => $values['layout'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
@ -525,6 +541,7 @@ class AvgSumMaxMinModule extends Widget
|
||||
$values['sizeLabel'] = \get_parameter_switch('sizeLabel');
|
||||
$values['text_color'] = \get_parameter('text_color', 0);
|
||||
$values['unit'] = \get_parameter_switch('unit');
|
||||
$values['layout'] = \get_parameter_switch('layout');
|
||||
|
||||
return $values;
|
||||
}
|
||||
@ -601,13 +618,13 @@ class AvgSumMaxMinModule extends Widget
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$rows = modules_get_min_max_data($id_module, $to);
|
||||
$rows = module_get_min_max_tagente_datos($id_module, $to, $now);
|
||||
|
||||
$data = $rows[0]['max'];
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$rows = modules_get_min_max_data($id_module, $to);
|
||||
$rows = module_get_min_max_tagente_datos($id_module, $to, $now);
|
||||
|
||||
$data = $rows[0]['min'];
|
||||
break;
|
||||
@ -621,11 +638,22 @@ class AvgSumMaxMinModule extends Widget
|
||||
$sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 40;
|
||||
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 40;
|
||||
|
||||
$output .= '<div class="container-center">';
|
||||
$uuid = uniqid();
|
||||
|
||||
$output .= '<div class="container-center" id="container-'.$uuid.'">';
|
||||
|
||||
$orientation = '';
|
||||
if ((int) $this->values['layout'] === 1) {
|
||||
$orientation = 'flex';
|
||||
} else {
|
||||
$orientation = 'grid';
|
||||
}
|
||||
|
||||
// General div.
|
||||
$output .= '<div class="container-icon">';
|
||||
$output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
|
||||
|
||||
// Div value.
|
||||
$output .= '<div style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px;'.$text_color.'">';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px mrgn_btn_20px" style="font-size:'.$sizeValue.'px;'.$text_color.'">';
|
||||
|
||||
if (is_numeric($data) === true) {
|
||||
$dataDatos = remove_right_zeros(
|
||||
@ -651,11 +679,22 @@ class AvgSumMaxMinModule extends Widget
|
||||
|
||||
if (empty($label) === false) {
|
||||
// Div Label.
|
||||
$output .= '<div style="flex: 1 1 '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;'.$text_color.'">'.$label.'</div>';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="font-size:'.$sizeLabel.'px;'.$text_color.'">'.$label.'</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<script>
|
||||
var containerWidth = document.querySelector("#container-'.$uuid.'").offsetWidth;
|
||||
var generalWidth = document.querySelector("#general-'.$uuid.'").offsetWidth;
|
||||
|
||||
if (generalWidth >= containerWidth) {
|
||||
$("#container-'.$uuid.'").css("align-items", "flex-start");
|
||||
} else {
|
||||
$("#container-'.$uuid.'").css("align-items", "center");
|
||||
}
|
||||
</script>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
@ -305,6 +305,10 @@ class ModuleIconWidget extends Widget
|
||||
$values['imageSrc'] = $decoder['imageSrc'];
|
||||
}
|
||||
|
||||
if (isset($decoder['layout']) === true) {
|
||||
$values['layout'] = $decoder['layout'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
@ -482,6 +486,18 @@ class ModuleIconWidget extends Widget
|
||||
],
|
||||
];
|
||||
|
||||
// Layout.
|
||||
$inputs[] = [
|
||||
'label' => __('Layout').ui_print_help_tip(__('Off: vertical. On: horizontal'), true),
|
||||
'arguments' => [
|
||||
'wrapper' => 'div',
|
||||
'name' => 'layout',
|
||||
'type' => 'switch',
|
||||
'value' => $values['layout'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
@ -504,6 +520,7 @@ class ModuleIconWidget extends Widget
|
||||
$values['sizeValue'] = \get_parameter('sizeValue', 0);
|
||||
$values['sizeLabel'] = \get_parameter_switch('sizeLabel');
|
||||
$values['sizeIcon'] = \get_parameter_switch('sizeIcon');
|
||||
$values['layout'] = \get_parameter_switch('layout');
|
||||
|
||||
return $values;
|
||||
}
|
||||
@ -533,39 +550,84 @@ class ModuleIconWidget extends Widget
|
||||
$this->values['moduleId']
|
||||
);
|
||||
|
||||
$unit = \modules_get_unit($this->values['moduleId']);
|
||||
|
||||
$icon = $this->values['imageSrc'];
|
||||
$label = $this->values['label'];
|
||||
$sizeLabel = (($this->values['sizeLabel'] !== 0) ? $this->values['sizeLabel'] : 20);
|
||||
$sizeValue = (($this->values['sizeValue'] !== 0) ? $this->values['sizeValue'] : 20);
|
||||
$sizeIcon = (($this->values['sizeIcon'] !== 0) ? $this->values['sizeIcon'] : 100);
|
||||
|
||||
$output .= '<div class="container-center">';
|
||||
$uuid = uniqid();
|
||||
|
||||
$output .= '<div class="container-center" id="container-'.$uuid.'">';
|
||||
|
||||
$orientation = '';
|
||||
if ((int) $this->values['layout'] === 1) {
|
||||
$orientation = 'flex aligni_center';
|
||||
} else {
|
||||
$orientation = 'grid';
|
||||
}
|
||||
|
||||
// General div.
|
||||
$output .= '<div class="container-icon">';
|
||||
$output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
|
||||
|
||||
$sql = 'SELECT min_warning,
|
||||
max_warning,
|
||||
min_critical,
|
||||
max_critical,
|
||||
str_warning,
|
||||
str_critical
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente_modulo = '.(int) $this->values['moduleId'];
|
||||
$sql_data = db_get_row_sql($sql);
|
||||
|
||||
$last = modules_get_last_value($this->values['moduleId']);
|
||||
|
||||
$color_icon = '_ok';
|
||||
if (($last >= $sql_data['min_warning']) && ($last < $sql_data['max_warning'])) {
|
||||
$color_icon = '_warning';
|
||||
}
|
||||
|
||||
if ($last >= $sql_data['max_warning']) {
|
||||
$color_icon = '_bad';
|
||||
}
|
||||
|
||||
// Div image.
|
||||
$output .= '<div style="flex: 0 1 '.$sizeIcon.'px;">';
|
||||
$style_icon = 'flex: 0 1 '.$sizeIcon.'px;';
|
||||
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 0 1 '.$sizeIcon.'px;">';
|
||||
$output .= html_print_image(
|
||||
'images/console/icons/'.$icon.'.png',
|
||||
'images/console/icons/'.$icon.$color_icon.'.png',
|
||||
true,
|
||||
['width' => $sizeIcon]
|
||||
);
|
||||
$output .= '</div>';
|
||||
|
||||
// Div value.
|
||||
$output .= '<div style="flex: 0 1 10px; font-size:'.$sizeValue.'px;">';
|
||||
$output .= '<div class="mrgn_btn_15px" style="flex: 0 1 10px; font-size:'.$sizeValue.'px;">';
|
||||
$output .= remove_right_zeros(
|
||||
number_format($data_module, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])
|
||||
);
|
||||
).$unit;
|
||||
$output .= '</div>';
|
||||
|
||||
if (empty($label) === false) {
|
||||
// Div Label.
|
||||
$output .= '<div style="flex: 1; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 1; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<script>
|
||||
var containerWidth = document.querySelector("#container-'.$uuid.'").offsetWidth;
|
||||
var generalWidth = document.querySelector("#general-'.$uuid.'").offsetWidth;
|
||||
|
||||
if (generalWidth >= containerWidth) {
|
||||
$("#container-'.$uuid.'").css("align-items", "flex-start");
|
||||
} else {
|
||||
$("#container-'.$uuid.'").css("align-items", "center");
|
||||
}
|
||||
</script>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
@ -300,6 +300,10 @@ class ModuleStatusWidget extends Widget
|
||||
$values['imageSrc'] = $decoder['imageSrc'];
|
||||
}
|
||||
|
||||
if (isset($decoder['layout']) === true) {
|
||||
$values['layout'] = $decoder['layout'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
@ -461,6 +465,18 @@ class ModuleStatusWidget extends Widget
|
||||
],
|
||||
];
|
||||
|
||||
// Layout.
|
||||
$inputs[] = [
|
||||
'label' => __('Layout').ui_print_help_tip(__('Off: vertical. On: horizontal'), true),
|
||||
'arguments' => [
|
||||
'wrapper' => 'div',
|
||||
'name' => 'layout',
|
||||
'type' => 'switch',
|
||||
'value' => $values['layout'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
@ -483,6 +499,7 @@ class ModuleStatusWidget extends Widget
|
||||
$values['sizeValue'] = \get_parameter('sizeValue', 0);
|
||||
$values['sizeLabel'] = \get_parameter_switch('sizeLabel');
|
||||
$values['sizeIcon'] = \get_parameter_switch('sizeIcon');
|
||||
$values['layout'] = \get_parameter_switch('layout');
|
||||
|
||||
return $values;
|
||||
}
|
||||
@ -538,12 +555,22 @@ class ModuleStatusWidget extends Widget
|
||||
break;
|
||||
}
|
||||
|
||||
$output .= '<div class="container-center">';
|
||||
$uuid = uniqid();
|
||||
|
||||
$output .= '<div class="container-center" id="container-'.$uuid.'">';
|
||||
|
||||
$orientation = '';
|
||||
if ((int) $this->values['layout'] === 1) {
|
||||
$orientation = 'flex aligni_center';
|
||||
} else {
|
||||
$orientation = 'grid';
|
||||
}
|
||||
|
||||
// General div.
|
||||
$output .= '<div class="container-icon">';
|
||||
$output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
|
||||
|
||||
// Div image.
|
||||
$output .= '<div style="flex: 0 1 '.$sizeIcon.'px;">';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 0 1 '.$sizeIcon.'px;">';
|
||||
$output .= html_print_image(
|
||||
'images/console/icons/'.$icon,
|
||||
true,
|
||||
@ -553,11 +580,22 @@ class ModuleStatusWidget extends Widget
|
||||
|
||||
if (empty($label) === false) {
|
||||
// Div Label.
|
||||
$output .= '<div style="flex: 1 1 '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 1 1 '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<script>
|
||||
var containerWidth = document.querySelector("#container-'.$uuid.'").offsetWidth;
|
||||
var generalWidth = document.querySelector("#general-'.$uuid.'").offsetWidth;
|
||||
|
||||
if (generalWidth >= containerWidth) {
|
||||
$("#container-'.$uuid.'").css("align-items", "flex-start");
|
||||
} else {
|
||||
$("#container-'.$uuid.'").css("align-items", "center");
|
||||
}
|
||||
</script>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
@ -284,6 +284,10 @@ class ModuleValueWidget extends Widget
|
||||
$values['sizeLabel'] = $decoder['sizeLabel'];
|
||||
}
|
||||
|
||||
if (isset($decoder['layout']) === true) {
|
||||
$values['layout'] = $decoder['layout'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
@ -385,6 +389,18 @@ class ModuleValueWidget extends Widget
|
||||
],
|
||||
];
|
||||
|
||||
// Layout.
|
||||
$inputs[] = [
|
||||
'label' => __('Layout').ui_print_help_tip(__('Off: vertical. On: horizontal'), true),
|
||||
'arguments' => [
|
||||
'wrapper' => 'div',
|
||||
'name' => 'layout',
|
||||
'type' => 'switch',
|
||||
'value' => $values['layout'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
@ -405,6 +421,7 @@ class ModuleValueWidget extends Widget
|
||||
$values['moduleId'] = \get_parameter('moduleId', 0);
|
||||
$values['sizeValue'] = \get_parameter('sizeValue', 0);
|
||||
$values['sizeLabel'] = \get_parameter_switch('sizeLabel');
|
||||
$values['layout'] = \get_parameter_switch('layout');
|
||||
|
||||
return $values;
|
||||
}
|
||||
@ -422,6 +439,7 @@ class ModuleValueWidget extends Widget
|
||||
$output = '';
|
||||
|
||||
$id_module = $this->values['moduleId'];
|
||||
$unit = modules_get_unit($this->values['moduleId']);
|
||||
|
||||
$data_module = \modules_get_last_value($id_module);
|
||||
|
||||
@ -429,11 +447,41 @@ class ModuleValueWidget extends Widget
|
||||
$sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 40;
|
||||
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 40;
|
||||
|
||||
$output .= '<div class="container-center">';
|
||||
$sql = 'SELECT min_warning,
|
||||
max_warning,
|
||||
min_critical,
|
||||
max_critical,
|
||||
str_warning,
|
||||
str_critical
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente_modulo = '.(int) $this->values['moduleId'];
|
||||
$sql_data = db_get_row_sql($sql);
|
||||
|
||||
$last = modules_get_last_value($this->values['moduleId']);
|
||||
|
||||
if (($last >= $sql_data['min_warning']) && ($last < $sql_data['max_warning'])) {
|
||||
$color = COL_WARNING;
|
||||
}
|
||||
|
||||
if ($last >= $sql_data['max_warning']) {
|
||||
$color = COL_CRITICAL;
|
||||
}
|
||||
|
||||
$uuid = uniqid();
|
||||
$output .= '<div class="container-center" id="container-'.$uuid.'">';
|
||||
|
||||
$orientation = '';
|
||||
if ((int) $this->values['layout'] === 1) {
|
||||
$orientation = 'flex';
|
||||
} else {
|
||||
$orientation = 'grid';
|
||||
}
|
||||
|
||||
// General div.
|
||||
$output .= '<div class="container-icon">';
|
||||
$output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
|
||||
|
||||
// Div value.
|
||||
$output .= '<div style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px mrgn_btn_20px" style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px; color: '.$color.'">';
|
||||
|
||||
if (is_numeric($data_module) === true) {
|
||||
$dataDatos = remove_right_zeros(
|
||||
@ -443,7 +491,7 @@ class ModuleValueWidget extends Widget
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
).$unit;
|
||||
} else {
|
||||
$dataDatos = trim($data_module);
|
||||
}
|
||||
@ -454,11 +502,22 @@ class ModuleValueWidget extends Widget
|
||||
|
||||
if (empty($label) === false) {
|
||||
// Div Label.
|
||||
$output .= '<div style="flex: 1 1 '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 1 1 '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<script>
|
||||
var containerWidth = document.querySelector("#container-'.$uuid.'").offsetWidth;
|
||||
var generalWidth = document.querySelector("#general-'.$uuid.'").offsetWidth;
|
||||
|
||||
if (generalWidth >= containerWidth) {
|
||||
$("#container-'.$uuid.'").css("align-items", "flex-start");
|
||||
} else {
|
||||
$("#container-'.$uuid.'").css("align-items", "center");
|
||||
}
|
||||
</script>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
@ -282,10 +282,10 @@ class OsQuickReportWidget extends Widget
|
||||
$table->head = [];
|
||||
$table->head[0] = __('OS');
|
||||
$table->head[1] = __('OS name');
|
||||
$table->head[2] = ucfirst(__('total agents'));
|
||||
$table->head[3] = ucfirst(__('normal agents'));
|
||||
$table->head[4] = ucfirst(__('critical agents'));
|
||||
$table->head[5] = ucfirst(__('unknown agents'));
|
||||
$table->head[2] = ucfirst(__('total'));
|
||||
$table->head[3] = ucfirst(__('normal'));
|
||||
$table->head[4] = ucfirst(__('critical'));
|
||||
$table->head[5] = ucfirst(__('unknown'));
|
||||
|
||||
$table->headstyle = [];
|
||||
$table->headstyle[0] = 'text-align:center;background-color: '.$values['background'];
|
||||
@ -296,12 +296,12 @@ class OsQuickReportWidget extends Widget
|
||||
$table->headstyle[5] = 'text-align:center;background-color: '.$values['background'];
|
||||
|
||||
$table->style = [];
|
||||
$table->style[0] = 'background-color: '.$values['background'];
|
||||
$table->style[1] = 'background-color: '.$values['background'];
|
||||
$table->style[2] = 'font-size: 22px;background-color: '.$values['background'];
|
||||
$table->style[3] = 'font-size: 22px;background-color: '.$values['background'];
|
||||
$table->style[4] = 'font-size: 22px;background-color: '.$values['background'];
|
||||
$table->style[5] = 'font-size: 22px;background-color: '.$values['background'];
|
||||
$table->style[0] = 'background-color: '.$values['background'].';';
|
||||
$table->style[1] = 'background-color: '.$values['background'].';';
|
||||
$table->style[2] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
|
||||
$table->style[3] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
|
||||
$table->style[4] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
|
||||
$table->style[5] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
|
||||
|
||||
foreach ($result as $id => $os) {
|
||||
$data = [];
|
||||
|
@ -418,7 +418,7 @@ class SingleGraphWidget extends Widget
|
||||
'dashboard' => true,
|
||||
];
|
||||
|
||||
$output = '<div class="container-center">';
|
||||
$output = '<div class="container-center widget-mrgn-0px">';
|
||||
$output .= \grafico_modulo_sparse($params);
|
||||
$output .= '</div>';
|
||||
return $output;
|
||||
|
@ -289,6 +289,10 @@ class SLAPercentWidget extends Widget
|
||||
$values['period'] = $decoder['period'];
|
||||
}
|
||||
|
||||
if (isset($decoder['layout']) === true) {
|
||||
$values['layout'] = $decoder['layout'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
@ -404,6 +408,18 @@ class SLAPercentWidget extends Widget
|
||||
],
|
||||
];
|
||||
|
||||
// Layout.
|
||||
$inputs[] = [
|
||||
'label' => __('Layout').ui_print_help_tip(__('Off: vertical. On: horizontal'), true),
|
||||
'arguments' => [
|
||||
'wrapper' => 'div',
|
||||
'name' => 'layout',
|
||||
'type' => 'switch',
|
||||
'value' => $values['layout'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
@ -425,6 +441,7 @@ class SLAPercentWidget extends Widget
|
||||
$values['period'] = \get_parameter('period', 0);
|
||||
$values['sizeValue'] = \get_parameter('sizeValue', '');
|
||||
$values['sizeLabel'] = \get_parameter('sizeLabel', '');
|
||||
$values['layout'] = \get_parameter_switch('layout');
|
||||
|
||||
return $values;
|
||||
}
|
||||
@ -494,21 +511,42 @@ class SLAPercentWidget extends Widget
|
||||
$sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 30;
|
||||
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 30;
|
||||
|
||||
$output .= '<div class="container-center">';
|
||||
$uuid = uniqid();
|
||||
|
||||
$output .= '<div class="container-center" id="container-'.$uuid.'">';
|
||||
|
||||
$orientation = '';
|
||||
if ((int) $this->values['layout'] === 1) {
|
||||
$orientation = 'flex';
|
||||
} else {
|
||||
$orientation = 'grid';
|
||||
}
|
||||
|
||||
// General div.
|
||||
$output .= '<div class="container-icon">';
|
||||
$output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
|
||||
// Div value.
|
||||
$output .= '<div style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px mrgn_btn_20px" style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
|
||||
$output .= $sla_array['sla_fixed'].'%';
|
||||
$output .= '</div>';
|
||||
|
||||
if (empty($label) === false) {
|
||||
// Div Label.
|
||||
$output .= '<div style="flex: 1 1; font-size:'.$sizeLabel.'px; text-align: left;">'.$label.'</div>';
|
||||
$output .= '<div class="pdd_l_15px pdd_r_15px" style="flex: 1 1; font-size:'.$sizeLabel.'px; text-align: left;">'.$label.'</div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= '<script>
|
||||
var containerWidth = document.querySelector("#container-'.$uuid.'").offsetWidth;
|
||||
var generalWidth = document.querySelector("#general-'.$uuid.'").offsetWidth;
|
||||
|
||||
if (generalWidth >= containerWidth) {
|
||||
$("#container-'.$uuid.'").css("align-items", "flex-start");
|
||||
} else {
|
||||
$("#container-'.$uuid.'").css("align-items", "center");
|
||||
}
|
||||
</script>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
@ -835,3 +835,11 @@ form.modal-dashboard
|
||||
border: 0px;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
div.widget-mrgn-0px > div.parent_graph {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
div.widget-mrgn-0px > div.parent_graph > div[id^="graph_"] {
|
||||
width: calc(100% + 14px) !important;
|
||||
}
|
||||
|
@ -482,6 +482,11 @@ div.multi-response-buttons {
|
||||
-webkit-mask: url(../../images/modules@svg.svg) no-repeat center / contain;
|
||||
}
|
||||
|
||||
.alert_module_background_state {
|
||||
mask: url(../../images/alert@svg.svg) no-repeat center / contain;
|
||||
-webkit-mask: url(../../images/alert@svg.svg) no-repeat center / contain;
|
||||
}
|
||||
|
||||
.icon_background_critical {
|
||||
background-color: #e63c52;
|
||||
}
|
||||
|
@ -9306,7 +9306,7 @@ div.stat-win-spinner img {
|
||||
color: #fff !important;
|
||||
font-size: 1.2em;
|
||||
margin-right: 5px !important;
|
||||
margin-top: -4px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.select2-results
|
||||
@ -11664,3 +11664,7 @@ div.ui-dialog-buttonset > button.ui-button.ui-corner-all.ui-widget:active {
|
||||
background-color: #0d312f;
|
||||
border-color: #0d312f;
|
||||
}
|
||||
|
||||
div#menu_full > div#menu_tabs > ul.tabs_ul {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
|
||||
* Copyright (c) 2005-2023 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@ -129,48 +129,31 @@ $draw = get_parameter('draw_button', '');
|
||||
$save = get_parameter('save_button', '');
|
||||
$update = get_parameter('update_button', '');
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Netflow live view'),
|
||||
'images/op_netflow.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
[],
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Netflow live view'),
|
||||
'images/op_netflow.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
[],
|
||||
[
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Monitoring'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Network'),
|
||||
],
|
||||
]
|
||||
);
|
||||
'link' => '',
|
||||
'label' => __('Monitoring'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Network'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN';
|
||||
if ($is_windows) {
|
||||
ui_print_error_message(__('Not supported in Windows systems'));
|
||||
} else {
|
||||
netflow_print_check_version_error();
|
||||
}
|
||||
$is_windows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
|
||||
if ($is_windows === true) {
|
||||
ui_print_error_message(__('Not supported in Windows systems'));
|
||||
} else {
|
||||
$nav_bar = [
|
||||
[
|
||||
'link' => 'index.php?sec=main',
|
||||
'text' => __('Main'),
|
||||
],
|
||||
[
|
||||
'link' => 'index.php?sec=netf&sec2=operation/netflow/nf_live_view',
|
||||
'text' => __('Netflow live view'),
|
||||
],
|
||||
];
|
||||
|
||||
ui_meta_print_page_header($nav_bar);
|
||||
|
||||
ui_meta_print_header(__('Netflow live view'));
|
||||
netflow_print_check_version_error();
|
||||
}
|
||||
|
||||
// Save user defined filter.
|
||||
@ -443,6 +426,7 @@ if (empty($filter['advanced_filter']) === false) {
|
||||
|
||||
$filterTable = new stdClass();
|
||||
$filterTable->id = '';
|
||||
$filterTable->width = '100%';
|
||||
$filterTable->class = 'filter-table-adv';
|
||||
$filterTable->size = [];
|
||||
$filterTable->size[0] = '33%';
|
||||
|
Loading…
x
Reference in New Issue
Block a user