Merge branch 'develop' into ent-9893-nuevo-sistema-de-ha

This commit is contained in:
Daniel Maya 2023-03-16 10:10:16 +01:00
commit 1d4aeef893
164 changed files with 6397 additions and 6176 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.769-230313 Version: 7.0NG.769-230316
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.769-230313" pandora_version="7.0NG.769-230316"
echo "Test if you has the tools for to make the packages." echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -1023,7 +1023,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.769'; use constant AGENT_VERSION => '7.0NG.769';
use constant AGENT_BUILD => '230313'; use constant AGENT_BUILD => '230316';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230313 %define release 230316
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.769 %define version 7.0NG.769
%define release 230313 %define release 230316
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.769" PI_VERSION="7.0NG.769"
PI_BUILD="230313" PI_BUILD="230316"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -6,21 +6,22 @@
# #
# (c) A. Kevin Rojas <kevin.rojas@pandorafms.com> # (c) A. Kevin Rojas <kevin.rojas@pandorafms.com>
# #
# Edited in 2023 by Alejandro Sánchez <alejandro.sanchez@pandorafms.com>
#
# TO DO LIST: # TO DO LIST:
# - Enable child services detection (Windows) # - Enable child services detection (Windows)
# - Make CPU/Memory usage available for child services (Windows) # - Make CPU/Memory usage available for child services (Windows)
# #
################################################### ###################################################
try: try:
from sys import argv from sys import argv
from sys import stderr from sys import stderr
from sys import exit from sys import exit
import psutil
from subprocess import Popen from subprocess import Popen
from subprocess import PIPE from subprocess import PIPE
from subprocess import DEVNULL from subprocess import DEVNULL
from subprocess import getstatusoutput from subprocess import getstatusoutput
import psutil
except ModuleNotFoundError as err: except ModuleNotFoundError as err:
print("{} error: {}. Exiting...".format(argv[0], err), file=stderr) print("{} error: {}. Exiting...".format(argv[0], err), file=stderr)
exit(1) exit(1)
@ -28,99 +29,100 @@ except ModuleNotFoundError as err:
module_list = [] module_list = []
VERSION = "1.2" VERSION = "1.2"
def win_service(servicelist, option=False, memcpu=False):
######################################################################################### modules_default = []
# Powershell class modules_percentage=[]
######################################################################################### ## take all services
class PSCheck: services=psutil.win_service_iter()
@staticmethod for service in services:
def check_service(servicename, option=False, memcpu=False): if service.name() in servicelist:
"""Check services with powershell by parsing their DisplayName. Returns a dict\ serv=service.as_dict()
list with the name of the service and a boolean with its status.\n if serv['status']=='running':
Requires service name (case insensitive).""" value=1
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: else:
output += children value=0
else:
next
if output and element and procname: ## create module for each service
return ({"name" : element, "process" : procname, "modules": output}) parent = build_module("Service " + str(serv['name']) + " - Status", value,"generic_proc")
else: modules_default +=parent
return (None)
@staticmethod # memory and cpu percentage
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: if memcpu:
kidsusage = get_memcpu(str(child)) ## process
for usage in kidsusage:
kids += usage
else:
next
return kids
@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() srv_pid = service.pid()
process = psutil.Process(srv_pid) process = psutil.Process(srv_pid)
proc_name = process.name() proc_name = process.name()
return proc_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:
# Services creation print_module(module, 1)
######################################################################################### if memcpu:
for module in modules_percentage:
print_module(module, 1)
def service_module(name, value, parent=None): 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
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)
def build_module(name, value, module_type, parent=None):
#print ("service_module BEGIN "+str(now(0,1))) #print ("service_module BEGIN "+str(now(0,1)))
module = [{ module = [{
"name" : "Service "+ name + " - Status", "name" : name ,
"type" : "generic_proc", "type" : module_type,
"value" : value, "value" : value,
"module_parent" : parent, "module_parent" : parent,
}] }]
@ -167,74 +169,6 @@ def proc_percentbyname(procname): ############# 03/03/2020
next next
#print ("proc_percentbyname END "+str(now(0,1))) #print ("proc_percentbyname END "+str(now(0,1)))
return [sum(memory),sum(cpu)] 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 # print_module function
######################################################################################### #########################################################################################
@ -356,6 +290,7 @@ def main():
service_list = ["MySQL", "postgresql", "pgsql", "oracle", "MSSQL", "IISADMIN", service_list = ["MySQL", "postgresql", "pgsql", "oracle", "MSSQL", "IISADMIN",
"apache", "nginx", "W3svc", "NTDS", "Netlogon", "DNS", "MSExchangeADTopology", "apache", "nginx", "W3svc", "NTDS", "Netlogon", "DNS", "MSExchangeADTopology",
"MSExchangeServiceHost", "MSExchangeSA", "MSExchangeTransport"] "MSExchangeServiceHost", "MSExchangeSA", "MSExchangeTransport"]
discover(OS, service_list) discover(OS, service_list)
elif psutil.LINUX: elif psutil.LINUX:
OS = "Linux" OS = "Linux"

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{230313} {230316}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils; using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1 #define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.769 Build 230313") #define PANDORA_VERSION ("7.0NG.769 Build 230316")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.769(Build 230313))" VALUE "ProductVersion", "(7.0NG.769(Build 230316))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.769-230313 Version: 7.0NG.769-230316
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.769-230313" pandora_version="7.0NG.769-230316"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -143,22 +143,23 @@ function quickShell()
'form' => [ 'form' => [
'method' => 'POST', 'method' => 'POST',
'action' => '#', 'action' => '#',
], 'id' => 'retry_form',
'inputs' => [
[
'class' => 'w100p',
'arguments' => [
'name' => 'submit',
'label' => __('Retry'),
'type' => 'submit',
'attributes' => ['icon' => 'next'],
'return' => true,
],
],
], ],
] ]
); );
html_print_action_buttons(
html_print_submit_button(
__('Retry'),
'submit',
false,
[
'icon' => 'next',
'form' => 'retry_form',
],
true
)
);
return; return;
} }
@ -168,6 +169,7 @@ function quickShell()
'action' => '#', 'action' => '#',
'class' => 'wizard', 'class' => 'wizard',
'method' => 'post', 'method' => 'post',
'id' => 'connect_form',
], ],
'inputs' => [ 'inputs' => [
[ [
@ -198,19 +200,24 @@ function quickShell()
'script' => "p=22; if(this.value == 'telnet') { p=23; } $('#text-port').val(p);", 'script' => "p=22; if(this.value == 'telnet') { p=23; } $('#text-port').val(p);",
], ],
], ],
[
'arguments' => [
'type' => 'submit',
'label' => __('Connect'),
'attributes' => ['icon' => 'cog'],
],
],
], ],
], ],
false, false,
true true
); );
html_print_action_buttons(
html_print_submit_button(
__('Connect'),
'submit',
false,
[
'icon' => 'cog',
'form' => 'connect_form',
],
true
)
);
return; return;
} }

View File

@ -164,4 +164,15 @@ INSERT INTO `twelcome_tip_file` (`twelcome_tip_file`, `filename`, `path`) VALUES
(20, 'zoom_en_graficas.png', 'images/tips/'), (20, 'zoom_en_graficas.png', 'images/tips/'),
(22, 'politica_de_pass.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,
`id_element` TEXT,
`url` TEXT NOT NULL,
`label` VARCHAR(255) NOT NULL,
`section` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`));
COMMIT; COMMIT;

View File

@ -407,7 +407,6 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
// User. // User.
// $headerUserImage = (is_user_admin($config['id_user']) === true) ? 'images/header_user_admin_green.png' : 'images/header_user_green.png';
$headerUser = []; $headerUser = [];
$headerUser[] = html_print_image( $headerUser[] = html_print_image(
'images/edit_user@header.svg', 'images/edit_user@header.svg',

View File

@ -61,18 +61,19 @@ ui_print_warning_message(
$table = new stdClass(); $table = new stdClass();
$table->width = '100%'; $table->width = '100%';
$table->class = 'databox filters'; $table->class = 'databox filter-table-adv mrgn_top_15px pdd_t_0px_important';
$table->data = []; $table->data = [];
$table->cellpadding = 0; $table->cellpadding = 0;
$table->cellspacing = 0; $table->cellspacing = 0;
$table->head[0] = __('Agent position'); $table->head[0] = __('Agent position');
$table->head_colspan[0] = 4; $table->head_colspan[0] = 4;
$table->headstyle[0] = 'text-align:center'; $table->headstyle[0] = 'text-align:center';
$table->style[0] = 'font-weight: bold; '; $table->size[0] = '50%';
$table->style[2] = 'font-weight: bold; '; $table->size[2] = '50%';
$table->data[1][0] = __('Latitude: '); $table->data[1][0] = html_print_label_input_block(
$table->data[1][1] = html_print_input_text_extended( __('Latitude: '),
html_print_input_text_extended(
'latitude', 'latitude',
$agentData['stored_latitude'], $agentData['stored_latitude'],
'text-latitude', 'text-latitude',
@ -86,10 +87,12 @@ $table->data[1][1] = html_print_input_text_extended(
'onkeyup' => 'setIgnoreGISDataEnabled()', 'onkeyup' => 'setIgnoreGISDataEnabled()',
], ],
true true
)
); );
$table->data[1][2] = __('Longitude: '); $table->data[1][1] = html_print_label_input_block(
$table->data[1][3] = html_print_input_text_extended( __('Longitude: '),
html_print_input_text_extended(
'longitude', 'longitude',
$agentData['stored_longitude'], $agentData['stored_longitude'],
'text-longitude', 'text-longitude',
@ -103,10 +106,12 @@ $table->data[1][3] = html_print_input_text_extended(
'onkeyup' => 'setIgnoreGISDataEnabled()', 'onkeyup' => 'setIgnoreGISDataEnabled()',
], ],
true true
)
); );
$table->data[2][0] = __('Altitude: '); $table->data[2][0] = html_print_label_input_block(
$table->data[2][1] = html_print_input_text_extended( __('Altitude: '),
html_print_input_text_extended(
'altitude', 'altitude',
$agentData['stored_altitude'], $agentData['stored_altitude'],
'text-altitude', 'text-altitude',
@ -120,20 +125,46 @@ $table->data[2][1] = html_print_input_text_extended(
'onkeyup' => 'setIgnoreGISDataEnabled()', 'onkeyup' => 'setIgnoreGISDataEnabled()',
], ],
true true
)
); );
$table->data[2][2] = __('Ignore new GIS data:'); $table->data[2][1] = html_print_label_input_block(
$table->data[2][3] = __('Yes').' '.html_print_radio_button_extended('update_gis_data', 0, '', $updateGisData, false, '', 'class="mrgn_right_40px"', true); __('Ignore new GIS data: '),
$table->data[2][3] .= __('No').' '.html_print_radio_button_extended('update_gis_data', 1, '', $updateGisData, false, '', 'class="mrgn_right_40px"', true); '<div class="flex mrgn_top_5px">'.__('Yes').' '.html_print_radio_button_extended(
'update_gis_data',
0,
'',
$updateGisData,
false,
'',
'class="mrgn_right_40px"',
true
).__('No').' '.html_print_radio_button_extended(
'update_gis_data',
1,
'',
$updateGisData,
false,
'',
'class="mrgn_right_40px"',
true
).'</div>'
);
$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=gis&id_agente='.$id_agente; $url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=gis&id_agente='.$id_agente;
echo "<form method='post' action='".$url."' onsubmit ='return validateFormFields();'>"; echo "<form method='post' action='".$url."' onsubmit ='return validateFormFields();' class='max_floating_element_size'>";
html_print_input_hidden('update_gis', 1); html_print_input_hidden('update_gis', 1);
html_print_table($table); html_print_table($table);
echo '<div class="action-buttons float-left" style="width: '.$table->width.';">'; html_print_action_buttons(
html_print_submit_button(__('Update'), '', false, 'class="sub upd"'); html_print_submit_button(
echo '</div>'; __('Update'),
'',
false,
['icon' => 'wand'],
true
)
);
echo '</form>'; echo '</form>';
?> ?>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -487,9 +487,8 @@ if (isset($groups[$grupo]) === true || $new_agent === true) {
$tableAgent->data['primary_group'][0] .= html_print_input_hidden('grupo', $grupo, true); $tableAgent->data['primary_group'][0] .= html_print_input_hidden('grupo', $grupo, true);
} }
$tableAgent->data['primary_group'][0] .= html_print_div( $tableAgent->data['primary_group'][0] .= '<span id="group_preview">';
[ $tableAgent->data['primary_group'][0] .= ui_print_group_icon(
'content' => ui_print_group_icon(
$grupo, $grupo,
true, true,
'', '',
@ -498,10 +497,8 @@ $tableAgent->data['primary_group'][0] .= html_print_div(
false, false,
false, false,
'after_input_icon' 'after_input_icon'
),
],
true
); );
$tableAgent->data['primary_group'][0] .= '</span>';
$tableAgent->data['caption_interval'][0] = __('Interval'); $tableAgent->data['caption_interval'][0] = __('Interval');
// $tableAgent->rowstyle['interval'] = 'width: 260px'; // $tableAgent->rowstyle['interval'] = 'width: 260px';
@ -974,7 +971,7 @@ foreach ($fields as $field) {
$data_field[1] .= html_print_textarea( $data_field[1] .= html_print_textarea(
'customvalue_'.$field['id_field'].'[]', 'customvalue_'.$field['id_field'].'[]',
2, 2,
65, 1000,
$link_text, $link_text,
'class="min-height-30px w100p"', 'class="min-height-30px w100p"',
true true
@ -985,7 +982,7 @@ foreach ($fields as $field) {
$data_field[1] .= html_print_textarea( $data_field[1] .= html_print_textarea(
'customvalue_'.$field['id_field'].'[]', 'customvalue_'.$field['id_field'].'[]',
2, 2,
65, 1000,
$link_url, $link_url,
'class="min-height-30px w100p"', 'class="min-height-30px w100p"',
true true
@ -994,7 +991,7 @@ foreach ($fields as $field) {
$customContent = html_print_textarea( $customContent = html_print_textarea(
'customvalue_'.$field['id_field'], 'customvalue_'.$field['id_field'],
2, 2,
65, 1000,
$custom_value, $custom_value,
'class="min-height-30px w100p"', 'class="min-height-30px w100p"',
true true
@ -1039,7 +1036,7 @@ if (empty($fields) === false) {
'', '',
true, true,
false, false,
'white_box white_box_opened white_table_graph_fixed', 'white_box white_box_opened white_table_graph_fixed no_border',
'no-border custom_fields_elements' 'no-border custom_fields_elements'
); );
} }

View File

@ -196,29 +196,52 @@ foreach ($nps as $row) {
$filterTable = new stdClass(); $filterTable = new stdClass();
$filterTable->width = '100%'; $filterTable->width = '100%';
$filterTable->class = 'fixed_filter_bar'; $filterTable->class = 'filter-table-adv';
$filterTable->size[0] = '100%';
$filterTable->data = []; $filterTable->data = [];
$filterTable->data[0][0] = __('Module templates');
$filterTable->data[1][0] = html_print_select($select, 'template_id', '', '', '', 0, true, false, true, '', false, 'max-width: 200px !important'); $filterTable->data[0][0] = html_print_label_input_block(
$filterTable->data[1][1] = html_print_div( __('Module templates'),
[ html_print_select(
'class' => 'action-buttons', $select,
'content' => html_print_submit_button( 'template_id',
'',
'',
'',
0,
true,
false,
true,
'',
false,
'width: 250px '
)
);
$filterTable->data[1][0] = html_print_submit_button(
__('Assign'), __('Assign'),
'crt', 'crt',
false, false,
[ [
'class' => 'float-right',
'icon' => 'wand', 'icon' => 'wand',
'mode' => 'secondary mini', 'mode' => 'mini',
],
true
),
], ],
true true
); );
$outputFilterTable = '<form style="border:0" class="fixed_filter_bar" method="post" action="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=template&id_agente='.$id_agente.'">'; $outputFilterTable = '<form method="post" action="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=template&id_agente='.$id_agente.'">';
$outputFilterTable .= html_print_table($filterTable, true); $outputFilterTable .= ui_toggle(
html_print_table($filterTable, true),
'<span class="subsection_header_title">'.__('Assign').'</span>',
__('Assign'),
'assign',
true,
true,
'',
'white-box-content no_border',
'filter-datatable-main box-flat white_table_graph fixed_filter_bar'
);
$outputFilterTable .= '</form>'; $outputFilterTable .= '</form>';
echo $outputFilterTable; echo $outputFilterTable;

View File

@ -808,7 +808,7 @@ if ($id_agente) {
$pure = (int) get_parameter('pure'); $pure = (int) get_parameter('pure');
if ($pure === 0) { if ($pure === 0) {
ui_print_standard_header( ui_print_standard_header(
__('Agent setup view'), __('Agent setup view').' ( '.strtolower(agents_get_alias($id_agente)).' )',
'images/agent.png', 'images/agent.png',
false, false,
$helper, $helper,

View File

@ -180,14 +180,26 @@ if ($load_inventory_module) {
$form_buttons = ''; $form_buttons = '';
if ($load_inventory_module) { if ($load_inventory_module) {
$form_buttons .= html_print_input_hidden('id_agent_module_inventory', $id_agent_module_inventory, true); $form_buttons .= html_print_input_hidden('id_agent_module_inventory', $id_agent_module_inventory, true);
$form_buttons .= html_print_submit_button(__('Update'), 'update_inventory_module', false, 'class="sub next"', true); $form_buttons .= html_print_submit_button(
__('Update'),
'update_inventory_module',
false,
['icon' => 'wand'],
true
);
} else { } else {
$form_buttons .= html_print_submit_button(__('Add'), 'add_inventory_module', false, 'class="sub next"', true); $form_buttons .= html_print_submit_button(
__('Add'),
'add_inventory_module',
false,
['icon' => 'wand'],
true
);
} }
echo ui_get_inventory_module_add_form( echo ui_get_inventory_module_add_form(
'index.php?sec=estado&sec2=godmode/agentes/configurar_agente&tab=inventory&id_agente='.$id_agente, 'index.php?sec=estado&sec2=godmode/agentes/configurar_agente&tab=inventory&id_agente='.$id_agente,
$form_buttons, html_print_action_buttons($form_buttons, [], true),
$load_inventory_module, $load_inventory_module,
$id_os, $id_os,
$target, $target,
@ -213,10 +225,10 @@ if (db_get_num_rows($sql) == 0) {
} else { } else {
$table = new stdClass(); $table = new stdClass();
$table->width = '100%'; $table->width = '100%';
$table->class = 'databox filters'; $table->class = 'databox info_trable';
$table->data = []; $table->data = [];
$table->head = []; $table->head = [];
$table->styleTable = 'margin-top: 20px;'; $table->styleTable = '';
$table->head[0] = "<span title='".__('Policy')."'>".__('P.').'</span>'; $table->head[0] = "<span title='".__('Policy')."'>".__('P.').'</span>';
$table->head[1] = __('Name'); $table->head[1] = __('Name');
$table->head[2] = __('Description'); $table->head[2] = __('Description');

View File

@ -302,15 +302,17 @@ foreach ($pre_fields as $key => $value) {
// Filter table. // Filter table.
$filterTable = new stdClass(); $filterTable = new stdClass();
$filterTable->class = 'fixed_filter_bar'; $filterTable->class = 'filter-table-adv w100p';
$filterTable->size[0] = '20%';
$filterTable->size[1] = '20%';
$filterTable->size[2] = '20%';
$filterTable->size[3] = '20%';
$filterTable->size[4] = '20%';
$filterTable->data = []; $filterTable->data = [];
$filterTable->cellstyle[0][0] = 'width:0';
$filterTable->cellstyle[0][1] = 'width:0';
$filterTable->cellstyle[0][2] = 'width:0';
$filterTable->cellstyle[0][3] = 'width:0';
$filterTable->data[0][0] = __('Group'); $filterTable->data[0][0] = html_print_label_input_block(
$filterTable->data[1][0] = html_print_select_groups( __('Group'),
html_print_select_groups(
false, false,
'AR', 'AR',
$return_all_group, $return_all_group,
@ -324,71 +326,98 @@ $filterTable->data[1][0] = html_print_select_groups(
true, true,
'', '',
false false
)
); );
$filterTable->data[0][1] = __('Recursion'); $filterTable->data[0][1] = html_print_label_input_block(
$filterTable->data[1][1] = html_print_checkbox_switch( __('Recursion'),
'<div class="mrgn_top_10px">'.html_print_checkbox_switch(
'recursion', 'recursion',
1, 1,
$recursion, $recursion,
true, true,
false, false,
'this.form.submit()' 'this.form.submit()'
).'</div>'
); );
$filterTable->data[0][2] = __('Show agents'); $filterTable->data[0][2] = html_print_label_input_block(
$filterTable->data[1][2] = html_print_select( __('Show agents'),
html_print_select(
$showAgentFields, $showAgentFields,
'disabled', 'disabled',
$disabled, $disabled,
'this.form.submit()', 'this.form.submit()',
'', '',
0, 0,
true true,
false,
true,
'w100p',
false,
'width: 100%'
)
); );
$filterTable->data[0][3] = __('Operating System'); $filterTable->data[0][3] = html_print_label_input_block(
$filterTable->data[1][3] = html_print_select( __('Operating System'),
html_print_select(
$fields, $fields,
'os', 'os',
$os, $os,
'this.form.submit()', 'this.form.submit()',
'All', 'All',
0, 0,
true true,
false,
true,
'w100p',
false,
'width: 100%'
)
); );
$filterTable->data[0][4] = __('Free search'); $filterTable->data[0][4] = html_print_label_input_block(
$filterTable->data[0][4] .= ui_print_help_tip( __('Free search').ui_print_help_tip(
__('Search filter by alias, name, description, IP address or custom fields content'), __('Search filter by alias, name, description, IP address or custom fields content'),
true true
); ),
$filterTable->data[1][4] = html_print_input_text( html_print_input_text(
'search', 'search',
$search, $search,
'', '',
12, 12,
255, 255,
true true
)
); );
$filterTable->cellstyle[1][5] = 'vertical-align: bottom'; $filterTable->colspan[1][0] = 5;
$filterTable->data[1][5] = html_print_submit_button( $filterTable->data[1][0] = html_print_submit_button(
__('Filter'), __('Filter'),
'srcbutton', 'srcbutton',
false, false,
[ [
'icon' => 'search', 'icon' => 'search',
'class' => 'float-right', 'class' => 'float-right mrgn_right_10px',
'mode' => 'secondary mini', 'mode' => 'mini',
], ],
true true
); );
// Print filter table. // 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\'>';
html_print_table($filterTable); ui_toggle(
echo '</form>'; $form.html_print_table($filterTable, true).'</form>',
'<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'
);
// Data table. // Data table.
$selected = true; $selected = true;

View File

@ -1071,9 +1071,15 @@ if ((bool) check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === tr
echo '</form>'; echo '</form>';
} }
$modalCreateModule = '<form name="create_module_form" method="post">'; // Form table for Module creation.
$input_type = html_print_input_hidden('edit_module', 1, true); $createModuleTable = new stdClass();
$input_type .= html_print_select( $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), policies_type_modules_availables($sec2),
'moduletype', 'moduletype',
'', '',
@ -1086,12 +1092,29 @@ $input_type .= html_print_select(
'', '',
false, false,
'max-width:300px;' '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( $modalCreateModule .= html_print_div(
[ [
'class' => 'action-buttons', 'class' => 'action-buttons-right-forced',
'content' => html_print_submit_button( 'content' => html_print_submit_button(
__('Create'), __('Create'),
'create_module', 'create_module',

View File

@ -444,7 +444,8 @@ $tableBasicThresholds->data = [];
$tableBasicThresholds->rowclass['caption_warning_threshold'] = 'field_half_width pdd_t_10px'; $tableBasicThresholds->rowclass['caption_warning_threshold'] = 'field_half_width pdd_t_10px';
$tableBasicThresholds->rowclass['warning_threshold'] = 'field_half_width'; $tableBasicThresholds->rowclass['warning_threshold'] = 'field_half_width';
$tableBasicThresholds->data['caption_warning_threshold'][0] .= __('Warning threshold').'&nbsp;'; $tableBasicThresholds->data['caption_warning_threshold'][0] .= __('Warning threshold').'&nbsp;';
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['caption_warning_threshold'][0] .= '<span class="font_11" id="caption_minmax_warning">('.__('Min / Max').')</span>';
$tableBasicThresholds->data['warning_threshold'][0] .= html_print_input_text( $tableBasicThresholds->data['warning_threshold'][0] .= html_print_input_text(
'min_warning', '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 = [];
$basicThresholdsIntervalWarning[] = '<span>'.__('Inverse interval').'</span>'; $basicThresholdsIntervalWarning[] = '<span>'.__('Inverse interval').'</span>';
$basicThresholdsIntervalWarning[] = html_print_checkbox_switch( $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['caption_critical_threshold'] = 'field_half_width pdd_t_10px';
$tableBasicThresholds->rowclass['critical_threshold'] = 'field_half_width'; $tableBasicThresholds->rowclass['critical_threshold'] = 'field_half_width';
$tableBasicThresholds->data['caption_critical_threshold'][0] .= __('Critical threshold').'&nbsp;'; $tableBasicThresholds->data['caption_critical_threshold'][0] .= __('Critical threshold').'&nbsp;';
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['caption_critical_threshold'][0] .= '<span class="font_11" id="caption_minmax_critical">('.__('Min / Max').')</span>';
$tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text( $tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text(
'min_critical', '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 = [];
$basicThresholdsIntervalCritical[] = '<span>'.__('Inverse interval').'</span>'; $basicThresholdsIntervalCritical[] = '<span>'.__('Inverse interval').'</span>';
$basicThresholdsIntervalCritical[] = html_print_checkbox_switch( $basicThresholdsIntervalCritical[] = html_print_checkbox_switch(
@ -1906,79 +1907,52 @@ $(document).ready (function () {
$('.switch_radio_button label').on('click', function(){ $('.switch_radio_button label').on('click', function(){
var thisLabel = $(this).attr('for'); var thisLabel = $(this).attr('for');
$('#'+thisLabel).attr('checked', 'checked'); $('#'+thisLabel).prop('checked', true);
$('#'+thisLabel).siblings().attr('checked', false); $('#'+thisLabel).siblings().prop('checked', false);
if ($('#radius-warning_inverse').prop('checked') === true) { if ($('#radius-percentage_warning').prop('checked') === true || $('#radius-percentage_critical').prop('checked') === true) {
//$('#percentage_warning').hide(); $("#svg_dinamic").hide();
$("#svg_dinamic").show(); } else {
} paint_graph_values();
if ($('#radius-critical_inverse').prop('checked') === true) {
//$('#percentage_critical').hide();
$("#svg_dinamic").show(); $("#svg_dinamic").show();
} }
if ($('#radius-percentage_warning').prop('checked') === true) { if ($('#radius-percentage_warning').prop('checked') === true) {
//$('#warning_inverse').hide(); $('#radius-warning_inverse').hide();
$("#svg_dinamic").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) { if ($('#radius-percentage_critical').prop('checked') === true) {
//$('#critical_inverse').hide(); $('#radius-critical_inverse').hide();
$("#svg_dinamic").hide(); $('#label-radius-critical_inverse').hide();
} }
$('#radius-warning_inverse').change (function() { if ($('#radius-critical_inverse').prop('checked') === true) {
paint_graph_values(); $('#radius-percentage_critical').hide();
if ($('#radius-warning_inverse').prop('checked') === true){ $('#label-radius-percentage_critical').hide();
$('#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');
} }
});
$('#radius-critical_inverse').change (function() { if ($('#radius-normal_critical').prop('checked') === true) {
paint_graph_values(); $('#radius-critical_inverse').show();
$('#label-radius-critical_inverse').show();
if ($('#radius-critical_inverse').prop('checked') === true){ $('#radius-percentage_critical').show();
$('#radius-percentage_critical').prop('checked', false); $('#label-radius-percentage_critical').show();
$('#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');
}
});
});
}); });
@ -2235,91 +2209,66 @@ function validate_post_process() {
} }
} }
//function paint graph //function paint graph.
function paint_graph_values(){ function paint_graph_values(){
//Parse integrer
var min_w = parseFloat($('#text-min_warning').val()); var min_w = parseFloat($('#text-min_warning').val());
if(min_w == '0.00'){ min_w = 0; } if(min_w == '0.00' || isNaN(min_w)){ min_w = 0; }
var max_w = parseFloat($('#text-max_warning').val()); var max_w = parseFloat($('#text-max_warning').val());
if(max_w == '0.00'){ max_w = 0; } if(max_w == '0.00' || isNaN(max_w)){ max_w = 0; }
var min_c = parseFloat($('#text-min_critical').val()); var min_c = parseFloat($('#text-min_critical').val());
if(min_c =='0.00'){ min_c = 0; } if(min_c =='0.00' || isNaN(min_c)){ min_c = 0; }
var max_c = parseFloat($('#text-max_critical').val()); var max_c = parseFloat($('#text-max_critical').val());
if(max_c =='0.00'){ max_c = 0; } if(max_c =='0.00' || isNaN(max_c)){ max_c = 0; }
var inverse_w = $('input:radio[name=warning_inverse]:checked').val();
var inverse_w = $('input:radio[value=warning_inverse]:checked').val();
if(!inverse_w){ inverse_w = 0; } if(!inverse_w){ inverse_w = 0; }
var inverse_c = $('input:radio[name=critical_inverse]:checked').val();
var inverse_c = $('input:radio[value=critical_inverse]:checked').val();
if(!inverse_c){ inverse_c = 0; } if(!inverse_c){ inverse_c = 0; }
//inicialiced error //inicialiced error.
var error_w = 0; var error_w = 0;
var error_c = 0; var error_c = 0;
//messages legend
//messages legend.
var legend_normal = '<?php echo __('Normal Status'); ?>'; var legend_normal = '<?php echo __('Normal Status'); ?>';
var legend_warning = '<?php echo __('Warning Status'); ?>'; var legend_warning = '<?php echo __('Warning Status'); ?>';
var legend_critical = '<?php echo __('Critical 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_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_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'); ?>'; 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 haven't error
if(max_w == 0 || max_w > min_w){ if(max_w == 0 || max_w > min_w){
if(max_c == 0 || max_c > min_c){ if(max_c == 0 || max_c > min_c){
paint_graph_status(min_w, max_w, min_c, max_c, inverse_w, paint_graph_status(
min_w, max_w, min_c, max_c, inverse_w,
inverse_c, error_w, error_c, inverse_c, error_w, error_c,
legend_normal, legend_warning, legend_critical, legend_normal, legend_warning, legend_critical,
message_error_warning, message_error_critical); message_error_warning, message_error_critical
);
} else { } else {
error_c = 1; error_c = 1;
paint_graph_status(0,0,0,0,0,0, error_w, error_c, paint_graph_status(
0,0,0,0,0,0, error_w, error_c,
legend_normal, legend_warning, legend_critical, legend_normal, legend_warning, legend_critical,
message_error_warning, message_error_critical); message_error_warning, message_error_critical
);
} }
} else { } else {
error_w = 1; error_w = 1;
paint_graph_status(0,0,0,0,0,0, error_w, error_c, paint_graph_status(
0,0,0,0,0,0, error_w, error_c,
legend_normal, legend_warning, legend_critical, legend_normal, legend_warning, legend_critical,
message_error_warning, message_error_critical); message_error_warning, message_error_critical
);
} }
} }
/* End of relationship javascript */
/* ]]> */ /* ]]> */
</script> </script>

View File

@ -672,10 +672,10 @@ foreach ($simple_alerts as $alert) {
'[&hellip;]', '[&hellip;]',
'' ''
); );
$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'].'">'; 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( $data[2] .= html_print_image(
'images/zoom.png', 'images/details.svg',
true, true,
[ [
'id' => 'template-details-'.$alert['id_alert_template'], 'id' => 'template-details-'.$alert['id_alert_template'],
@ -753,7 +753,7 @@ foreach ($simple_alerts as $alert) {
'delete', 'delete',
'images/delete.svg', 'images/delete.svg',
1, 1,
'padding:0px; margin-left:5px; margin-right:5px;', 'padding:0px; margin-left:5px; margin-right:5px; width: 22px;',
true, true,
[ [
'title' => __('Delete action'), 'title' => __('Delete action'),
@ -913,7 +913,7 @@ foreach ($simple_alerts as $alert) {
'enable', 'enable',
'images/lightbulb_off.png', 'images/lightbulb_off.png',
1, 1,
'padding:0px', 'padding:0px; width: 22px; height: 22px;',
true, true,
['class' => 'filter_none main_menu_icon'] ['class' => 'filter_none main_menu_icon']
); );
@ -923,7 +923,7 @@ foreach ($simple_alerts as $alert) {
'disable', 'disable',
'images/lightbulb.png', 'images/lightbulb.png',
1, 1,
'padding:0px;', 'padding:0px; width: 22px; height: 22px;',
true, true,
['class' => 'main_menu_icon'] ['class' => 'main_menu_icon']
); );
@ -941,7 +941,7 @@ foreach ($simple_alerts as $alert) {
'standby_off', 'standby_off',
'images/bell.png', 'images/bell.png',
1, 1,
'padding:0px;', 'padding:0px; width: 22px; height: 22px;',
true, true,
['class' => 'invert_filter main_menu_icon'] ['class' => 'invert_filter main_menu_icon']
); );
@ -951,7 +951,7 @@ foreach ($simple_alerts as $alert) {
'standby_on', 'standby_on',
'images/bell_pause.png', 'images/bell_pause.png',
1, 1,
'padding:0px;', 'padding:0px; width: 22px; height: 22px;',
true, true,
['class' => 'invert_filter main_menu_icon'] ['class' => 'invert_filter main_menu_icon']
); );

View File

@ -484,7 +484,7 @@ if (is_metaconsole() === false) {
$buttons = [ $buttons = [
'list' => [ 'list' => [
'active' => false, 'active' => false,
'text' => '<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&tab=list&pure='.$pure.'">'.html_print_image('images/load@svg.svg', true, ['title' => __('List alerts'), 'class' => 'main_menu_icon invert_filter']).'</a>', 'text' => '<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&tab=list&pure='.$pure.'">'.html_print_image('images/logs@svg.svg', true, ['title' => __('List alerts'), 'class' => 'main_menu_icon invert_filter']).'</a>',
], ],
'builder' => [ 'builder' => [
'active' => false, 'active' => false,
@ -497,6 +497,7 @@ if (is_metaconsole() === false) {
$buttons = ''; $buttons = '';
} }
if ($tab !== 'alert') {
if ($tab === 'list') { if ($tab === 'list') {
ui_print_standard_header( ui_print_standard_header(
__('Alerts'), __('Alerts'),
@ -536,6 +537,7 @@ if (is_metaconsole() === false) {
] ]
); );
} }
}
} else { } else {
alerts_meta_print_header(); alerts_meta_print_header();
} }

View File

@ -61,13 +61,19 @@ if ($default_action != 0) {
} }
// Header. // Header.
ui_print_page_header( ui_print_standard_header(
__('Alert details'), __('Alert details'),
'images/op_alerts.png', 'images/op_alerts.png',
false, false,
'', '',
false, false,
'' [],
[
[
'link' => '',
'label' => __('Alerts'),
],
]
); );
// TABLE DETAILS. // TABLE DETAILS.

View File

@ -262,10 +262,7 @@ if ($is_management_allowed === true) {
[ 'icon' => 'next' ], [ 'icon' => 'next' ],
true true
), ),
[ [ 'right_content' => $tablePagination ]
'type' => 'form_action',
'right_content' => $tablePagination,
]
); );
echo '</form>'; echo '</form>';

View File

@ -59,6 +59,14 @@ if ($delete) {
} }
if ($result !== false) { if ($result !== false) {
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id_filter,
'section' => 'Events',
'id_user' => $config['id_user'],
]
);
$result = true; $result = true;
} else { } else {
$result = false; $result = false;

View File

@ -714,6 +714,14 @@ if ($is_management_allowed === true
); );
if ($result && (!$usedGroup['return'])) { if ($result && (!$usedGroup['return'])) {
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id_group,
'section' => 'Groups',
'id_user' => $config['id_user'],
]
);
ui_print_success_message(__('Group successfully deleted')); ui_print_success_message(__('Group successfully deleted'));
} else { } else {
ui_print_error_message( ui_print_error_message(
@ -898,7 +906,6 @@ if ($tab == 'tree') {
foreach ($groups as $key => $group) { foreach ($groups as $key => $group) {
$url_edit = 'index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$group['id_grupo']; $url_edit = 'index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$group['id_grupo'];
$url_tactical = 'index.php?sec=gagente&sec2=godmode/groups/tactical&id_group='.$group['id_grupo'];
if (is_metaconsole()) { if (is_metaconsole()) {
$url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo'].'&tab=groups'; $url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo'].'&tab=groups';
} else { } else {
@ -907,7 +914,7 @@ if ($tab == 'tree') {
$table->data[$key][0] = $group['id_grupo']; $table->data[$key][0] = $group['id_grupo'];
if ($is_management_allowed === true) { if ($is_management_allowed === true) {
$table->data[$key][1] = '<a href="'.$url_tactical.'">'.$group['nombre'].'</a>'; $table->data[$key][1] = '<a href="'.$url_edit.'">'.$group['nombre'].'</a>';
} else { } else {
$table->data[$key][1] = $group['nombre']; $table->data[$key][1] = $group['nombre'];
} }

View File

@ -72,8 +72,14 @@ if (is_metaconsole() === false) {
], ],
[ [
'link' => '', 'link' => '',
'label' => __('Tactic group'), 'label' => __('Tactical group view'),
], ],
],
[
'id_element' => $id_group,
'url' => 'gagent&sec2=godmode/groups/tactical&id_group='.$id_group,
'label' => groups_get_name($id_group),
'section' => 'Groups',
] ]
); );
} }
@ -181,7 +187,7 @@ try {
[ [
'id' => 'list_agents_tactical', 'id' => 'list_agents_tactical',
'class' => 'info_table', 'class' => 'info_table',
'style' => 'width: 100%', 'style' => 'width: 99%',
'columns' => $columns, 'columns' => $columns,
'column_names' => $columnNames, 'column_names' => $columnNames,
'return' => true, 'return' => true,
@ -190,6 +196,7 @@ try {
'method' => 'getAgentsByGroup', 'method' => 'getAgentsByGroup',
'id_group' => $id_group, 'id_group' => $id_group,
], ],
'dom_elements' => 'lpfti',
'no_sortable_columns' => [-1], 'no_sortable_columns' => [-1],
'order' => [ 'order' => [
'field' => 'alias', 'field' => 'alias',

View File

@ -1,16 +1,31 @@
<?php <?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; global $config;
require_once $config['homedir'].'/include/functions_ui.php'; 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); $pure = get_parameter('pure', 0);
// Header // Header.
if (! defined('METACONSOLE')) { ui_print_standard_header(
ui_print_page_header( __('Manage Filters'),
__('Manage Netflow Filter'),
'images/gm_netflow.png', 'images/gm_netflow.png',
false, false,
'', '',
true true,
); [],
[
[
'link' => '',
'label' => __('Netflow'),
],
],
);
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'; $is_windows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
if ($is_windows) { if ($is_windows === true) {
ui_print_error_message(__('Not supported in Windows systems')); 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=godmode/netflow/nf_edit',
'text' => __('Netflow filters'),
],
];
ui_meta_print_page_header($nav_bar);
ui_meta_print_header(__('Netflow filters'));
} }
$delete = (bool) get_parameter('delete'); $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')) { if (check_acl_restricted_all($config['id_user'], $filter['id_group'], 'AW')) {
$table->cellclass[][3] = 'table_action_buttons'; $table->cellclass[][3] = 'table_action_buttons';
$data[3] = "<a onclick='if(confirm(\"".__('Are you sure?')."\")) return true; else return false;' $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.'">';
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] .= html_print_image('images/delete.svg', true, ['title' => __('Delete'), 'class' => 'main_menu_icon invert_filter']);
$data[3] .= '</a>';
} }
array_push($table->data, $data); array_push($table->data, $data);
} }
if (isset($data)) { $buttons = html_print_submit_button(
echo "<form method='post' action='".$config['homeurl']."index.php?sec=netf&sec2=godmode/netflow/nf_edit&pure=$pure'>"; __('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_input_hidden('multiple_delete', 1);
html_print_table($table); html_print_table($table);
echo "<div class='right'>";
html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"');
echo '</div>';
echo '</form>'; echo '</form>';
$buttons .= html_print_submit_button(__('Delete'), 'delete_btn', false, ['icon' => 'delete', 'mode' => 'secondary', 'form' => 'multiple_delete'], true);
} else { } else {
ui_print_info_message(['no_close' => true, 'message' => __('There are no defined filters') ]); 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 '<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_action_buttons(
html_print_submit_button(__('Create filter'), 'crt', false, 'class="sub wand"'); $buttons
echo '</div>'; );
echo '</form>'; echo '</form>';
?> ?>
@ -221,27 +233,14 @@ echo '</form>';
<script type="text/javascript"> <script type="text/javascript">
$( document ).ready(function() { $( document ).ready(function() {
$('[id^=checkbox-all_delete]').change(function() {
$('[id^=checkbox-delete_multiple]').change(function(){ if ($("input[name=all_delete]").prop("checked")) {
if($(this).parent().parent().hasClass('checkselected')){ $(".custom_checkbox_input").prop("checked", true);
$(this).parent().parent().removeClass('checkselected');
} }
else{ else {
$(this).parent().parent().addClass('checkselected'); $(".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);
}
});
}); });

View File

@ -1,16 +1,31 @@
<?php <?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
// ==================================================
// 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; global $config;
require_once $config['homedir'].'/include/functions_ui.php'; require_once $config['homedir'].'/include/functions_ui.php';
@ -46,40 +61,28 @@ if ($id) {
} }
} }
// Header // Header Buttons.
if (! defined('METACONSOLE')) { $buttons = [];
$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>'; $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>'; // Header.
ui_print_standard_header(
ui_print_page_header( $headerTitle,
__('Netflow Filter'),
'images/gm_netflow.png', 'images/gm_netflow.png',
false, false,
'', '',
true, true,
$buttons $buttons,
);
} else {
$nav_bar = [
[ [
'link' => 'index.php?sec=main',
'text' => __('Main'),
],
[ [
'link' => 'index.php?sec=netf&sec2=godmode/netflow/nf_edit', 'link' => '',
'text' => __('Netflow filters'), 'label' => __('Netflow'),
], ],
[
'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) { if ($id) {
$filter = netflow_filter_get_filter($id); $filter = netflow_filter_get_filter($id);
@ -127,7 +130,7 @@ if ($update) {
'advanced_filter' => $advanced_filter, 'advanced_filter' => $advanced_filter,
]; ];
// Save filter args // Save filter args.
$values['filter_args'] = netflow_get_filter_arguments($values, true); $values['filter_args'] = netflow_get_filter_arguments($values, true);
$result = db_process_sql_update('tnetflow_filter', $values, ['id_sg' => $id]); $result = db_process_sql_update('tnetflow_filter', $values, ['id_sg' => $id]);
@ -172,35 +175,41 @@ if ($create) {
} }
} }
$own_info = get_user_info($config['id_user']);
$filter_type = (empty($advanced_filter) === false) ? 1 : 0;
$aggregate_list = [
'srcip' => __('Src Ip Address'),
'dstip' => __('Dst Ip Address'),
'srcport' => __('Src Port'),
'dstport' => __('Dst Port'),
];
$table = new stdClass(); $table = new stdClass();
$table->id = 'table1'; $table->id = 'table1';
$table->width = '100%'; $table->width = '100%';
$table->border = 0; $table->class = 'databox filter-table-adv';
$table->cellspacing = 0; $table->size = [];
$table->cellpadding = 0; $table->size[0] = '50%';
$table->class = 'databox filters'; $table->size[1] = '50%';
$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 = [];
$table->data[0][0] = '<b>'.__('Name').'</b>'; $table->data['first_line'][] = html_print_label_input_block(
$table->data[0][1] = html_print_input_text('name', $name, false, 20, 80, true); __('Name'),
html_print_input_text(
'name',
$name,
false,
20,
80,
true
)
);
$own_info = get_user_info($config['id_user']); $table->data['first_line'][] = html_print_label_input_block(
$table->data[1][0] = '<b>'.__('Group').'</b>'; __('Group'),
// Fix: Netflow filters have to check RW ACL html_print_select_groups(
$table->data[1][1] = html_print_select_groups(
$config['id_user'], $config['id_user'],
'RW', 'RW',
$own_info['is_admin'], $own_info['is_admin'],
@ -222,91 +231,136 @@ $table->data[1][1] = html_print_select_groups(
false, false,
false, false,
'250px' '250px'
)
); );
if ($advanced_filter != '') { $table->data['filter_line'][] = html_print_label_input_block(
$filter_type = 1; __('Filter'),
} else { html_print_div(
$filter_type = 0; [
} '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[2][0] = '<b>'.__('Filter:').'</b>'; $table->data['filter_line'][] = html_print_label_input_block(
$table->data[2][1] = __('Normal').' '.html_print_radio_button_extended('filter_type', 0, '', $filter_type, false, 'displayNormalFilter();', 'class="mrgn_right_40px"', true); __('Aggregate by'),
$table->data[2][1] .= __('Advanced').' '.html_print_radio_button_extended('filter_type', 1, '', $filter_type, false, 'displayAdvancedFilter();', 'class="mrgn_right_40px"', true); html_print_select(
$aggregate_list,
'aggregate',
$aggregate,
'',
'',
0,
true,
false,
true,
'',
false
)
);
$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['ip_line'][] = html_print_label_input_block(
$table->data[3][1] = html_print_input_text('ip_dst', $ip_dst, false, 40, 80, true); __('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[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['ip_line'][] = html_print_label_input_block(
$table->data[4][1] = html_print_input_text('ip_src', $ip_src, false, 40, 80, true); __('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[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['ports_line'][] = html_print_label_input_block(
$table->data[5][1] = html_print_input_text('dst_port', $dst_port, false, 40, 80, true); __('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[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['ports_line'][] = html_print_label_input_block(
$table->data[6][1] = html_print_input_text('src_port', $src_port, false, 40, 80, true); __('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->data[7][1] = html_print_textarea('advanced_filter', 4, 40, $advanced_filter, '', 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')
);
$table->data[8][0] = '<b>'.__('Aggregate by').'</b>';
$aggregate_list = [
'srcip' => __('Src Ip Address'),
'dstip' => __('Dst Ip Address'),
'srcport' => __('Src Port'),
'dstport' => __('Dst Port'),
];
$table->data[8][1] = html_print_select($aggregate_list, 'aggregate', $aggregate, '', '', 0, true, false, true, '', false); $hiddens = '';
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.'">';
if ($id) { if ($id) {
html_print_input_hidden('update', 1); $buttonTitle = __('Update');
html_print_input_hidden('id', $id); $hiddens .= html_print_input_hidden('update', 1, true);
html_print_submit_button(__('Update'), 'crt', false, 'class="sub upd"'); $hiddens .= html_print_input_hidden('id', $id, true);
} else { } else {
html_print_input_hidden('create', 1); $buttonTitle = __('Create');
html_print_submit_button(__('Create'), 'crt', false, 'class="sub wand"'); $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>'; echo '</form>';
html_print_action_buttons(
html_print_submit_button(
$buttonTitle,
'crt',
false,
[
'icon' => 'upd',
'form' => 'nf_edit_form',
],
true
)
);
?> ?>
<script type="text/javascript"> <script type="text/javascript">
function displayAdvancedFilter () { $(document).ready(function(){
// Erase the normal filter
document.getElementById("text-ip_dst").value = '';
document.getElementById("text-ip_src").value = '';
document.getElementById("text-dst_port").value = '';
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';
// Show the advanced filter
document.getElementById("table1-7").style.display = '';
};
function displayNormalFilter () {
// Erase the advanced filter
document.getElementById("textarea_advanced_filter").value = '';
// Hide the advanced filter
document.getElementById("table1-7").style.display = 'none';
// Show the normal filter
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; ?>; var filter_type = <?php echo $filter_type; ?>;
if (filter_type == 0) { if (filter_type == 0) {
displayNormalFilter (); displayNormalFilter ();
@ -314,4 +368,43 @@ echo '</form>';
else { else {
displayAdvancedFilter (); displayAdvancedFilter ();
} }
});
function displayAdvancedFilter () {
console.log('papapa advanced filter');
// Erase the normal filter
document.getElementById("text-ip_dst").value = '';
document.getElementById("text-ip_src").value = '';
document.getElementById("text-dst_port").value = '';
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';
$("#table1-ip_line").css("display", "none");
$("#table1-ports_line").css("display", "none");
// Show the advanced filter
$("#table1-advanced_filters").css("display", "table-row");
//document.getElementById("table1-7").style.display = '';
};
function displayNormalFilter () {
console.log('papapa normal filter');
// Erase the advanced filter
document.getElementById("textarea_advanced_filter").value = '';
// Hide the advanced filter
//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 = '';
*/
};
</script> </script>

View File

@ -189,6 +189,14 @@ if ($delete_layout || $copy_layout) {
'tlayout', 'tlayout',
['id' => $id_layout] ['id' => $id_layout]
); );
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id_layout,
'section' => 'Visual_Console',
'id_user' => $config['id_user'],
]
);
$auditMessage = ((bool) $result === true) ? 'Delete visual console' : 'Fail try to delete visual console'; $auditMessage = ((bool) $result === true) ? 'Delete visual console' : 'Fail try to delete visual console';
db_pandora_audit( db_pandora_audit(

View File

@ -875,7 +875,7 @@ if (defined('METACONSOLE')) {
], ],
true true
); );
$form .= html_print_input_hidden('action', 'filter', true); $form .= html_print_input_hidden('action', 'sort_items', true);
$form .= '</form>'; $form .= '</form>';
ui_toggle($form, __('Sort items'), '', '', false); ui_toggle($form, __('Sort items'), '', '', false);

View File

@ -176,6 +176,31 @@ if (is_metaconsole() === true) {
); );
} }
if (is_metaconsole() === true) {
$table->data['description'][0] = __('Description');
$table->data['description'][1] = html_print_textarea(
'description',
2,
80,
$description,
'',
true
);
} else {
$table->colspan[1][0] = 2;
$table->data[1][0] = html_print_label_input_block(
__('Description'),
html_print_textarea(
'description',
2,
1,
$description,
'',
true
)
);
}
if ($report_id_user == $config['id_user'] if ($report_id_user == $config['id_user']
|| is_user_admin($config['id_user']) || is_user_admin($config['id_user'])
) { ) {
@ -222,7 +247,7 @@ if ($report_id_user == $config['id_user']
$table->data['access'][1] .= '</div>'; $table->data['access'][1] .= '</div>';
$table->data['access'][1] .= '</span>'; $table->data['access'][1] .= '</span>';
} else { } else {
$table->data[1][0] = html_print_label_input_block( $table->data[2][0] = html_print_label_input_block(
__('Write Access').ui_print_help_tip( __('Write Access').ui_print_help_tip(
__('For example, you want a report that the people of "All" groups can see but you want to edit only for you or your group.'), __('For example, you want a report that the people of "All" groups can see but you want to edit only for you or your group.'),
true true
@ -244,7 +269,7 @@ if ($report_id_user == $config['id_user']
$options['div_class'] = ''; $options['div_class'] = '';
} }
$table->data[1][1] = html_print_label_input_block( $table->data[2][1] = html_print_label_input_block(
__('Group'), __('Group'),
html_print_select_groups( html_print_select_groups(
false, false,
@ -277,7 +302,7 @@ if ($enterpriseEnable) {
true true
); );
} else { } else {
$table->data[2][0] = html_print_label_input_block( $table->data[2][1] = html_print_label_input_block(
__('Non interactive report'), __('Non interactive report'),
html_print_checkbox_switch( html_print_checkbox_switch(
'non_interactive', 'non_interactive',
@ -289,29 +314,6 @@ if ($enterpriseEnable) {
} }
} }
if (is_metaconsole() === true) {
$table->data['description'][0] = __('Description');
$table->data['description'][1] = html_print_textarea(
'description',
2,
80,
$description,
'',
true
);
} else {
$table->data[2][1] = html_print_label_input_block(
__('Description'),
html_print_textarea(
'description',
2,
1,
$description,
'',
true
)
);
}
if (enterprise_installed() === true) { if (enterprise_installed() === true) {
if (is_metaconsole() === true) { if (is_metaconsole() === true) {

View File

@ -389,7 +389,7 @@ if (empty($create) === false || empty($view) === false) {
$disabled = ($locked === true) ? 'readonly="readonly"' : ''; $disabled = ($locked === true) ? 'readonly="readonly"' : '';
if (empty($create) === true) { if (empty($create) === true) {
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&update_plugin=$plugin_id&pure='.$config['pure']; $formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&update_plugin='.$plugin_id.'&pure='.$config['pure'];
} else { } else {
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create_plugin=1&pure='.$config['pure']; $formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create_plugin=1&pure='.$config['pure'];
} }
@ -403,69 +403,61 @@ if (empty($create) === false || empty($view) === false) {
$table = new stdClass(); $table = new stdClass();
$table->id = 'table-form'; $table->id = 'table-form';
$table->class = 'floating_form'; $table->class = 'filter-table-adv';
$table->style = []; $table->style = [];
$table->data['plugin_name_captions'] = $data; $table->data['plugin_name_captions'] = $data;
$table->style[0] = 'vertical-align: top'; $table->size[0] = '50%';
$table->style[1] = 'vertical-align: top'; $table->size[1] = '50%';
$table->data = []; $table->data = [];
// General title. // General title.
$generalTitleContent = []; $data[0] = html_print_div([ 'class' => 'section_table_title', 'content' => __('General')], true);
$generalTitleContent[] = html_print_div([ 'style' => 'width: 10px; flex: 0 0 auto; margin-right: 5px;}', 'class' => 'section_table_title_line' ], true);
$generalTitleContent[] = html_print_div([ 'class' => 'section_table_title', 'content' => __('General')], true);
$data[0] = html_print_div(['class' => 'flex-row-center', 'content' => implode('', $generalTitleContent) ], true);
$table->data['general_title'] = $data; $table->data['general_title'] = $data;
$data = []; $data = [];
$data[0] = __('Name'); $data[0] = html_print_label_input_block(
__('Name'),
html_print_input_text('form_name', $form_name, '', 100, 255, true, false, false, '')
);
$table->data['plugin_name_captions'] = $data; $table->data['plugin_name_captions'] = $data;
$data = []; $data = [];
$data[0] = html_print_input_text('form_name', $form_name, '', 100, 255, true, false, false, '', 'w100p');
$table->data['plugin_name_inputs'] = $data;
$table->colspan['plugin_name_inputs'][0] = 3;
$data[0] = html_print_label_input_block(
__('Plugin type'),
html_print_select($formPluginType, 'form_plugin_type', $form_plugin_type, '', '', 0, true, false, true, '', false, 'width: 100%')
);
$data = [];
$data[0] = __('Plugin type');
$data[1] = __('Max. timeout');
$table->data['plugin_type_timeout_captions'] = $data;
// $table->colspan['plugin_type'][1] = 3;
$data = [];
$data[0] = html_print_select($formPluginType, 'form_plugin_type', $form_plugin_type, '', '', 0, true);
$timeoutContent = []; $timeoutContent = [];
$timeoutContent[] = '<div>'.html_print_extended_select_for_time('form_max_timeout', $form_max_timeout, '', '', '0', false, true).'</div>'; $timeoutContent[] = '<div>'.html_print_extended_select_for_time('form_max_timeout', $form_max_timeout, '', '', '0', false, true).'</div>';
$timeoutContent[] = ui_print_input_placeholder(__('This value only will be applied if is minor than the server general configuration plugin timeout').'<br>'.__('If you set a 0 seconds timeout, the server plugin timeout will be used'), true); $timeoutContent[] = ui_print_input_placeholder(__('This value only will be applied if is minor than the server general configuration plugin timeout').'<br>'.__('If you set a 0 seconds timeout, the server plugin timeout will be used'), true);
$data[1] = html_print_div( $data[1] = html_print_label_input_block(
__('Max. timeout'),
html_print_div(
[ [
'class' => 'flex flex_column', 'class' => 'flex flex_column',
'content' => implode('', $timeoutContent), 'content' => implode('', $timeoutContent),
], ],
true true
)
); );
$table->data['plugin_type_timeout_inputs'] = $data;
$table->data['plugin_type_timeout'] = $data;
$data = []; $data = [];
$data[0] = __('Description'); $data[0] = html_print_label_input_block(
$table->data['plugin_desc_captions'] = $data; __('Description'),
html_print_textarea('form_description', 4, 50, $form_description, '', true)
);
$data = []; $table->colspan['plugin_desc_inputs'][0] = 2;
$data[0] = html_print_textarea('form_description', 4, 50, $form_description, '', true, 'w100p');
$table->colspan['plugin_desc_inputs'][0] = 3;
$table->data['plugin_desc_inputs'] = $data; $table->data['plugin_desc_inputs'] = $data;
// Command title.
$commandTitleContent = [];
$commandTitleContent[] = html_print_div([ 'style' => 'width: 10px; flex: 0 0 auto; margin-right: 5px;}', 'class' => 'section_table_title_line' ], true);
$commandTitleContent[] = html_print_div([ 'class' => 'section_table_title', 'content' => __('Command')], true);
$data = [];
$data[0] = html_print_div(['class' => 'flex-row-center', 'content' => implode('', $commandTitleContent) ], true);
$table->data['command_title'] = $data;
// Command title.
$data = []; $data = [];
$data[0] = __('Plugin command').ui_print_help_tip(__('Specify interpreter and plugin path. The server needs permissions to run it.'), true); $data[0] = html_print_div([ 'class' => 'section_table_title', 'content' => __('Command')], true);
$table->data['plugin_command_caption'] = $data; $table->data['command_title'] = $data;
$data = []; $data = [];
$formExecuteContent = []; $formExecuteContent = [];
@ -480,16 +472,22 @@ if (empty($create) === false || empty($view) === false) {
true true
); );
$data[0] = html_print_div(['class' => 'flex-row-center', 'content' => implode('', $formExecuteContent)], true); $data[0] = html_print_label_input_block(
__('Plugin command'),
html_print_div(['class' => 'flex-row-center', 'content' => implode('', $formExecuteContent)], true).ui_print_input_placeholder(
__('Specify interpreter and plugin path. The server needs permissions to run it.'),
true
)
);
// $data[0] = html_print_div(['class' => 'flex-row-center', 'content' => implode('', $formExecuteContent)], true);
$table->data['plugin_command_inputs'] = $data; $table->data['plugin_command_inputs'] = $data;
$table->colspan['plugin_command_inputs'][0] = 2; $table->colspan['plugin_command_inputs'][0] = 2;
$data = []; $data = [];
$data[0] = __('Plug-in parameters'); $data[0] = html_print_label_input_block(
$table->data['plugin_parameters_caption'] = $data; __('Plug-in parameters'),
html_print_input_text(
$data = [];
$data[0] = html_print_input_text(
'form_parameters', 'form_parameters',
$parameters, $parameters,
'', '',
@ -499,26 +497,28 @@ if (empty($create) === false || empty($view) === false) {
false, false,
false, false,
'', '',
'command_component command_advanced_conf text_input w100p' 'command_component command_advanced_conf text_input'
)
); );
$table->data['plugin_parameters_inputs'] = $data; $table->data['plugin_parameters_inputs'] = $data;
$table->colspan['plugin_parameters_inputs'][0] = 2; $table->colspan['plugin_parameters_inputs'][0] = 2;
$data = []; $data = [];
$data[0] = __('Command preview'); // $data[0] = __('Command preview');
$table->data['plugin_preview_captions'] = $data; // $table->data['plugin_preview_captions'] = $data;
$data = []; // $data = [];
// $data[0] = html_print_div(['id' => 'command_preview', 'class' => 'mono'], true);
$data[0] = html_print_div(['id' => 'command_preview', 'class' => 'mono'], true); $data[0] = html_print_label_input_block(
__('Command preview'),
html_print_div(['id' => 'command_preview', 'class' => 'mono'], true)
);
$table->data['plugin_preview_inputs'] = $data; $table->data['plugin_preview_inputs'] = $data;
$table->colspan['plugin_preview_inputs'][0] = 2; $table->colspan['plugin_preview_inputs'][0] = 2;
// Parameters macros title. // Parameters macros title.
$macrosTitleContent = [];
$macrosTitleContent[] = html_print_div([ 'style' => 'width: 10px; flex: 0 0 auto; margin-right: 5px;}', 'class' => 'section_table_title_line' ], true);
$macrosTitleContent[] = html_print_div([ 'class' => 'section_table_title', 'content' => __('Parameters macros')], true);
$data = []; $data = [];
$data[0] = html_print_div(['class' => 'flex-row-center', 'content' => implode('', $macrosTitleContent) ], true); $data[0] = html_print_div([ 'class' => 'section_table_title', 'content' => __('Parameters macros')], true);
$table->data['parameters_macros_title'] = $data; $table->data['parameters_macros_title'] = $data;
$macros = json_decode($macros, true); $macros = json_decode($macros, true);
@ -563,25 +563,27 @@ if (empty($create) === false || empty($view) === false) {
} }
$datam = []; $datam = [];
$datam[0] = __('Description')."<span class='normal_weight'> ($macro_name)</span>"; $datam[0] = html_print_label_input_block(
__('Description').'<span class="normal_weight">('.$macro_name.')</span>',
html_print_input_text_extended($macro_desc_name, $macro_desc_value, 'text-'.$macro_desc_name, '', 30, 255, false, '', "class='command_macro text_input'", true)
);
$datam[0] .= html_print_input_hidden($macro_name_name, $macro_name, true); $datam[0] .= html_print_input_hidden($macro_name_name, $macro_name, true);
$datam[1] = html_print_input_text_extended($macro_desc_name, $macro_desc_value, 'text-'.$macro_desc_name, '', 30, 255, false, '', "class='command_macro text_input'", true);
$datam[2] = __('Default value')."<span class='normal_weight'> ($macro_name)</span>"; $datam[1] = html_print_label_input_block(
$datam[3] = html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true); __('Default value').'<span class="normal_weight">('.$macro_name.')</span>',
html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true)
);
$table->data['plugin_'.$next_name_number] = $datam; $table->data['plugin_'.$next_name_number] = $datam;
$next_name_number++; $next_name_number++;
$table->colspan['plugin_'.$next_name_number][1] = 3; $table->colspan['plugin_'.$next_name_number][1] = 2;
$datam = []; $datam = [];
$datam[0] = __('Hide value').ui_print_help_tip( $datam = html_print_label_input_block(
__('This field will show up as dots like a password'), __('Hide value'),
true html_print_checkbox_switch(
);
$datam[1] = html_print_checkbox_extended(
$macro_hide_value_name, $macro_hide_value_name,
1, 1,
$macro_hide_value_value, $macro_hide_value_value,
@ -590,26 +592,30 @@ if (empty($create) === false || empty($view) === false) {
['class' => 'command_macro'], ['class' => 'command_macro'],
true, true,
'checkbox-'.$macro_hide_value_name 'checkbox-'.$macro_hide_value_name
).ui_print_input_placeholder(
__('This field will show up as dots like a password'),
true
)
); );
$table->data['plugin_'.$next_name_number] = $datam; $table->data['plugin_'.$next_name_number] = $datam;
$next_name_number++; $next_name_number++;
$table->colspan['plugin_'.$next_name_number][1] = 3; // $table->colspan['plugin_'.$next_name_number][1] = 3;
$datam = []; $datam = [];
$datam[0] = __('Help')."<span class='normal_weight'> ($macro_name)</span><br><br><br>"; $datam[0] = html_print_label_input_block(
$datam[1] = html_print_textarea( __('Help').'<span class="normal_weight"> ('.$macro_name.')</span>',
html_print_textarea(
$macro_help_name, $macro_help_name,
6, 6,
100, 100,
$macro_help_value, $macro_help_value,
'class="command_macro" class="w97p"', 'class="command_macro" class="w97p"',
true true
)
); );
$datam[1] .= '<br><br><br>'; $table->colspan['plugin_'.$next_name_number][0] = 2;
$table->data['plugin_'.$next_name_number] = $datam; $table->data['plugin_'.$next_name_number] = $datam;
$next_name_number++; $next_name_number++;
$i++; $i++;
@ -617,7 +623,7 @@ if (empty($create) === false || empty($view) === false) {
// Add/Delete buttons // Add/Delete buttons
$datam = []; $datam = [];
$buttons = '';
if (!$locked) { if (!$locked) {
$datam[0] = '<a id="add_macro_btn" href="javascript:;">'.'<span class="bolder">'.__('Add macro').'</span>'.'&nbsp;'.html_print_image( $datam[0] = '<a id="add_macro_btn" href="javascript:;">'.'<span class="bolder">'.__('Add macro').'</span>'.'&nbsp;'.html_print_image(
'images/add.png', 'images/add.png',
@ -627,20 +633,55 @@ if (empty($create) === false || empty($view) === false) {
$datam[0] .= '<div id="next_macro" class="invisible">'.$i.'</div>'; $datam[0] .= '<div id="next_macro" class="invisible">'.$i.'</div>';
$datam[0] .= '<div id="next_row" class="invisible">'.$next_name_number.'</div>'; $datam[0] .= '<div id="next_row" class="invisible">'.$next_name_number.'</div>';
$buttons = html_print_anchor(
[
'id' => 'add_macro_btn',
'href' => 'javascript:;',
'content' => html_print_image(
'images/plus@svg.svg',
true,
['class' => 'invert_filter']
),
],
true
);
$buttons .= html_print_div(['id' => 'next_macro', 'class' => 'invisible', 'content' => $i], true);
$buttons .= html_print_div(['id' => 'next_row', 'class' => 'invisible', 'content' => $next_name_number], true);
$delete_macro_style = ''; $delete_macro_style = '';
if ($i <= 2) { if ($i <= 2) {
$delete_macro_style = 'display:none;'; $delete_macro_style = 'display:none;';
} }
$datam[2] = '<div id="delete_macro_button" style="'.$delete_macro_style.'">'.'<a href="javascript:;">'.'<span class="bolder">'.__('Delete macro').'</span>'.'&nbsp;'.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon invert_filter']).'</a>'.'</div>'; // $datam[1] = '<div id="delete_macro_button" style="'.$delete_macro_style.'">'.'<a href="javascript:;">'.'<span class="bolder">'.__('Delete macro').'</span>'.'&nbsp;'.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon invert_filter']).'</a>'.'</div>';
$buttons .= html_print_anchor(
[
'id' => 'delete_macro_button',
'style' => $delete_macro_style,
'href' => 'javascript:;',
'content' => html_print_image(
'images/delete.svg',
true,
['class' => 'main_menu_icon invert_filter']
),
],
true
);
$datam[0] = html_print_div(
[
'style' => 'flex-direction: row-reverse;justify-content: flex-start;',
'content' => $buttons,
],
true
);
$table->colspan['plugin_action'][0] = 2; $table->colspan['plugin_action'][0] = 2;
$table->colspan['plugin_action'][2] = 2;
} else { } else {
$table->colspan['plugin_action'][0] = 4; // $table->colspan['plugin_action'][0] = 4;
} }
$table->rowstyle['plugin_action'] = 'text-align:center'; // $table->rowstyle['plugin_action'] = 'text-align:center';
$table->data['plugin_action'] = $datam; $table->data['plugin_action'] = $datam;

View File

@ -251,69 +251,69 @@ if (enterprise_installed()) {
switch ($section) { switch ($section) {
case 'general': case 'general':
$buttons['general']['active'] = true; $buttons['general']['active'] = true;
$subpage = ' &raquo '.__('General'); $subpage = __('General');
$help_header = 'setup_general_tab'; $help_header = 'setup_general_tab';
break; break;
case 'auth': case 'auth':
$buttons['auth']['active'] = true; $buttons['auth']['active'] = true;
$subpage = ' &raquo '.__('Authentication'); $subpage = __('Authentication');
break; break;
case 'perf': case 'perf':
$buttons['perf']['active'] = true; $buttons['perf']['active'] = true;
$subpage = ' &raquo '.__('Performance'); $subpage = __('Performance');
$help_header = ''; $help_header = '';
break; break;
case 'vis': case 'vis':
$buttons['vis']['active'] = true; $buttons['vis']['active'] = true;
$subpage = ' &raquo '.__('Visual styles'); $subpage = __('Visual styles');
break; break;
case 'net': case 'net':
$buttons['net']['active'] = true; $buttons['net']['active'] = true;
$subpage = ' &raquo '.__('Netflow'); $subpage = __('Netflow');
$help_header = 'setup_netflow_tab'; $help_header = 'setup_netflow_tab';
break; break;
case 'ehorus': case 'ehorus':
$buttons['ehorus']['active'] = true; $buttons['ehorus']['active'] = true;
$subpage = ' &raquo '.__('eHorus'); $subpage = __('eHorus');
$help_header = 'setup_ehorus_tab'; $help_header = 'setup_ehorus_tab';
break; break;
case 'integria': case 'integria':
$buttons['integria']['active'] = true; $buttons['integria']['active'] = true;
$subpage = ' &raquo '.__('Integria IMS'); $subpage = __('Integria IMS');
$help_header = 'setup_integria_tab'; $help_header = 'setup_integria_tab';
break; break;
case 'module_library': case 'module_library':
$buttons['module_library']['active'] = true; $buttons['module_library']['active'] = true;
$subpage = ' &raquo '.__('Module Library'); $subpage = __('Module Library');
$help_header = 'setup_module_library_tab'; $help_header = 'setup_module_library_tab';
break; break;
case 'gis': case 'gis':
$buttons['gis']['active'] = true; $buttons['gis']['active'] = true;
$subpage = ' &raquo '.__('Map conections GIS'); $subpage = __('Map conections GIS');
break; break;
case 'notifications': case 'notifications':
$buttons['notifications']['active'] = true; $buttons['notifications']['active'] = true;
$subpage = ' &raquo '.__('Notifications'); $subpage = __('Notifications');
break; break;
case 'websocket_engine': case 'websocket_engine':
$buttons['websocket_engine']['active'] = true; $buttons['websocket_engine']['active'] = true;
$subpage = ' &raquo '.__('Pandora Websocket Engine'); $subpage = __('Pandora Websocket Engine');
$help_header = 'quickshell_settings'; $help_header = 'quickshell_settings';
break; break;
case 'external_tools': case 'external_tools':
$buttons['external_tools']['active'] = true; $buttons['external_tools']['active'] = true;
$subpage = ' &raquo '.__('External Tools'); $subpage = __('External Tools');
$help_header = ''; $help_header = '';
break; break;
@ -327,39 +327,49 @@ switch ($section) {
} }
$buttons['welcome_tips']['active'] = true; $buttons['welcome_tips']['active'] = true;
$subpage = ' &raquo '.$title; $subpage = $title;
$help_header = ''; $help_header = '';
break; break;
case 'enterprise': case 'enterprise':
$buttons['enterprise']['active'] = true; $buttons['enterprise']['active'] = true;
$subpage = ' &raquo '.__('Enterprise'); $subpage = __('Enterprise');
$help_header = 'setup_enterprise_tab'; $help_header = 'setup_enterprise_tab';
break; break;
case 'hist_db':
$buttons['hist_db']['active'] = true;
$subpage = __('Historical database');
$help_header = '';
break;
case 'pass':
$buttons['pass']['active'] = true;
$subpage = __('Password policies');
$help_header = '';
break;
default: default:
$subpage = 'seccion: '.$section;
// Default. // Default.
break; break;
} }
// Put header inside div for special sizing.(No right margin).
echo '<div id="header_configuration" style="width: calc(100%);">';
// Header. // Header.
ui_print_page_header( ui_print_standard_header(
__('Configuration').$subpage, $subpage,
'', '',
false, false,
$help_header, $help_header,
true, true,
$buttons, $buttons,
false, [
'', [
GENERIC_SIZE_TEXT, 'link' => '',
'', 'label' => __('Setup'),
'', ],
true ]
); );
echo '</div>';
if (isset($config['error_config_update_config'])) { if (isset($config['error_config_update_config'])) {
if ($config['error_config_update_config']['correct'] == false) { if ($config['error_config_update_config']['correct'] == false) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,4 @@
<?php <?php
/** /**
* User creation / update. * User creation / update.
* *
@ -60,7 +59,7 @@ if ($enterprise_include === true) {
$id = get_parameter('id', get_parameter('id_user', '')); $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. // Check if we are the same user for edit or we have a proper profile for edit users.
if ($id !== $config['id_user']) { 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( db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION, AUDIT_LOG_ACL_VIOLATION,
'Trying to access User Management' '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) { if (!$new_user) {
$user_id = '<div class="label_select_simple"><p class="edit_user_labels">'.__('User ID').': </p>'; $user_id = '<div class="label_select_simple"><p class="edit_user_labels">'.__('User ID').': </p>';
$user_id .= '<span>'.$id.'</span>'; $user_id .= '<span>'.$id.'</span>';
$user_id .= html_print_input_hidden('id_user', $id, true); $user_id .= html_print_input_hidden('id_user', $id, true);
$user_id .= '</div>'; $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( $apiTokenContentElements[] = html_print_button(
__('Renew'), __('Renew'),
'renew_api_token', 'renew_api_token',
false, false,
sprintf( sprintf(
'javascript:renewAPIToken(\'%s\', \'%s\', \'%s\')', 'javascript:renewAPIToken("%s", "%s", "%s")',
__('Warning'), __('Warning'),
__('The API token will be renewed. After this action, the last token you were using will not work. Are you sure?'), __('The API token will be renewed. After this action, the last token you were using will not work. Are you sure?'),
'user_profile_form', 'user_profile_form',
@ -1033,7 +1023,7 @@ if (!$new_user) {
'show_api_token', 'show_api_token',
false, false,
sprintf( sprintf(
'javascript:showAPIToken(\'%s\', \'%s\')', 'javascript:showAPIToken("%s", "%s")',
__('API Token'), __('API Token'),
base64_encode(__('Your API Token is:').'&nbsp;<br><span class="font_12pt bolder">'.users_get_API_token($id).'</span><br>&nbsp;'.__('Please, avoid share this string with others.')), base64_encode(__('Your API Token is:').'&nbsp;<br><span class="font_12pt bolder">'.users_get_API_token($id).'</span><br>&nbsp;'.__('Please, avoid share this string with others.')),
), ),
@ -1282,8 +1272,9 @@ if (is_metaconsole() === false) {
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
$array_filters = get_filters_custom_fields_view(0, 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>'; $searchCustomFieldView = [];
$search_custom_fields_view .= html_print_select( $searchCustomFieldView[] = __('Search custom field view');
$searchCustomFieldView[] = html_print_select(
$array_filters, $array_filters,
'default_custom_view', 'default_custom_view',
$user_info['default_custom_view'], $user_info['default_custom_view'],
@ -1295,7 +1286,10 @@ if (is_metaconsole() === true) {
true, true,
'', '',
false false
).'</div>'; ).ui_print_input_placeholder(
__('Load by default the selected view in custom field view'),
true
);
} }
$values = [ $values = [
@ -1377,6 +1371,8 @@ $home_screen .= html_print_input_text(
false false
); );
$home_screen = '';
$size_pagination = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Block size for pagination').'</p>'; $size_pagination = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Block size for pagination').'</p>';
$size_pagination .= html_print_input_text( $size_pagination .= html_print_input_text(
'block_size', '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'; $user_info_metaconsole_access = 'only_console';
if (isset($user_info['metaconsole_access'])) { if (isset($user_info['metaconsole_access'])) {
$user_info_metaconsole_access = $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 = [ $metaconsole_accesses = [
'basic' => __('Basic'), 'basic' => __('Basic'),
'advanced' => __('Advanced'), 'advanced' => __('Advanced'),
]; ];
$meta_access .= html_print_select(
$outputMetaAccess = [];
$outputMetaAccess[] = __('Metaconsole access');
$outputMetaAccess[] = html_print_select(
$metaconsole_accesses, $metaconsole_accesses,
'metaconsole_access', 'metaconsole_access',
$user_info_metaconsole_access, $user_info_metaconsole_access,
@ -1417,51 +1414,9 @@ if (enterprise_installed() && is_metaconsole() === true) {
true, true,
false, false,
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)))); $user_groups = implode(',', array_keys((users_get_groups($id, 'AR', $display_all_group))));
if (empty($user_groups) === false) { if (empty($user_groups) === false) {
@ -1582,31 +1537,6 @@ if (empty($doubleAuthElementsContent) === false) {
$doubleAuthentication = ''; $doubleAuthentication = '';
} }
/*
if (isset($double_authentication)) {
$double_authentication .= '</div>';
}*/
$autorefresh_list_out = []; $autorefresh_list_out = [];
if (is_metaconsole() === false || is_centralized() === true) { if (is_metaconsole() === false || is_centralized() === true) {
$autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail'; $autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
@ -1665,31 +1595,32 @@ if (isset($autorefresh_list) === false) {
} }
} }
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
enterprise_include_once('include/functions_metaconsole.php'); enterprise_include_once('include/functions_metaconsole.php');
$access_node = db_get_value('metaconsole_access_node', 'tusuario', 'id_user', $id); $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>'; $metaconsoleAgentManager = [];
$metaconsole_agents_manager .= html_print_checkbox_switch( $metaconsoleAgentManager[] = __('Enable agents managment');
$metaconsoleAgentManager[] = html_print_checkbox_switch(
'metaconsole_agents_manager', 'metaconsole_agents_manager',
1, 1,
$user_info['metaconsole_agents_manager'], $user_info['metaconsole_agents_manager'],
true 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>'; $metaconsoleAgentManager[] = __('Enable node access').ui_print_help_tip(
$metaconsole_access_node .= html_print_checkbox( __('With this option enabled, the user will can access to nodes console'),
true
);
$metaconsoleAgentManager[] = html_print_checkbox_switch(
'metaconsole_access_node', 'metaconsole_access_node',
1, 1,
$access_node, $access_node,
true true
).'</div>'; );
} }
echo '<div class="max_floating_element_size">'; echo '<div class="max_floating_element_size">';
echo '<form id="user_profile_form" name="user_profile_form" method="post" autocomplete="off" action="#">'; 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; $user_id_create = $user_id;
} }
if (is_metaconsole() === true) { // User management form.
$access_or_pagination = $meta_access; require_once 'user_management.php';
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';
}
if ((bool) $config['admin_can_add_user'] === true) { if ((bool) $config['admin_can_add_user'] === true) {
html_print_csrf_hidden(); html_print_csrf_hidden();
@ -1912,7 +1714,7 @@ if (is_metaconsole() === false) {
$(document).ready(function() { $(document).ready(function() {
// Set up the picker to update target timezone and country select lists. // Set up the picker to update target timezone and country select lists.
$('#timezone-image').timezonePicker({ $('#timezone-image').timezonePicker({
target: '#timezone', target: '#timezone1',
}); });
// Optionally an auto-detect button to trigger JavaScript geolocation. // Optionally an auto-detect button to trigger JavaScript geolocation.
@ -1934,23 +1736,13 @@ if (is_metaconsole() === false) {
var json_profile = $('#hidden-json_profile'); var json_profile = $('#hidden-json_profile');
/* <![CDATA[ */ /* <![CDATA[ */
$(document).ready(function() { $(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() { $("#right_autorefreshlist").click(function() {
jQuery.each($("select[name='autorefresh_list_out[]'] option:selected"), function(key, value) { jQuery.each($("select[name='autorefresh_list_out[]'] option:selected"), function(key, value) {
imodule_name = $(value).html(); imodule_name = $(value).html();
if (imodule_name != <?php echo "'".__('None')."'"; ?>) { if (imodule_name != <?php echo "'".__('None')."'"; ?>) {
id_imodule = $(value).attr('value'); 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_out").find("option[value='" + id_imodule + "']").remove();
$("#autorefresh_list").find("option[value='']").remove(); $("#autorefresh_list").find("option[value='']").remove();
$("#autorefresh_list").find("option[value='0']").remove(); $("#autorefresh_list").find("option[value='0']").remove();

View File

@ -395,8 +395,6 @@ if ($delete_user === true) {
__('There was a problem deleting the user from %s', io_safe_input($server['server_name'])) __('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
); );
} }
header('Refresh:1');
} }
} else { } else {
ui_print_error_message(__('There was a problem deleting the user')); ui_print_error_message(__('There was a problem deleting the user'));
@ -463,12 +461,13 @@ if (($filter_group == 0) && ($filter_search == '')) {
$filterTable = new stdClass(); $filterTable = new stdClass();
$filterTable->width = '100%'; $filterTable->width = '100%';
$filterTable->class = 'fixed_filter_bar'; $filterTable->class = 'filter-table-adv';
$filterTable->rowclass[0] = ''; $filterTable->rowclass[0] = '';
$filterTable->cellstyle[0][0] = 'width:0'; $filterTable->cellstyle[0][0] = 'width:0';
$filterTable->cellstyle[0][1] = 'width:0'; $filterTable->cellstyle[0][1] = 'width:0';
$filterTable->data[0][0] = __('Group'); $filterTable->data[0][] = html_print_label_input_block(
$filterTable->data[1][0] = html_print_select_groups( __('Group'),
html_print_select_groups(
false, false,
'AR', 'AR',
true, true,
@ -478,18 +477,30 @@ $filterTable->data[1][0] = html_print_select_groups(
'', '',
0, 0,
true 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( $filterTable->data[0][] = html_print_label_input_block(
__('Search'),
html_print_input_text(
'filter_search', 'filter_search',
$filter_search, $filter_search,
__('Search by username, fullname or email'), __('Search by username, fullname or email'),
30, 30,
90, 90,
true true
).ui_print_input_placeholder(
__('Search by username, fullname or email'),
true
)
); );
$filterTable->cellstyle[1][2] = 'vertical-align: bottom';
$filterTable->data[1][2] = html_print_submit_button( $form_filter = "<form method='post'>";
$form_filter .= html_print_table($filterTable, true);
$form_filter .= html_print_div(
[
'class' => 'action-buttons-right-forced',
'content' => html_print_submit_button(
__('Search'), __('Search'),
'search', 'search',
false, false,
@ -499,6 +510,22 @@ $filterTable->data[1][2] = html_print_submit_button(
'mode' => 'secondary mini', 'mode' => 'secondary mini',
], ],
true 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; $is_management_allowed = true;
@ -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. // Urls to sort the table.
$url_up_id = '?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=id_user&sort=up&pure='.$pure; $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; $url_down_id = '?sec='.$sec.'&sec2=godmode/users/user_list&sort_field=id_user&sort=down&pure='.$pure;

View File

@ -325,53 +325,55 @@ if ($new_user === false) {
$userManagementTable->data['passwordManage_table'] = html_print_table($passwordManageTable, true); $userManagementTable->data['passwordManage_table'] = html_print_table($passwordManageTable, true);
if (users_is_admin() === true) {
$userManagementTable->rowclass['captions_loginErrorUser'] = 'field_half_width w50p'; $userManagementTable->rowclass['captions_loginErrorUser'] = 'field_half_width w50p';
$userManagementTable->cellclass['captions_loginErrorUser'][0] = 'wrap'; $userManagementTable->cellclass['captions_loginErrorUser'][0] = 'wrap';
$userManagementTable->cellclass['captions_loginErrorUser'][1] = 'wrap'; $userManagementTable->cellclass['captions_loginErrorUser'][1] = 'wrap';
$notLoginCheckContent = []; $notLoginCheckContent = [];
$notLoginCheckContent[] = '<span>'.__('Not Login').'</span>'; $notLoginCheckContent[] = '<span>'.__('Not Login').'</span>';
$notLoginCheckContent[] = html_print_checkbox_switch( $notLoginCheckContent[] = html_print_checkbox_switch(
'not_login', 'not_login',
1, 1,
$user_info['not_login'], $user_info['not_login'],
true true
); );
$userManagementTable->data['captions_loginErrorUser'][0] = html_print_div( $userManagementTable->data['captions_loginErrorUser'][0] = html_print_div(
[ [
'class' => 'margin-top-10', 'class' => 'margin-top-10',
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
'content' => implode('', $notLoginCheckContent), 'content' => implode('', $notLoginCheckContent),
], ],
true true
); );
$userManagementTable->data['captions_loginErrorUser'][0] .= ui_print_input_placeholder( $userManagementTable->data['captions_loginErrorUser'][0] .= ui_print_input_placeholder(
__('The user with not login set only can access to API.'), __('The user with not login set only can access to API.'),
true true
); );
$localUserCheckContent = []; $localUserCheckContent = [];
$localUserCheckContent[] = '<span>'.__('Local User').'</span>'; $localUserCheckContent[] = '<span>'.__('Local User').'</span>';
$localUserCheckContent[] = html_print_checkbox_switch( $localUserCheckContent[] = html_print_checkbox_switch(
'local_user', 'local_user',
1, 1,
$user_info['local_user'], $user_info['local_user'],
true true
); );
$userManagementTable->data['captions_loginErrorUser'][1] = html_print_div( $userManagementTable->data['captions_loginErrorUser'][1] = html_print_div(
[ [
'class' => 'margin-top-10', 'class' => 'margin-top-10',
'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;',
'content' => implode('', $localUserCheckContent), 'content' => implode('', $localUserCheckContent),
], ],
true true
); );
$userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_placeholder( $userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_placeholder(
__('The user with local authentication enabled will always use local authentication.'), __('The user with local authentication enabled will always use local authentication.'),
true 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'][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>'; $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. // Title for Language and Appearance.
$userManagementTable->data['title_lookAndFeel'] = html_print_subtitle_table(__('Language and Appearance')); $userManagementTable->data['title_lookAndFeel'] = html_print_subtitle_table(__('Language and Appearance'));
// Language and color scheme. // Language and color scheme.
$userManagementTable->rowclass['captions_lang_colorscheme'] = 'field_half_width'; $userManagementTable->rowclass['line1_looknfeel'] = 'field_half_width';
$userManagementTable->rowclass['fields_lang_colorscheme'] = 'field_half_width'; $userManagementTable->rowclass['line2_looknfeel'] = 'field_half_width';
$userManagementTable->data['captions_lang_colorscheme'][0] = __('Language'); $userManagementTable->data['line1_looknfeel'][0] = __('Language');
$userManagementTable->data['fields_lang_colorscheme'][0] = html_print_select_from_sql( $userManagementTable->data['line2_looknfeel'][0] = html_print_select_from_sql(
'SELECT id_language, name FROM tlanguage', 'SELECT id_language, name FROM tlanguage',
'language', 'language',
$user_info['language'], $user_info['language'],
@ -564,8 +566,15 @@ $userManagementTable->data['fields_lang_colorscheme'][0] = html_print_select_fro
true true
); );
$userManagementTable->data['captions_lang_colorscheme'][1] = __('User color scheme'); if (is_metaconsole() === true) {
$userManagementTable->data['fields_lang_colorscheme'][1] = skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, 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['captions_blocksize_eventfilter'] = 'field_half_width';
$userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width'; $userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width';
@ -591,21 +600,20 @@ $userManagementTable->data['fields_blocksize_eventfilter'][1] = html_print_selec
false, false,
false false
); );
if (is_metaconsole() === false) {
// Home screen table. // Home screen table.
$homeScreenTable = new stdClass(); $homeScreenTable = new stdClass();
$homeScreenTable->class = 'w100p table_section full_section'; $homeScreenTable->class = 'w100p table_section full_section';
$homeScreenTable->id = 'home_screen_table'; $homeScreenTable->id = 'home_screen_table';
$homeScreenTable->style = []; $homeScreenTable->style = [];
$homeScreenTable->rowclass = []; $homeScreenTable->rowclass = [];
$homeScreenTable->data = []; $homeScreenTable->data = [];
// Home screen.
// Home screen. $homeScreenTable->data['captions_homescreen'][0] = __('Home screen');
$homeScreenTable->data['captions_homescreen'][0] = __('Home screen'); $homeScreenTable->colspan['captions_homescreen'][0] = 2;
$homeScreenTable->colspan['captions_homescreen'][0] = 2; $homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width';
$homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width'; $homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex';
$homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex'; $homeScreenTable->data['fields_homescreen'][0] = html_print_select(
$homeScreenTable->data['fields_homescreen'][0] = html_print_select(
$homeScreenValues, $homeScreenValues,
'section', 'section',
io_safe_output($user_info['section']), io_safe_output($user_info['section']),
@ -615,17 +623,32 @@ $homeScreenTable->data['fields_homescreen'][0] = html_print_select(
true, true,
false, false,
false false
); );
$homeScreenTable->data['fields_homescreen'][1] = html_print_div( $homeScreenTable->data['fields_homescreen'][1] = html_print_div(
[ [
'class' => 'w100p', 'class' => 'w100p',
'content' => $customHomeScreenDataField, 'content' => $customHomeScreenDataField,
], ],
true true
); );
$userManagementTable->rowclass['homescreen_table'] = 'w100p'; $userManagementTable->rowclass['homescreen_table'] = 'w100p';
$userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true); $userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, 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['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. // Timezone.
$userManagementTable->rowclass['captions_timezone'] = 'field_half_width'; $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.'), __('The timezone must be that of the associated server.'),
true true
); );
if (is_metaconsole() === false) {
$userManagementTable->data['fields_timezone'][1] = html_print_div( $userManagementTable->data['fields_timezone'][1] = html_print_div(
[ [
'id' => 'timezone-picker', 'id' => 'timezone-picker',
'content' => implode('', $timezoneContent), 'content' => implode('', $timezoneContent),
], ],
true true
); );
}
// Title for Language and Appearance. // Title for Language and Appearance.
$userManagementTable->data['title_additionalSettings'] = html_print_subtitle_table(__('Additional settings')); $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)) { 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)); 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>
-->

View File

@ -731,7 +731,7 @@ class DiscoveryTaskList extends HTML
case DISCOVERY_CLOUD_AZURE_COMPUTE: case DISCOVERY_CLOUD_AZURE_COMPUTE:
// Discovery Applications MySQL. // Discovery Applications MySQL.
$data[6] = html_print_image( $data[6] = html_print_image(
'images/plugin@svg.svg', 'images/plugins@svg.svg',
true, true,
[ [
'title' => __('Discovery Cloud Azure Compute'), 'title' => __('Discovery Cloud Azure Compute'),
@ -744,7 +744,7 @@ class DiscoveryTaskList extends HTML
case DISCOVERY_CLOUD_AWS_EC2: case DISCOVERY_CLOUD_AWS_EC2:
// Discovery Applications MySQL. // Discovery Applications MySQL.
$data[6] = html_print_image( $data[6] = html_print_image(
'images/plugin@svg.svg', 'images/plugins@svg.svg',
true, true,
[ [
'title' => __('Discovery Cloud AWS EC2'), 'title' => __('Discovery Cloud AWS EC2'),
@ -856,7 +856,7 @@ class DiscoveryTaskList extends HTML
} else { } else {
// APP or external script recon task. // APP or external script recon task.
$data[6] = html_print_image( $data[6] = html_print_image(
'images/plugin@svg.svg', 'images/plugins@svg.svg',
true, true,
['class' => 'main_menu_icon invert_filter'] ['class' => 'main_menu_icon invert_filter']
).'&nbsp;&nbsp;'; ).'&nbsp;&nbsp;';
@ -873,7 +873,7 @@ class DiscoveryTaskList extends HTML
'100%', '100%',
1.9, 1.9,
// Color. // Color.
'#82b92e', '#ececec',
// Return. // Return.
true, true,
// Text. // Text.
@ -1218,12 +1218,12 @@ class DiscoveryTaskList extends HTML
$result .= progress_circular_bar( $result .= progress_circular_bar(
$task['id_rt'], $task['id_rt'],
($task['status'] < 0) ? 100 : $task['status'], ($task['status'] < 0) ? 100 : $task['status'],
200, 150,
200, 150,
'#7eb641', '#3A3A3A',
'%', '%',
'', '',
'#3A3A3A', '#ececec',
0 0
); );
@ -1288,12 +1288,12 @@ class DiscoveryTaskList extends HTML
$result .= progress_circular_bar( $result .= progress_circular_bar(
$task['id_rt'].'_detail', $task['id_rt'].'_detail',
$task['stats']['c_network_percent'], $task['stats']['c_network_percent'],
200, 150,
200, 150,
'#7eb641', '#3A3A3A',
'%', '%',
'', '',
'#3A3A3A', '#ececec',
0 0
); );
$result .= '</div></div>'; $result .= '</div></div>';

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Dark / 20 / star@svg</title>
<desc>Created with Sketch.</desc>
<g id="Dark-/-20-/-star" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M10,16.5 L5.32783438,18.9563028 C4.83898979,19.2133036 4.23436264,19.0253571 3.97736183,18.5365125 C3.87502276,18.3418521 3.83970808,18.118884 3.87688493,17.9021263 L4.76918916,12.6995935 L4.76918916,12.6995935 L0.989327772,9.01513923 C0.593844194,8.62963801 0.585751887,7.99652475 0.971253099,7.60104117 C1.1247617,7.44355754 1.32590411,7.34107036 1.54354115,7.30944585 L6.76718111,6.55040653 L6.76718111,6.55040653 L9.10326392,1.81698575 C9.34768622,1.32173209 9.94731205,1.11839309 10.4425657,1.36281539 C10.6397783,1.46014562 10.7994058,1.61977315 10.8967361,1.81698575 L13.2328189,6.55040653 L13.2328189,6.55040653 L18.4564589,7.30944585 C19.0030037,7.38886347 19.3816852,7.89630632 19.3022676,8.44285118 C19.270643,8.66048821 19.1681559,8.86163062 19.0106722,9.01513923 L15.2308108,12.6995935 L15.2308108,12.6995935 L16.1231151,17.9021263 C16.2164761,18.4464628 15.8508883,18.9634187 15.3065518,19.0567797 C15.0897942,19.0939566 14.8668261,19.0586419 14.6721656,18.9563028 L10,16.5 L10,16.5 Z" id="Star" fill="#a6adb2"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;}
.st1{fill:#000000;}
</style>
<g id="Dark-/-20-/-delete-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group" transform="translate(10.000000, 10.000000) rotate(0.000000) translate(-10.000000, -10.000000) translate(4.000000, 4.000000)" fill="#3F3F3F">
<path d="M6,0 C6.51283584,0 6.93550716,0.38604019 6.99327227,0.883378875 L7,1 L7,5 L11,5 C11.5522847,5 12,5.44771525 12,6 C12,6.51283584 11.6139598,6.93550716 11.1166211,6.99327227 L11,7 L7,7 L7,11 C7,11.5522847 6.55228475,12 6,12 C5.48716416,12 5.06449284,11.6139598 5.00672773,11.1166211 L5,11 L5,7 L1,7 C0.44771525,7 0,6.55228475 0,6 C0,5.48716416 0.38604019,5.06449284 0.883378875,5.00672773 L1,5 L5,5 L5,1 C5,0.44771525 5.44771525,0 6,0 Z" id="Path-7"></path>
</g>
<path d="M10,0 C4.4771525,0 0,4.4771525 0,10 C0,15.5228475 4.4771525,20 10,20 C15.5228475,20 20,15.5228475 20,10 C20,4.4771525 15.5228475,0 10,0 Z M10,2 C14.418278,2 18,5.581722 18,10 C18,14.418278 14.418278,18 10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 Z" id="Oval" fill="#3F3F3F"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Dark / 20 / web@svg</title>
<desc>Created with Sketch.</desc>
<g id="Dark-/-20-/-web" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M10,0 C4.4771525,0 0,4.4771525 0,10 C0,15.5228475 4.4771525,20 10,20 C15.5228475,20 20,15.5228475 20,10 C19.9945565,4.47940886 15.5205911,0.00544352451 10,0 Z M10.0288333,17.4971042 C10.0246667,17.4971042 10.0206042,17.4983125 10.0163333,17.4983125 C9.68185417,17.3901458 9.011375,16.3172917 8.56475,14.3237292 C9.04327083,14.3508125 9.52308333,14.375 10,14.375 C10.4774375,14.375 10.9581042,14.3508958 11.437375,14.3237292 C10.9950208,16.3143958 10.3361458,17.3863125 10.0288333,17.4971042 Z M10,11.875 C9.35577083,11.875 8.75960417,11.8472292 8.19702083,11.8032917 C8.15291667,11.2406875 8.125,10.6442292 8.125,10 C8.125,9.35577083 8.15277083,8.75960417 8.19670833,8.19702083 C8.7593125,8.15291667 9.35577083,8.125 10,8.125 C10.6442292,8.125 11.2403958,8.15277083 11.8029792,8.19670833 C11.8470833,8.7593125 11.875,9.35577083 11.875,10 C11.875,10.6442292 11.8472292,11.2403958 11.8032917,11.8029792 C11.2406875,11.8470833 10.6442292,11.875 10,11.875 Z M2.50289583,10.0288333 C2.50289583,10.0246667 2.5016875,10.0206042 2.5016875,10.0163333 C2.60985417,9.68185417 3.68270833,9.011375 5.67627083,8.56475 C5.64927083,9.04327083 5.625,9.52316667 5.625,10 C5.625,10.4774375 5.64910417,10.9581042 5.67627083,11.437375 C3.68560417,10.9950208 2.6136875,10.3361458 2.50289583,10.0288333 Z M9.97116667,2.50289583 C9.97533333,2.50289583 9.97939583,2.5016875 9.98366667,2.5016875 C10.3181458,2.60985417 10.988625,3.68270833 11.43525,5.67627083 C10.9567292,5.64927083 10.4768333,5.625 10,5.625 C9.5225625,5.625 9.04189583,5.64910417 8.562625,5.67627083 C9.00497917,3.68560417 9.66385417,2.6136875 9.97116667,2.50289583 Z M14.3237292,8.562625 C16.3143958,9.00497917 17.3862292,9.66385417 17.4971042,9.97116667 C17.4971042,9.97533333 17.4983125,9.97939583 17.4983125,9.98366667 C17.3901458,10.3181458 16.3172917,10.988625 14.3237292,11.43525 C14.3508125,10.9567292 14.375,10.4769167 14.375,10 C14.375,9.5225625 14.3508958,9.04189583 14.3237292,8.562625 Z M16.671,6.64397917 C15.8116964,6.34280615 14.9276165,6.11763659 14.0289375,5.9710625 C13.8823634,5.07238349 13.6571938,4.18830364 13.3560208,3.329 C14.7866526,4.05165344 15.9483466,5.21334744 16.671,6.64397917 L16.671,6.64397917 Z M6.64375,3.329 C6.34261768,4.18830554 6.11749674,5.07238609 5.97097917,5.9710625 C5.0723873,6.11755451 4.18838995,6.34264769 3.32916667,6.64375 C4.05172797,5.21324363 5.21327996,4.05163323 6.64375,3.329 L6.64375,3.329 Z M3.32916667,13.35625 C4.1884091,13.6574028 5.07243613,13.8825243 5.9710625,14.0290208 C6.11753664,14.9276164 6.34263021,15.8116153 6.64375,16.6708333 C5.21325958,15.948307 4.05169302,14.7867404 3.32916667,13.35625 Z M13.35625,16.6708333 C13.6573853,15.8115856 13.8825065,14.9275601 14.0290208,14.0289375 C14.9276665,13.8824423 15.8117189,13.6573493 16.671,13.35625 C15.9483668,14.78672 14.7867564,15.948272 13.35625,16.6708333 L13.35625,16.6708333 Z" id="Shape" fill="#3F3F3F"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,82 @@
<?php
/**
* Fav menu
*
* @category Ajax library.
* @package Pandora FMS
* @subpackage Modules.
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* 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 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.
* ============================================================================
*/
// Begin.
global $config;
// Login check
check_login();
if (is_ajax() === false) {
exit;
}
$id_element = get_parameter('id_element', '');
$url = io_safe_output(get_parameter('url', ''));
$label = get_parameter('label', '');
$section = get_parameter('section', '');
$id_user = $config['id_user'];
$exist = db_get_row_filter(
'tfavmenu_user',
[
'url' => $url,
'id_user' => $config['id_user'],
],
['*']
);
$res = false;
$action = '';
if ($exist !== false) {
$res = db_process_sql_delete(
'tfavmenu_user',
[
'url' => $url,
'id_user' => $config['id_user'],
]
);
$action = 'delete';
} else {
$res = db_process_sql_insert(
'tfavmenu_user',
[
'id_element' => $id_element,
'url' => $url,
'label' => $label,
'section' => $section,
'id_user' => $id_user,
]
);
$action = 'create';
}
if ($res !== false) {
echo json_encode(['success' => true, 'action' => $action]);
} else {
echo json_encode(['success' => false, 'action' => $action]);
}

View File

@ -25,6 +25,8 @@ if ((bool) is_metaconsole() === true) {
if ($networkmap) { if ($networkmap) {
$networkmap_id = get_parameter('networkmap_id', 0); $networkmap_id = get_parameter('networkmap_id', 0);
$dashboard = get_parameter('dashboard', 0);
$size = get_parameter('size', []);
$x_offset = get_parameter('x_offset', 0); $x_offset = get_parameter('x_offset', 0);
$y_offset = get_parameter('y_offset', 0); $y_offset = get_parameter('y_offset', 0);
$zoom_dash = get_parameter('zoom_dash', 0.5); $zoom_dash = get_parameter('zoom_dash', 0.5);
@ -62,6 +64,15 @@ if ($networkmap) {
global $id_networkmap; global $id_networkmap;
$id_networkmap = $networkmap['id']; $id_networkmap = $networkmap['id'];
$tab = 'radial_dynamic'; $tab = 'radial_dynamic';
if (empty($size) === false) {
if ($size['width'] > $size['height']) {
$width = $size['height'];
$height = ($size['height'] - 10);
} else {
$width = $size['width'];
$height = ($size['width'] + 50);
}
}
include_once 'operation/agentes/networkmap.dinamic.php'; include_once 'operation/agentes/networkmap.dinamic.php';
} else { } else {

View File

@ -1573,7 +1573,7 @@ if (check_login()) {
$value['thresholds'] $value['thresholds']
); );
$resultData = '<span style="color:'.$status['color'].'">'; $resultData = '<span class="widget-module-tabs-data" style="color:'.$status['color'].'">';
if ($vdata !== null && $vdata !== '' && $vdata !== false) { if ($vdata !== null && $vdata !== '' && $vdata !== false) {
if (isset($formatData) === true if (isset($formatData) === true
&& (bool) $formatData === true && (bool) $formatData === true
@ -1750,7 +1750,9 @@ if (check_login()) {
INNER JOIN tagente INNER JOIN tagente
ON tagente_modulo.id_agente = tagente.id_agente ON tagente_modulo.id_agente = tagente.id_agente
INNER JOIN tagente_estado INNER JOIN tagente_estado
ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo' ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
WHERE %s',
$where
); );
$recordsTotal = db_get_value_sql($sql_count); $recordsTotal = db_get_value_sql($sql_count);
@ -1795,6 +1797,32 @@ if (check_login()) {
} }
} }
if (in_array(0, $servers_ids) === true) {
$sql = sprintf(
'SELECT
tagente_modulo.nombre,
tagente.alias,
tagente.id_agente,
tagente_estado.last_status_change,
tagente_estado.estado
FROM tagente_modulo
INNER JOIN tagente
ON tagente_modulo.id_agente = tagente.id_agente
INNER JOIN tagente_estado
ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
WHERE %s',
$where
);
$res_sql = db_get_all_rows_sql($sql);
foreach ($res_sql as $row_sql) {
$row_sql['server_name'] = __('Metaconsole');
$row_sql['server_url'] = $config['homeurl'];
array_push($data, $row_sql);
}
}
// Drop temporary table if exist. // Drop temporary table if exist.
db_process_sql('DROP TEMPORARY TABLE IF EXISTS temp_modules_status;'); db_process_sql('DROP TEMPORARY TABLE IF EXISTS temp_modules_status;');
@ -1852,7 +1880,9 @@ if (check_login()) {
$sql_count = sprintf( $sql_count = sprintf(
'SELECT COUNT(*) AS "total" 'SELECT COUNT(*) AS "total"
FROM temp_modules_status' FROM temp_modules_status
WHERE %s',
$where
); );
$recordsTotal = db_get_value_sql($sql_count); $recordsTotal = db_get_value_sql($sql_count);
@ -2044,6 +2074,14 @@ if (check_login()) {
if ($monitor_filters === false) { if ($monitor_filters === false) {
echo 'error'; echo 'error';
} else { } else {
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id,
'section' => 'Modules',
'id_user' => $config['id_user'],
]
);
echo 'ok'; echo 'ok';
} }
} }

View File

@ -27,8 +27,6 @@
*/ */
// Begin. // Begin.
require_once 'config.php';
require_once __DIR__.'/config.php'; require_once __DIR__.'/config.php';
require_once __DIR__.'/functions.php'; require_once __DIR__.'/functions.php';
require_once __DIR__.'/functions_db.php'; require_once __DIR__.'/functions_db.php';
@ -87,7 +85,7 @@ if (check_login(false) === false) {
</head> </head>
<body> <body>
<h1>Access is not granted</h1> <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> </body>
</html> </html>
@ -246,6 +244,9 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
break; break;
case 'slicebar': 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( echo flot_slicesbar_graph(
$params['graph_data'], $params['graph_data'],
$params['period'], $params['period'],

View File

@ -601,6 +601,7 @@ class AgentWizard extends HTML
'action' => $this->sectionUrl, 'action' => $this->sectionUrl,
'id' => 'form-main-wizard', 'id' => 'form-main-wizard',
'method' => 'POST', 'method' => 'POST',
'class' => 'white_box pdd_20px filter-list-adv',
]; ];
// Inputs. // Inputs.
@ -829,24 +830,22 @@ class AgentWizard extends HTML
]; ];
} }
$inputs[] = [ html_print_action_buttons(
'arguments' => [ html_print_submit_button(
'label' => $this->actionLabel, $this->actionLabel,
'name' => 'sub-protocol', 'sub-protocol',
'type' => 'submit', false,
'attributes' => [ [
'icon' => 'cog', 'icon' => 'cog',
'onclick' => '$(\'#form-main-wizard\').submit();', 'onclick' => '$("#form-main-wizard").submit();',
], ],
'return' => true, true
], )
]; );
// Prints main form. // Prints main form.
html_print_div( html_print_div(
[ [
'class' => 'white_box',
'style' => 'padding: 20px',
'content' => $this->printForm( 'content' => $this->printForm(
[ [
'form' => $form, 'form' => $form,
@ -1330,7 +1329,7 @@ class AgentWizard extends HTML
$table->rowstyle[$i] = 'color:#ccc;'; $table->rowstyle[$i] = 'color:#ccc;';
$data[0] .= ' '; $data[0] .= ' ';
$data[0] .= html_print_image( $data[0] .= html_print_image(
'images/error.png', 'images/alert-warning@svg.svg',
true, true,
['title' => $msgError] ['title' => $msgError]
); );
@ -1348,7 +1347,7 @@ class AgentWizard extends HTML
// Img Server. // Img Server.
if ($this->serverType == SERVER_TYPE_ENTERPRISE_SATELLITE) { if ($this->serverType == SERVER_TYPE_ENTERPRISE_SATELLITE) {
$img_server = html_print_image( $img_server = html_print_image(
'images/satellite.png', 'images/satellite@os.svg',
true, true,
[ [
'title' => __('Enterprise Satellite server'), 'title' => __('Enterprise Satellite server'),
@ -1358,7 +1357,7 @@ class AgentWizard extends HTML
} else { } else {
if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) { if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) {
$img_server = html_print_image( $img_server = html_print_image(
'images/plugin.png', 'images/plugins@svg.svg',
true, true,
[ [
'title' => __('Plugin server'), 'title' => __('Plugin server'),
@ -1368,7 +1367,7 @@ class AgentWizard extends HTML
} else { } else {
if ($this->protocol === 'wmi') { if ($this->protocol === 'wmi') {
$img_server = html_print_image( $img_server = html_print_image(
'images/wmi.png', 'images/WMI@svg.svg',
true, true,
[ [
'title' => __('WMI server'), 'title' => __('WMI server'),
@ -1377,7 +1376,7 @@ class AgentWizard extends HTML
); );
} else { } else {
$img_server = html_print_image( $img_server = html_print_image(
'images/op_network.png', 'images/network@svg.svg',
true, true,
[ [
'title' => __('Network server'), 'title' => __('Network server'),
@ -4091,7 +4090,7 @@ class AgentWizard extends HTML
$blockTitle .= '<b>'.$block['name']; $blockTitle .= '<b>'.$block['name'];
$blockTitle .= '&nbsp;&nbsp;'; $blockTitle .= '&nbsp;&nbsp;';
$blockTitle .= html_print_image( $blockTitle .= html_print_image(
'images/tip_help.png', 'images/info@svg.svg',
true, true,
[ [
'title' => __('Modules selected'), 'title' => __('Modules selected'),
@ -4111,7 +4110,7 @@ class AgentWizard extends HTML
$blockTitle .= '&nbsp;&nbsp;'; $blockTitle .= '&nbsp;&nbsp;';
$blockTitle .= html_print_image( $blockTitle .= html_print_image(
'images/tip_help.png', 'images/info@svg.svg',
true, true,
[ [
'title' => __('Modules selected'), 'title' => __('Modules selected'),
@ -4206,6 +4205,9 @@ class AgentWizard extends HTML
$table->size[4] = '140px'; $table->size[4] = '140px';
$table->size[5] = '3%'; $table->size[5] = '3%';
$table->align = [];
$table->align[1] = 'center';
// If is needed show current value, we must correct the table. // If is needed show current value, we must correct the table.
if ($showCurrentValue === true) { if ($showCurrentValue === true) {
// Correct headers. // Correct headers.
@ -4274,7 +4276,7 @@ class AgentWizard extends HTML
false, false,
false, false,
'', '',
$md5IdBlock, $md5IdBlock.' w100p',
'', '',
'', '',
false, false,
@ -4294,8 +4296,9 @@ class AgentWizard extends HTML
1, 1,
20, 20,
$module['description'], $module['description'],
'form=\'form-create-modules\' class=\'min-height-50px\'', 'form=\'form-create-modules\'',
true true,
'w100p'
); );
} }
@ -4704,8 +4707,6 @@ class AgentWizard extends HTML
'toggle_class' => '', 'toggle_class' => '',
'container_class' => 'white-box-content', 'container_class' => 'white-box-content',
'main_class' => $class, 'main_class' => $class,
'img_a' => 'images/arrow_down_green.png',
'img_b' => 'images/arrow_right_green.png',
'clean' => false, 'clean' => false,
'reverseImg' => $reverseImg, 'reverseImg' => $reverseImg,
'switch' => $buttonSwitch, 'switch' => $buttonSwitch,
@ -5980,7 +5981,7 @@ class AgentWizard extends HTML
}); });
// Loading. // Loading.
$('#submit-sub-protocol').click(function() { $('#button-sub-protocol').click(function() {
$('.wizard-result').remove(); $('.wizard-result').remove();
$('#form-create-modules').remove(); $('#form-create-modules').remove();
$('.textodialogo').remove(); $('.textodialogo').remove();

View File

@ -1831,7 +1831,7 @@ class Diagnostics extends Wizard
if ($items[$key]['status'] === 2) { if ($items[$key]['status'] === 2) {
$items[$key]['value'] = html_print_image( $items[$key]['value'] = html_print_image(
'images/icono-warning.png', 'images/alert-yellow@svg.svg',
true, true,
[ [
'title' => __('Warning'), 'title' => __('Warning'),
@ -1840,7 +1840,7 @@ class Diagnostics extends Wizard
); );
} else if ($items[$key]['status'] === 1) { } else if ($items[$key]['status'] === 1) {
$items[$key]['value'] = html_print_image( $items[$key]['value'] = html_print_image(
'images/exito.png', 'images/validate.svg',
true, true,
[ [
'title' => __('Successfully'), 'title' => __('Successfully'),
@ -1849,7 +1849,7 @@ class Diagnostics extends Wizard
); );
} else { } else {
$items[$key]['value'] = html_print_image( $items[$key]['value'] = html_print_image(
'images/error_1.png', 'images/fail@svg.svg',
true, true,
[ [
'title' => __('Error'), 'title' => __('Error'),

View File

@ -528,40 +528,59 @@ class ExternalTools extends HTML
// Form table. // Form table.
$table = new StdClass(); $table = new StdClass();
$table->class = 'fixed_filter_bar'; $table->class = 'fixed_filter_bar filter-table-adv pdd_15px';
$table->id = 'externalToolTable'; $table->id = 'externalToolTable';
$table->cellstyle['captions'][0] = 'width: 0'; $table->size[0] = '25%';
$table->cellstyle['captions'][1] = 'width: 0'; $table->size[1] = '25%';
$table->cellstyle['captions'][2] = 'width: 0'; $table->size[2] = '25%';
$table->size[3] = '25%';
$table->colspan = [];
$table->colspan[1][0] = 4;
// $table->cellclass[0][2] = 'snmpcolumn';
// $table->cellclass[0][2] = 'snmpcolumn';
// $table->cellclass[0][3] = 'snmpcolumn';
// $table->cellclass[0][3] = 'snmpcolumn';
$table->data = []; $table->data = [];
$table->data['captions'][0] = __('Operation'); $table->data[0][0] = html_print_label_input_block(
__('Operation'),
$table->data['inputs'][0] = html_print_select( html_print_select(
$commandList, $commandList,
'operation', 'operation',
$this->operation, $this->operation,
'mostrarColumns(this.value)', 'mostrarColumns(this.value)',
__('Please select'), __('Please select'),
0, 0,
true true,
false,
true,
'w100p',
false,
'width: 100%;'
)
); );
$table->data['captions'][1] = __('IP Adress'); $table->data[0][1] = html_print_label_input_block(
$table->data['inputs'][1] = html_print_select( __('IP Adress'),
html_print_select(
$ipsSelect, $ipsSelect,
'select_ips', 'select_ips',
$principal_ip, $principal_ip,
'', '',
'', '',
0, 0,
true true,
false,
true,
'w100p',
false,
'width: 100%;'
)
); );
$table->cellclass['captions'][2] = 'snmpcolumn'; $table->data[0][2] = html_print_label_input_block(
$table->cellclass['inputs'][2] = 'snmpcolumn'; __('SNMP Version'),
$table->data['captions'][2] = __('SNMP Version'); html_print_select(
$table->data['inputs'][2] = html_print_select(
[ [
'1' => 'v1', '1' => 'v1',
'2c' => 'v2c', '2c' => 'v2c',
@ -571,34 +590,41 @@ class ExternalTools extends HTML
'', '',
'', '',
0, 0,
true true,
false,
true,
'w100p',
false,
'width: 100%;'
),
['div_class' => 'snmpcolumn']
); );
$table->cellclass['captions'][3] = 'snmpcolumn'; $table->data[0][3] = html_print_label_input_block(
$table->cellclass['inputs'][3] = 'snmpcolumn'; __('SNMP Community'),
$table->data['captions'][3] = __('SNMP Community'); html_print_input_text(
$table->data['inputs'][3] = html_print_input_text(
'community', 'community',
$this->community, $this->community,
'', '',
50, 50,
255, 255,
true true,
false,
false,
'',
'w100p'
),
['div_class' => 'snmpcolumn']
); );
$table->data['inputs'][4] = html_print_div( $table->data[1][0] = html_print_submit_button(
[
'class' => 'action-buttons',
'content' => html_print_submit_button(
__('Execute'), __('Execute'),
'submit', 'submit',
false, false,
[ [
'icon' => 'cog', 'icon' => 'cog',
'mode' => 'mini', 'mode' => 'mini',
], 'class' => 'float-right mrgn_right_10px',
true
),
], ],
true true
); );
@ -716,7 +742,7 @@ class ExternalTools extends HTML
*/ */
private function performExecution(string $command='', string $caption='') private function performExecution(string $command='', string $caption='')
{ {
$output = ''; $output = '<div class="white_box max_floating_element_size no_border">';
try { try {
// If caption is not added, don't show anything. // If caption is not added, don't show anything.
@ -736,7 +762,7 @@ class ExternalTools extends HTML
$output .= __('Command not response'); $output .= __('Command not response');
} }
$output .= '</pre>'; $output .= '</pre></div>';
if ($resultCode !== 0) { if ($resultCode !== 0) {
throw new Exception( throw new Exception(
@ -774,6 +800,8 @@ class ExternalTools extends HTML
{ {
$output = ''; $output = '';
echo '<div class="white_box max_floating_element_size no_border pdd_15px">';
if (validate_address($ip) === false) { if (validate_address($ip) === false) {
$output .= ui_print_error_message( $output .= ui_print_error_message(
__('The ip or dns name entered cannot be resolved'), __('The ip or dns name entered cannot be resolved'),
@ -938,6 +966,7 @@ class ExternalTools extends HTML
} }
} }
echo '</div>';
return $output; return $output;
} }

View File

@ -181,7 +181,6 @@ class SnmpConsole extends HTML
$default_refr = 300; $default_refr = 300;
if (!isset($config['pure']) || $config['pure'] === false) {
$statistics['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure='.$config['pure'].'">'.html_print_image( $statistics['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure='.$config['pure'].'">'.html_print_image(
'images/logs@svg.svg', 'images/logs@svg.svg',
true, true,
@ -200,15 +199,6 @@ class SnmpConsole extends HTML
).'</a>'; ).'</a>';
$list['active'] = true; $list['active'] = true;
$screen['text'] = '<a href="#" onClick="javascript:fullscreen(1)">'.html_print_image(
'images/fullscreen@svg.svg',
true,
[
'title' => __('View in full screen'),
'class' => 'main_menu_icon invert_filter',
]
).'</a>';
// Header. // Header.
ui_print_standard_header( ui_print_standard_header(
__('SNMP Console'), __('SNMP Console'),
@ -232,62 +222,6 @@ class SnmpConsole extends HTML
], ],
] ]
); );
} else {
echo '<div id="dashboard-controls">';
echo '<div id="menu_tab">';
echo '<ul class="mn">';
// Normal view button.
echo '<li class="nomn">';
echo '<a href="#" onClick="javascript:fullscreen(0)">';
echo html_print_image(
'images/exit_fullscreen@svg.svg',
true,
[
'title' => __('Exit fullscreen'),
'class' => 'main_menu_icon invert_filter',
]
);
echo '</a>';
echo '</li>';
// Auto refresh control.
echo '<li class="nomn">';
echo '<div class="dashboard-refr mrgn_top_6px">';
echo '<div class="dashboard-countdown display_in"></div>';
$normal_url = 'index.php?sec=snmpconsole&sec2=operation/snmpconsole/snmp_view';
echo '<form id="refr-form" method="get" action="'.$normal_url.'" >';
echo __('Refresh every').':';
echo html_print_select(get_refresh_time_array(), 'refresh', $this->refr, '', '', 0, true, false, false);
echo '</form>';
echo '</li>';
html_print_input_hidden('sec', 'snmpconsole');
html_print_input_hidden('sec2', 'operation/snmpconsole/snmp_view');
html_print_input_hidden('pure', 1);
html_print_input_hidden('refresh', (($this->refr > 0) ? $this->refr : $default_refr));
// Dashboard name.
echo '<li class="nomn">';
echo '<div class="dashboard-title">'.__('SNMP Traps').'</div>';
echo '</li>';
echo '</ul>';
echo '</div>';
echo '</div>';
ui_require_css_file('pandora_enterprise', ENTERPRISE_DIR.'/include/styles/');
ui_require_css_file('pandora_dashboard', ENTERPRISE_DIR.'/include/styles/');
ui_require_css_file('cluetip', 'include/styles/js/');
ui_require_jquery_file('countdown');
ui_require_javascript_file('pandora_dashboard', ENTERPRISE_DIR.'/include/javascript/');
ui_require_javascript_file('wz_jsgraphics');
ui_require_javascript_file('pandora_visual_console');
}
// Datatables list. // Datatables list.
try { try {
@ -325,7 +259,10 @@ class SnmpConsole extends HTML
'class' => 'snmp-td', 'class' => 'snmp-td',
], ],
'alert', 'alert',
'action', [
'text' => 'action',
'class' => 'table_action_buttons w120px',
],
[ [
'text' => 'm', 'text' => 'm',
'class' => 'mw60px pdd_0px', 'class' => 'mw60px pdd_0px',

View File

@ -162,6 +162,7 @@ class TipsWindow
'url' => $initialTip['url'], 'url' => $initialTip['url'],
'files' => $initialTip['files'], 'files' => $initialTip['files'],
'id' => $initialTip['id'], 'id' => $initialTip['id'],
'totalTips' => $this->getTotalTipsShowUser(),
] ]
); );
} }

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC230313'; $build_version = 'PC230316';
$pandora_version = 'v7.0NG.769'; $pandora_version = 'v7.0NG.769';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.

View File

@ -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) function get_number_of_mr($package, $ent, $offline)
{ {
global $config; 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. // If not install chromium avoid 500 convert tu images no data to show.
$chromium_dir = io_safe_output($config['chromium_path']); $chromium_dir = io_safe_output($config['chromium_path']);
$result_ejecution = exec($chromium_dir.' --version'); $result_ejecution = exec($chromium_dir.' --version');

View File

@ -2769,6 +2769,16 @@ function agents_delete_agent($id_agents, $disableACL=false)
enterprise_include_once('include/functions_agents.php'); enterprise_include_once('include/functions_agents.php');
enterprise_hook('agent_delete_from_cache', [$id_agent]); enterprise_hook('agent_delete_from_cache', [$id_agent]);
// Delete agent from fav menu.
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id_agent,
'section' => 'Agents',
'id_user' => $config['id_user'],
]
);
// Break the loop on error. // Break the loop on error.
if ((bool) $error === true) { if ((bool) $error === true) {
break; break;

View File

@ -3226,7 +3226,7 @@ function config_process_config()
// Try to update user table in order to refresh skin inmediatly. // Try to update user table in order to refresh skin inmediatly.
$is_user_updating = get_parameter('sec2', ''); $is_user_updating = get_parameter('sec2', '');
if ($is_user_updating == 'operation/users/user_edit') { if ($is_user_updating === 'godmode/users/configure_user') {
$id = get_parameter_get('id', $config['id_user']); $id = get_parameter_get('id', $config['id_user']);
// ID given as parameter. // ID given as parameter.
$user_info = get_user_info($id); $user_info = get_user_info($id);
@ -3754,7 +3754,7 @@ function config_user_set_custom_config()
} }
} }
if (defined('METACONSOLE')) { if (is_metaconsole() === true) {
$config['metaconsole_access'] = $userinfo['metaconsole_access']; $config['metaconsole_access'] = $userinfo['metaconsole_access'];
} }
} }

View File

@ -2668,7 +2668,7 @@ function events_print_type_img(
switch ($type) { switch ($type) {
case 'alert_recovered': case 'alert_recovered':
$icon = 'images/alert@svg.svg'; $style .= ' alert_module_background_state icon_background_normal ';
break; break;
case 'alert_manual_validation': case 'alert_manual_validation':
@ -4356,7 +4356,7 @@ function events_page_details($event, $server_id=0)
$graph_params_str = http_build_query($graph_params); $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); $data[1] = html_print_button(__('View graph'), 'view_graph_button', false, $link, ['mode' => 'link'], true);
$table_details->data[] = $data; $table_details->data[] = $data;
} }

View File

@ -842,7 +842,7 @@ if (is_ajax()) {
$fragmentation_status = ''; $fragmentation_status = '';
if ($db_fragmentation->data->tablesFragmentationStatus->status === 1) { if ($db_fragmentation->data->tablesFragmentationStatus->status === 1) {
$fragmentation_status = html_print_image( $fragmentation_status = html_print_image(
'images/exito.png', 'images/validate.svg',
true, true,
[ [
'title' => __('Successfully'), 'title' => __('Successfully'),
@ -851,7 +851,7 @@ if (is_ajax()) {
); );
} else { } else {
$fragmentation_status = html_print_image( $fragmentation_status = html_print_image(
'images/error_1.png', 'images/fail@svg.svg',
true, true,
[ [
'title' => __('Error'), 'title' => __('Error'),

View File

@ -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) function modules_get_agent_groups($id_agent_module)
{ {
$return = false; $return = false;

View File

@ -68,10 +68,10 @@ function network_print_explorer_header(
$cell = '<div class="flex_center">'; $cell = '<div class="flex_center">';
$cell .= $title; $cell .= $title;
$cell .= html_print_link_with_params( $cell .= html_print_link_with_params(
'images/arrow-down-white.png', 'images/arrow@svg.svg',
array_merge($hidden_data, ['order_by' => $order]), array_merge($hidden_data, ['order_by' => $order]),
'image', 'image',
($selected === $order) ? 'opacity: 0.5' : '' 'rotate: 270deg; width: 20px; margin-top: 4px;'.(($selected === $order) ? '' : 'opacity: 0.5')
); );
$cell .= '</div>'; $cell .= '</div>';

View File

@ -191,15 +191,9 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
$table->id = 'table_profiles'; $table->id = 'table_profiles';
$table->width = '100%'; $table->width = '100%';
$table->class = 'info_table'; $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 '<div id="edit_user_profiles" class="floating_form white_box">';
echo '<p class="subsection_header_title padding-lft-10">'.$title.'</p>'; echo '<p class="subsection_header_title padding-lft-10">'.$title.'</p>';
}
$table->data = []; $table->data = [];
$table->head = []; $table->head = [];
@ -405,9 +399,7 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
array_push($table->data, $data); array_push($table->data, $data);
html_print_table($table, $return); html_print_table($table, $return);
if (is_metaconsole() === false) {
echo '</div>'; echo '</div>';
}
unset($table); unset($table);
} }

View File

@ -1053,17 +1053,17 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
$table1->head = []; $table1->head = [];
if ($item['show_summary_group']) { if ($item['show_summary_group']) {
$table1->head[0] = __('Status'); $table1->head[0] = __('Status');
$table1->head[1] = __('Count'); $table1->head[1] = __('Type');
$table1->head[2] = __('Name'); $table1->head[2] = __('Count');
$table1->head[3] = __('Type'); $table1->head[3] = __('Name');
$table1->head[4] = __('Agent'); $table1->head[4] = __('Agent');
$table1->head[5] = __('Severity'); $table1->head[5] = __('Severity');
$table1->head[6] = __('Val. by'); $table1->head[6] = __('Val. by');
$table1->head[7] = __('Timestamp'); $table1->head[7] = __('Timestamp');
} else { } else {
$table1->head[0] = __('Status'); $table1->head[0] = __('Status');
$table1->head[1] = __('Name'); $table1->head[1] = __('Type');
$table1->head[2] = __('Type'); $table1->head[2] = __('Name');
$table1->head[3] = __('Agent'); $table1->head[3] = __('Agent');
$table1->head[4] = __('Severity'); $table1->head[4] = __('Severity');
$table1->head[5] = __('Val. by'); $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) { foreach ($item['data'] as $k => $event) {
// First pass along the class of this row. // First pass along the class of this row.
if ($item['show_summary_group']) { 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][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][4] = get_priority_class($event['criticity']);
$table1->cellclass[$k][5] = 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][6] = get_priority_class($event['criticity']);
$table1->cellclass[$k][7] = get_priority_class($event['criticity']); $table1->cellclass[$k][7] = get_priority_class($event['criticity']);
$table1->cellclass[$k][8] = get_priority_class($event['criticity']); $table1->cellclass[$k][8] = get_priority_class($event['criticity']);
} else { } 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][3] = get_priority_class($event['criticity']);
$table1->cellclass[$k][4] = 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][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']) { if ($item['show_summary_group']) {
$data[] = $event['event_rep']; $data[] = $event['event_rep'];
} }
@ -1136,8 +1138,6 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
true true
); );
$data[] = events_print_type_img($event['event_type'], true);
if (empty($event['alias']) === false) { if (empty($event['alias']) === false) {
$alias = $event['alias']; $alias = $event['alias'];
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
@ -1313,20 +1313,20 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
$table1->class = 'info_table'; $table1->class = 'info_table';
$table1->data = []; $table1->data = [];
$table1->head = []; $table1->head = [];
$table1->align = []; $table1->align = 'left';
$table1->align[2] = 'center';
if ($show_summary_group) { if ($show_summary_group) {
$table1->head[0] = __('Status'); $table1->head[0] = __('Status');
$table1->head[1] = __('Event name'); $table1->head[1] = __('Type');
$table1->head[2] = __('Type'); $table1->head[2] = __('Event name');
$table1->head[3] = __('Severity'); $table1->head[3] = __('Severity');
$table1->head[4] = __('Count'); $table1->head[4] = __('Count');
$table1->head[5] = __('Timestamp'); $table1->head[5] = __('Timestamp');
$table1->style[0] = 'text-align: center;'; $table1->style[0] = 'text-align: center;';
} else { } else {
$table1->head[0] = __('Status'); $table1->head[0] = __('Status');
$table1->head[1] = __('Event name'); $table1->head[1] = __('Type');
$table1->head[2] = __('Type'); $table1->head[2] = __('Event name');
$table1->head[3] = __('Severity'); $table1->head[3] = __('Severity');
$table1->head[4] = __('Timestamp'); $table1->head[4] = __('Timestamp');
$table1->style[0] = 'text-align: center;'; $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) { foreach ($item_data as $i => $event) {
$data = []; $data = [];
if ($show_summary_group) { 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][2] = get_priority_class($event['criticity']);
$table1->cellclass[$i][3] = 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][4] = get_priority_class($event['criticity']);
$table1->cellclass[$i][5] = 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][6] = get_priority_class($event['criticity']);
} else { } 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][3] = get_priority_class($event['criticity']);
$table1->cellclass[$i][4] = get_priority_class($event['criticity']); $table1->cellclass[$i][4] = get_priority_class($event['criticity']);
$table1->cellclass[$i][6] = 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'], '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']); $data[3] = get_priority_name($event['criticity']);
if ($show_summary_group) { if ($show_summary_group) {
$data[4] = $event['event_rep']; $data[4] = $event['event_rep'];
@ -2178,7 +2178,7 @@ function reporting_html_agent_module($table, $item)
if ($module === null) { if ($module === null) {
$table_data .= '<td></td>'; $table_data .= '<td></td>';
} else { } else {
$table_data .= "<td class='center'>"; $table_data .= '<td style="text-align: left;">';
if (isset($row['show_type']) === true && $row['show_type'] === '1') { if (isset($row['show_type']) === true && $row['show_type'] === '1') {
$table_data .= $module; $table_data .= $module;
} else { } else {
@ -2657,12 +2657,12 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
$table1->head = []; $table1->head = [];
$table1->head[0] = __('Status'); $table1->head[0] = __('Status');
$table1->head[3] = __('Type');
if ($item['show_summary_group']) { if ($item['show_summary_group']) {
$table1->head[1] = __('Count'); $table1->head[1] = __('Count');
} }
$table1->head[2] = __('Name'); $table1->head[2] = __('Name');
$table1->head[3] = __('Type');
$table1->head[4] = __('Severity'); $table1->head[4] = __('Severity');
$table1->head[5] = __('Val. by'); $table1->head[5] = __('Val. by');
$table1->head[6] = __('Timestamp'); $table1->head[6] = __('Timestamp');
@ -2672,14 +2672,14 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
foreach ($item['data'] as $i => $event) { foreach ($item['data'] as $i => $event) {
if ($item['show_summary_group']) { 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][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][4] = get_priority_class($event['criticity']);
$table1->cellclass[$i][5] = 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][6] = get_priority_class($event['criticity']);
$table1->cellclass[$i][7] = get_priority_class($event['criticity']); $table1->cellclass[$i][7] = get_priority_class($event['criticity']);
} else { } 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][3] = get_priority_class($event['criticity']);
$table1->cellclass[$i][4] = 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][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']) { if ($item['show_summary_group']) {
$data[] = $event['count']; $data[] = $event['count'];
} }
@ -2727,8 +2729,6 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
true true
); );
$data[] = events_print_type_img($event['type'], true);
$data[] = get_priority_name($event['criticity']); $data[] = get_priority_name($event['criticity']);
if (empty($event['validated_by']) && $event['status'] == EVENT_VALIDATE) { if (empty($event['validated_by']) && $event['status'] == EVENT_VALIDATE) {
$data[] = '<i>'.__('System').'</i>'; $data[] = '<i>'.__('System').'</i>';
@ -3283,12 +3283,19 @@ function reporting_html_alert_report_actions($table, $item, $pdf=0)
function get_alert_table($data) function get_alert_table($data)
{ {
$table = new StdCLass(); $table = new StdCLass();
$table->width = '100%'; $table->width = '99%';
$table->data = []; $table->data = [];
$table->head = []; $table->head = [];
$table->headstyle = []; $table->headstyle = [];
$table->cellstyle = []; $table->cellstyle = [];
$table->headstyle[0] = 'text-align:left;'; $table->headstyle[0] = 'text-align:left;';
$table->size[0] = '25%';
$table->size[1] = '12%';
$table->size[2] = '12%';
$table->size[3] = '12%';
$table->size[4] = '12%';
$table->size[5] = '12%';
$table->size[6] = '12%';
$head = reset($data); $head = reset($data);
foreach (array_reverse(array_keys($head)) as $name) { foreach (array_reverse(array_keys($head)) as $name) {
@ -3527,7 +3534,7 @@ function reporting_html_alert_report($table, $item, $pdf=0)
$table->data['alerts']['cell'] = html_print_table($table1, true); $table->data['alerts']['cell'] = html_print_table($table1, true);
if ($pdf) { if ($pdf) {
$table1->class = 'pdf_alert_table'; $table1->class = 'info_table';
return html_print_table($table1, true); return html_print_table($table1, true);
} }
} }
@ -3691,7 +3698,7 @@ function reporting_html_agent_configuration(
$row = []; $row = [];
$row['name'] = $item['data']['name']; $row['name'] = $item['data']['name'];
$row['group'] = $item['data']['group_icon']; $row['group'] = groups_get_name($item['data']['group'], true);
$row['address'] = $item['data']['os_icon']; $row['address'] = $item['data']['os_icon'];
$row['os'] = $item['data']['address']; $row['os'] = $item['data']['address'];
$row['description'] = $item['data']['description']; $row['description'] = $item['data']['description'];
@ -3732,36 +3739,21 @@ function reporting_html_agent_configuration(
$table1->width = '99%'; $table1->width = '99%';
$table1->head = []; $table1->head = [];
$table1->head['name'] = __('Name'); $table1->head['name'] = __('Name');
$table1->head['type'] = __('Type');
$table1->head['warning_critical'] = __('Warning<br/>Critical');
$table1->head['threshold'] = __('Threshold'); $table1->head['threshold'] = __('Threshold');
$table1->head['group_icon'] = __('Group');
$table1->head['description'] = __('Description'); $table1->head['description'] = __('Description');
$table1->head['interval'] = __('Interval'); $table1->head['interval'] = __('Interval');
$table1->head['unit'] = __('Unit'); $table1->head['unit'] = __('Unit');
$table1->head['status'] = __('Status'); $table1->head['status'] = __('Status');
$table1->head['tags'] = __('Tags'); $table1->head['tags'] = __('Tags');
$table1->align = []; $table1->align = [];
$table1->align['name'] = 'left'; $table1->align[] = 'left';
$table1->align['type'] = 'center';
$table1->align['warning_critical'] = 'right';
$table1->align['threshold'] = 'right';
$table1->align['group_icon'] = 'center';
$table1->align['description'] = 'left';
$table1->align['interval'] = 'right';
$table1->align['unit'] = 'left';
$table1->align['status'] = 'center';
$table1->align['tags'] = 'left';
$table1->data = []; $table1->data = [];
foreach ($item['data']['modules'] as $module) { foreach ($item['data']['modules'] as $module) {
$row = []; $row = [];
$row['name'] = $module['name']; $row['name'] = $module['name'];
$row['type'] = $module['type_icon'];
$row['warning_critical'] = $module['max_warning'].' / '.$module['min_warning'].'<br>'.$module['max_critical'].' / '.$module['min_critical'];
$row['threshold'] = $module['threshold']; $row['threshold'] = $module['threshold'];
$row['group_icon'] = ui_print_group_icon($item['data']['group'], true);
$row['description'] = $module['description']; $row['description'] = $module['description'];
$row['interval'] = $module['interval']; $row['interval'] = $module['interval'];
$row['unit'] = $module['unit']; $row['unit'] = $module['unit'];
@ -3927,6 +3919,8 @@ function reporting_html_value(
if ($item['visual_format'] != 2) { if ($item['visual_format'] != 2) {
$table1 = new stdClass(); $table1 = new stdClass();
$table1->width = '100%'; $table1->width = '100%';
$table1->headstyle[0] = 'text-align:left';
$table1->headstyle[1] = 'text-align:left';
switch ($item['type']) { switch ($item['type']) {
case 'max_value': case 'max_value':
$table1->head = [ $table1->head = [

View File

@ -221,6 +221,8 @@ function reports_update_report($id_report, $values)
*/ */
function reports_delete_report($id_report) function reports_delete_report($id_report)
{ {
global $config;
$id_report = safe_int($id_report); $id_report = safe_int($id_report);
if (empty($id_report)) { if (empty($id_report)) {
return false; return false;
@ -231,6 +233,16 @@ function reports_delete_report($id_report)
return false; return false;
} }
// Delete report from fav menu.
db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $id_report,
'section' => 'Reporting',
'id_user' => $config['id_user'],
]
);
@db_process_sql_delete('treport_content', ['id_report' => $id_report]); @db_process_sql_delete('treport_content', ['id_report' => $id_report]);
return @db_process_sql_delete('treport', ['id_report' => $id_report]); return @db_process_sql_delete('treport', ['id_report' => $id_report]);
} }

View File

@ -727,8 +727,8 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
false, false,
false, false,
'', '',
'white-box-content', 'white-box-content mrgn_top_0 mrgn_btn_0px',
'white_table_flex margin-bottom-10 border-bottom-gray' 'white_table_flex'
); );
if ($config['agentaccess']) { if ($config['agentaccess']) {
@ -747,8 +747,8 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
true, true,
false, false,
'', '',
'white-box-content border-bottom-gray', 'white-box-content mrgn_top_0 mrgn_btn_0px border-bottom-gray',
'white_table_flex margin-top-10 margin-bottom-10' 'white_table_flex'
); );
} }
@ -920,8 +920,8 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
true, true,
false, false,
'', '',
'white-box-content border-bottom-gray', 'white-box-content mrgn_top_0 mrgn_btn_0px border-bottom-gray',
'white_table_flex margin-top-10 margin-bottom-10' 'white_table_flex'
); );
if (empty($server_data) === false && is_metaconsole() === true) { if (empty($server_data) === false && is_metaconsole() === true) {

View File

@ -385,7 +385,12 @@ function ui_print_message($message, $class='', $attributes='', $return=false, $t
$messageCreated = html_print_table($messageTable, true); $messageCreated = html_print_table($messageTable, true);
$autocloseTime = ((int) $config['notification_autoclose_time'] * 1000); $autocloseTime = ((int) $config['notification_autoclose_time'] * 1000);
if (empty($message['div_class']) === false) {
$classes[] = $message['div_class'];
} else {
$classes[] = 'info_box_container'; $classes[] = 'info_box_container';
}
$classes[] = (($autoclose === true) && ($autocloseTime > 0)) ? ' info_box_autoclose' : ''; $classes[] = (($autoclose === true) && ($autocloseTime > 0)) ? ' info_box_autoclose' : '';
// This session var is defined in index. // This session var is defined in index.
@ -718,7 +723,23 @@ function ui_print_group_icon($id_group, $return=false, $path='', $style='', $lin
$output .= '<span title="'.groups_get_name($id_group, true).'">'.groups_get_name($id_group, true).'&nbsp;</span>'; $output .= '<span title="'.groups_get_name($id_group, true).'">'.groups_get_name($id_group, true).'&nbsp;</span>';
} else { } else {
if (empty($icon) === true) { if (empty($icon) === true) {
$output .= '<span title="'.groups_get_name($id_group, true).'">&nbsp;&nbsp;</span>'; $output .= '<span title="'.groups_get_name($id_group, true).'">';
$output .= '</span>';
$output .= html_print_image(
'images/unknown@groups.svg',
true,
[
'style' => $style,
'class' => 'main_menu_icon '.$class,
'alt' => groups_get_name($id_group, true),
'title' => groups_get_name($id_group, true),
],
false,
false,
false,
true
);
$output .= '</span>';
} else { } else {
if (empty($class) === true) { if (empty($class) === true) {
$class = 'bot'; $class = 'bot';
@ -3873,6 +3894,31 @@ function ui_print_datatable(array $parameters)
}'; }';
} }
$js .= 'if ($("#'.$table_id.' tr td").length == 1) {
$(".datatable-msg-info-'.$table_id.'").show();
$(".datatable-msg-info-'.$table_id.'").removeClass(\'invisible_important\');
$("table#'.$table_id.'").hide();
$("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()
}
} else {
$(".datatable-msg-info-'.$table_id.'").hide();
$("table#'.$table_id.'").show();
$("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()
}
}';
if (isset($parameters['drawCallback'])) { if (isset($parameters['drawCallback'])) {
$js .= $parameters['drawCallback']; $js .= $parameters['drawCallback'];
} }
@ -3996,8 +4042,13 @@ function ui_print_datatable(array $parameters)
$js .= '</script>'; $js .= '</script>';
// Order. // Order.
$info_msg_arr = [];
$info_msg_arr['message'] = $emptyTable;
$info_msg_arr['div_class'] = 'info_box_container invisible_important datatable-msg-info-'.$table_id;
$info_msg = '<div>'.ui_print_info_message($info_msg_arr).'</div>';
$err_msg = '<div id="error-'.$table_id.'"></div>'; $err_msg = '<div id="error-'.$table_id.'"></div>';
$output = $err_msg.$filter.$extra.$table.$js; $output = $info_msg.$err_msg.$filter.$extra.$table.$js;
if (is_ajax() === false) { if (is_ajax() === false) {
ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_css_file('datatables.min', 'include/styles/js/');
ui_require_css_file('tables'); ui_require_css_file('tables');
@ -4327,7 +4378,10 @@ function ui_toggle(
$image_a = html_print_image( $image_a = html_print_image(
$img_a, $img_a,
true, true,
[ 'style' => 'rotate: '.$rotateA ], [
'class' => 'mrgn_right_10px',
'style' => 'rotate: '.$rotateA,
],
true true
); );
} else { } else {
@ -4338,7 +4392,10 @@ function ui_toggle(
$image_b = html_print_image( $image_b = html_print_image(
$img_b, $img_b,
true, true,
[ 'style' => 'rotate: '.$rotateB ], [
'class' => 'mrgn_right_10px',
'style' => 'margin-right:10px; rotate: '.$rotateB,
],
true true
); );
} else { } else {
@ -4401,7 +4458,7 @@ function ui_toggle(
$original, $original,
true, true,
[ [
'class' => 'float-left main_menu_icon', 'class' => 'float-left main_menu_icon mrgn_right_10px',
'style' => 'object-fit: contain; margin-right:10px; rotate:'.$imageRotate, 'style' => 'object-fit: contain; margin-right:10px; rotate:'.$imageRotate,
'title' => $title, 'title' => $title,
'id' => 'image_'.$uniqid, 'id' => 'image_'.$uniqid,
@ -4433,7 +4490,7 @@ function ui_toggle(
$original, $original,
true, true,
[ [
'class' => 'main_menu_icon', 'class' => 'main_menu_icon mrgn_right_10px',
'style' => 'object-fit: contain; float:right; margin-right:10px; rotate:'.$imageRotate, 'style' => 'object-fit: contain; float:right; margin-right:10px; rotate:'.$imageRotate,
'title' => $title, 'title' => $title,
'id' => 'image_'.$uniqid, 'id' => 'image_'.$uniqid,
@ -4957,7 +5014,8 @@ function ui_print_standard_header(
string $help='', string $help='',
bool $godmode=false, bool $godmode=false,
array $options=[], array $options=[],
array $breadcrumbs=[] array $breadcrumbs=[],
array $fav_menu_config=[]
) { ) {
// For standard breadcrumbs. // For standard breadcrumbs.
ui_require_css_file('discovery'); ui_require_css_file('discovery');
@ -5001,7 +5059,9 @@ function ui_print_standard_header(
'', '',
GENERIC_SIZE_TEXT, GENERIC_SIZE_TEXT,
'', '',
$headerInformation->printHeader(true) $headerInformation->printHeader(true),
false,
$fav_menu_config
); );
// } // }
if ($return !== true) { if ($return !== true) {
@ -5042,8 +5102,11 @@ function ui_print_page_header(
$numChars=GENERIC_SIZE_TEXT, $numChars=GENERIC_SIZE_TEXT,
$alias='', $alias='',
$breadcrumbs='', $breadcrumbs='',
$hide_left_small=false $hide_left_small=false,
$fav_menu_config=[]
) { ) {
global $config;
$title = io_safe_input_html($title); $title = io_safe_input_html($title);
if (($icon == '') && ($godmode == true)) { if (($icon == '') && ($godmode == true)) {
$icon = 'images/gm_setup.png'; $icon = 'images/gm_setup.png';
@ -5057,13 +5120,18 @@ function ui_print_page_header(
$type = 'view'; $type = 'view';
$type2 = 'menu_tab_frame_view'; $type2 = 'menu_tab_frame_view';
$separator_class = 'separator'; $separator_class = 'separator';
$div_style = '';
} else { } else {
$type = 'view'; $type = 'view';
$type2 = 'menu_tab_frame_view'; $type2 = 'menu_tab_frame_view';
$separator_class = 'separator_view'; $separator_class = 'separator_view';
$div_style = '';
if ($config['pure'] === true) {
$div_style = 'top:0px;';
}
} }
$buffer = '<div id="'.$type2.'" >'; $buffer = '<div id="'.$type2.'" style="'.$div_style.'" >';
if (!empty($breadcrumbs)) { if (!empty($breadcrumbs)) {
$buffer .= '<div class="menu_tab_left_bc">'; $buffer .= '<div class="menu_tab_left_bc">';
@ -5099,6 +5167,17 @@ function ui_print_page_header(
} }
} }
if (is_array($fav_menu_config) === true && is_metaconsole() === false) {
if (count($fav_menu_config) > 0) {
$buffer .= ui_print_fav_menu(
$fav_menu_config['id_element'],
$fav_menu_config['url'],
$fav_menu_config['label'],
$fav_menu_config['section']
);
}
}
$buffer .= '</span>'; $buffer .= '</span>';
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
@ -7025,20 +7104,6 @@ function ui_query_result_editor($name='default')
true 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( $editorContainer = html_print_div(
[ [
'id' => $name.'_editor_container', 'id' => $name.'_editor_container',
@ -7096,6 +7161,11 @@ function ui_query_result_editor($name='default')
'content' => ui_get_full_url(false, false, false, false), '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
);
} }
@ -7267,22 +7337,22 @@ function ui_get_inventory_module_add_form(
$table = new stdClass(); $table = new stdClass();
$table->id = 'inventory-module-form'; $table->id = 'inventory-module-form';
$table->width = '100%'; $table->width = '100%';
$table->class = 'databox filters'; $table->class = 'databox filters filter-table-adv';
$table->style['module-title'] = 'font-weight: bold;'; $table->size['module'] = '50%';
$table->style['interval-title'] = 'font-weight: bold;'; $table->size['interval'] = '50%';
$table->style['target-title'] = 'font-weight: bold;'; $table->size['target'] = '50%';
$table->style['chkbx-custom-fields-title'] = 'font-weight: bold;'; $table->size['chkbx-custom-fields'] = '50%';
$table->style['username-title'] = 'font-weight: bold;'; $table->size['username'] = '50%';
$table->style['password-title'] = 'font-weight: bold;'; $table->size['password'] = '50%';
$table->rowstyle = []; $table->rowstyle = [];
$table->rowstyle['hidden-custom-field-row'] = 'display: none;'; $table->rowstyle['hidden-custom-field-row'] = 'display: none;';
$table->colspan = []; $table->rowstyle['custom-fields-button'] = 'display: none;';
$table->colspan['custom-fields-row'] = []; // $table->colspan = [];
$table->colspan['custom-fields-row']['custom-fields-column'] = 4; // $table->colspan['custom-fields-row'] = [];
// $table->colspan['custom-fields-row']['custom-fields-column'] = 2;
$table->data = []; $table->data = [];
$row = []; $row = [];
$row['module-title'] = __('Module');
if (empty($inventory_module_id)) { if (empty($inventory_module_id)) {
if (empty($os_id)) { if (empty($os_id)) {
$sql = 'SELECT mi.id_module_inventory AS id, mi.name AS name, co.name AS os $sql = 'SELECT mi.id_module_inventory AS id, mi.name AS name, co.name AS os
@ -7314,33 +7384,111 @@ function ui_get_inventory_module_add_form(
} }
} }
$row['module-input'] = html_print_select($inventory_modules, 'id_module_inventory', 0, '', __('Select inventory module'), 0, true, false, false); $row['module'] = html_print_label_input_block(
__('Module'),
html_print_select(
$inventory_modules,
'id_module_inventory',
0,
'',
__('Select inventory module'),
0,
true,
false,
false,
'w100p',
false,
'width: 100%'
)
);
} else { } else {
$row['module-input'] = db_get_sql('SELECT name FROM tmodule_inventory WHERE id_module_inventory = '.$inventory_module_id); $row['module'] = html_print_label_input_block(
__('Module'),
db_get_sql('SELECT name FROM tmodule_inventory WHERE id_module_inventory = '.$inventory_module_id)
);
} }
$row['interval-title'] = __('Interval'); $row['interval'] = html_print_label_input_block(
$row['interval-input'] = html_print_extended_select_for_time('interval', $interval, '', '', '', false, true); __('Interval'),
html_print_extended_select_for_time(
'interval',
$interval,
'',
'',
'',
false,
true,
false,
true,
'w100p'
)
);
$table->data['first-row'] = $row; $table->data['first-row'] = $row;
$row = []; $row = [];
if ($target !== false) { if ($target !== false) {
$row['target-title'] = __('Target'); $row['target'] = html_print_label_input_block(
$row['target-input'] = html_print_input_text('target', $target, '', 25, 40, true); __('Target'),
html_print_input_text(
'target',
$target,
'',
25,
40,
true,
false,
false,
'',
'w100p'
)
);
} }
$row['chkbx-custom-fields-title'] = __('Use custom fields'); $row['chkbx-custom-fields'] = html_print_label_input_block(
$row['chkbx-custom-fields-input'] = html_print_checkbox('custom_fields_enabled', 1, $custom_fields_enabled, true); __('Use custom fields'),
html_print_checkbox(
'custom_fields_enabled',
1,
$custom_fields_enabled,
true
)
);
$table->data['second-row'] = $row; $table->data['second-row'] = $row;
$row = []; $row = [];
$row['username-title'] = __('Username'); $row['username'] = html_print_label_input_block(
$row['username-input'] = html_print_input_text('username', $username, '', 25, 40, true); __('Username'),
$row['password-title'] = __('Password'); html_print_input_text(
$row['password-input'] = html_print_input_password('password', $password, '', 25, 40, true); 'username',
$username,
'',
25,
40,
true,
false,
false,
'',
'w100p'
)
);
$row['password'] = html_print_label_input_block(
__('Password'),
html_print_input_password(
'password',
$password,
'',
25,
40,
true,
false,
false,
'w100p'
)
);
$table->data['userpass-row'] = $row; $table->data['userpass-row'] = $row;
@ -7348,8 +7496,18 @@ function ui_get_inventory_module_add_form(
$row['hidden-title'] = ''; $row['hidden-title'] = '';
$row['hidden-input'] = html_print_input_hidden('hidden-custom-field-name', '', true); $row['hidden-input'] = html_print_input_hidden('hidden-custom-field-name', '', true);
$row['hidden-input'] .= html_print_input_hidden('hidden-custom-field-is-secure', 0, true); $row['hidden-input'] .= html_print_input_hidden('hidden-custom-field-is-secure', 0, true);
$row['hidden-input'] .= html_print_input_text('hidden-custom-field-input', '', '', 25, 40, true); $row['hidden-input'] .= html_print_input_text(
$row['hidden-input'] .= '<span>&nbsp;</span>'; 'hidden-custom-field-input',
'',
'',
25,
40,
true,
false,
false,
'',
'w93p'
);
$row['hidden-input'] .= html_print_image( $row['hidden-input'] .= html_print_image(
'images/delete.svg', 'images/delete.svg',
true, true,
@ -7414,13 +7572,48 @@ function ui_get_inventory_module_add_form(
} }
$row = []; $row = [];
$row['custom-fields-column'] = '<b>'.__('Field name').'</b>'.'&nbsp;&nbsp;'.html_print_input_text('field-name', '', '', 25, 40, true).'&nbsp;&nbsp;&nbsp;'.html_print_checkbox('field-is-password', 1, false, true).__("It's a password").'&nbsp;&nbsp;&nbsp;'.html_print_button(__('Add field'), 'add-field', false, '', 'class="sub add"', true); $row['custom-fields-column'] = html_print_label_input_block(
__('Field name'),
'<div class="flex">'.html_print_input_text(
'field-name',
'',
'',
25,
40,
true,
false,
false,
'',
'w60p mrgn_right_10px'
).html_print_checkbox(
'field-is-password',
1,
false,
true
).'&nbsp;'.__("It's a password").'</div>'
);
$table->data['custom-fields-row'] = $row; $table->data['custom-fields-row'] = $row;
$row = [];
$row['custom-fields-button-title'] = '';
$row['custom-fields-button'] = html_print_button(
__('Add field'),
'add-field',
false,
'',
[
'class' => 'mini float-right',
'icon' => 'plus',
],
true
);
$table->data['custom-fields-button'] = $row;
ob_start(); ob_start();
echo '<form name="modulo" method="post" action="'.$form_action.'">'; echo '<form name="modulo" method="post" action="'.$form_action.'" class="max_floating_element_size">';
echo html_print_table($table); echo html_print_table($table);
echo '<div class="action-buttons w100p">'; echo '<div class="action-buttons w100p">';
echo $form_buttons; echo $form_buttons;
@ -7618,3 +7811,47 @@ function ui_print_status_div($status)
return $return; return $return;
} }
function ui_print_fav_menu($id_element, $url, $label, $section)
{
global $config;
$label = io_safe_output($label);
if (strlen($label) > 18) {
$label = io_safe_input(substr($label, 0, 18).'...');
}
$fav = db_get_row_filter(
'tfavmenu_user',
[
'url' => $url,
'id_user' => $config['id_user'],
],
['*']
);
$config_fav_menu = [
'id_element' => $id_element,
'url' => $url,
'label' => $label,
'section' => $section,
];
$output = '<span class="fav-menu">';
$output .= html_print_input_image(
'fav-menu-action',
(($fav !== false) ? 'images/star_fav_menu.png' : 'images/star_dark.png'),
base64_encode(json_encode($config_fav_menu)),
'',
true,
[
'onclick' => 'favMenuAction(this)',
'class' => (($fav !== false) ? 'active' : ''),
]
);
$output .= '</span>';
$output .= '<div id="dialog-fav-menu">';
$output .= '<p><b>'.__('Title').'</b></p>';
$output .= html_print_input_text('label_fav_menu', '', '', 25, 255, true, false, true);
$output .= '</div>';
return $output;
}

View File

@ -696,7 +696,7 @@ function get_build_setup_charts($type, $options, $data)
$legend->setAlign($legendAlign); $legend->setAlign($legendAlign);
// Defaults fonts legends. // Defaults fonts legends.
$legend->labels()->getFonts()->setFamily((empty($config['fontpath']) === true) ? 'Lato' : $config['fontpath']); $legend->labels()->getFonts()->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
$legend->labels()->getFonts()->setStyle('normal'); $legend->labels()->getFonts()->setStyle('normal');
$legend->labels()->getFonts()->setWeight(600); $legend->labels()->getFonts()->setWeight(600);
$legend->labels()->getFonts()->setSize(((int) $config['font_size'] + 2)); $legend->labels()->getFonts()->setSize(((int) $config['font_size'] + 2));
@ -835,7 +835,7 @@ function get_build_setup_charts($type, $options, $data)
$dataLabel->setFormatter($dataLabelFormatter); $dataLabel->setFormatter($dataLabelFormatter);
// Defaults fonts datalabel. // Defaults fonts datalabel.
$dataLabel->getFonts()->setFamily((empty($config['fontpath']) === true) ? 'Lato' : $config['fontpath']); $dataLabel->getFonts()->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
$dataLabel->getFonts()->setStyle('normal'); $dataLabel->getFonts()->setStyle('normal');
$dataLabel->getFonts()->setWeight(600); $dataLabel->getFonts()->setWeight(600);
$dataLabel->getFonts()->setSize(((int) $config['font_size'] + 2)); $dataLabel->getFonts()->setSize(((int) $config['font_size'] + 2));
@ -944,14 +944,14 @@ function get_build_setup_charts($type, $options, $data)
// Defaults scalesFont X. // Defaults scalesFont X.
$scalesXFonts = $scales->getX()->ticks()->getFonts(); $scalesXFonts = $scales->getX()->ticks()->getFonts();
$scalesXFonts->setFamily((empty($config['fontpath']) === true) ? 'Lato' : $config['fontpath']); $scalesXFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
$scalesXFonts->setStyle('normal'); $scalesXFonts->setStyle('normal');
$scalesXFonts->setWeight(600); $scalesXFonts->setWeight(600);
$scalesXFonts->setSize(((int) $config['font_size'] + 2)); $scalesXFonts->setSize(((int) $config['font_size'] + 2));
// Defaults scalesFont Y. // Defaults scalesFont Y.
$scalesYFonts = $scales->getY()->ticks()->getFonts(); $scalesYFonts = $scales->getY()->ticks()->getFonts();
$scalesYFonts->setFamily((empty($config['fontpath']) === true) ? 'Lato' : $config['fontpath']); $scalesYFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
$scalesYFonts->setStyle('normal'); $scalesYFonts->setStyle('normal');
$scalesYFonts->setWeight(600); $scalesYFonts->setWeight(600);
$scalesYFonts->setSize(((int) $config['font_size'] + 2)); $scalesYFonts->setSize(((int) $config['font_size'] + 2));

View File

@ -730,8 +730,9 @@ function flot_slicesbar_graph(
global $config; global $config;
if ($ttl == 2) { if ($ttl == 2) {
$tokem_config = uniqid('slicebar');
$params = [ $params = [
'graph_data' => $graph_data, 'tokem_config' => $tokem_config,
'period' => $period, 'period' => $period,
'width' => $width, 'width' => $width,
'height' => $height, 'height' => $height,
@ -752,7 +753,10 @@ function flot_slicesbar_graph(
'return_img_base_64' => true, 'return_img_base_64' => true,
'date_to' => $date_to, 'date_to' => $date_to,
'server_id' => $server_id, '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 = '<img src="data:image/png;base64,';
$graph .= generator_chart_to_pdf('slicebar', $params); $graph .= generator_chart_to_pdf('slicebar', $params);

View File

@ -2167,7 +2167,7 @@ function print_circular_progress_bar(
var numberText = circle var numberText = circle
.append("text") .append("text")
.attr("fill", label_color) .attr("fill", "#333333")
.style("font-weight", "bold") .style("font-weight", "bold")
.style("font-size", numberSize) .style("font-size", numberSize)
.attr("text-anchor", "middle") .attr("text-anchor", "middle")
@ -2175,7 +2175,7 @@ function print_circular_progress_bar(
var percentText = circle var percentText = circle
.append("text") .append("text")
.attr("fill", label_color) .attr("fill", "#333333")
.style("font-weight", "bold") .style("font-weight", "bold")
.style("font-size", unitSize) .style("font-size", unitSize)
.text(unit) .text(unit)

View File

@ -9,7 +9,7 @@ view.renderer.setShowGutter(false);
view.setReadOnly(true); view.setReadOnly(true);
view.setShowPrintMargin(false); view.setShowPrintMargin(false);
$("#submit-execute_query").click(function() { $("#button-execute_query").click(function() {
view.setValue(""); view.setValue("");
let text; let text;
let selectText = editor.getSelectedText(); let selectText = editor.getSelectedText();

File diff suppressed because one or more lines are too long

View File

@ -296,7 +296,7 @@
$.extend({ $.extend({
pandoraSelectGroupIcon: new (function() { pandoraSelectGroupIcon: new (function() {
this.defaults = { this.defaults = {
alertSelect: "select#id_group", alertSelect: "select#grupo",
spanPreview: "#group_preview", spanPreview: "#group_preview",
debug: false debug: false
}; };
@ -315,9 +315,10 @@
$(this).change(function() { $(this).change(function() {
var id_group = this.value; var id_group = this.value;
let href = $("a", config.spanPreview).attr("href");
let hrefPosition = href.search("group_id=");
let hrefNew = href.slice(0, hrefPosition) + "group_id=" + id_group;
$(config.spanPreview).fadeOut("fast", function() {
$("img", config.spanPreview).remove();
jQuery.post( jQuery.post(
"ajax.php", "ajax.php",
{ {
@ -326,16 +327,16 @@
id_group: id_group id_group: id_group
}, },
function(data) { function(data) {
var img = $("<img />").attr("src", "images/" + data["icon"]); $("img", config.spanPreview).attr(
$(config.spanPreview) "src",
.append(img) "images/" + data["icon"]
.fadeIn("fast"); );
$("a", config.spanPreview).attr("href", hrefNew);
}, },
"json" "json"
); );
}); });
}); });
});
}; };
})() })()
}); });

View File

@ -806,7 +806,9 @@ function dashboardLoadNetworkMap(settings) {
auth_hash: settings.auth_hash, auth_hash: settings.auth_hash,
id_user: settings.id_user, id_user: settings.id_user,
ignore_acl: 1, ignore_acl: 1,
node: settings.node node: settings.node,
dashboard: 1,
size: settings.size
}, },
dataType: "html", dataType: "html",
success: function(data) { success: function(data) {

View File

@ -834,3 +834,55 @@ function unblockSubmit(button) {
expireCookie("downloadReady"); expireCookie("downloadReady");
attempts = 30; attempts = 30;
} }
function favMenuAction(e) {
var data = JSON.parse(atob(e.value));
if (data.label === "" && $(e).hasClass("active") === false) {
$("#dialog-fav-menu").dialog({
title: "Please choose a title",
width: 330,
buttons: [
{
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-next",
text: "Confirm",
click: function() {
data.label = $("#text-label_fav_menu").val();
if (data.label.length > 18) {
data.label = data.label.slice(0, 18) + "...";
}
$(e).val(btoa(JSON.stringify(data)));
favMenuAction(e);
$(this).dialog("close");
$("input[name='label_fav_menu']").val("");
}
}
]
});
return;
}
$.ajax({
method: "POST",
url: "ajax.php",
dataType: "json",
data: {
page: "include/ajax/fav_menu.ajax",
id_element: data["id_element"],
url: data["url"],
label: data["label"],
section: data["section"]
},
success: function(res) {
if (res.success) {
if (res.action === "create") {
$("#image-fav-menu-action1").attr("src", "images/star_fav_menu.png");
$("#image-fav-menu-action1").addClass("active");
} else {
$("#image-fav-menu-action1").attr("src", "images/star_dark.png");
$("#image-fav-menu-action1").removeClass("active");
}
}
}
});
}

View File

@ -1250,7 +1250,10 @@ class ClusterWizard extends \HTML
'name' => 'next', 'name' => 'next',
'label' => $str, 'label' => $str,
'type' => 'submit', 'type' => 'submit',
'attributes' => 'class="sub next"', 'attributes' => [
'icon' => 'wand',
'mode' => 'primary',
],
'return' => true, 'return' => true,
], ],
]; ];

View File

@ -568,6 +568,16 @@ class Manager implements PublicLogin
'tdashboard', 'tdashboard',
['id' => $this->dashboardId] ['id' => $this->dashboardId]
); );
// Delete dashboard from fav menu.
\db_process_sql_delete(
'tfavmenu_user',
[
'id_element' => $this->dashboardId,
'section' => 'Dashboard_',
'id_user' => $config['id_user'],
]
);
} }
// Audit. // Audit.

View File

@ -316,6 +316,10 @@ class AvgSumMaxMinModule extends Widget
$values['unit'] = $decoder['unit']; $values['unit'] = $decoder['unit'];
} }
if (isset($decoder['horizontal']) === true) {
$values['horizontal'] = $decoder['horizontal'];
}
return $values; return $values;
} }
@ -501,6 +505,18 @@ class AvgSumMaxMinModule extends Widget
], ],
]; ];
// Horizontal.
$inputs[] = [
'label' => __('Horizontal').ui_print_help_tip(__('If not, layout is vertical'), true),
'arguments' => [
'wrapper' => 'div',
'name' => 'horizontal',
'type' => 'switch',
'value' => $values['horizontal'],
'return' => true,
],
];
return $inputs; return $inputs;
} }
@ -525,6 +541,7 @@ class AvgSumMaxMinModule extends Widget
$values['sizeLabel'] = \get_parameter_switch('sizeLabel'); $values['sizeLabel'] = \get_parameter_switch('sizeLabel');
$values['text_color'] = \get_parameter('text_color', 0); $values['text_color'] = \get_parameter('text_color', 0);
$values['unit'] = \get_parameter_switch('unit'); $values['unit'] = \get_parameter_switch('unit');
$values['horizontal'] = \get_parameter_switch('horizontal');
return $values; return $values;
} }
@ -601,13 +618,13 @@ class AvgSumMaxMinModule extends Widget
break; break;
case 2: 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']; $data = $rows[0]['max'];
break; break;
case 3: 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']; $data = $rows[0]['min'];
break; break;
@ -621,11 +638,22 @@ class AvgSumMaxMinModule extends Widget
$sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 40; $sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 40;
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 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['horizontal'] === 1) {
$orientation = 'flex aligni_center';
} else {
$orientation = 'grid';
}
// General div. // General div.
$output .= '<div class="container-icon">'; $output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
// Div value. // 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="line-height: '.$sizeValue.'px; font-size:'.$sizeValue.'px;'.$text_color.'">';
if (is_numeric($data) === true) { if (is_numeric($data) === true) {
$dataDatos = remove_right_zeros( $dataDatos = remove_right_zeros(
@ -651,11 +679,22 @@ class AvgSumMaxMinModule extends Widget
if (empty($label) === false) { if (empty($label) === false) {
// Div Label. // 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="line-height: '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;'.$text_color.'">'.$label.'</div>';
} }
$output .= '</div>'; $output .= '</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; return $output;
} }

View File

@ -520,7 +520,7 @@ class DataMatrix extends Widget
[ [
'id' => $tableId, 'id' => $tableId,
'class' => 'info_table', 'class' => 'info_table',
'style' => 'width: 100%', 'style' => 'width: 99%',
'columns' => $columns, 'columns' => $columns,
'column_names' => $column_names, 'column_names' => $column_names,
'ajax_url' => 'include/ajax/module', 'ajax_url' => 'include/ajax/module',
@ -539,6 +539,7 @@ class DataMatrix extends Widget
'direction' => 'desc', 'direction' => 'desc',
], ],
'csv' => 0, 'csv' => 0,
'dom_elements' => 'frtilp',
] ]
); );
} catch (\Exception $e) { } catch (\Exception $e) {
@ -643,7 +644,14 @@ class DataMatrix extends Widget
} }
$columns_sort[] = ($key + 1); $columns_sort[] = ($key + 1);
$column_names[] = $name; $column_names[] = \ui_print_truncate_text(
\io_safe_output($name),
'agent_small',
false,
true,
false,
'...'
);
} }
$data = [ $data = [

View File

@ -179,7 +179,7 @@ class ModulesByStatus extends Widget
// This forces at least a first configuration. // This forces at least a first configuration.
// This forces at least a first configuration. // This forces at least a first configuration.
$this->configurationRequired = false; $this->configurationRequired = false;
if (empty($this->values['status']) === true) { if (empty($this->values['status']) === true && $this->values['status'] !== '0') {
$this->configurationRequired = true; $this->configurationRequired = true;
} }
@ -311,6 +311,8 @@ class ModulesByStatus extends Widget
$nodes_fields[$server['id']] = $server['server_name']; $nodes_fields[$server['id']] = $server['server_name'];
} }
$nodes_fields[0] = __('Metaconsola');
$nodes_selected = explode(',', $values['nodes']); $nodes_selected = explode(',', $values['nodes']);
(isset($values['nodes']) === false) ? $nodes_selected = $servers_ids : ''; (isset($values['nodes']) === false) ? $nodes_selected = $servers_ids : '';
@ -369,6 +371,8 @@ class ModulesByStatus extends Widget
{ {
$this->size = parent::getSize(); $this->size = parent::getSize();
global $config;
$output = ''; $output = '';
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
@ -413,7 +417,7 @@ class ModulesByStatus extends Widget
[ [
'id' => $tableId, 'id' => $tableId,
'class' => 'info_table align-left-important', 'class' => 'info_table align-left-important',
'style' => 'width: 100%', 'style' => 'width: 99%',
'columns' => $columns, 'columns' => $columns,
'column_names' => $column_names, 'column_names' => $column_names,
'ajax_url' => 'include/ajax/module', 'ajax_url' => 'include/ajax/module',
@ -430,6 +434,26 @@ class ModulesByStatus extends Widget
'direction' => 'desc', 'direction' => 'desc',
], ],
'csv' => 0, 'csv' => 0,
'pagination_options' => [
[
5,
10,
25,
100,
200,
500,
1000,
],
[
5,
10,
25,
100,
200,
500,
1000,
],
],
] ]
); );
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@ -424,9 +424,9 @@ class AgentModuleWidget extends Widget
array $visualData, array $visualData,
array $allModules array $allModules
):string { ):string {
$style = 'display:flex; width:96%; margin-top: 10px;'; $style = 'display:flex; width:100%; margin-top: 10px;';
$table_data = '<div style="'.$style.'">'; $table_data = '<div style="'.$style.'">';
$table_data .= '<table class="widget_agent_module transparent mrgn_0px" cellpadding="1" cellspacing="0" border="0">'; $table_data .= '<table class="info_table transparent" cellpadding="1" cellspacing="0" border="0">';
if (empty($visualData) === false) { if (empty($visualData) === false) {
$table_data .= '<th>'.__('Agents').' / '.__('Modules').'</th>'; $table_data .= '<th>'.__('Agents').' / '.__('Modules').'</th>';
@ -450,29 +450,24 @@ class AgentModuleWidget extends Widget
switch ($row['agent_status']) { switch ($row['agent_status']) {
case AGENT_STATUS_ALERT_FIRED: case AGENT_STATUS_ALERT_FIRED:
$rowcolor = COL_ALERTFIRED; $rowcolor = COL_ALERTFIRED;
$textcolor = '#000';
break; break;
case AGENT_STATUS_CRITICAL: case AGENT_STATUS_CRITICAL:
$rowcolor = COL_CRITICAL; $rowcolor = COL_CRITICAL;
$textcolor = '#FFF';
break; break;
case AGENT_STATUS_WARNING: case AGENT_STATUS_WARNING:
$rowcolor = COL_WARNING; $rowcolor = COL_WARNING;
$textcolor = '#000';
break; break;
case AGENT_STATUS_NORMAL: case AGENT_STATUS_NORMAL:
$rowcolor = COL_NORMAL; $rowcolor = COL_NORMAL;
$textcolor = '#FFF';
break; break;
case AGENT_STATUS_UNKNOWN: case AGENT_STATUS_UNKNOWN:
case AGENT_STATUS_ALL: case AGENT_STATUS_ALL:
default: default:
$rowcolor = COL_UNKNOWN; $rowcolor = COL_UNKNOWN;
$textcolor = '#FFF';
break; break;
} }
@ -484,8 +479,10 @@ class AgentModuleWidget extends Widget
false, false,
'...' '...'
); );
$table_data .= "<td style='background-color: ".$rowcolor.";'>"; $table_data .= '<td>';
$table_data .= '<div class="flex"><div class="div-state-agent" style="background-color: '.$rowcolor.';"></div>';
$table_data .= $file_name; $table_data .= $file_name;
$table_data .= '</div>';
$table_data .= '</td>'; $table_data .= '</td>';
if ($row['modules'] === null) { if ($row['modules'] === null) {
@ -494,7 +491,7 @@ class AgentModuleWidget extends Widget
foreach ($row['modules'] as $module_name => $module) { foreach ($row['modules'] as $module_name => $module) {
if ($this->values['mTypeShow'] === '1') { if ($this->values['mTypeShow'] === '1') {
$style = 'text-align: center;'; $style = 'text-align: left;';
$style .= ' background-color: transparent;'; $style .= ' background-color: transparent;';
$table_data .= "<td style='".$style."'>"; $table_data .= "<td style='".$style."'>";
$table_data .= $module; $table_data .= $module;
@ -509,7 +506,7 @@ class AgentModuleWidget extends Widget
continue; continue;
} }
} else { } else {
$style = 'text-align: center;'; $style = 'text-align: left;';
$style .= ' background-color: transparent;'; $style .= ' background-color: transparent;';
$table_data .= "<td style='".$style."'>"; $table_data .= "<td style='".$style."'>";
switch ($module) { switch ($module) {

View File

@ -284,11 +284,16 @@ class AlertsFiredWidget extends Widget
if (isset($groups) === true && is_array($groups) === true) { if (isset($groups) === true && is_array($groups) === true) {
$table = new \StdClass(); $table = new \StdClass();
$table->class = 'databox data'; $table->class = 'databox data centered';
$table->cellspacing = '0'; $table->cellspacing = '0';
$table->width = '90%'; $table->width = '100%';
$table->data = []; $table->data = [];
$table->size = []; $table->size = [];
$table->style = [];
$table->style[0] = 'text-align: left;';
$table->style[1] = 'text-align: left;';
$table->style[2] = 'text-align: left;';
$table->style[3] = 'text-align: left;';
$url = $config['homeurl']; $url = $config['homeurl'];
$url .= 'index.php?sec=estado&sec2=operation/agentes/alerts_status'; $url .= 'index.php?sec=estado&sec2=operation/agentes/alerts_status';
@ -335,7 +340,7 @@ class AlertsFiredWidget extends Widget
if ($flag === true) { if ($flag === true) {
$height = (count($table->data) * 30); $height = (count($table->data) * 30);
$style = 'min-width:300px; min-height:'.$height.'px;'; $style = 'min-width:300px; min-height:'.$height.'px;';
$output .= '<div class="container-center" style="'.$style.'">'; $output .= '<div class="" style="'.$style.'">';
$output .= html_print_table($table, true); $output .= html_print_table($table, true);
$output .= '</div>'; $output .= '</div>';
} else { } else {

View File

@ -521,7 +521,7 @@ class CustomGraphWidget extends Widget
$params = [ $params = [
'period' => $this->values['period'], 'period' => $this->values['period'],
'width' => ($size['width'] - 10), 'width' => ($size['width']),
'height' => $height, 'height' => $height,
'only_image' => false, 'only_image' => false,
'homeurl' => $config['homeurl'], 'homeurl' => $config['homeurl'],

View File

@ -663,7 +663,7 @@ class EventsListWidget extends Widget
[ [
'id' => $table_id, 'id' => $table_id,
'class' => 'info_table events', 'class' => 'info_table events',
'style' => 'width: 100%;', 'style' => 'width: 99%;',
'ajax_url' => 'operation/events/events', 'ajax_url' => 'operation/events/events',
'ajax_data' => [ 'ajax_data' => [
'get_events' => 1, 'get_events' => 1,
@ -697,6 +697,7 @@ class EventsListWidget extends Widget
'ajax_return_operation_function' => 'process_buffers', 'ajax_return_operation_function' => 'process_buffers',
'return' => true, 'return' => true,
'csv' => 0, 'csv' => 0,
'dom_elements' => 'frtilp',
] ]
); );

View File

@ -305,6 +305,10 @@ class ModuleIconWidget extends Widget
$values['imageSrc'] = $decoder['imageSrc']; $values['imageSrc'] = $decoder['imageSrc'];
} }
if (isset($decoder['horizontal']) === true) {
$values['horizontal'] = $decoder['horizontal'];
}
return $values; return $values;
} }
@ -482,6 +486,18 @@ class ModuleIconWidget extends Widget
], ],
]; ];
// Horizontal.
$inputs[] = [
'label' => __('Horizontal').ui_print_help_tip(__('If not, layout is vertical'), true),
'arguments' => [
'wrapper' => 'div',
'name' => 'horizontal',
'type' => 'switch',
'value' => $values['horizontal'],
'return' => true,
],
];
return $inputs; return $inputs;
} }
@ -504,6 +520,7 @@ class ModuleIconWidget extends Widget
$values['sizeValue'] = \get_parameter('sizeValue', 0); $values['sizeValue'] = \get_parameter('sizeValue', 0);
$values['sizeLabel'] = \get_parameter_switch('sizeLabel'); $values['sizeLabel'] = \get_parameter_switch('sizeLabel');
$values['sizeIcon'] = \get_parameter_switch('sizeIcon'); $values['sizeIcon'] = \get_parameter_switch('sizeIcon');
$values['horizontal'] = \get_parameter_switch('horizontal');
return $values; return $values;
} }
@ -533,39 +550,84 @@ class ModuleIconWidget extends Widget
$this->values['moduleId'] $this->values['moduleId']
); );
$unit = \modules_get_unit($this->values['moduleId']);
$icon = $this->values['imageSrc']; $icon = $this->values['imageSrc'];
$label = $this->values['label']; $label = $this->values['label'];
$sizeLabel = (($this->values['sizeLabel'] !== 0) ? $this->values['sizeLabel'] : 20); $sizeLabel = (($this->values['sizeLabel'] !== 0) ? $this->values['sizeLabel'] : 20);
$sizeValue = (($this->values['sizeValue'] !== 0) ? $this->values['sizeValue'] : 20); $sizeValue = (($this->values['sizeValue'] !== 0) ? $this->values['sizeValue'] : 20);
$sizeIcon = (($this->values['sizeIcon'] !== 0) ? $this->values['sizeIcon'] : 100); $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['horizontal'] === 1) {
$orientation = 'flex aligni_center';
} else {
$orientation = 'grid';
}
// General div. // 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. // 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 mrgn_btn_25px" style="flex: 0 1 '.$sizeIcon.'px; height: '.$sizeIcon.'px;">';
$output .= html_print_image( $output .= html_print_image(
'images/console/icons/'.$icon.'.png', 'images/console/icons/'.$icon.$color_icon.'.png',
true, true,
['width' => $sizeIcon] ['width' => $sizeIcon]
); );
$output .= '</div>'; $output .= '</div>';
// Div value. // Div value.
$output .= '<div style="flex: 0 1 10px; font-size:'.$sizeValue.'px;">'; $output .= '<div class="mrgn_btn_15px" style="flex: 0 1 10px; line-height: '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
$output .= remove_right_zeros( $output .= remove_right_zeros(
number_format($data_module, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']) number_format($data_module, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])
); ).$unit;
$output .= '</div>'; $output .= '</div>';
if (empty($label) === false) { if (empty($label) === false) {
// Div Label. // 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; line-height: '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
} }
$output .= '</div>'; $output .= '</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; return $output;
} }

View File

@ -300,6 +300,10 @@ class ModuleStatusWidget extends Widget
$values['imageSrc'] = $decoder['imageSrc']; $values['imageSrc'] = $decoder['imageSrc'];
} }
if (isset($decoder['horizontal']) === true) {
$values['horizontal'] = $decoder['horizontal'];
}
return $values; return $values;
} }
@ -461,6 +465,18 @@ class ModuleStatusWidget extends Widget
], ],
]; ];
// Horizontal.
$inputs[] = [
'label' => __('Horizontal').ui_print_help_tip(__('If not, layout is vertical'), true),
'arguments' => [
'wrapper' => 'div',
'name' => 'horizontal',
'type' => 'switch',
'value' => $values['horizontal'],
'return' => true,
],
];
return $inputs; return $inputs;
} }
@ -483,6 +499,7 @@ class ModuleStatusWidget extends Widget
$values['sizeValue'] = \get_parameter('sizeValue', 0); $values['sizeValue'] = \get_parameter('sizeValue', 0);
$values['sizeLabel'] = \get_parameter_switch('sizeLabel'); $values['sizeLabel'] = \get_parameter_switch('sizeLabel');
$values['sizeIcon'] = \get_parameter_switch('sizeIcon'); $values['sizeIcon'] = \get_parameter_switch('sizeIcon');
$values['horizontal'] = \get_parameter_switch('horizontal');
return $values; return $values;
} }
@ -538,12 +555,22 @@ class ModuleStatusWidget extends Widget
break; break;
} }
$output .= '<div class="container-center">'; $uuid = uniqid();
$output .= '<div class="container-center" id="container-'.$uuid.'">';
$orientation = '';
if ((int) $this->values['horizontal'] === 1) {
$orientation = 'flex aligni_center';
} else {
$orientation = 'grid';
}
// General div. // General div.
$output .= '<div class="container-icon">'; $output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
// Div image. // Div image.
$output .= '<div style="flex: 0 1 '.$sizeIcon.'px;">'; $output .= '<div class="pdd_l_15px pdd_r_15px mrgn_btn_25px" style="flex: 0 1 '.$sizeIcon.'px; height: '.$sizeIcon.'px;">';
$output .= html_print_image( $output .= html_print_image(
'images/console/icons/'.$icon, 'images/console/icons/'.$icon,
true, true,
@ -553,11 +580,22 @@ class ModuleStatusWidget extends Widget
if (empty($label) === false) { if (empty($label) === false) {
// Div Label. // 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; line-height: '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
} }
$output .= '</div>'; $output .= '</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; return $output;
} }

View File

@ -284,6 +284,10 @@ class ModuleValueWidget extends Widget
$values['sizeLabel'] = $decoder['sizeLabel']; $values['sizeLabel'] = $decoder['sizeLabel'];
} }
if (isset($decoder['horizontal']) === true) {
$values['horizontal'] = $decoder['horizontal'];
}
return $values; return $values;
} }
@ -385,6 +389,18 @@ class ModuleValueWidget extends Widget
], ],
]; ];
// Horizontal.
$inputs[] = [
'label' => __('Horizontal').ui_print_help_tip(__('If not, layout is vertical'), true),
'arguments' => [
'wrapper' => 'div',
'name' => 'horizontal',
'type' => 'switch',
'value' => $values['horizontal'],
'return' => true,
],
];
return $inputs; return $inputs;
} }
@ -405,6 +421,7 @@ class ModuleValueWidget extends Widget
$values['moduleId'] = \get_parameter('moduleId', 0); $values['moduleId'] = \get_parameter('moduleId', 0);
$values['sizeValue'] = \get_parameter('sizeValue', 0); $values['sizeValue'] = \get_parameter('sizeValue', 0);
$values['sizeLabel'] = \get_parameter_switch('sizeLabel'); $values['sizeLabel'] = \get_parameter_switch('sizeLabel');
$values['horizontal'] = \get_parameter_switch('horizontal');
return $values; return $values;
} }
@ -422,6 +439,7 @@ class ModuleValueWidget extends Widget
$output = ''; $output = '';
$id_module = $this->values['moduleId']; $id_module = $this->values['moduleId'];
$unit = modules_get_unit($this->values['moduleId']);
$data_module = \modules_get_last_value($id_module); $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; $sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 40;
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 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['horizontal'] === 1) {
$orientation = 'flex aligni_center';
} else {
$orientation = 'grid';
}
// General div. // General div.
$output .= '<div class="container-icon">'; $output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
// Div value. // 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; line-height: '.$sizeValue.'px; font-size:'.$sizeValue.'px; color: '.$color.'">';
if (is_numeric($data_module) === true) { if (is_numeric($data_module) === true) {
$dataDatos = remove_right_zeros( $dataDatos = remove_right_zeros(
@ -443,7 +491,7 @@ class ModuleValueWidget extends Widget
$config['decimal_separator'], $config['decimal_separator'],
$config['thousand_separator'] $config['thousand_separator']
) )
); ).$unit;
} else { } else {
$dataDatos = trim($data_module); $dataDatos = trim($data_module);
} }
@ -454,11 +502,22 @@ class ModuleValueWidget extends Widget
if (empty($label) === false) { if (empty($label) === false) {
// Div Label. // 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; line-height: '.$sizeLabel.'px; font-size:'.$sizeLabel.'px;">'.$label.'</div>';
} }
$output .= '</div>'; $output .= '</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; return $output;
} }

View File

@ -492,6 +492,7 @@ class NetworkMapWidget extends Widget
'auth_class' => 'PandoraFMS\Dashboard\Manager', 'auth_class' => 'PandoraFMS\Dashboard\Manager',
'auth_hash' => Manager::generatePublicHash(), 'auth_hash' => Manager::generatePublicHash(),
'node' => $node, 'node' => $node,
'size' => $size,
] ]
); );

View File

@ -282,10 +282,10 @@ class OsQuickReportWidget extends Widget
$table->head = []; $table->head = [];
$table->head[0] = __('OS'); $table->head[0] = __('OS');
$table->head[1] = __('OS name'); $table->head[1] = __('OS name');
$table->head[2] = ucfirst(__('total agents')); $table->head[2] = ucfirst(__('total'));
$table->head[3] = ucfirst(__('normal agents')); $table->head[3] = ucfirst(__('normal'));
$table->head[4] = ucfirst(__('critical agents')); $table->head[4] = ucfirst(__('critical'));
$table->head[5] = ucfirst(__('unknown agents')); $table->head[5] = ucfirst(__('unknown'));
$table->headstyle = []; $table->headstyle = [];
$table->headstyle[0] = 'text-align:center;background-color: '.$values['background']; $table->headstyle[0] = 'text-align:center;background-color: '.$values['background'];
@ -296,22 +296,24 @@ class OsQuickReportWidget extends Widget
$table->headstyle[5] = 'text-align:center;background-color: '.$values['background']; $table->headstyle[5] = 'text-align:center;background-color: '.$values['background'];
$table->style = []; $table->style = [];
$table->style[0] = 'background-color: '.$values['background']; $table->style[0] = 'background-color: '.$values['background'].';';
$table->style[1] = 'background-color: '.$values['background']; $table->style[1] = 'background-color: '.$values['background'].';';
$table->style[2] = 'font-size: 22px;background-color: '.$values['background']; $table->style[2] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
$table->style[3] = 'font-size: 22px;background-color: '.$values['background']; $table->style[3] = 'background-color: '.$values['background'].'; font-size: 1.5em; font-weight: bolder;';
$table->style[4] = 'font-size: 22px;background-color: '.$values['background']; $table->style[4] = 'background-color: '.$values['background'].';';
$table->style[5] = 'font-size: 22px;background-color: '.$values['background']; $table->style[5] = 'background-color: '.$values['background'].';';
foreach ($result as $id => $os) { foreach ($result as $id => $os) {
$data = []; $data = [];
($os['critical'] > 0) ? $color_critical = 'color: '.COL_CRITICAL.';' : $color_critical = '';
($os['unknown'] > 0) ? $color_unknown = 'color: '.COL_UNKNOWN.';' : $color_unknown = '';
$data[0] = ui_print_os_icon($id, false, true); $data[0] = ui_print_os_icon($id, false, true);
$data[1] = $os['name']; $data[1] = $os['name'];
$data[2] = $os['total']; $data[2] = $os['total'];
$data[3] = $os['normal']; $data[3] = $os['normal'];
$data[4] = $os['critical']; $data[4] = '<span class="widget-module-tabs-data" style="'.$color_critical.'">'.$os['critical'].'</span>';
$data[5] = $os['unknown']; $data[5] = '<span class="widget-module-tabs-data" style="'.$color_unknown.'">'.$os['unknown'].'</span>';
$table->data[] = $data; $table->data[] = $data;
} }

View File

@ -367,7 +367,7 @@ class ServiceViewWidget extends Widget
'AR' 'AR'
); );
$output .= '<div class="white_box mgn_btt_20px mrgn_top_20px pddng_50px services_table" >'; $output .= '<div class="services_table" >';
$output .= '<div id="table_services_dashboard">'; $output .= '<div id="table_services_dashboard">';
foreach ($services as $service) { foreach ($services as $service) {
switch ($service['status']) { switch ($service['status']) {
@ -404,40 +404,6 @@ class ServiceViewWidget extends Widget
</div> </div>
</a>'; </a>';
} }
$output .= '</div>';
$output .= '<table cellspacing="0" cellpadding="0">';
$output .= '<tr>';
$output .= '<td>';
$output .= '<div class="service_status" style=" background: '.COL_UNKNOWN.';"></div>';
$output .= '</td>';
$output .= '<td>';
$output .= '<div class="service_status" style="background: '.COL_NORMAL.';"></div>';
$output .= '</td>';
$output .= '<td>';
$output .= '<div class="service_status" style="background: '.COL_WARNING.';"></div>';
$output .= '</td>';
$output .= '<td>';
$output .= '<div class="service_status" style="background: '.COL_CRITICAL.';"></div>';
$output .= '</td>';
$output .= '</tr><tr>';
$output .= '<td>';
$output .= '<div class="pdd_r_15px"><span class="font_12px">Unknown</span></div>';
$output .= '</td>';
$output .= '<td >';
$output .= '<div class="pdd_r_15px"><span class="font_12px">Normal</span></div>';
$output .= '</div>';
$output .= '<td>';
$output .= '<div class="pdd_r_15px"><span class="font_12px">Warning</span></div>';
$output .= '</td>';
$output .= '<td>';
$output .= '<div><span class="font_12px">Critical</span></div>';
$output .= '</td>';
$output .= '</tr>';
$output .= '</table>';
$output .= '</div>';
} }
return $output; return $output;

View File

@ -418,7 +418,7 @@ class SingleGraphWidget extends Widget
'dashboard' => true, 'dashboard' => true,
]; ];
$output = '<div class="container-center">'; $output = '<div class="container-center widget-mrgn-0px">';
$output .= \grafico_modulo_sparse($params); $output .= \grafico_modulo_sparse($params);
$output .= '</div>'; $output .= '</div>';
return $output; return $output;

View File

@ -289,6 +289,10 @@ class SLAPercentWidget extends Widget
$values['period'] = $decoder['period']; $values['period'] = $decoder['period'];
} }
if (isset($decoder['horizontal']) === true) {
$values['horizontal'] = $decoder['horizontal'];
}
return $values; return $values;
} }
@ -404,6 +408,18 @@ class SLAPercentWidget extends Widget
], ],
]; ];
// Horizontal.
$inputs[] = [
'label' => __('Horizontal').ui_print_help_tip(__('If not, layout is vertical'), true),
'arguments' => [
'wrapper' => 'div',
'name' => 'horizontal',
'type' => 'switch',
'value' => $values['horizontal'],
'return' => true,
],
];
return $inputs; return $inputs;
} }
@ -425,6 +441,7 @@ class SLAPercentWidget extends Widget
$values['period'] = \get_parameter('period', 0); $values['period'] = \get_parameter('period', 0);
$values['sizeValue'] = \get_parameter('sizeValue', ''); $values['sizeValue'] = \get_parameter('sizeValue', '');
$values['sizeLabel'] = \get_parameter('sizeLabel', ''); $values['sizeLabel'] = \get_parameter('sizeLabel', '');
$values['horizontal'] = \get_parameter_switch('horizontal');
return $values; return $values;
} }
@ -494,21 +511,42 @@ class SLAPercentWidget extends Widget
$sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 30; $sizeLabel = (isset($this->values['sizeLabel']) === true) ? $this->values['sizeLabel'] : 30;
$sizeValue = (isset($this->values['sizeValue']) === true) ? $this->values['sizeValue'] : 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['horizontal'] === 1) {
$orientation = 'flex aligni_center';
} else {
$orientation = 'grid';
}
// General div. // General div.
$output .= '<div class="container-icon">'; $output .= '<div class="'.$orientation.'" id="general-'.$uuid.'">';
// Div value. // 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; line-height: '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
$output .= $sla_array['sla_fixed'].'%'; $output .= $sla_array['sla_fixed'].'%';
$output .= '</div>'; $output .= '</div>';
if (empty($label) === false) { if (empty($label) === false) {
// Div Label. // 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; line-height: '.$sizeLabel.'px; font-size:'.$sizeLabel.'px; text-align: left;">'.$label.'</div>';
} }
$output .= '</div>'; $output .= '</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; return $output;
} }

View File

@ -477,7 +477,7 @@ class SystemGroupStatusWidget extends Widget
$this->values['groupId'] = $selected_groups; $this->values['groupId'] = $selected_groups;
$this->values['status'] = explode(',', $this->values['status'][0]); $this->values['status'] = explode(',', $this->values['status'][0]);
$style = 'font-size: 12px; text-align: center;'; $style = 'font-size: 1.5em; font-weight: bolder;text-align: center;';
$table = new \stdClass(); $table = new \stdClass();
$table->class = 'group_modules_status_box'; $table->class = 'group_modules_status_box';

View File

@ -364,21 +364,6 @@ class WuxWidget extends Widget
} }
$output .= '<div>'; $output .= '<div>';
$output .= '<div>';
$output .= "<p class='font_20px'>";
if ($have_errors === true) {
$output .= __('Global status').': ';
$output .= "<span class='color: #e63c52; font_20px'>";
$output .= __('Failed');
$output .= '</span>';
} else {
$output .= __('Global status').': ';
$output .= "<span class='pandora_green_bg font_20px'>";
$output .= __('Ok');
$output .= '</span>';
}
$output .= '</div>';
$output .= '<div>'; $output .= '<div>';
$output .= \ux_console_phases_donut( $output .= \ux_console_phases_donut(

View File

@ -127,6 +127,8 @@ h1 {
.grid-stack-item .grid-stack-item-content .header-widget div:first-child { .grid-stack-item .grid-stack-item-content .header-widget div:first-child {
flex: 1; flex: 1;
text-align: center; text-align: center;
font-family: "lato-bold";
font-size: 14px;
} }
.grid-stack-item .grid-stack-item-content .header-widget div:not(:first-child) { .grid-stack-item .grid-stack-item-content .header-widget div:not(:first-child) {
@ -791,3 +793,61 @@ form.modal-dashboard
.select2-selection__rendered { .select2-selection__rendered {
max-height: 75px !important; max-height: 75px !important;
} }
.content-widget .info_table {
margin-bottom: 0px;
}
.div-state-agent {
width: 5px;
height: 20px;
border-radius: 3px;
margin-right: 5px;
}
.dataTables_length > label > select {
height: 30px;
min-height: 30px;
margin: 5px;
}
.dataTables_paginate.paging_simple_numbers {
margin-top: 10px;
height: 40px;
}
.info_table.events tr > td {
height: 1em !important;
text-align: initial;
}
.event.flex-row.h100p.nowrap .mini-criticity {
margin-left: 7px;
}
.tree-controller-recipient {
width: -webkit-fill-available !important;
}
.services_table {
padding: 0px;
background-color: #fff;
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;
}
div.content-widget
> div.container-center
> div.centered.w90p
> div#container_show_stats
> canvas {
height: 310px;
}

View File

@ -315,3 +315,15 @@ div.ui-tooltip.ui-corner-all.ui-widget-shadow.ui-widget.ui-widget-content.uitool
bottom: -20px; bottom: -20px;
top: auto; top: auto;
} }
#dialog-fav-menu {
display: none;
}
#dialog-fav-menu p {
margin: 0px;
padding-top: 40px;
}
.fav-menu input {
padding: 0px;
max-width: 20px !important;
max-height: 20px;
}

View File

@ -482,6 +482,11 @@ div.multi-response-buttons {
-webkit-mask: url(../../images/modules@svg.svg) no-repeat center / contain; -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 { .icon_background_critical {
background-color: #e63c52; background-color: #e63c52;
} }

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More