Merge remote-tracking branch 'origin/develop' into ent-12067-huevo-de-pascua-piensa-en-verde
Conflicts: pandora_console/index.php
This commit is contained in:
commit
e07f66885d
|
@ -520,18 +520,18 @@ execute_cmd "systemctl restart mysql" "Configuring and restarting database engin
|
|||
|
||||
#Define packages
|
||||
if [ "$PANDORA_LTS" -eq '1' ] ; then
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_server-7.0NG.tar.gz"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_console-7.0NG.tar.gz"
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_server-7.0NG.tar.gz"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_console-7.0NG.tar.gz"
|
||||
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.x86_64.tar.gz"
|
||||
elif [ "$PANDORA_LTS" -ne '1' ] ; then
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_server-7.0NG.tar.gz"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_console-7.0NG.tar.gz"
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_server-7.0NG.tar.gz"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_console-7.0NG.tar.gz"
|
||||
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE=" https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.x86_64.tar.gz"
|
||||
fi
|
||||
|
||||
if [ "$PANDORA_BETA" -eq '1' ] ; then
|
||||
PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest.tar.gz"
|
||||
PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.tar.gz"
|
||||
PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest.tar.gz"
|
||||
PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.tar.gz"
|
||||
PANDORA_AGENT_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.x86_64.tar.gz"
|
||||
fi
|
||||
|
||||
|
@ -837,7 +837,7 @@ echo "@hourly root bash -c /etc/cron.hourly/pandora_db" >> /etc/cront
|
|||
|
||||
## Enabling agent adn configuring Agente
|
||||
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF &>> "$LOGFILE"
|
||||
execute_cmd "/etc/init.d/pandora_agent_daemon start" "Starting PandoraFSM Agent"
|
||||
execute_cmd "/etc/init.d/pandora_agent_daemon restart" "Starting PandoraFSM Agent"
|
||||
systemctl enable pandora_agent_daemon &>> "$LOGFILE"
|
||||
|
||||
#fix path phantomjs
|
||||
|
|
|
@ -234,6 +234,21 @@ module_description Number of cron task files
|
|||
module_unit files
|
||||
module_end
|
||||
|
||||
# This module /var/log/syslog file, under the module name "syslog"
|
||||
# And search for "ssh" string into it, sending only that information.
|
||||
module_begin
|
||||
module_name Syslog
|
||||
module_description Search for ssh string into /var/log/syslog file
|
||||
module_type log
|
||||
module_regexp /var/log/syslog
|
||||
module_pattern ssh
|
||||
module_end
|
||||
|
||||
#Hardening plugin for security compliance analysis. Enable to use it.
|
||||
#module_begin
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_hardening -t 150
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# Plugin example
|
||||
|
||||
|
@ -241,11 +256,6 @@ module_end
|
|||
|
||||
module_plugin pandora_df
|
||||
|
||||
# This parses /var/log/syslog file, under the module name "syslog"
|
||||
# And search for "ssh" string into it, sending only that information.
|
||||
|
||||
module_plugin grep_log /var/log/syslog Syslog ssh
|
||||
|
||||
# Get disk space free in MB
|
||||
#module_begin
|
||||
#module_name disk_root_free
|
||||
|
@ -270,7 +280,6 @@ module_plugin grep_log /var/log/syslog Syslog ssh
|
|||
#module_end
|
||||
|
||||
# Plugin for inventory on the agent.
|
||||
|
||||
# module_plugin inventory 1 cpu ram video nic hd cdrom software init_services filesystem users process ip route
|
||||
|
||||
# Example of preconditions
|
||||
|
@ -303,4 +312,13 @@ module_plugin grep_log /var/log/syslog Syslog ssh
|
|||
|
||||
# This plugin runs several security checks in a Linux system
|
||||
|
||||
#module_plugin pandora_security_check
|
||||
#module_plugin pandora_security_check
|
||||
|
||||
# Extraction module example
|
||||
#module_begin
|
||||
#module_name Collector
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
#module_pattern .*
|
||||
#module_end
|
|
@ -147,22 +147,23 @@ module_max_critical 20
|
|||
module_end
|
||||
|
||||
# Log events
|
||||
|
||||
# Get logs from System source.
|
||||
module_begin
|
||||
module_name System Events (TermService)
|
||||
module_type async_string
|
||||
module_logevent
|
||||
module_description Log Events coming from Terminal Service
|
||||
module_type log
|
||||
module_logevent
|
||||
module_source System
|
||||
module_application TermService
|
||||
module_end
|
||||
|
||||
# Get logs from Security source.
|
||||
module_begin
|
||||
module_name Security Events (Invalid Login)
|
||||
module_type async_string
|
||||
module_description Security log events for invalid login attempt
|
||||
module_name Security Events
|
||||
module_description Security log events
|
||||
module_type log
|
||||
module_logevent
|
||||
module_source Security
|
||||
module_eventcode 529
|
||||
module_end
|
||||
|
||||
# Check if Dhcp service is enabled
|
||||
|
@ -219,6 +220,12 @@ module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df.vbs"
|
|||
# module_description Free space on drive D: (%)
|
||||
# module_end
|
||||
|
||||
# Hardening plugin for security compliance analysis.
|
||||
# module_begin
|
||||
# module_plugin "%PROGRAMFILES%\Pandora_Agent\util\pandora_hardening.exe -t 150"
|
||||
# module_absoluteinterval 7d
|
||||
# module_end
|
||||
|
||||
# Sample of Windows inventory module (ONLY ENTERPRISE)!
|
||||
#module_begin
|
||||
#module_name Inventory
|
||||
|
@ -344,4 +351,13 @@ module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df.vbs"
|
|||
#module_condition (3,8) cmd.exe /c echo range >> c:\log.txt
|
||||
#module_exec echo 5
|
||||
#module_description Postcondition test module
|
||||
#module_end
|
||||
|
||||
# Example of collector module
|
||||
#module_begin
|
||||
#module_name Collector
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
#module_pattern .*
|
||||
#module_end
|
|
@ -2179,16 +2179,7 @@ sub configure ($) {
|
|||
|
||||
#Launch tentacle server in proxy mode if configured
|
||||
if ($Conf{'proxy_mode'}) {
|
||||
|
||||
#Check if user is root
|
||||
if ($> != 0) {
|
||||
if (launch_tentacle_proxy() != 0) {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
error ('Proxy mode can not be launched as root');
|
||||
return 1;
|
||||
}
|
||||
return 1 if (launch_tentacle_proxy() != 0);
|
||||
}
|
||||
|
||||
# Add the plugins directory to the PATH
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
dist
|
|
@ -0,0 +1,10 @@
|
|||
# Makefile for winexe.py.
|
||||
.PHONY: all build_image pandora_security_win.py
|
||||
|
||||
all: build_image pandora_security_win.py
|
||||
|
||||
build_image:
|
||||
docker build -t pandora_security_win docker/
|
||||
|
||||
pandora_security_win.py:
|
||||
docker run --rm -t -v`pwd`:/pybuild pandora_security_win
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Build the winexe binary.
|
||||
wine pip install -r src/requirements.txt
|
||||
wine pyinstaller --onefile src/pandora_security_win.py
|
||||
rm -rf build/ __pycache__/ pandora_security_win.spec
|
|
@ -0,0 +1,34 @@
|
|||
FROM i386/debian
|
||||
|
||||
# Update the package list.
|
||||
RUN apt-get update
|
||||
|
||||
# Install needed packages.
|
||||
RUN apt-get install --yes \
|
||||
gnupg2 \
|
||||
unzip \
|
||||
software-properties-common \
|
||||
wget \
|
||||
xvfb
|
||||
|
||||
# Install WineHQ.
|
||||
RUN wget -q https://dl.winehq.org/wine-builds/winehq.key -O- | apt-key add -
|
||||
RUN apt-add-repository https://dl.winehq.org/wine-builds/debian/; apt-get update
|
||||
RUN apt-get install --yes --install-recommends wine
|
||||
|
||||
# Use Windows 10.
|
||||
COPY winetricks /tmp/winetricks
|
||||
RUN /bin/bash /tmp/winetricks win10; rm -f /tmp/winetricks
|
||||
|
||||
# Install Python.
|
||||
RUN wget https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe
|
||||
RUN xvfb-run wine python-3.8.10.exe /quiet Include_doc=0 Include_dev=0 Include_test=0 InstallAllUsers=1 PrependPath=1 TargetDir=c:\python; echo
|
||||
ENV WINEPATH="c:\\python;c:\\python\Scripts"
|
||||
|
||||
# Install Python modules..
|
||||
RUN wine pip.exe install wheel
|
||||
RUN wine pip.exe install pyinstaller
|
||||
|
||||
VOLUME ["/pybuild"]
|
||||
WORKDIR "/pybuild"
|
||||
ENTRYPOINT ["/bin/bash", "/pybuild/build.sh"]
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,406 @@
|
|||
import wmi, sys, winreg, os, subprocess, json, re
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
## Define modules
|
||||
modules=[]
|
||||
|
||||
def print_module(module, print_flag=None):
|
||||
"""Returns module in XML format. Accepts only {dict}.\n
|
||||
- Only works with one module at a time: otherwise iteration is needed.
|
||||
- Module "value" field accepts str type or [list] for datalists.
|
||||
- Use print_flag to show modules' XML in STDOUT.
|
||||
"""
|
||||
data = dict(module)
|
||||
module_xml = ("<module>\n"
|
||||
"\t<name><![CDATA[" + str(data["name"]) + "]]></name>\n"
|
||||
"\t<type>" + str(data["type"]) + "</type>\n"
|
||||
)
|
||||
|
||||
if type(data["type"]) is not str and "string" not in data["type"]: #### Strip spaces if module not generic_data_string
|
||||
data["value"] = data["value"].strip()
|
||||
if isinstance(data["value"], list): # Checks if value is a list
|
||||
module_xml += "\t<datalist>\n"
|
||||
for value in data["value"]:
|
||||
if type(value) is dict and "value" in value:
|
||||
module_xml += "\t<data>\n"
|
||||
module_xml += "\t\t<value><![CDATA[" + str(value["value"]) + "]]></value>\n"
|
||||
if "timestamp" in value:
|
||||
module_xml += "\t\t<timestamp><![CDATA[" + str(value["timestamp"]) + "]]></timestamp>\n"
|
||||
module_xml += "\t</data>\n"
|
||||
module_xml += "\t</datalist>\n"
|
||||
else:
|
||||
module_xml += "\t<data><![CDATA[" + str(data["value"]) + "]]></data>\n"
|
||||
if "desc" in data:
|
||||
module_xml += "\t<description><![CDATA[" + str(data["desc"]) + "]]></description>\n"
|
||||
if "unit" in data:
|
||||
module_xml += "\t<unit><![CDATA[" + str(data["unit"]) + "]]></unit>\n"
|
||||
if "interval" in data:
|
||||
module_xml += "\t<module_interval><![CDATA[" + str(data["interval"]) + "]]></module_interval>\n"
|
||||
if "tags" in data:
|
||||
module_xml += "\t<tags>" + str(data["tags"]) + "</tags>\n"
|
||||
if "module_group" in data:
|
||||
module_xml += "\t<module_group>" + str(data["module_group"]) + "</module_group>\n"
|
||||
if "module_parent" in data:
|
||||
module_xml += "\t<module_parent>" + str(data["module_parent"]) + "</module_parent>\n"
|
||||
if "min_warning" in data:
|
||||
module_xml += "\t<min_warning><![CDATA[" + str(data["min_warning"]) + "]]></min_warning>\n"
|
||||
if "min_warning_forced" in data:
|
||||
module_xml += "\t<min_warning_forced><![CDATA[" + str(data["min_warning_forced"]) + "]]></min_warning_forced>\n"
|
||||
if "max_warning" in data:
|
||||
module_xml += "\t<max_warning><![CDATA[" + str(data["max_warning"]) + "]]></max_warning>\n"
|
||||
if "max_warning_forced" in data:
|
||||
module_xml += "\t<max_warning_forced><![CDATA[" + str(data["max_warning_forced"]) + "]]></max_warning_forced>\n"
|
||||
if "min_critical" in data:
|
||||
module_xml += "\t<min_critical><![CDATA[" + str(data["min_critical"]) + "]]></min_critical>\n"
|
||||
if "min_critical_forced" in data:
|
||||
module_xml += "\t<min_critical_forced><![CDATA[" + str(data["min_critical_forced"]) + "]]></min_critical_forced>\n"
|
||||
if "max_critical" in data:
|
||||
module_xml += "\t<max_critical><![CDATA[" + str(data["max_critical"]) + "]]></max_critical>\n"
|
||||
if "max_critical_forced" in data:
|
||||
module_xml += "\t<max_critical_forced><![CDATA[" + str(data["max_critical_forced"]) + "]]></max_critical_forced>\n"
|
||||
if "str_warning" in data:
|
||||
module_xml += "\t<str_warning><![CDATA[" + str(data["str_warning"]) + "]]></str_warning>\n"
|
||||
if "str_warning_forced" in data:
|
||||
module_xml += "\t<str_warning_forced><![CDATA[" + str(data["str_warning_forced"]) + "]]></str_warning_forced>\n"
|
||||
if "str_critical" in data:
|
||||
module_xml += "\t<str_critical><![CDATA[" + str(data["str_critical"]) + "]]></str_critical>\n"
|
||||
if "str_critical_forced" in data:
|
||||
module_xml += "\t<str_critical_forced><![CDATA[" + str(data["str_critical_forced"]) + "]]></str_critical_forced>\n"
|
||||
if "critical_inverse" in data:
|
||||
module_xml += "\t<critical_inverse><![CDATA[" + str(data["critical_inverse"]) + "]]></critical_inverse>\n"
|
||||
if "warning_inverse" in data:
|
||||
module_xml += "\t<warning_inverse><![CDATA[" + str(data["warning_inverse"]) + "]]></warning_inverse>\n"
|
||||
if "max" in data:
|
||||
module_xml += "\t<max><![CDATA[" + str(data["max"]) + "]]></max>\n"
|
||||
if "min" in data:
|
||||
module_xml += "\t<min><![CDATA[" + str(data["min"]) + "]]></min>\n"
|
||||
if "post_process" in data:
|
||||
module_xml += "\t<post_process><![CDATA[" + str(data["post_process"]) + "]]></post_process>\n"
|
||||
if "disabled" in data:
|
||||
module_xml += "\t<disabled><![CDATA[" + str(data["disabled"]) + "]]></disabled>\n"
|
||||
if "min_ff_event" in data:
|
||||
module_xml += "\t<min_ff_event><![CDATA[" + str(data["min_ff_event"]) + "]]></min_ff_event>\n"
|
||||
if "status" in data:
|
||||
module_xml += "\t<status><![CDATA[" + str(data["status"]) + "]]></status>\n"
|
||||
if "timestamp" in data:
|
||||
module_xml += "\t<timestamp><![CDATA[" + str(data["timestamp"]) + "]]></timestamp>\n"
|
||||
if "custom_id" in data:
|
||||
module_xml += "\t<custom_id><![CDATA[" + str(data["custom_id"]) + "]]></custom_id>\n"
|
||||
if "critical_instructions" in data:
|
||||
module_xml += "\t<critical_instructions><![CDATA[" + str(data["critical_instructions"]) + "]]></critical_instructions>\n"
|
||||
if "warning_instructions" in data:
|
||||
module_xml += "\t<warning_instructions><![CDATA[" + str(data["warning_instructions"]) + "]]></warning_instructions>\n"
|
||||
if "unknown_instructions" in data:
|
||||
module_xml += "\t<unknown_instructions><![CDATA[" + str(data["unknown_instructions"]) + "]]></unknown_instructions>\n"
|
||||
if "quiet" in data:
|
||||
module_xml += "\t<quiet><![CDATA[" + str(data["quiet"]) + "]]></quiet>\n"
|
||||
if "module_ff_interval" in data:
|
||||
module_xml += "\t<module_ff_interval><![CDATA[" + str(data["module_ff_interval"]) + "]]></module_ff_interval>\n"
|
||||
if "crontab" in data:
|
||||
module_xml += "\t<crontab><![CDATA[" + str(data["crontab"]) + "]]></crontab>\n"
|
||||
if "min_ff_event_normal" in data:
|
||||
module_xml += "\t<min_ff_event_normal><![CDATA[" + str(data["min_ff_event_normal"]) + "]]></min_ff_event_normal>\n"
|
||||
if "min_ff_event_warning" in data:
|
||||
module_xml += "\t<min_ff_event_warning><![CDATA[" + str(data["min_ff_event_warning"]) + "]]></min_ff_event_warning>\n"
|
||||
if "min_ff_event_critical" in data:
|
||||
module_xml += "\t<min_ff_event_critical><![CDATA[" + str(data["min_ff_event_critical"]) + "]]></min_ff_event_critical>\n"
|
||||
if "ff_type" in data:
|
||||
module_xml += "\t<ff_type><![CDATA[" + str(data["ff_type"]) + "]]></ff_type>\n"
|
||||
if "ff_timeout" in data:
|
||||
module_xml += "\t<ff_timeout><![CDATA[" + str(data["ff_timeout"]) + "]]></ff_timeout>\n"
|
||||
if "each_ff" in data:
|
||||
module_xml += "\t<each_ff><![CDATA[" + str(data["each_ff"]) + "]]></each_ff>\n"
|
||||
if "module_parent_unlink" in data:
|
||||
module_xml += "\t<module_parent_unlink><![CDATA[" + str(data["parent_unlink"]) + "]]></module_parent_unlink>\n"
|
||||
if "global_alerts" in data:
|
||||
for alert in data["alert"]:
|
||||
module_xml += "\t<alert_template><![CDATA[" + alert + "]]></alert_template>\n"
|
||||
module_xml += "</module>\n"
|
||||
|
||||
if print_flag:
|
||||
print (module_xml)
|
||||
|
||||
return (module_xml)
|
||||
|
||||
def check_antivirus_status():
|
||||
try:
|
||||
wmi_obj = wmi.WMI(namespace="root/SecurityCenter2")
|
||||
antivirus_products = wmi_obj.query("SELECT * FROM AntivirusProduct")
|
||||
|
||||
for product in antivirus_products:
|
||||
display_name = product.displayName
|
||||
product_state = product.productState
|
||||
product_state_hex = hex(product_state)
|
||||
last_update = product.timestamp
|
||||
atv_status = int(product_state_hex[3:5])
|
||||
atv_uptodate = int(product_state_hex[5:7])
|
||||
atv_status = 1 if atv_status in [10, 11] else 0
|
||||
atv_uptodate = 1 if atv_uptodate in [00,] else 0
|
||||
|
||||
#print(f"{display_name}, product_state: {product_state}, product_state_hex: {product_state_hex}, last_update: {last_update}, status: {atv_status}, uptodate: {atv_uptodate}")
|
||||
modules.append({
|
||||
"name" : f"{display_name} Antivirus status",
|
||||
"type" : "generic_proc",
|
||||
"value": atv_status,
|
||||
"module_group": "security",
|
||||
"desc" : f"{display_name} state: {product_state}, last update: {last_update}",
|
||||
})
|
||||
modules.append({
|
||||
"name" : f"{display_name} Antivirus up to date",
|
||||
"type" : "generic_proc",
|
||||
"value": atv_uptodate,
|
||||
"module_group": "security",
|
||||
"desc" : f"{display_name} state: {product_state}, last update: {last_update}",
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error check antivirus: {e}", file=sys.stderr)
|
||||
|
||||
def is_lock_screen_enabled():
|
||||
try:
|
||||
# Open the registry key
|
||||
key_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
|
||||
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:
|
||||
# Query the value of the DisableLockScreen key
|
||||
value_name = "DisableLockScreen"
|
||||
value, _ = winreg.QueryValueEx(key, value_name)
|
||||
|
||||
# Check if the lock screen is enabled (0 means enabled)
|
||||
status = value == 0
|
||||
if status == False: return status
|
||||
|
||||
except FileNotFoundError:
|
||||
# If the registry key or value is not found, consider it as enabled
|
||||
status = True
|
||||
except Exception as e:
|
||||
print(f"Error check lockscreen: {e}", file=sys.stderr)
|
||||
status = False
|
||||
|
||||
try:
|
||||
# Define the registry key for the lock screen settings
|
||||
reg_key_path = r"SOFTWARE\Policies\Microsoft\Windows\Personalization"
|
||||
reg_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_key_path)
|
||||
|
||||
# Query the "NoLockScreen" DWORD value
|
||||
value_name = "NoLockScreen"
|
||||
value, _ = winreg.QueryValueEx(reg_key, value_name)
|
||||
|
||||
# Check if the "NoLockScreen" value is 0 (enabled)
|
||||
status = value == 0
|
||||
if status == False: return status
|
||||
|
||||
except FileNotFoundError:
|
||||
# If the registry key or value is not found, consider it as enabled
|
||||
status = True
|
||||
except Exception as e:
|
||||
print(f"Error check lockscreen: {e}", file=sys.stderr)
|
||||
status = False
|
||||
|
||||
return status
|
||||
|
||||
def check_locksreen_enables():
|
||||
status = is_lock_screen_enabled()
|
||||
value = 1 if status == True else 0
|
||||
|
||||
modules.append({
|
||||
"name" : "Lockscreen status",
|
||||
"type" : "generic_proc",
|
||||
"value": value,
|
||||
"module_group": "security",
|
||||
"desc" : f"Check lockscreen enable",
|
||||
})
|
||||
|
||||
def convert_to_human_readable_date(timestamp_str):
|
||||
try:
|
||||
# Parse the timestamp string without the time zone
|
||||
timestamp = datetime.strptime(timestamp_str, '%Y%m%d%H%M%S')
|
||||
|
||||
# Convert to a human-readable format
|
||||
human_readable_date = timestamp.strftime('%Y-%m-%d %H:%M:%S %z')
|
||||
|
||||
return human_readable_date.strip()
|
||||
except Exception as e:
|
||||
print(f"Error converting date: {e}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
def check_time_difference(timestamp, timedays=10):
|
||||
try:
|
||||
# Convert the timestamp string to a datetime object
|
||||
given_timestamp = datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# Get the current time
|
||||
current_time = datetime.now()
|
||||
|
||||
#Calculate the time difference
|
||||
time_difference = current_time - given_timestamp
|
||||
|
||||
# Check if the time difference is greater than one hour
|
||||
if time_difference < timedelta(days=timedays):
|
||||
return "1"
|
||||
else:
|
||||
return "0"
|
||||
except Exception as e:
|
||||
print(f"Error check time difference: {e}", file=sys.stderr)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
def get_windows_update_info(limit=5):
|
||||
try:
|
||||
# Connect to the Win32_ReliabilityRecords class in the root/cimv2 namespace
|
||||
wmi_conn = wmi.WMI()
|
||||
|
||||
# Query the Win32_ReliabilityRecords class for Windows Update information
|
||||
query = "SELECT * FROM Win32_ReliabilityRecords WHERE sourcename = 'Microsoft-Windows-WindowsUpdateClient'"
|
||||
result = wmi_conn.query(query)
|
||||
|
||||
# Extract relevant information and format output
|
||||
update_info = [
|
||||
{
|
||||
"date": convert_to_human_readable_date(record.timegenerated.split('.')[0]),
|
||||
"update": record.message
|
||||
}
|
||||
for record in result[:limit]
|
||||
]
|
||||
|
||||
last_update_date=update_info[0]['date']
|
||||
value=check_time_difference(last_update_date)
|
||||
|
||||
modules.append({
|
||||
"name" : "Microsoft Update system status",
|
||||
"type" : "generic_proc",
|
||||
"value": value,
|
||||
"module_group": "security",
|
||||
"desc" : f"Check if system was updated in the last 10 days. last update: {last_update_date}",
|
||||
})
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error windows update check: {e}", file=sys.stderr)
|
||||
return False
|
||||
|
||||
def is_firewall_enabled():
|
||||
try:
|
||||
# Run PowerShell command to check if the Windows Firewall is enabled
|
||||
result = subprocess.run(
|
||||
['powershell', 'Get-NetFirewallProfile |Select-Object profile, enabled | ConvertTo-Json'],
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
|
||||
result_json= json.loads(result.stdout)
|
||||
for profile in result_json:
|
||||
modules.append({
|
||||
"name" : f"Firewall profile: {profile['Profile']} status",
|
||||
"type" : "generic_proc",
|
||||
"value": profile["Enabled"],
|
||||
"module_group": "security",
|
||||
"desc" : f"Check if firewall profile {profile['Profile']} is enabled",
|
||||
})
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error firewall check: {e}", file=sys.stderr)
|
||||
return False
|
||||
|
||||
def check_password_enforcement():
|
||||
enforce_pass = 1
|
||||
counter = 0
|
||||
try:
|
||||
# Connect to the WMI service
|
||||
wmi_service = wmi.WMI()
|
||||
|
||||
# Query for user accounts
|
||||
users = wmi_service.Win32_UserAccount()
|
||||
|
||||
# Check if each user enforces password
|
||||
for user in users:
|
||||
# username = user.Name
|
||||
# password_required = user.PasswordRequired
|
||||
if user.PasswordRequired == False :
|
||||
enforce_pass = 0
|
||||
counter += 1
|
||||
#print(f"User: {username}, Password Required: {password_required}")
|
||||
|
||||
modules.append({
|
||||
"name" : "All users enforced password",
|
||||
"type" : "generic_proc",
|
||||
"value": enforce_pass,
|
||||
"module_group": "security",
|
||||
"desc" : f"Check if all users has enforced password, not secure users = {counter}",
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error: {e}", file=sys.stderr)
|
||||
print("Failed to check password enforcement for users.", file=sys.stderr)
|
||||
|
||||
|
||||
def check_login_audit_policy():
|
||||
try:
|
||||
# Run the auditpol command to check the audit policy for Logon/Logoff
|
||||
cmd_command = "auditpol /get /subcategory:Logon"
|
||||
result = subprocess.run(cmd_command, shell=True, capture_output=True, text=True, check=True)
|
||||
last_line = result.stdout.strip().split('\n')[-1]
|
||||
cleaned_line = re.sub(' +', ' ', last_line)
|
||||
|
||||
# Interpret the result
|
||||
if "Success and Failure" in result.stdout:
|
||||
result = 1
|
||||
elif "Aciertos y errores" in result.stdout:
|
||||
result = 1
|
||||
elif "No Auditing" in result.stdout:
|
||||
result = 0
|
||||
elif "Sin auditoría" in result.stdout:
|
||||
result = 0
|
||||
else:
|
||||
print("Unable to determine audit policy for Logon/Logoff events.", file=sys.stderr)
|
||||
result = 0
|
||||
modules.append({
|
||||
"name" : "Check logon event audited",
|
||||
"type" : "generic_proc",
|
||||
"value": result,
|
||||
"module_group": "security",
|
||||
"desc" : f"Check if the logon events audit log is enables, status:{cleaned_line}",
|
||||
})
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error: {e}")
|
||||
print("Failed to check audit policy using auditpol command.", file=sys.stderr)
|
||||
return
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_antivirus_status()
|
||||
check_locksreen_enables()
|
||||
get_windows_update_info()
|
||||
is_firewall_enabled()
|
||||
check_password_enforcement()
|
||||
check_login_audit_policy()
|
||||
|
||||
for module in modules:
|
||||
print_module(module, True)
|
||||
|
||||
|
||||
# Windows Defender status values:
|
||||
# 0: No action needed
|
||||
# 266240: Antivirus is up to date
|
||||
# 266256: Antivirus is out of date
|
||||
# 266304: Antivirus is not monitoring
|
||||
# 393216 (0x60000): No action needed.
|
||||
# 393232 (0x60010): Antivirus is up to date.
|
||||
# 393240 (0x60018): Antivirus is out of date.
|
||||
# 393216 (0x60030): Antivirus is not monitoring.
|
||||
# 397312 (0x61000): Antivirus is disabled.
|
||||
|
||||
# AVG Internet Security 2012 (from antivirusproduct WMI)
|
||||
# 262144 (040000) = disabled and up to date
|
||||
# 266240 (041000) = enabled and up to date
|
||||
# AVG Internet Security 2012 (from firewallproduct WMI)
|
||||
# 266256 (041010) = firewall enabled - (last two blocks not relevant it seems for firewall)
|
||||
# 262160 (040010) = firewall disabled - (last two blocks not relevant it seems for firewall)
|
||||
|
||||
# Windows Defender
|
||||
# 393472 (060100) = disabled and up to date
|
||||
# 397584 (061110) = enabled and out of date
|
||||
# 397568 (061100) = enabled and up to date
|
||||
# Microsoft Security Essentials
|
||||
# 397312 (061000) = enabled and up to date
|
||||
# 393216 (060000) = disabled and up to date
|
|
@ -0,0 +1 @@
|
|||
WMI==1.5.1
|
|
@ -157,12 +157,32 @@ module_exec last | head -1
|
|||
module_description Last Login
|
||||
module_end
|
||||
|
||||
# Plugin example
|
||||
#Hardening plugin for security compliance analysis. Enable to use it.
|
||||
#module_begin
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_hardening -t 150
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# This parses /var/log/syslog file, under the module name "syslog"
|
||||
# This module parses /var/log/syslog file, under the module name "syslog"
|
||||
# And search for "ssh" string into it, sending only that information.
|
||||
module_begin
|
||||
module_name Syslog
|
||||
module_description Search for ssh string into /var/log/syslog file
|
||||
module_type log
|
||||
module_regexp /var/log/syslog
|
||||
module_pattern ssh
|
||||
module_end
|
||||
|
||||
module_plugin grep_log /var/log/syslog Syslog ssh
|
||||
# Plugin example
|
||||
|
||||
# Plugin for inventory on the agent.
|
||||
# module_plugin inventory 1 cpu ram video nic hd cdrom software
|
||||
|
||||
# Extraction module example
|
||||
#module_begin
|
||||
#module_name Collector
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
#module_pattern .*
|
||||
#module_end
|
|
@ -372,13 +372,32 @@ module_end
|
|||
#module_description XGrid
|
||||
#module_end
|
||||
|
||||
#Hardening plugin for security compliance analysis. Enable to use it.
|
||||
#module_begin
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_hardening -t 150
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# This module parses /var/log/syslog file, under the module name "syslog"
|
||||
# And search for "ssh" string into it, sending only that information.
|
||||
module_begin
|
||||
module_name Syslog
|
||||
module_description Log collection modules
|
||||
module_type log
|
||||
module_regexp /var/log/syslog
|
||||
module_pattern ssh
|
||||
module_end
|
||||
|
||||
# Plugin example
|
||||
|
||||
# This parses /var/log/syslog file, under the module name "syslog"
|
||||
# And search for "ssh" string into it, sending only that information.
|
||||
|
||||
#module_plugin grep_log /var/log/syslog Syslog ssh
|
||||
|
||||
# Plugin for inventory on the agent.
|
||||
|
||||
# module_plugin inventory 1 cpu ram video nic hd cdrom software
|
||||
|
||||
# Extraction module example
|
||||
#module_begin
|
||||
#module_name Collector
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
#module_pattern .*
|
||||
#module_end
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.774-231123
|
||||
Version: 7.0NG.774-231219
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.774-231123"
|
||||
pandora_version="7.0NG.774-231219"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -271,11 +271,17 @@ module_plugin pandora_netusage
|
|||
module_plugin autodiscover --default
|
||||
|
||||
# Plugin for inventory on the agent.
|
||||
#module_plugin inventory 1 cpu ram video nic hd cdrom software init_services filesystem users route
|
||||
# module_plugin inventory 1 cpu ram video nic hd cdrom software init_services filesystem users route
|
||||
|
||||
# Log collection modules. This will collect log files for forensic analysis and store everything
|
||||
# This is for LOG monitoring. Different than log monitoring.
|
||||
#module_plugin grep_log_module /var/log/messages Syslog \.\*
|
||||
module_begin
|
||||
module_name Syslog
|
||||
module_description Log collection modules
|
||||
module_type log
|
||||
module_regexp /var/log/messages
|
||||
module_pattern .*
|
||||
module_end
|
||||
|
||||
# Another samples of monitoring modules
|
||||
|
||||
|
@ -317,9 +323,9 @@ module_plugin autodiscover --default
|
|||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# Logs extraction
|
||||
# Extraction module example
|
||||
#module_begin
|
||||
#module_name Syslog
|
||||
#module_name Collector
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
|
|
|
@ -1039,7 +1039,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.774';
|
||||
use constant AGENT_BUILD => '231123';
|
||||
use constant AGENT_BUILD => '231219';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
@ -4436,14 +4436,7 @@ my $PID = $$;
|
|||
|
||||
#Launch tentacle server in proxy mode if configured
|
||||
if ($Conf{'proxy_mode'}) {
|
||||
|
||||
#Check if user is root
|
||||
if ($> != 0) {
|
||||
launch_tentacle_proxy();
|
||||
} else {
|
||||
log_message ('error', 'Proxy mode can not be launched as root');
|
||||
exit 1;
|
||||
}
|
||||
launch_tentacle_proxy();
|
||||
}
|
||||
|
||||
# Advice if YAML::Tiny is allowed in this system
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231123
|
||||
%define release 231219
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231123
|
||||
%define release 231219
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231123
|
||||
%define release 231219
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231123
|
||||
%define release 231219
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231123
|
||||
%define release 231219
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.774"
|
||||
PI_BUILD="231123"
|
||||
PI_BUILD="231219"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -179,6 +179,22 @@ module_description Total number of TCP connections active
|
|||
module_group Networking
|
||||
module_end
|
||||
|
||||
# Get logs from System source.
|
||||
module_begin
|
||||
module_name Eventlog_System
|
||||
module_type log
|
||||
module_logevent
|
||||
module_source System
|
||||
module_end
|
||||
|
||||
# Get logs from Security source.
|
||||
module_begin
|
||||
module_name Eventlog_Security
|
||||
module_type log
|
||||
module_logevent
|
||||
module_source Security
|
||||
module_end
|
||||
|
||||
# Example plugin to retrieve drive usage
|
||||
module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df_percent_used.vbs"
|
||||
|
||||
|
@ -273,22 +289,6 @@ module_plugin "%PROGRAMFILES%\Pandora_Agent\util\autodiscover.exe" --default
|
|||
#module_type generic_data_string
|
||||
#module_end
|
||||
|
||||
# Get logs from System source. Need enterprise version.
|
||||
#module_begin
|
||||
#module_name Eventlog_System
|
||||
#module_type log
|
||||
#module_logevent
|
||||
#module_source System
|
||||
#module_end
|
||||
|
||||
# Get logs from Security source. Need enterprise version.
|
||||
#module_begin
|
||||
#module_name Eventlog_Security
|
||||
#module_type log
|
||||
#module_logevent
|
||||
#module_source Security
|
||||
#module_end
|
||||
|
||||
# Get logs from Application source. Need enterprise version.
|
||||
#module_begin
|
||||
#module_name Eventlog_Application
|
||||
|
@ -538,3 +538,8 @@ module_plugin "%PROGRAMFILES%\Pandora_Agent\util\autodiscover.exe" --default
|
|||
#module_regexp C:\server\logs\xserver.log
|
||||
#module_pattern .*
|
||||
#module_end
|
||||
|
||||
# Pandora basic security check plugin for windows.
|
||||
#module_begin
|
||||
#module_plugin "%PROGRAMFILES%\Pandora_Agent\util\pandora_security_win.exe"
|
||||
#module_end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c58891fbd16bf80f288e0ff4751801aa02dbf4e6c914625b4d49a364c7e0b511
|
||||
size 7829249
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{231123}
|
||||
{231219}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.774 Build 231123")
|
||||
#define PANDORA_VERSION ("7.0NG.774 Build 231219")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.774(Build 231123))"
|
||||
VALUE "ProductVersion", "(7.0NG.774(Build 231219))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.774-231123
|
||||
Version: 7.0NG.774-231219
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.774-231123"
|
||||
pandora_version="7.0NG.774-231219"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -183,7 +183,9 @@ if (isset($config['force_instant_logout']) === true
|
|||
$_SESSION = [];
|
||||
session_destroy();
|
||||
header_remove('Set-Cookie');
|
||||
setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/');
|
||||
if (isset($_COOKIE[session_name()]) === true) {
|
||||
setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/');
|
||||
}
|
||||
|
||||
if ($config['auth'] === 'saml' && empty($public_hash) === true) {
|
||||
include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php';
|
||||
|
|
|
@ -1007,7 +1007,7 @@ function mainAgentsModules()
|
|||
echo "<td class='center' style='text-align:left;'>";
|
||||
$win_handle = dechex(crc32($module_id.$module['name']));
|
||||
$graph_type = return_graphtype(modules_get_agentmodule_type($module_id));
|
||||
$link = "winopeng_var('".'operation/agentes/stat_win.php?'."type=$graph_type&".'period='.SECONDS_1DAY.'&'.'id='.$module_id.'&'.'refresh='.SECONDS_10MINUTES."', 'day_".$win_handle."', 800, 480)";
|
||||
$link = "winopeng_var('".'operation/agentes/stat_win.php?'."type=$graph_type&".'period='.SECONDS_1DAY.'&id='.$module_id.'&period_graph=0&refresh='.SECONDS_10MINUTES."', 'day_".$win_handle."', 800, 480)";
|
||||
|
||||
echo '<a href="javascript:'.$link.'">';
|
||||
|
||||
|
|
|
@ -27,17 +27,18 @@
|
|||
*/
|
||||
|
||||
global $config;
|
||||
if (true) {
|
||||
include_once '../include/config.php';
|
||||
include_once '../include/functions_agents.php';
|
||||
include_once '../include/functions_reporting.php';
|
||||
include_once '../include/functions_modules.php';
|
||||
include_once '../include/functions_users.php';
|
||||
if ((bool) $config['metaconsole']) {
|
||||
include_once $config['homedir'].'/include/config.php';
|
||||
include_once $config['homedir'].'/include/functions_agents.php';
|
||||
include_once $config['homedir'].'/include/functions_reporting.php';
|
||||
include_once $config['homedir'].'/include/functions_modules.php';
|
||||
include_once $config['homedir'].'/include/functions_users.php';
|
||||
} else {
|
||||
include_once __DIR__.'/../include/config.php';
|
||||
include_once __DIR__.'/../include/functions_agents.php';
|
||||
include_once __DIR__.'/../include/functions_reporting.php';
|
||||
include_once __DIR__.'/../include/functions_modules.php';
|
||||
include_once __DIR__.'/../include/functions_users.php';
|
||||
}
|
||||
|
||||
|
||||
|
@ -106,7 +107,25 @@ if ($get_agents_module_csv === '1') {
|
|||
|
||||
foreach ($results as $result) {
|
||||
foreach ($result as $key => $value) {
|
||||
$out_csv .= io_safe_output($value).$divider;
|
||||
if (preg_match('/Linux/i', $_SERVER['HTTP_USER_AGENT'])) {
|
||||
$value = preg_replace(
|
||||
'/\s+/',
|
||||
' ',
|
||||
io_safe_output($value)
|
||||
);
|
||||
} else {
|
||||
$value = mb_convert_encoding(
|
||||
preg_replace(
|
||||
'/\s+/',
|
||||
'',
|
||||
io_safe_output($value)
|
||||
),
|
||||
'UTF-16LE',
|
||||
'UTF-8'
|
||||
);
|
||||
}
|
||||
|
||||
$out_csv .= $value.$divider;
|
||||
}
|
||||
|
||||
$out_csv .= "\n";
|
||||
|
|
|
@ -99,7 +99,7 @@ function api_execute(
|
|||
if (empty($token) === true) {
|
||||
$data['apipass'] = $apipass;
|
||||
$data['user'] = $user;
|
||||
$data['password'] = $password;
|
||||
$data['pass'] = $password;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ function dbmgr_extension_main()
|
|||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Database interface'),
|
||||
__('DB interface'),
|
||||
'images/gm_db.png',
|
||||
false,
|
||||
'',
|
||||
|
|
|
@ -1,286 +0,0 @@
|
|||
<?php
|
||||
|
||||
// Pandora FMS - https://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2023 Pandora FMS
|
||||
// Please see https://pandorafms.com/community/ 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.
|
||||
function pandora_files_repo_install()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (isset($config['files_repo_installed']) && $config['files_repo_installed'] == 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
$full_sql_dir = $full_extensions_dir.'files_repo/sql/';
|
||||
|
||||
$file_path = '';
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
$file_path = $full_sql_dir.'files_repo.sql';
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
$file_path = $full_sql_dir.'files_repo.postgreSQL.sql';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$file_path = $full_sql_dir.'files_repo.oracle.sql';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($file_path)) {
|
||||
$result = db_process_file($file_path);
|
||||
|
||||
if ($result) {
|
||||
// Configuration values
|
||||
$values = [
|
||||
'token' => 'files_repo_installed',
|
||||
'value' => 1,
|
||||
];
|
||||
db_process_sql_insert('tconfig', $values);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function pandora_files_repo_uninstall()
|
||||
{
|
||||
global $config;
|
||||
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
db_process_sql('DROP TABLE `tfiles_repo_group`');
|
||||
db_process_sql('DROP TABLE `tfiles_repo`');
|
||||
db_process_sql(
|
||||
'DELETE FROM `tconfig`
|
||||
WHERE `token` LIKE "files_repo_%"'
|
||||
);
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
db_process_sql('DROP TABLE "tfiles_repo_group"');
|
||||
db_process_sql('DROP TABLE "tfiles_repo"');
|
||||
db_process_sql(
|
||||
'DELETE FROM "tconfig"
|
||||
WHERE "token" LIKE \'files_repo_%\''
|
||||
);
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
db_process_sql('DROP TRIGGER "tfiles_repo_group_inc"');
|
||||
db_process_sql('DROP SEQUENCE "tfiles_repo_group_s"');
|
||||
db_process_sql('DROP TABLE "tfiles_repo_group"');
|
||||
db_process_sql('DROP TRIGGER "tfiles_repo_inc"');
|
||||
db_process_sql('DROP SEQUENCE "tfiles_repo_s"');
|
||||
db_process_sql('DROP TABLE "tfiles_repo"');
|
||||
db_process_sql(
|
||||
'DELETE FROM tconfig
|
||||
WHERE token LIKE \'files_repo_%\''
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($config['attachment_store'])) {
|
||||
delete_dir($config['attachment_store'].'/files_repo');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function pandora_files_repo_godmode()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (!isset($config['files_repo_installed']) || !$config['files_repo_installed']) {
|
||||
ui_print_error_message(__('Extension not installed'));
|
||||
}
|
||||
|
||||
// ACL Check
|
||||
check_login();
|
||||
if (! check_acl($config['id_user'], 0, 'PM')) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access to Files repository'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
// Header tabs.
|
||||
$godmode['text'] = '<a href="index.php?sec=godmode/extensions&sec2=extensions/files_repo">'.html_print_image('images/configuration@svg.svg', true, ['title' => __('Administration view'), 'class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
$godmode['godmode'] = 1;
|
||||
$godmode['active'] = 1;
|
||||
|
||||
$operation['text'] = '<a href="index.php?sec=extensions&sec2=extensions/files_repo">'.html_print_image('images/see-details@svg.svg', true, ['title' => __('Operation view'), 'class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
$operation['operation'] = 1;
|
||||
|
||||
$onheader = [
|
||||
'godmode' => $godmode,
|
||||
'operation' => $operation,
|
||||
];
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Extensions'),
|
||||
'images/extensions.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
$onheader,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Admin tools'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Extension manager'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Files repository manager'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
include_once $full_extensions_dir.'files_repo/functions_files_repo.php';
|
||||
|
||||
// Directory files_repo check.
|
||||
if (!files_repo_check_directory(true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$server_content_length = 0;
|
||||
if (isset($_SERVER['CONTENT_LENGTH'])) {
|
||||
$server_content_length = $_SERVER['CONTENT_LENGTH'];
|
||||
}
|
||||
|
||||
// Check for an anoying error that causes the $_POST and $_FILES arrays.
|
||||
// were empty if the file is larger than the post_max_size.
|
||||
if (intval($server_content_length) > 0 && empty($_POST)) {
|
||||
ui_print_error_message(__('Problem uploading. Please check this PHP runtime variable values: <pre> post_max_size (currently '.ini_get('post_max_size').')</pre>'));
|
||||
}
|
||||
|
||||
// GET and POST parameters.
|
||||
$file_id = (int) get_parameter('file_id');
|
||||
$add_file = (bool) get_parameter('add_file');
|
||||
$update_file = (bool) get_parameter('update_file');
|
||||
$delete_file = (bool) get_parameter('delete');
|
||||
|
||||
// File add or update.
|
||||
if ($add_file || ($update_file && $file_id > 0)) {
|
||||
$groups = get_parameter('groups', []);
|
||||
$public = (bool) get_parameter('public');
|
||||
$description = io_safe_output((string) get_parameter('description'));
|
||||
if (mb_strlen($description, 'UTF-8') > 200) {
|
||||
$description = mb_substr($description, 0, 200, 'UTF-8');
|
||||
}
|
||||
|
||||
$description = io_safe_input($description);
|
||||
|
||||
if ($add_file) {
|
||||
$result = files_repo_add_file('upfile', $description, $groups, $public);
|
||||
} else if ($update_file) {
|
||||
$result = files_repo_update_file($file_id, $description, $groups, $public);
|
||||
$file_id = 0;
|
||||
}
|
||||
|
||||
if ($result['status'] == false) {
|
||||
ui_print_error_message($result['message']);
|
||||
}
|
||||
}
|
||||
|
||||
// File delete.
|
||||
if ($delete_file && $file_id > 0) {
|
||||
$result = files_repo_delete_file($file_id);
|
||||
if ($result !== -1) {
|
||||
ui_print_result_message($result, __('Successfully deleted'), __('Could not be deleted'));
|
||||
}
|
||||
|
||||
$file_id = 0;
|
||||
}
|
||||
|
||||
// FORM.
|
||||
include $full_extensions_dir.'files_repo/files_repo_form.php';
|
||||
if (!$file_id) {
|
||||
// LIST.
|
||||
$manage = true;
|
||||
include $full_extensions_dir.'files_repo/files_repo_list.php';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function pandora_files_repo_operation()
|
||||
{
|
||||
global $config;
|
||||
|
||||
// Header tabs.
|
||||
$onheader = [];
|
||||
if (check_acl($config['id_user'], 0, 'PM')) {
|
||||
$godmode['text'] = '<a href="index.php?sec=godmode/extensions&sec2=extensions/files_repo">'.html_print_image('images/configuration@svg.svg', true, ['title' => __('Administration view'), 'class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
$godmode['godmode'] = 1;
|
||||
|
||||
$operation['text'] = '<a href="index.php?sec=extensions&sec2=extensions/files_repo">'.html_print_image('images/see-details@svg.svg', true, ['title' => __('Operation view'), 'class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
$operation['operation'] = 1;
|
||||
$operation['active'] = 1;
|
||||
|
||||
$onheader = [
|
||||
'godmode' => $godmode,
|
||||
'operation' => $operation,
|
||||
];
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Files repository'),
|
||||
'images/extensions.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
$onheader,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Admin tools'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Extension manager'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Files repository'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
include_once $full_extensions_dir.'files_repo/functions_files_repo.php';
|
||||
|
||||
// Directory files_repo check.
|
||||
if (!files_repo_check_directory(true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// LIST.
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
|
||||
include $full_extensions_dir.'files_repo/files_repo_list.php';
|
||||
}
|
||||
|
||||
|
||||
extensions_add_operation_menu_option(__('Files repository'), null, null, 'v1r1');
|
||||
extensions_add_main_function('pandora_files_repo_operation');
|
||||
extensions_add_godmode_menu_option(__('Files repository manager'), 'PM', null, null, 'v1r1');
|
||||
extensions_add_godmode_function('pandora_files_repo_godmode');
|
||||
|
||||
pandora_files_repo_install();
|
|
@ -1,168 +0,0 @@
|
|||
<?php
|
||||
|
||||
// Pandora FMS - https://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2023 Pandora FMS
|
||||
// Please see https://pandorafms.com/community/ 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;
|
||||
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
require_once $full_extensions_dir.'files_repo/functions_files_repo.php';
|
||||
|
||||
|
||||
|
||||
$offset = (int) get_parameter('offset');
|
||||
$filter = [];
|
||||
$filter['limit'] = $config['block_size'];
|
||||
$filter['offset'] = $offset;
|
||||
$filter['order'] = [
|
||||
'field' => 'id',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
|
||||
$files = files_repo_get_files($filter);
|
||||
|
||||
|
||||
if (!empty($files)) {
|
||||
if (!isset($manage)) {
|
||||
$manage = false;
|
||||
}
|
||||
|
||||
// Pagination
|
||||
if ($manage) {
|
||||
$url = ui_get_full_url('index.php?sec=godmode/extensions&sec2=extensions/files_repo');
|
||||
} else {
|
||||
$url = ui_get_full_url('index.php?sec=extensions&sec2=extensions/files_repo');
|
||||
}
|
||||
|
||||
$total_files = files_repo_get_files(false, true);
|
||||
ui_pagination($total_files, $url, $offset);
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
$table->style = [];
|
||||
$table->style[1] = 'max-width: 200px;';
|
||||
$table->style[4] = 'text-align: center;';
|
||||
$table->head = [];
|
||||
$table->head[0] = __('Name');
|
||||
$table->head[1] = __('Description');
|
||||
$table->head[2] = __('Size');
|
||||
$table->head[3] = __('Last modification');
|
||||
$table->head[4] = '';
|
||||
$table->data = [];
|
||||
|
||||
foreach ($files as $file_id => $file) {
|
||||
$data = [];
|
||||
|
||||
// Prepare the filename for the get_file.php script
|
||||
$document_root = str_replace(
|
||||
'\\',
|
||||
'/',
|
||||
io_safe_output($_SERVER['DOCUMENT_ROOT'])
|
||||
);
|
||||
$file['location'] = str_replace(
|
||||
'\\',
|
||||
'/',
|
||||
io_safe_output($file['location'])
|
||||
);
|
||||
$relative_path = str_replace($document_root, '', $file['location']);
|
||||
$file_name = explode('/', $file['location']);
|
||||
$file_decoded = $file_name[(count($file_name) - 1)];
|
||||
$file_path = base64_encode($file_decoded);
|
||||
$hash = md5($file_path.$config['server_unique_identifier']);
|
||||
$url = ui_get_full_url(
|
||||
'include/get_file.php?file='.urlencode($file_path).'&hash='.$hash
|
||||
);
|
||||
$date_format = ($config['date_format']) ? io_safe_output($config['date_format']) : 'F j, Y - H:m';
|
||||
|
||||
$data[0] = "<a href=\"$url\" target=\"_blank\">".$file['name'].'</a>';
|
||||
// Name
|
||||
$data[1] = ui_print_truncate_text(
|
||||
$file['description'],
|
||||
'description',
|
||||
true,
|
||||
true
|
||||
);
|
||||
// Description
|
||||
$data[2] = ui_format_filesize($file['size']);
|
||||
// Size
|
||||
$data[3] = date($date_format, $file['mtime']);
|
||||
// Last modification
|
||||
// Public URL
|
||||
$data[4] = '';
|
||||
$table->cellclass[][4] = 'table_action_buttons';
|
||||
if (!empty($file['hash'])) {
|
||||
$public_url = ui_get_full_url(
|
||||
EXTENSIONS_DIR.'/files_repo/files_repo_get_file.php?file='.$file['hash']
|
||||
);
|
||||
$message = __('Copy to clipboard').': Ctrl+C -> Enter';
|
||||
$action = "window.prompt('$message', '$public_url');";
|
||||
$data[4] .= "<a href=\"javascript:;\" onclick=\"$action\">";
|
||||
$data[4] .= html_print_image(
|
||||
'images/world.png',
|
||||
true,
|
||||
['title' => __('Public link')]
|
||||
);
|
||||
// Public link image
|
||||
$data[4] .= '</a> ';
|
||||
}
|
||||
|
||||
$data[4] .= "<a href=\"$url\" target=\"_blank\">";
|
||||
$data[4] .= html_print_image(
|
||||
'images/download.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Download'),
|
||||
'style' => 'padding:3px',
|
||||
]
|
||||
);
|
||||
// Download image
|
||||
$data[4] .= '</a>';
|
||||
|
||||
if ($manage) {
|
||||
$config_url = ui_get_full_url(
|
||||
'index.php?sec=godmode/extensions&sec2=extensions/files_repo&file_id='.$file_id
|
||||
);
|
||||
$data[4] .= "<a href=\"$config_url\">";
|
||||
$data[4] .= html_print_image(
|
||||
'images/edit.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Edit'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
// Edit image
|
||||
$data[4] .= '</a>';
|
||||
|
||||
$delete_url = ui_get_full_url(
|
||||
'index.php?sec=godmode/extensions&sec2=extensions/files_repo&delete=1&file_id='.$file_id
|
||||
);
|
||||
$data[4] .= " <a href=\"$delete_url\" onClick=\"if (!confirm('".__('Are you sure?')."')) return false;\">";
|
||||
$data[4] .= html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
// Delete image
|
||||
$data[4] .= '</a>';
|
||||
}
|
||||
|
||||
$table->data[] = $data;
|
||||
}
|
||||
|
||||
html_print_table($table);
|
||||
} else {
|
||||
ui_print_info_message(__('No items'));
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
CREATE TABLE tfiles_repo (
|
||||
id NUMBER(5, 0) NOT NULL PRIMARY KEY,
|
||||
name VARCHAR2(255) NOT NULL,
|
||||
description VARCHAR2(500) NULL,
|
||||
hash VARCHAR2(8) NULL
|
||||
);
|
||||
CREATE SEQUENCE tfiles_repo_s INCREMENT BY 1 START WITH 1;
|
||||
CREATE OR REPLACE TRIGGER tfiles_repo_inc BEFORE INSERT ON tfiles_repo REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT tfiles_repo_s.nextval INTO :NEW.ID FROM dual; END;;
|
||||
|
||||
CREATE TABLE tfiles_repo_group (
|
||||
id NUMBER(10, 0) NOT NULL PRIMARY KEY,
|
||||
id_file NUMBER(5, 0) NOT NULL REFERENCES tfiles_repo(id) ON DELETE CASCADE,
|
||||
id_group NUMBER(4, 0) NOT NULL
|
||||
);
|
||||
CREATE SEQUENCE tfiles_repo_group_s INCREMENT BY 1 START WITH 1;
|
||||
CREATE OR REPLACE TRIGGER tfiles_repo_group_inc BEFORE INSERT ON tfiles_repo_group REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT tfiles_repo_group_s.nextval INTO :NEW.ID FROM dual; END;;
|
|
@ -1,2 +0,0 @@
|
|||
CREATE TABLE "tfiles_repo" ("id" SERIAL NOT NULL PRIMARY KEY, "name" VARCHAR(255) NOT NULL, "description" VARCHAR(500) NULL default '', "hash" VARCHAR(8) NULL default '');
|
||||
CREATE TABLE "tfiles_repo_group" ("id" SERIAL NOT NULL PRIMARY KEY, "id_file" INTEGER NOT NULL REFERENCES tfiles_repo("id") ON DELETE CASCADE, "id_group" INTEGER NOT NULL);
|
|
@ -1,15 +0,0 @@
|
|||
CREATE TABLE IF NOT EXISTS `tfiles_repo` (
|
||||
`id` int(5) unsigned NOT NULL auto_increment,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`description` varchar(500) NULL default '',
|
||||
`hash` varchar(8) NULL default '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tfiles_repo_group` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`id_file` int(5) unsigned NOT NULL,
|
||||
`id_group` int(4) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
FOREIGN KEY (`id_file`) REFERENCES tfiles_repo(`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
@ -31,7 +31,7 @@ function view_logfile($file_name, $toggle=false)
|
|||
} else {
|
||||
$file_size = filesize($file_name);
|
||||
|
||||
if ($memory_limit < $file_size) {
|
||||
if ($memory_limit < $file_size && $memory_limit !== '-1') {
|
||||
$code .= '<pre><h2>'.$file_name.' ('.__('File is too large than PHP memory allocated in the system.').')</h2>';
|
||||
$code .= '<h2>'.__('The preview file is imposible.').'</h2>';
|
||||
} else if ($file_size > ($config['max_log_size'] * 1000)) {
|
||||
|
@ -117,6 +117,7 @@ function pandoralogs_extension_main()
|
|||
view_logfile($config['homedir'].'/log/console.log', true);
|
||||
}
|
||||
|
||||
view_logfile('/var/log/php-fpm/www-error.log', true);
|
||||
view_logfile($logs_directory.'/pandora_server.log', true);
|
||||
view_logfile($logs_directory.'/pandora_server.error', true);
|
||||
|
||||
|
|
|
@ -1720,3 +1720,19 @@ include/functions_integriaims.php
|
|||
include/ajax/integria_incidents.ajax.php
|
||||
enterprise/operation/log/log_source.php
|
||||
enterprise/include/class/LogSource.class.php
|
||||
include/chart_generator.php
|
||||
enterprise/extensions/translate_string.php
|
||||
enterprise/extensions/translate_string/functions.php
|
||||
enterprise/extensions/translate_string/translate_string.oracle.sql
|
||||
enterprise/extensions/translate_string/translate_string.postgresql.sql
|
||||
enterprise/extensions/translate_string/translate_string.sql
|
||||
enterprise/extensions/translate_string
|
||||
extensions/files_repo.php
|
||||
extensions/files_repo/files_repo_form.php
|
||||
extensions/files_repo/files_repo_get_file.php
|
||||
extensions/files_repo/files_repo_list.php
|
||||
extensions/files_repo/functions_files_repo.php
|
||||
extensions/files_repo/sql/files_repo.oracle.sql
|
||||
extensions/files_repo/sql/files_repo.postgreSQL.sql
|
||||
extensions/files_repo/sql/files_repo.sql
|
||||
extensions/files_repo
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
pandorafms.vmware=9959cc3e5cc6bfcfadd6d05b56d4a11b
|
||||
pandorafms.vmware=248788e0fb2cd4e11623e4a52ee7d05b
|
||||
pandorafms.mysql=fadb4750d18285c0eca34f47c6aa3cfe
|
||||
pandorafms.mssql=1cc215409741d19080269ffba112810e
|
||||
pandorafms.oracle=2d9320a514d1e48a0b2804e1653c31c6
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
pandorafms.aws.ec2;Amazon EC2;cloud;1;pandorafms.aws.ec2.png;https://pandorafms.com/library/aws-ec2-discovery/
|
||||
pandorafms.aws.rds;Amazon RDS;cloud;1;pandorafms.aws.rds.png;https://pandorafms.com/library/aws-rds-discovery/
|
||||
pandorafms.aws.s3;Amazon S3;cloud;1;pandorafms.aws.s3.png;https://pandorafms.com/library/aws-s3-discovery/
|
||||
pandorafms.azure.mc;Azure Microsoft Compute;cloud;1;pandorafms.azure.mc.png;https://pandorafms.com/library/aws-azure-discovery/
|
||||
pandorafms.db2;DB2;app;1;pandorafms.db2.png;https://pandorafms.com/library/db2-discovery/
|
||||
pandorafms.gcp.ce;Google Cloud Compute Engine;cloud;1;pandorafms.gcp.ce.png;https://pandorafms.com/library/google-cloud-discovery/
|
||||
pandorafms.mssql;Microsoft SQL Server;app;1;pandorafms.mssql.png;https://pandorafms.com/library/mssql-discovery/
|
||||
pandorafms.mysql;MySQL;app;1;pandorafms.mysql.png;https://pandorafms.com/library/mysql-discovery/
|
||||
pandorafms.oracle;Oracle;app;1;pandorafms.oracle.png;https://pandorafms.com/library/oracle-discovery/
|
||||
pandorafms.proxmox;Proxmox;app;0;pandorafms.proxmox.png;https://pandorafms.com/library/proxmox-discovery/
|
||||
pandorafms.sap.deset;SAP R3 - Deset;app;1;pandorafms.sap.deset.png;https://pandorafms.com/library/sap-discovery/
|
||||
pandorafms.vmware;VMware;app;1;pandorafms.vmware.png;https://pandorafms.com/library/vmware-discovery/
|
||||
pandorafms.kubernetes;Kubernetes;app;1;pandorafms.kubernetes.png;https://pandorafms.com/library/kubernetes-discovery/
|
||||
pandorafms.mongodb;MongoDB;app;1;pandorafms.mongodb.png;https://pandorafms.com/library/mongodb-discovery/
|
||||
pandorafms.ovh;OVH;cloud;1;pandorafms.ovh.png;https://pandorafms.com/library/ovh-discovery/
|
||||
pandorafms.vulnscan;Vulnerability Scanner;app;1;pandorafms.vulnscan.png;https://pandorafms.com/library/pandora-vulnerability-discovery/
|
||||
pandorafms.postgresql;PostgreSQL;app;1;pandorafms.postgresql.png;https://pandorafms.com/library/postgresql-discovery/
|
||||
pandorafms.xenserver;Xenserver;app;1;pandorafms.xenserver.png;https://pandorafms.com/library/xenserver-discovery/
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
|||
START TRANSACTION;
|
||||
|
||||
DELETE FROM `twelcome_tip` WHERE `title` = 'Automatic agent provision system';
|
||||
|
||||
INSERT INTO `twelcome_tip` (`id_lang`,`id_profile`,`title`,`text`,`url`,`enable`) VALUES ('en_GB',0,'Automatic agent provision system','The agent self-provisioning system allows an agent recently entered into the system to automatically apply changes to their configuration (such as moving them from group, assigning them certain values in custom fields) and of course applying certain monitoring policies. It is one of the most powerful functionalities, aimed at managing very large system parks.','https://pandorafms.com/manual/start?id=en/documentation/02_installation/05_configuration_agents#conf',1);
|
||||
|
||||
COMMIT;
|
|
@ -35,7 +35,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
$notifications_numbers['last_id']
|
||||
).'</div>';
|
||||
$header_welcome = '';
|
||||
if (check_acl($config['id_user'], $group, 'AW')) {
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
$header_welcome .= '<div id="welcome-icon-header">';
|
||||
$header_welcome .= html_print_image(
|
||||
'images/wizard@svg.svg',
|
||||
|
@ -235,6 +235,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
|
||||
$header_autorefresh = '';
|
||||
$header_autorefresh_counter = '';
|
||||
$header_setup = '';
|
||||
|
||||
if (($_GET['sec2'] !== 'operation/visual_console/render_view')) {
|
||||
if ($autorefresh_list !== null
|
||||
|
@ -352,7 +353,6 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
$display_counter = 'display:none';
|
||||
}
|
||||
|
||||
$header_setup = '';
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$header_setup .= '<div id="header_logout"><a class="white" href="'.ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup§ion=general').'">';
|
||||
$header_setup .= html_print_image(
|
||||
|
@ -455,19 +455,28 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
);
|
||||
$header_logout .= '</a></div>';
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$subtitle_header = $config['custom_subtitle_header'];
|
||||
$class_header = '';
|
||||
} else {
|
||||
$subtitle_header = __('the Flexible Monitoring System (OpenSource version)');
|
||||
echo '<div id="dialog_why_enterprise" class="invisible"></div>';
|
||||
$class_header = 'underline-hover modal_module_list';
|
||||
}
|
||||
|
||||
if (is_reporting_console_node() === true) {
|
||||
echo '<div class="header_left">';
|
||||
echo '<div class="header_left '.$class_header.'">';
|
||||
echo '<span class="header_title">';
|
||||
echo $config['custom_title_header'];
|
||||
echo '</span>';
|
||||
echo '<span class="header_subtitle">';
|
||||
echo $config['custom_subtitle_header'];
|
||||
echo $subtitle_header;
|
||||
echo '</span>';
|
||||
echo '</div>';
|
||||
echo '<div class="header_center"></div>';
|
||||
echo '<div class="header_right">'.$modal_help, $header_user, $header_logout.'</div>';
|
||||
} else {
|
||||
echo '<div class="header_left"><span class="header_title">'.$config['custom_title_header'].'</span><span class="header_subtitle">'.$config['custom_subtitle_header'].'</span></div>
|
||||
echo '<div class="header_left '.$class_header.'"><span class="header_title">'.$config['custom_title_header'].'</span><span class="header_subtitle">'.$subtitle_header.'</span></div>
|
||||
<div class="header_center">'.$header_searchbar.'</div>
|
||||
<div class="header_right">'.$header_autorefresh, $header_autorefresh_counter, $header_discovery, $header_welcome, $servers_list, $modal_help, $header_setup, $header_user, $header_logout.'</div>';
|
||||
}
|
||||
|
@ -916,6 +925,44 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
|
||||
$(document).ready (function () {
|
||||
|
||||
<?php if (enterprise_installed() === false) { ?>
|
||||
$('.header_left').on('click', function(){
|
||||
jQuery.post(
|
||||
"ajax.php",
|
||||
{
|
||||
page: "include/functions_menu",
|
||||
'why_enterprise': "true"
|
||||
},
|
||||
function(data) {
|
||||
if (data) {
|
||||
$("#dialog_why_enterprise").html(data);
|
||||
// Open dialog
|
||||
$("#dialog_why_enterprise").dialog({
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
modal: true,
|
||||
show: {
|
||||
effect: "fade",
|
||||
duration: 200
|
||||
},
|
||||
hide: {
|
||||
effect: "fade",
|
||||
duration: 200
|
||||
},
|
||||
closeOnEscape: true,
|
||||
width: 700,
|
||||
height: 450,
|
||||
close: function(){
|
||||
$('#dialog_why_enterprise').html('');
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
"html"
|
||||
);
|
||||
});
|
||||
<?php } ?>
|
||||
|
||||
// Check new notifications on a periodic way
|
||||
setInterval(check_new_notifications, 60000);
|
||||
|
||||
|
|
|
@ -418,7 +418,7 @@ switch ($login_screen) {
|
|||
}
|
||||
|
||||
if ($config['enterprise_installed']) {
|
||||
if ($config['reset_pass_option']) {
|
||||
if ($config['reset_pass_option'] && $config['auth'] === 'mysql') {
|
||||
$reset_pass_link = 'reset_pass.php';
|
||||
// Reset password link.
|
||||
echo '<div class="reset_password">';
|
||||
|
|
|
@ -600,43 +600,176 @@ html_print_div(
|
|||
'content' => html_print_table($tableAgent, true).$CodeQRTable,
|
||||
]
|
||||
);
|
||||
/*
|
||||
TODO REVIEW
|
||||
$table_satellite = '';
|
||||
if ($remote_agent === true) {
|
||||
// Satellite server selector.
|
||||
$satellite_servers = db_get_all_rows_filter(
|
||||
'tserver',
|
||||
['server_type' => SERVER_TYPE_ENTERPRISE_SATELLITE],
|
||||
[
|
||||
'id_server',
|
||||
'name',
|
||||
]
|
||||
);
|
||||
|
||||
$satellite_names = [];
|
||||
if (empty($satellite_servers) === false) {
|
||||
foreach ($satellite_servers as $s_server) {
|
||||
$satellite_names[$s_server['id_server']] = $s_server['name'];
|
||||
// Basic Options.
|
||||
$tableBasicAgent = new stdClass();
|
||||
$tableBasicAgent->class = 'filter-table-adv';
|
||||
$tableBasicAgent->data = [];
|
||||
$disabledBasic = false;
|
||||
$tableClassDisabled = '';
|
||||
if ($new_agent === true || $remote_agent === false || $has_remote_conf === false) {
|
||||
$disabledBasic = true;
|
||||
$tableClassDisabled = ' basic-options-disabled';
|
||||
}
|
||||
|
||||
if (enterprise_installed()) {
|
||||
// Get all plugins (BASIC OPTIONS).
|
||||
$agent_plugin = new PandoraFMS\Agent($id_agente);
|
||||
$plugins = $agent_plugin->getPlugins();
|
||||
// Check if some plugin was enabled/disabled in conf.
|
||||
foreach ($plugins as $key => $row) {
|
||||
if (preg_match('/pandora_hardening/', $row['raw']) === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$security_hardening = 0;
|
||||
} else {
|
||||
$security_hardening = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$table_satellite = '<div class="label_select"><p class="input_label">'.__('Satellite').'</p>';
|
||||
$table_satellite .= '<div class="label_select_parent">';
|
||||
if ($id_os === '1' || $id_os === '8') {
|
||||
if (preg_match('/(module_plugin grep_log_module ).*/', $row['raw']) === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$enable_log_collector = 0;
|
||||
} else {
|
||||
$enable_log_collector = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$table_satellite .= html_print_input(
|
||||
if (preg_match('/(module_plugin inventory).*/', $row['raw']) === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$enable_inventory = 0;
|
||||
} else {
|
||||
$enable_inventory = 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (preg_match('/.vbs/', $row['raw']) === 1 && preg_match('/nettraffic.vbs/', $row['raw']) === 0 && preg_match('/software_installed.vbs/', $row['raw']) === 0 && preg_match('/df.vbs/', $row['raw']) === 0 && preg_match('/win_cf.vbs/', $row['raw']) === 0) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$enable_inventory = 0;
|
||||
} else {
|
||||
$enable_inventory = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($id_os === '9') {
|
||||
$modules = $agent_plugin->getModules();
|
||||
foreach ($modules as $key => $row) {
|
||||
if (preg_match('/PandoraAgent_log/', $row['raw']) === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$enable_log_collector = 0;
|
||||
} else {
|
||||
$enable_log_collector = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($agent_plugin, $plugins);
|
||||
if (($new_agent === true && $config['current_package'] >= 774) || ($agent_version >= 774 && $new_agent === false)) {
|
||||
if ($disabledBasic === true || $has_remote_conf === false) {
|
||||
$message = __('Remote config disabled, please activate to enable agent basic options');
|
||||
$tableBasicAgent->data[] = '<span>'.$message.'</span>';
|
||||
}
|
||||
|
||||
$tableBasicAgent->data[] = html_print_label_input_block(
|
||||
__('Enable security hardening monitoring'),
|
||||
html_print_input(
|
||||
[
|
||||
'type' => 'select',
|
||||
'fields' => $satellite_names,
|
||||
'name' => 'satellite_server',
|
||||
'selected' => $satellite_server,
|
||||
'nothing' => __('None'),
|
||||
'nothinf_value' => 0,
|
||||
'return' => true,
|
||||
'type' => 'switch',
|
||||
'id' => 'security_hardening',
|
||||
'name' => 'security_hardening',
|
||||
'value' => $security_hardening,
|
||||
'disabled' => $disabledBasic,
|
||||
]
|
||||
).'<div class="label_select_child_icons"></div></div></div>';
|
||||
).html_print_input_hidden('options_package', '1', true)
|
||||
);
|
||||
|
||||
$tableBasicAgent->data[] = html_print_label_input_block(
|
||||
__('Enable log collection'),
|
||||
html_print_input(
|
||||
[
|
||||
'type' => 'switch',
|
||||
'id' => 'enable_log_collector',
|
||||
'name' => 'enable_log_collector',
|
||||
'value' => $enable_log_collector,
|
||||
'disabled' => $disabledBasic,
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$tableBasicAgent->data[] = html_print_label_input_block(
|
||||
__('Enable inventory'),
|
||||
html_print_input(
|
||||
[
|
||||
'type' => 'switch',
|
||||
'id' => 'enable_inventory',
|
||||
'name' => 'enable_inventory',
|
||||
'value' => $enable_inventory,
|
||||
'disabled' => $disabledBasic,
|
||||
]
|
||||
).html_print_input_hidden('enable_basic_options', '1', true)
|
||||
);
|
||||
|
||||
if ($config['ehorus_enabled'] === '1') {
|
||||
$pandoraRC_Id = html_print_image(
|
||||
'images/alert_recovered@svg.svg',
|
||||
true,
|
||||
[
|
||||
'class' => 'invert_filter main_menu_icon',
|
||||
'title' => __('Pandora RC connected with id ').$config['ehorus_custom_field'],
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$pandoraRC_Id = html_print_image(
|
||||
'images/alerts.svg',
|
||||
true,
|
||||
[
|
||||
'class' => 'invert_filter main_menu_icon',
|
||||
'title' => __('This agent do not have a Pandora RC agent installed, install one.'),
|
||||
]
|
||||
);
|
||||
}
|
||||
*/
|
||||
|
||||
$tableBasicAgent->data[] = html_print_label_input_block(
|
||||
__('Enable remote control'),
|
||||
$pandoraRC_Id
|
||||
);
|
||||
|
||||
$WarningPackage = '';
|
||||
if (($new_agent === true && $config['current_package'] < 774) || ($agent_version < 774 && $new_agent === false)) {
|
||||
$WarningPackage = html_print_image(
|
||||
'images/alert-yellow@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Only available for agents 774 or higher'),
|
||||
'alt' => __('Only available for agents 774 or higher'),
|
||||
'class' => 'main_menu_icon mrgn_lft_5px',
|
||||
]
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$tableBasicAgent->data[] = '<span>'.__('Remote config is enabled only in the Enteprise version').'</span>';
|
||||
$tableBasicAgent->data[] .= html_print_input_hidden(
|
||||
'enable_basic_options',
|
||||
'0',
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($tableBasicAgent, true),
|
||||
'<span class="subsection_header_title">'.__('Basic options').$WarningPackage.'</span>',
|
||||
'',
|
||||
'basic_options',
|
||||
true,
|
||||
false,
|
||||
'white_box_content',
|
||||
'no-border white_table_graph'.$tableClassDisabled,
|
||||
'box-flat white_table_graph invisible'
|
||||
);
|
||||
|
||||
// Advanced options.
|
||||
$tableAdvancedAgent = new stdClass();
|
||||
|
@ -922,23 +1055,37 @@ $tableAdvancedAgent->data['safe_operation'][] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
$tableAdvancedAgent->data['vul_scan_enabled'][] = html_print_label_input_block(
|
||||
__('Vulnerability scanning'),
|
||||
html_print_select(
|
||||
[
|
||||
0 => __('Disabled'),
|
||||
1 => __('Enabled'),
|
||||
2 => __('Use global settings'),
|
||||
],
|
||||
'vul_scan_enabled',
|
||||
$vul_scan_enabled,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
if (enterprise_installed() === true) {
|
||||
$tableAdvancedAgent->data['vul_scan_enabled'][] = html_print_label_input_block(
|
||||
__('Vulnerability scanning'),
|
||||
html_print_select(
|
||||
[
|
||||
0 => __('Disabled'),
|
||||
1 => __('Enabled'),
|
||||
2 => __('Use global settings'),
|
||||
],
|
||||
'vul_scan_enabled',
|
||||
$vul_scan_enabled,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$tableAdvancedAgent->data['ignore_unknown'][] = html_print_label_input_block(
|
||||
__('Ignore unknown').ui_print_help_tip(__('This disables the calculation of the unknown state in the agent and any of its modules, so it will never transition to unknown. The state it reflects is the last known status.'), true),
|
||||
html_print_checkbox_switch(
|
||||
'ignore_unknown',
|
||||
1,
|
||||
$ignore_unknown,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($tableAdvancedAgent, true),
|
||||
'<span class="subsection_header_title">'.__('Advanced options').'</span>',
|
||||
|
@ -1101,11 +1248,24 @@ if ($new_agent === false) {
|
|||
$actionButtons .= html_print_input_hidden('id_agente', $id_agente);
|
||||
|
||||
if (is_management_allowed() === true) {
|
||||
$clusters = agents_get_agent_belongs_cluster($id_agente);
|
||||
$cluster_belongs = '';
|
||||
if (empty($clusters) === false) {
|
||||
$clusters = array_reduce(
|
||||
$clusters,
|
||||
function ($carry, $item) {
|
||||
$carry[] = $item['name'];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
$cluster_belongs = implode(', ', $clusters);
|
||||
}
|
||||
|
||||
$actionButtons .= html_print_button(
|
||||
__('Delete agent'),
|
||||
'deleteAgent',
|
||||
false,
|
||||
'deleteAgentDialog('.$id_agente.')',
|
||||
'deleteAgentDialog('.$id_agente.', "'.$cluster_belongs.'")',
|
||||
[
|
||||
'icon' => 'delete',
|
||||
'mode' => 'secondary dialog_opener',
|
||||
|
@ -1153,10 +1313,18 @@ ui_require_jquery_file('bgiframe');
|
|||
}
|
||||
}
|
||||
|
||||
function deleteAgentDialog($idAgente) {
|
||||
function deleteAgentDialog($idAgente, cluster) {
|
||||
var msg_cluster = '';
|
||||
if(cluster) {
|
||||
msg_cluster = "<?php echo __('This agent belongs to the clusters'); ?>";
|
||||
msg_cluster += ': ';
|
||||
msg_cluster += cluster;
|
||||
msg_cluster += '. ';
|
||||
}
|
||||
|
||||
confirmDialog({
|
||||
title: "<?php echo __('Delete agent'); ?>",
|
||||
message: "<?php echo __('This action is not reversible. Are you sure'); ?>",
|
||||
message: msg_cluster + "<?php echo __('This action is not reversible. Are you sure'); ?>",
|
||||
onAccept: function() {
|
||||
window.location.assign('index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&borrar_agente='+$idAgente);
|
||||
}
|
||||
|
@ -1253,7 +1421,8 @@ ui_require_jquery_file('bgiframe');
|
|||
});
|
||||
|
||||
$("#checkbox-cascade_protection").change(function () {
|
||||
var checked = $("#checkbox-cascade_protection").is(":checked"); if (checked) {
|
||||
var checked = $("#checkbox-cascade_protection").is(":checked");
|
||||
if (checked) {
|
||||
$("#cascade_protection_module").removeAttr("disabled");
|
||||
$("#text-id_parent").attr("required", "required");
|
||||
}
|
||||
|
@ -1263,7 +1432,7 @@ ui_require_jquery_file('bgiframe');
|
|||
$("#text-id_parent").removeAttr("required");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var safe_mode_checked = $("#checkbox-safe_mode").is(":checked");
|
||||
if (safe_mode_checked) {
|
||||
$("#safe_mode_module").removeAttr("disabled");
|
||||
|
@ -1271,10 +1440,10 @@ ui_require_jquery_file('bgiframe');
|
|||
else {
|
||||
$("#safe_mode_module").attr("disabled", 'disabled');
|
||||
}
|
||||
|
||||
|
||||
$("#checkbox-safe_mode").change(function () {
|
||||
var safe_mode_checked = $("#checkbox-safe_mode").is(":checked");
|
||||
|
||||
|
||||
if (safe_mode_checked) {
|
||||
$("#safe_mode_module").removeAttr("disabled");
|
||||
}
|
||||
|
@ -1308,5 +1477,17 @@ ui_require_jquery_file('bgiframe');
|
|||
}
|
||||
});
|
||||
|
||||
check_basic_options();
|
||||
$('#id_os').on('change', function(){
|
||||
check_basic_options();
|
||||
})
|
||||
});
|
||||
|
||||
function check_basic_options(){
|
||||
if ($('#id_os').val() == 1 || $('#id_os').val() == 8 || $('#id_os').val() == 9) {
|
||||
$('#basic_options').removeClass('invisible');
|
||||
} else {
|
||||
$('#basic_options').addClass('invisible');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -232,7 +232,8 @@ if ($create_agent) {
|
|||
$cps = (int) get_parameter_switch('cps', -1);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
|
||||
$ignore_unknown = (int) get_parameter_switch('ignore_unknown', 0);
|
||||
$agent_version = $config['current_package'];
|
||||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
||||
|
||||
|
@ -300,6 +301,8 @@ if ($create_agent) {
|
|||
'cps' => $cps,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
'ignore_unknown' => $ignore_unknown,
|
||||
'agent_version' => $agent_version,
|
||||
]
|
||||
);
|
||||
} else {
|
||||
|
@ -1015,6 +1018,14 @@ if ($update_agent) {
|
|||
$satellite_server = (int) get_parameter('satellite_server', 0);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
$ignore_unknown = (int) get_parameter_switch('ignore_unknown', 0);
|
||||
$security_vunerability = (int) get_parameter_switch('security_vunerability', 0);
|
||||
$security_hardening = (int) get_parameter_switch('security_hardening', 0);
|
||||
$security_monitoring = (int) get_parameter_switch('security_monitoring', 0);
|
||||
$enable_log_collector = (int) get_parameter_switch('enable_log_collector', 0);
|
||||
$enable_inventory = (int) get_parameter_switch('enable_inventory', 0);
|
||||
$enable_basic_options = get_parameter('enable_basic_options');
|
||||
$options_package = get_parameter('options_package', '0');
|
||||
|
||||
if ($fields === false) {
|
||||
$fields = [];
|
||||
|
@ -1142,6 +1153,7 @@ if ($update_agent) {
|
|||
'satellite_server' => $satellite_server,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
'ignore_unknown' => $ignore_unknown,
|
||||
];
|
||||
|
||||
if ($config['metaconsole_agent_cache'] == 1) {
|
||||
|
@ -1243,6 +1255,81 @@ if ($update_agent) {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($enable_basic_options === '1') {
|
||||
// Get all plugins (BASIC OPTIONS).
|
||||
$agent = new PandoraFMS\Agent($id_agente);
|
||||
$plugins = $agent->getPlugins();
|
||||
foreach ($plugins as $key => $row) {
|
||||
// Only check plugins when agent package is bigger than 774.
|
||||
if ($options_package === '1') {
|
||||
if (preg_match('/pandora_hardening/', $row['raw']) === 1) {
|
||||
if ($security_hardening === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$agent->enablePlugins($row['raw']);
|
||||
}
|
||||
} else {
|
||||
if ($row['disabled'] !== 1) {
|
||||
$agent->disablePlugins($row['raw']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/(module_plugin grep_log_module ).*/', $row['raw']) === 1) {
|
||||
if ($enable_log_collector === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$agent->enablePlugins($row['raw']);
|
||||
}
|
||||
} else {
|
||||
if ($row['disabled'] !== 1) {
|
||||
$agent->disablePlugins($row['raw']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Inventory switch enable when basic options are enabled.
|
||||
if (preg_match('/(module_plugin inventory).*/', $row['raw']) === 1) {
|
||||
if ($enable_inventory === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$agent->enablePlugins($row['raw']);
|
||||
}
|
||||
} else {
|
||||
if ($row['disabled'] !== 1) {
|
||||
$agent->disablePlugins($row['raw']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Inventory switch enable when basic options are enabled.
|
||||
if (preg_match('/.vbs/', $row['raw']) === 1 && preg_match('/nettraffic.vbs/', $row['raw']) === 0 && preg_match('/software_installed.vbs/', $row['raw']) === 0 && preg_match('/df.vbs/', $row['raw']) === 0 && preg_match('/win_cf.vbs/', $row['raw']) === 0) {
|
||||
if ($enable_inventory === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$agent->enablePlugins($row['raw']);
|
||||
}
|
||||
} else {
|
||||
if ($row['disabled'] !== 1) {
|
||||
$agent->disablePlugins($row['raw']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$modules = $agent->getModules();
|
||||
foreach ($modules as $key => $row) {
|
||||
if (preg_match('/PandoraAgent_log/', $row['raw']) === 1) {
|
||||
if ($enable_log_collector === 1) {
|
||||
if ($row['disabled'] === 1) {
|
||||
$agent->enableModule($row['module_name'], $row);
|
||||
}
|
||||
} else {
|
||||
if ($row['disabled'] !== 1) {
|
||||
$agent->disableModule($row['module_name'], $row);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Read agent data
|
||||
|
@ -1300,6 +1387,20 @@ if ($id_agente) {
|
|||
$satellite_server = (int) $agent['satellite_server'];
|
||||
$fixed_ip = (int) $agent['fixed_ip'];
|
||||
$vul_scan_enabled = (int) $agent['vul_scan_enabled'];
|
||||
$ignore_unknown = (int) $agent['ignore_unknown'];
|
||||
if (strpos($agent['agent_version'], '(')) {
|
||||
$agent_version = (int) explode('.', explode('(', $agent['agent_version'])[0])[2];
|
||||
} else {
|
||||
if (strpos($agent['agent_version'], 'build') || strpos($agent['agent_version'], 'Build')) {
|
||||
$agent_version = (int) explode('.', explode('build', $agent['agent_version'])[0])[2];
|
||||
} else {
|
||||
if (strpos($agent['agent_version'], '.')) {
|
||||
$agent_version = (int) explode('.', $agent['agent_version'])[2];
|
||||
} else {
|
||||
$agent_version = $agent['agent_version'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$update_module = (bool) get_parameter('update_module');
|
||||
|
@ -1537,6 +1638,7 @@ if ($update_module === true || $create_module === true) {
|
|||
|
||||
$custom_id = (string) get_parameter('custom_id');
|
||||
$history_data = (int) get_parameter('history_data');
|
||||
$ignore_unknown = (int) get_parameter('ignore_unknown');
|
||||
$dynamic_interval = (int) get_parameter('dynamic_interval');
|
||||
$dynamic_max = (int) get_parameter('dynamic_max');
|
||||
$dynamic_min = (int) get_parameter('dynamic_min');
|
||||
|
@ -1745,6 +1847,7 @@ if ($update_module) {
|
|||
'max_retries' => $max_retries,
|
||||
'custom_id' => $custom_id,
|
||||
'history_data' => $history_data,
|
||||
'ignore_unknown' => $ignore_unknown,
|
||||
'dynamic_interval' => $dynamic_interval,
|
||||
'dynamic_max' => $dynamic_max,
|
||||
'dynamic_min' => $dynamic_min,
|
||||
|
@ -1946,6 +2049,7 @@ if ($create_module) {
|
|||
'id_modulo' => $id_module,
|
||||
'custom_id' => $custom_id,
|
||||
'history_data' => $history_data,
|
||||
'ignore_unknown' => $ignore_unknown,
|
||||
'dynamic_interval' => $dynamic_interval,
|
||||
'dynamic_max' => $dynamic_max,
|
||||
'dynamic_min' => $dynamic_min,
|
||||
|
@ -2162,6 +2266,28 @@ if ($update_module || $create_module
|
|||
|| ($module_in_policy && !$module_linked)
|
||||
) {
|
||||
if ($success_action > 0) {
|
||||
if (empty($old_configuration_data) === true
|
||||
&& empty($configuration_data) === true && $disabled === '0'
|
||||
&& ($enable_module || $disable_module)
|
||||
) {
|
||||
$modulo_nombre = io_safe_output(
|
||||
db_get_value(
|
||||
'nombre',
|
||||
'tagente_modulo',
|
||||
'id_agente_modulo',
|
||||
(empty($disable_module) === false) ? $disable_module : $enable_module
|
||||
)
|
||||
);
|
||||
|
||||
$old_configuration_data = config_agents_get_module_from_conf(
|
||||
$id_agente,
|
||||
$modulo_nombre
|
||||
);
|
||||
$configuration_data = $old_configuration_data;
|
||||
|
||||
$disabled = (empty($disable_module) === false) ? true : false;
|
||||
}
|
||||
|
||||
enterprise_hook(
|
||||
'config_agents_write_module_in_conf',
|
||||
[
|
||||
|
@ -2310,7 +2436,6 @@ if ($disable_module) {
|
|||
$modulo_nombre = io_safe_output($modulo_nombre['nombre']);
|
||||
|
||||
if ($result === NOERR) {
|
||||
enterprise_hook('config_agents_disable_module_conf', [$id_agente, $disable_module]);
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_MODULE_MANAGEMENT,
|
||||
'Disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']
|
||||
|
|
|
@ -217,6 +217,7 @@ foreach ($fields as $field) {
|
|||
array_push($table->data, $data);
|
||||
}
|
||||
|
||||
$tablePagination = '';
|
||||
if ($fields) {
|
||||
html_print_table($table);
|
||||
$tablePagination = ui_pagination($count_fields, false, $offset, 0, true, 'offset', false);
|
||||
|
@ -231,6 +232,9 @@ html_print_action_buttons(
|
|||
[ 'icon' => 'next' ],
|
||||
true
|
||||
),
|
||||
['type' => 'form_action']
|
||||
[
|
||||
'type' => 'form_action',
|
||||
'right_content' => $tablePagination,
|
||||
],
|
||||
);
|
||||
echo '</form>';
|
||||
|
|
|
@ -566,10 +566,10 @@ if ($search != '') {
|
|||
if ($id != '') {
|
||||
$aux = $id[0]['id_agent'];
|
||||
$search_sql = sprintf(
|
||||
' AND ( nombre LIKE "%%%s%%"
|
||||
OR alias LIKE "%%%s%%"
|
||||
OR comentarios LIKE "%%%s%%"
|
||||
OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%")
|
||||
' AND ( REPLACE(nombre, " ", " ") LIKE "%%%s%%"
|
||||
OR REPLACE(alias, " ", " ") LIKE "%%%s%%"
|
||||
OR REPLACE(comentarios, " ", " ") LIKE "%%%s%%"
|
||||
OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND REPLACE(description, " ", " ") LIKE "%%%s%%")
|
||||
OR tagente.id_agente = %d',
|
||||
$search,
|
||||
$search,
|
||||
|
@ -591,10 +591,10 @@ if ($search != '') {
|
|||
$search_sql .= ')';
|
||||
} else {
|
||||
$search_sql = sprintf(
|
||||
' AND ( nombre
|
||||
LIKE "%%%s%%" OR alias
|
||||
LIKE "%%%s%%" OR comentarios LIKE "%%%s%%"
|
||||
OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%"))',
|
||||
' AND ( REPLACE(nombre, " ", " ")
|
||||
LIKE "%%%s%%" OR REPLACE(alias, " ", " ")
|
||||
LIKE "%%%s%%" OR REPLACE(comentarios, " ", " ") LIKE "%%%s%%"
|
||||
OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND REPLACE(description, " ", " ") LIKE "%%%s%%"))',
|
||||
$search,
|
||||
$search,
|
||||
$search,
|
||||
|
@ -958,12 +958,33 @@ if ($agents !== false) {
|
|||
);
|
||||
|
||||
if ($check_aw === true && is_management_allowed() === true) {
|
||||
if ($agent['id_os'] != CLUSTER_OS_ID) {
|
||||
$onClickActionDeleteAgent = 'if (!confirm(\' '.__('Are you sure?').'\')) return false;';
|
||||
} else {
|
||||
$onClickActionDeleteAgent = 'if (!confirm(\' '.__('WARNING! - You are going to delete a cluster agent. Are you sure?').'\')) return false;';
|
||||
$clusters = agents_get_agent_belongs_cluster($agent['id_agente']);
|
||||
$cluster_belongs = '';
|
||||
if (empty($clusters) === false) {
|
||||
$clusters = array_reduce(
|
||||
$clusters,
|
||||
function ($carry, $item) {
|
||||
$carry[] = $item['name'];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
$cluster_belongs = implode(', ', $clusters);
|
||||
}
|
||||
|
||||
$msg = '';
|
||||
if ($agent['id_os'] == CLUSTER_OS_ID) {
|
||||
$msg .= __('You are going to delete a cluster agent');
|
||||
$msg .= '. ';
|
||||
} else if (empty($cluster_belongs) === false) {
|
||||
$msg .= __('This agent belongs to the clusters');
|
||||
$msg .= ': ';
|
||||
$msg .= $cluster_belongs;
|
||||
$msg .= '. ';
|
||||
}
|
||||
|
||||
$msg .= __('Are you sure?');
|
||||
$onClickActionDeleteAgent = 'if (!confirm(\' '.$msg.'\')) return false;';
|
||||
|
||||
$agentActionButtons[] = html_print_menu_button(
|
||||
[
|
||||
'href' => ui_get_full_url(
|
||||
|
|
|
@ -38,6 +38,7 @@ $isFunctionPolicies = enterprise_include_once('include/functions_policies.php');
|
|||
require_once $config['homedir'].'/include/functions_modules.php';
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
require_once $config['homedir'].'/include/functions_servers.php';
|
||||
require_once $config['homedir'].'/include/functions_macros.php';
|
||||
|
||||
$search_string = get_parameter('search_string');
|
||||
|
||||
|
@ -574,7 +575,7 @@ $where = sprintf('delete_pending = 0 AND id_agente = %s', $id_agente);
|
|||
$search_string_entities = io_safe_input($search_string);
|
||||
|
||||
$basic_where = sprintf(
|
||||
"(nombre LIKE '%%%s%%' OR nombre LIKE '%%%s%%' OR descripcion LIKE '%%%s%%' OR descripcion LIKE '%%%s%%') AND",
|
||||
"(REPLACE(nombre, ' ', ' ') LIKE '%%%s%%' OR REPLACE(nombre, ' ', ' ') LIKE '%%%s%%' OR REPLACE(descripcion, ' ', ' ') LIKE '%%%s%%' OR REPLACE(descripcion, ' ', ' ') LIKE '%%%s%%') AND",
|
||||
$search_string,
|
||||
$search_string_entities,
|
||||
$search_string,
|
||||
|
@ -949,7 +950,23 @@ if ($modules !== false) {
|
|||
);
|
||||
|
||||
if (strlen($module['ip_target']) !== 0) {
|
||||
$title .= '<br/>IP: '.$module['ip_target'];
|
||||
// Check if value is custom field.
|
||||
if ($module['ip_target'][0] == '_' && $module['ip_target'][(strlen($module['ip_target']) - 1)] == '_') {
|
||||
$custom_field_name = substr($module['ip_target'], 1, -1);
|
||||
$custom_value = agents_get_agent_custom_field($id_agente, $custom_field_name);
|
||||
if (isset($custom_value) && $custom_value !== false) {
|
||||
$title .= '<br/>IP: '.$custom_value;
|
||||
} else {
|
||||
$array_macros = return_agent_macros($id_agente);
|
||||
if (isset($array_macros[$module['ip_target']])) {
|
||||
$title .= '<br/>IP: '.$array_macros[$module['ip_target']];
|
||||
} else {
|
||||
$title .= '<br/>IP: '.$module['ip_target'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$title .= '<br/>IP: '.$module['ip_target'];
|
||||
}
|
||||
}
|
||||
|
||||
// This module is initialized ? (has real data).
|
||||
|
|
|
@ -305,6 +305,7 @@ if ($id_agent_module) {
|
|||
$max_retries = $module['max_retries'];
|
||||
$custom_id = $module['custom_id'];
|
||||
$history_data = $module['history_data'];
|
||||
$ignore_unknown = $module['ignore_unknown'];
|
||||
$dynamic_interval = $module['dynamic_interval'];
|
||||
$dynamic_max = $module['dynamic_max'];
|
||||
$dynamic_min = $module['dynamic_min'];
|
||||
|
@ -443,6 +444,7 @@ if ($id_agent_module) {
|
|||
$plugin_parameter = '';
|
||||
$custom_id = '';
|
||||
$history_data = 1;
|
||||
$ignore_unknown = 0;
|
||||
$dynamic_interval = 0;
|
||||
$dynamic_min = 0;
|
||||
$dynamic_max = 0;
|
||||
|
|
|
@ -645,6 +645,15 @@ if ($disabledBecauseInPolicy) {
|
|||
);
|
||||
}
|
||||
|
||||
$table_simple->data['caption_ignore_unknown'][0] = __('Ignore unknown').ui_print_help_tip(_('This disables the module\'s state calculation to unknown, so it will never transition to unknown. The state it reflects is the last known status.'), true);
|
||||
$table_simple->data['ignore_unknown'][0] = html_print_checkbox_switch(
|
||||
'ignore_unknown',
|
||||
1,
|
||||
$ignore_unknown,
|
||||
true,
|
||||
false
|
||||
);
|
||||
|
||||
// Business Logic for Advanced Part.
|
||||
global $__code_from;
|
||||
// Code comes from module_editor.
|
||||
|
@ -1391,7 +1400,6 @@ $table_advanced->data['made_enabled'][0] = html_print_checkbox_switch(
|
|||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'wp100 static'
|
||||
);
|
||||
|
||||
|
@ -1427,7 +1435,7 @@ if ($__code_from === 'modules') {
|
|||
$throw_unknown_events_check = policy_module_is_disable_type_event($__id_pol_mod, EVENTS_GOING_UNKNOWN);
|
||||
}
|
||||
|
||||
$table_advanced->data['caption_discard_unknown'][0] = __('Discard unknown events');
|
||||
$table_advanced->data['caption_discard_unknown'][0] = __('Discard unknown events').ui_print_help_tip(__('With this mode, the unknown state will be detected, but it will not generate events.'), true);
|
||||
$table_advanced->data['discard_unknown'][0] = html_print_checkbox_switch(
|
||||
'throw_unknown_events',
|
||||
1,
|
||||
|
@ -2000,23 +2008,18 @@ ui_require_jquery_file('json');
|
|||
$('#' + thisLabel).prop('checked', true);
|
||||
$('#' + thisLabel).siblings().prop('checked', false);
|
||||
|
||||
if ($('#radius-percentage_warning').prop('checked') === true || $('#radius-percentage_critical').prop('checked') === true) {
|
||||
var type_selected = $("#id_module_type").val();
|
||||
var type_names = jQuery.parseJSON(Base64.decode($('#hidden-type_names').val()));
|
||||
var type_name_selected = type_names[type_selected];
|
||||
|
||||
if (($('#radius-percentage_warning').prop('checked') === true && $('#radius-percentage_critical').prop('checked') === true) || type_name_selected == 'generic_data_string') {
|
||||
paint_graph_values();
|
||||
$("#svg_dinamic").hide();
|
||||
} else {
|
||||
paint_graph_values();
|
||||
$("#svg_dinamic").show();
|
||||
}
|
||||
|
||||
if ($('#radius-percentage_warning').prop('checked') === true) {
|
||||
$('#radius-warning_inverse').hide();
|
||||
$('#label-radius-warning_inverse').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-warning_inverse').prop('checked') === true) {
|
||||
$('#radius-percentage_warning').hide();
|
||||
$('#label-radius-percentage_warning').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-normal_warning').prop('checked') === true) {
|
||||
$('#radius-warning_inverse').show();
|
||||
$('#label-radius-warning_inverse').show();
|
||||
|
@ -2024,17 +2027,6 @@ ui_require_jquery_file('json');
|
|||
$('#label-radius-percentage_warning').show();
|
||||
}
|
||||
|
||||
|
||||
if ($('#radius-percentage_critical').prop('checked') === true) {
|
||||
$('#radius-critical_inverse').hide();
|
||||
$('#label-radius-critical_inverse').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-critical_inverse').prop('checked') === true) {
|
||||
$('#radius-percentage_critical').hide();
|
||||
$('#label-radius-percentage_critical').hide();
|
||||
}
|
||||
|
||||
if ($('#radius-normal_critical').prop('checked') === true) {
|
||||
$('#radius-critical_inverse').show();
|
||||
$('#label-radius-critical_inverse').show();
|
||||
|
@ -2351,30 +2343,48 @@ ui_require_jquery_file('json');
|
|||
var message_error_percentage = '<?php echo __('Please introduce a positive percentage value'); ?>';
|
||||
|
||||
//if haven't error
|
||||
if (max_w == 0 || max_w > min_w) {
|
||||
if (max_c == 0 || max_c > min_c) {
|
||||
paint_graph_status(
|
||||
min_w, max_w, min_c, max_c, inverse_w,
|
||||
inverse_c, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
if (max_w == 0 || max_w > min_w || $('#radius-percentage_warning').is(':checked') === true) {
|
||||
if (max_c == 0 || max_c > min_c || $('#radius-percentage_critical').is(':checked') === true) {
|
||||
error_c = 0;
|
||||
error_w = 0;
|
||||
} else {
|
||||
error_c = 1;
|
||||
paint_graph_status(
|
||||
0, 0, 0, 0, 0, 0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
min_w = 0;
|
||||
max_w = 0;
|
||||
min_c = 0;
|
||||
max_c = 0;
|
||||
inverse_w = 0;
|
||||
inverse_c = 0;
|
||||
}
|
||||
} else {
|
||||
if (max_c !== 0 && max_c < min_c && $('#radius-percentage_critical').is(':checked') === false) {
|
||||
error_c = 2;
|
||||
}
|
||||
error_w = 1;
|
||||
paint_graph_status(
|
||||
0, 0, 0, 0, 0, 0, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
min_w = 0;
|
||||
max_w = 0;
|
||||
min_c = 0;
|
||||
max_c = 0;
|
||||
inverse_w = 0;
|
||||
inverse_c = 0;
|
||||
}
|
||||
|
||||
if ($('#radius-percentage_warning').is(':checked') === true){
|
||||
min_w = 0;
|
||||
max_w = 0;
|
||||
}
|
||||
|
||||
if ($('#radius-percentage_critical').is(':checked') === true){
|
||||
min_c = 0;
|
||||
max_c = 0;
|
||||
}
|
||||
|
||||
paint_graph_status(
|
||||
min_w, max_w, min_c, max_c, inverse_w,
|
||||
inverse_c, error_w, error_c,
|
||||
legend_normal, legend_warning, legend_critical,
|
||||
message_error_warning, message_error_critical
|
||||
);
|
||||
}
|
||||
|
||||
/* ]]> */
|
||||
|
|
|
@ -171,7 +171,7 @@ foreach ($password_fields as $k => $p) {
|
|||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
if ($("#id_plugin").val() === 0) {
|
||||
if ($("#id_plugin").val() !== 0) {
|
||||
changePluginSelect();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -131,9 +131,10 @@ if ($module_service_synthetic_selector !== ENTERPRISE_NOT_HOOK) {
|
|||
}
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Agent');
|
||||
$data[1] = __('Module');
|
||||
$data[2] = __('Period');
|
||||
|
||||
$data[0] = __('Module');
|
||||
$data[1] = __('Period');
|
||||
|
||||
$table_simple->cellclass['caption_prediction_module'][0] = 'w33p';
|
||||
$table_simple->cellclass['caption_prediction_module'][1] = 'w33p';
|
||||
$table_simple->cellclass['caption_prediction_module'][2] = 'w33p';
|
||||
|
@ -163,34 +164,68 @@ $params['none_module_text'] = __('Select Module');
|
|||
$params['use_hidden_input_idagent'] = true;
|
||||
$params['input_style'] = 'width: 100%;';
|
||||
$params['hidden_input_idagent_id'] = 'hidden-id_agente_module_prediction';
|
||||
$data[0] = ui_print_agent_autocomplete_input($params);
|
||||
|
||||
if ($id_agente > 0) {
|
||||
$predictionModuleInput = html_print_select_from_sql(
|
||||
'SELECT id_agente_modulo, nombre
|
||||
FROM tagente_modulo
|
||||
WHERE delete_pending = 0
|
||||
AND history_data = 1
|
||||
AND id_agente = '.$id_agente_clean.'
|
||||
AND id_agente_modulo <> '.$id_agente_modulo,
|
||||
if (strstr($page, 'policy_modules') === false) {
|
||||
$modules = agents_get_modules($id_agente);
|
||||
|
||||
$predictionModuleInput = html_print_select(
|
||||
$modules,
|
||||
'prediction_module',
|
||||
$prediction_module,
|
||||
'',
|
||||
__('Select Module'),
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width: 100%;'
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'pm'
|
||||
);
|
||||
} else {
|
||||
$predictionModuleInput = '<select id="prediction_module" name="custom_integer_1" disabled="disabled"><option value="0">Select an Agent first</option></select>';
|
||||
$modules = index_array(policies_get_modules($policy_id, false, ['id', 'name']));
|
||||
|
||||
$predictionModuleInput = html_print_select(
|
||||
$modules,
|
||||
'id_module_policy',
|
||||
$module['custom_integer_1'],
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$data[1] = $predictionModuleInput;
|
||||
$data[2] = html_print_select([__('Weekly'), __('Monthly'), __('Daily')], 'custom_integer_2', $custom_integer_2, '', '', 0, true, false, true, '', false, 'width: 100%;');
|
||||
$data[2] .= html_print_input_hidden('id_agente_module_prediction', $id_agente, true);
|
||||
$data[0] = $predictionModuleInput;
|
||||
$data[1] = html_print_select([__('Weekly'), __('Monthly'), __('Daily')], 'custom_integer_2', $custom_integer_2, '', '', 0, true, false, true, '', false, 'width: 100%;');
|
||||
$data[1] .= html_print_input_hidden('id_agente_module_prediction', $id_agente, true);
|
||||
|
||||
$table_simple->cellclass['prediction_module'][0] = 'w33p';
|
||||
$table_simple->cellclass['prediction_module'][1] = 'w33p';
|
||||
$table_simple->cellclass['prediction_module'][2] = 'w33p';
|
||||
|
@ -264,7 +299,7 @@ if ($selector_form !== ENTERPRISE_NOT_HOOK) {
|
|||
}
|
||||
|
||||
// Synthetic modules are an Enterprise feature.
|
||||
$synthetic_module_form = enterprise_hook('get_synthetic_module_form');
|
||||
$synthetic_module_form = enterprise_hook('get_synthetic_module_form', [$policy_id]);
|
||||
if ($synthetic_module_form !== ENTERPRISE_NOT_HOOK) {
|
||||
$data = [];
|
||||
$data[0] = $synthetic_module_form;
|
||||
|
|
|
@ -31,13 +31,14 @@ if (is_ajax()) {
|
|||
return;
|
||||
}
|
||||
|
||||
echo '<h3>'.$template['name'].'</h3>';
|
||||
echo '<h3 style="background-color: #14524f">'.$template['name'].'</h3>';
|
||||
echo html_print_image('images/info.svg', true, ['class' => 'invert_filter']);
|
||||
echo ui_print_alert_template_example($template['id'], true, true, false);
|
||||
echo '<br />';
|
||||
echo '<br />';
|
||||
echo '<strong>'.__('Type').': </strong>';
|
||||
echo alerts_get_alert_templates_type_name($template['type']);
|
||||
|
||||
echo '<br />';
|
||||
echo ui_print_alert_template_example($template['id'], true);
|
||||
|
||||
echo '<br />';
|
||||
|
||||
if ($template['description'] != '') {
|
||||
|
|
|
@ -256,7 +256,7 @@ $schedule = io_safe_output(
|
|||
|
||||
$data[0] = '';
|
||||
$data[0] .= html_print_input_hidden('schedule', $schedule, true);
|
||||
$data[0] .= '<div id="calendar_map"></div>';
|
||||
$data[0] .= '<div id="calendar_map" class="alert_view_calendar"></div>';
|
||||
|
||||
$data[1] = '';
|
||||
$table_conditions->data[] = $data;
|
||||
|
|
|
@ -520,7 +520,7 @@ $(document).ready (function () {
|
|||
name: "id_action",
|
||||
value: "<?php echo (int) $id; ?>"
|
||||
});
|
||||
|
||||
|
||||
jQuery.post (<?php echo "'".ui_get_full_url('ajax.php', false, false, false)."'"; ?>,
|
||||
values,
|
||||
function (data, status) {
|
||||
|
@ -552,6 +552,9 @@ $(document).ready (function () {
|
|||
|
||||
// If the row is empty, hide it
|
||||
if (field_row == '') {
|
||||
// Clear hidden fields.
|
||||
$("[name=field" + i + "_value]").val('');
|
||||
$("[name=field" + i + "_recovery_value]").val('')
|
||||
$table_macros_field.hide();
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1240,7 +1240,7 @@ if ($step == 2) {
|
|||
'priority',
|
||||
$priority,
|
||||
'',
|
||||
0,
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
|
|
|
@ -27,7 +27,6 @@ if (! check_acl($config['id_user'], 0, 'DM')) {
|
|||
|
||||
// Get some general DB stats (not very heavy)
|
||||
// NOTE: this is not realtime monitoring stats, are more focused on DB sanity
|
||||
$stat_access = db_get_sql('SELECT COUNT(*) FROM tagent_access WHERE id_agent != 0');
|
||||
$stat_data = db_get_sql('SELECT COUNT(*) FROM tagente_datos WHERE id_agente_modulo != 0');
|
||||
$stat_data_log4x = db_get_sql('SELECT COUNT(*) FROM tagente_datos_log4x WHERE id_agente_modulo != 0');
|
||||
$stat_data_string = db_get_sql('SELECT COUNT(*) FROM tagente_datos_string WHERE id_agente_modulo != 0');
|
||||
|
@ -149,18 +148,6 @@ echo $stat_modules;
|
|||
echo '</b></td></tr>';
|
||||
|
||||
|
||||
|
||||
echo '<tr class="rowOdd"><td>';
|
||||
echo __('Total agent access records');
|
||||
echo '<td><b>';
|
||||
if ($stat_access > $max_access) {
|
||||
echo "<font color='#ff0000'>$stat_access</font>";
|
||||
} else {
|
||||
echo $stat_access;
|
||||
}
|
||||
|
||||
echo '</b></td></tr>';
|
||||
|
||||
// Sanity
|
||||
echo '<tr><th colspan=2><i>';
|
||||
echo __('Database sanity');
|
||||
|
|
|
@ -115,6 +115,7 @@ $fields_available['module_status'] = __('Module Status');
|
|||
$fields_available['mini_severity'] = __('Severity mini');
|
||||
$fields_available['module_custom_id'] = __('Module custom ID');
|
||||
$fields_available['custom_data'] = __('Custom data');
|
||||
$fields_available['event_custom_id'] = __('Event Custom ID');
|
||||
|
||||
|
||||
// Remove fields already selected.
|
||||
|
|
|
@ -0,0 +1,167 @@
|
|||
<?php
|
||||
/**
|
||||
* File repository
|
||||
*
|
||||
* @category Files repository
|
||||
* @package Pandora FMS
|
||||
* @subpackage Enterprise
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2007-2023 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
* You cannnot redistribute it without written permission of copyright holder.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
// ACL Check.
|
||||
check_login();
|
||||
if (check_acl($config['id_user'], 0, 'PM') === false) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access to Files repository'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$tab = get_parameter('tab', '');
|
||||
|
||||
$url = 'index.php?sec=extensions&sec2=godmode/files_repo/files_repo';
|
||||
|
||||
// Header tabs.
|
||||
$godmode['text'] = '<a href="'.$url.'&tab=configuration">';
|
||||
$godmode['text'] .= html_print_image(
|
||||
'images/configuration@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Administration view'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$godmode['text'] .= '</a>';
|
||||
$godmode['godmode'] = 1;
|
||||
|
||||
$operation['text'] = '<a href="'.$url.'">';
|
||||
$operation['text'] .= html_print_image(
|
||||
'images/see-details@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Operation view'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$operation['text'] .= '</a>';
|
||||
$operation['operation'] = 1;
|
||||
|
||||
$operation['active'] = 1;
|
||||
$godmode['active'] = 0;
|
||||
if ($tab === 'configuration') {
|
||||
$godmode['active'] = 1;
|
||||
$operation['active'] = 0;
|
||||
}
|
||||
|
||||
$onheader = [
|
||||
'godmode' => $godmode,
|
||||
'operation' => $operation,
|
||||
];
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Extensions'),
|
||||
'images/extensions.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
$onheader,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Tools'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Files repository'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
require_once __DIR__.'/../../include/functions_files_repository.php';
|
||||
|
||||
// Directory files_repo check.
|
||||
if (files_repo_check_directory() === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
$server_content_length = 0;
|
||||
if (isset($_SERVER['CONTENT_LENGTH'])) {
|
||||
$server_content_length = $_SERVER['CONTENT_LENGTH'];
|
||||
}
|
||||
|
||||
// Check for an anoying error that causes the $_POST and $_FILES arrays.
|
||||
// were empty if the file is larger than the post_max_size.
|
||||
if (intval($server_content_length) > 0 && empty($_POST)) {
|
||||
ui_print_error_message(
|
||||
__('Problem uploading. Please check this PHP runtime variable values: <pre> post_max_size (currently '.ini_get('post_max_size').')</pre>')
|
||||
);
|
||||
}
|
||||
|
||||
// GET and POST parameters.
|
||||
$file_id = (int) get_parameter('file_id');
|
||||
$add_file = (bool) get_parameter('add_file');
|
||||
$update_file = (bool) get_parameter('update_file');
|
||||
$delete_file = (bool) get_parameter('delete');
|
||||
|
||||
// File add or update.
|
||||
if ($add_file === true || ($update_file === true && $file_id > 0)) {
|
||||
$groups = get_parameter('groups', []);
|
||||
$public = (bool) get_parameter('public');
|
||||
$description = io_safe_output((string) get_parameter('description'));
|
||||
if (mb_strlen($description, 'UTF-8') > 200) {
|
||||
$description = mb_substr($description, 0, 200, 'UTF-8');
|
||||
}
|
||||
|
||||
$description = io_safe_input($description);
|
||||
|
||||
if ($add_file === true) {
|
||||
$result = files_repo_add_file('upfile', $description, $groups, $public);
|
||||
} else if ($update_file === true) {
|
||||
$result = files_repo_update_file($file_id, $description, $groups, $public);
|
||||
$file_id = 0;
|
||||
}
|
||||
|
||||
if ($result['status'] == false) {
|
||||
ui_print_error_message($result['message']);
|
||||
} else {
|
||||
if ($add_file === true) {
|
||||
ui_print_success_message(__('Successfully created'));
|
||||
} else if ($update_file === true) {
|
||||
ui_print_success_message(__('Successfully updated'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// File delete.
|
||||
if ($delete_file === true && $file_id > 0) {
|
||||
$result = files_repo_delete_file($file_id);
|
||||
if ($result !== -1) {
|
||||
ui_print_result_message($result, __('Successfully deleted'), __('Could not be deleted'));
|
||||
}
|
||||
|
||||
$file_id = 0;
|
||||
}
|
||||
|
||||
$operation['active'] = 1;
|
||||
if ($tab === 'configuration') {
|
||||
include_once __DIR__.'/files_repo_form.php';
|
||||
} else {
|
||||
include_once __DIR__.'/files_repo_list.php';
|
||||
}
|
|
@ -1,20 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* File repository Form
|
||||
*
|
||||
* @category Files repository
|
||||
* @package Pandora FMS
|
||||
* @subpackage Enterprise
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2007-2023 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
* You cannnot redistribute it without written permission of copyright holder.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - https://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2023 Pandora FMS
|
||||
// Please see https://pandorafms.com/community/ 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;
|
||||
|
||||
$full_extensions_dir = $config['homedir'].'/'.EXTENSIONS_DIR.'/';
|
||||
require_once $full_extensions_dir.'files_repo/functions_files_repo.php';
|
||||
|
||||
$file = [];
|
||||
$file['name'] = '';
|
||||
|
@ -117,6 +124,10 @@ if ($file_id > 0) {
|
|||
'file_id',
|
||||
$file_id,
|
||||
true
|
||||
).html_print_input_hidden(
|
||||
'update_file',
|
||||
1,
|
||||
true
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
@ -150,8 +161,8 @@ if ($file_id > 0) {
|
|||
|
||||
$table->data[] = $row;
|
||||
|
||||
$url = ui_get_full_url('index.php?sec=godmode/extensions&sec2=extensions/files_repo');
|
||||
echo "<form method='post' action='$url' enctype='multipart/form-data'>";
|
||||
$url = ui_get_full_url('index.php?sec=extensions&sec2=godmode/files_repo/files_repo');
|
||||
echo '<form method="post" action="'.$url.'" enctype="multipart/form-data">';
|
||||
html_print_table($table);
|
||||
html_print_action_buttons($submit_button);
|
||||
echo '</form>';
|
|
@ -1,54 +1,60 @@
|
|||
<?php
|
||||
/**
|
||||
* Get public file repository.
|
||||
*
|
||||
* @category Files repository
|
||||
* @package Pandora FMS
|
||||
* @subpackage Enterprise
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2007-2023 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
* You cannnot redistribute it without written permission of copyright holder.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - https://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2023 Pandora FMS
|
||||
// Please see https://pandorafms.com/community/ for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser 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.
|
||||
require_once '../../include/config.php';
|
||||
|
||||
$file_hash = (string) get_parameter('file');
|
||||
|
||||
// Only allow 1 parameter in the request
|
||||
// Only allow 1 parameter in the request.
|
||||
$check_request = (count($_REQUEST) === 1) ? true : false;
|
||||
$check_get = (count($_GET) === 1) ? true : false;
|
||||
$check_post = (count($_POST) === 0) ? true : false;
|
||||
// Only allow the parameter 'file'
|
||||
$check_parameter = (!empty($file_hash)) ? true : false;
|
||||
|
||||
// Only allow the parameter 'file'.
|
||||
$check_parameter = (empty($file_hash) === false) ? true : false;
|
||||
$check_string = (preg_match('/^[0-9a-zA-Z]{8}$/', $file_hash) === 1) ? true : false;
|
||||
|
||||
$checks = ($check_request && $check_get && $check_post && $check_parameter && $check_string);
|
||||
if (!$checks) {
|
||||
throw_error(15);
|
||||
// ERROR
|
||||
}
|
||||
|
||||
// Get the db file row
|
||||
// Get the db file row.
|
||||
$file = db_get_row_filter('tfiles_repo', ['hash' => $file_hash]);
|
||||
if (!$file) {
|
||||
throw_error(10);
|
||||
// ERROR
|
||||
}
|
||||
|
||||
// Case sensitive check
|
||||
// Case sensitive check.
|
||||
$check_hash = ($file['hash'] == $file_hash) ? true : false;
|
||||
if (!$check_hash) {
|
||||
throw_error(10);
|
||||
// ERROR
|
||||
}
|
||||
|
||||
// Get the location
|
||||
// Get the location.
|
||||
$files_repo_path = io_safe_output($config['attachment_store']).'/files_repo';
|
||||
$location = $files_repo_path.'/'.$file['id'].'_'.$file['name'];
|
||||
if (!file_exists($location) || !is_readable($location) || !is_file($location)) {
|
||||
throw_error(5);
|
||||
// ERROR
|
||||
}
|
||||
|
||||
// All checks are fine. Download the file!
|
||||
|
@ -58,6 +64,13 @@ header('Content-Disposition: attachment; filename="'.$file['name'].'"');
|
|||
readfile($location);
|
||||
|
||||
|
||||
/**
|
||||
* Show errors
|
||||
*
|
||||
* @param integer $time Sleep.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function throw_error($time=15)
|
||||
{
|
||||
sleep($time);
|
|
@ -0,0 +1,157 @@
|
|||
<?php
|
||||
/**
|
||||
* File repository List
|
||||
*
|
||||
* @category Files repository
|
||||
* @package Pandora FMS
|
||||
* @subpackage Enterprise
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2007-2023 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
* You cannnot redistribute it without written permission of copyright holder.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
$offset = (int) get_parameter('offset');
|
||||
$filter = [];
|
||||
$filter['limit'] = $config['block_size'];
|
||||
$filter['offset'] = $offset;
|
||||
$filter['order'] = [
|
||||
'field' => 'id',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
|
||||
$files = files_repo_get_files($filter);
|
||||
|
||||
if (empty($files) === false) {
|
||||
$url = ui_get_full_url('index.php?sec=extensions&sec2=godmode/files_repo/files_repo');
|
||||
|
||||
$total_files = files_repo_get_files(false, true);
|
||||
ui_pagination($total_files, $url, $offset);
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
$table->style = [];
|
||||
$table->style[1] = 'max-width: 200px;';
|
||||
$table->style[4] = 'text-align: center;';
|
||||
$table->head = [];
|
||||
$table->head[0] = __('Name');
|
||||
$table->head[1] = __('Description');
|
||||
$table->head[2] = __('Size');
|
||||
$table->head[3] = __('Last modification');
|
||||
$table->head[4] = '';
|
||||
$table->data = [];
|
||||
|
||||
foreach ($files as $file_id => $file) {
|
||||
$data = [];
|
||||
// Prepare the filename for the get_file.php script.
|
||||
$document_root = str_replace(
|
||||
'\\',
|
||||
'/',
|
||||
io_safe_output($_SERVER['DOCUMENT_ROOT'])
|
||||
);
|
||||
$file['location'] = str_replace(
|
||||
'\\',
|
||||
'/',
|
||||
io_safe_output($file['location'])
|
||||
);
|
||||
$relative_path = str_replace($document_root, '', $file['location']);
|
||||
$file_name = explode('/', $file['location']);
|
||||
$file_decoded = $file_name[(count($file_name) - 1)];
|
||||
$file_path = base64_encode($file_decoded);
|
||||
$hash = md5($file_path.$config['server_unique_identifier']);
|
||||
$url_get_file = ui_get_full_url(
|
||||
'include/get_file.php?file='.urlencode($file_path).'&hash='.$hash
|
||||
);
|
||||
|
||||
$date_format = (isset($config['date_format']) === true) ? io_safe_output($config['date_format']) : 'F j, Y - H:m';
|
||||
|
||||
$data[0] = '<a href="'.$url_get_file.'" target="_blank">'.$file['name'].'</a>';
|
||||
// Name.
|
||||
$data[1] = ui_print_truncate_text(
|
||||
$file['description'],
|
||||
'description',
|
||||
true,
|
||||
true
|
||||
);
|
||||
// Description.
|
||||
$data[2] = ui_format_filesize($file['size']);
|
||||
// Size.
|
||||
$data[3] = date($date_format, $file['mtime']);
|
||||
// Last modification.
|
||||
// Public URL.
|
||||
$data[4] = '';
|
||||
$table->cellclass[][4] = 'table_action_buttons';
|
||||
if (empty($file['hash']) === false) {
|
||||
$url_get_public_file = ui_get_full_url(
|
||||
'godmode/files_repo/files_repo_get_file.php?file='.$file['hash']
|
||||
);
|
||||
|
||||
$message = __('Copy to clipboard').': Ctrl+C -> Enter';
|
||||
$action = 'window.prompt(\''.$message.'\', \''.$url_get_public_file.'\');';
|
||||
$data[4] .= '<a href="javascript:;" onclick="'.$action.'">';
|
||||
$data[4] .= html_print_image(
|
||||
'images/world.png',
|
||||
true,
|
||||
['title' => __('Public link')]
|
||||
);
|
||||
// Public link image.
|
||||
$data[4] .= '</a> ';
|
||||
}
|
||||
|
||||
$data[4] .= '<a href="'.$url_get_file.'" target="_blank">';
|
||||
$data[4] .= html_print_image(
|
||||
'images/download.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Download'),
|
||||
'style' => 'padding:3px',
|
||||
]
|
||||
);
|
||||
// Download image.
|
||||
$data[4] .= '</a>';
|
||||
|
||||
$config_url = $url.'&tab=configuration&file_id='.$file_id;
|
||||
$data[4] .= '<a href="'.$config_url.'">';
|
||||
$data[4] .= html_print_image(
|
||||
'images/edit.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Edit'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
// Edit image.
|
||||
$data[4] .= '</a>';
|
||||
|
||||
$delete_url = $url.'&delete=1&file_id='.$file_id;
|
||||
$data[4] .= '<a href="'.$delete_url.'" onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$data[4] .= html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
// Delete image.
|
||||
$data[4] .= '</a>';
|
||||
|
||||
$table->data[] = $data;
|
||||
}
|
||||
|
||||
html_print_table($table);
|
||||
} else {
|
||||
ui_print_info_message(__('No items'));
|
||||
}
|
|
@ -68,7 +68,7 @@ foreach ($layer_ids as $layer_id) {
|
|||
$layer_list[] = [
|
||||
'id' => (strpos($layer_id, 'new_') === false) ? (int) $layer_id : null,
|
||||
'layer_name' => $trimmed_name,
|
||||
'layer_visible' => ((int) $layers[$layer_id]['visible'] === 1),
|
||||
'layer_visible' => ($layers[$layer_id]['visible'] === 'true'),
|
||||
'layer_group' => (int) $layers[$layer_id]['agents_from_group'],
|
||||
'layer_agent_list' => $layers[$layer_id]['agents'],
|
||||
'layer_group_list' => $layers[$layer_id]['groups'],
|
||||
|
@ -243,10 +243,15 @@ switch ($action) {
|
|||
$map_default_altitude = get_parameter('map_default_altitude');
|
||||
$map_group_id = get_parameter('map_group_id');
|
||||
$map_levels_zoom = get_parameter('map_levels_zoom', 16);
|
||||
|
||||
$map_connection_list_temp = explode(',', get_parameter('map_connection_list'));
|
||||
$map_connection_list_temp_string = implode(',', $map_connection_list_temp);
|
||||
if (strlen($map_connection_list_temp_string) > 0) {
|
||||
$where_map_connection = ' WHERE id_tmap_connection IN('.$map_connection_list_temp_string.')';
|
||||
} else {
|
||||
$where_map_connection = '';
|
||||
}
|
||||
|
||||
$listConnectionTemp = db_get_all_rows_sql('SELECT id_tmap_connection, conection_name, group_id FROM tgis_map_connection');
|
||||
$listConnectionTemp = db_get_all_rows_sql('SELECT id_tmap_connection, conection_name, group_id FROM tgis_map_connection'.$where_map_connection);
|
||||
|
||||
foreach ($map_connection_list_temp as $index => $value) {
|
||||
$cleanValue = trim($value);
|
||||
|
@ -256,7 +261,6 @@ switch ($action) {
|
|||
}
|
||||
|
||||
$map_connection_default = get_parameter('map_connection_default');
|
||||
|
||||
$map_connection_list = [];
|
||||
foreach ($listConnectionTemp as $idMapConnection) {
|
||||
$default = 0;
|
||||
|
@ -345,7 +349,7 @@ function deleteConnectionMap(idConnectionMap) {
|
|||
|
||||
checked = $("#radiobtn0001", $("#map_connection_" + idConnectionMap)).attr('checked');
|
||||
$("#map_connection_" + idConnectionMap).remove();
|
||||
|
||||
|
||||
if (checked) {
|
||||
//Checked first, but not is index = 0 maybe.
|
||||
|
||||
|
@ -485,7 +489,7 @@ foreach ($listConnectionTemp as $connectionTemp) {
|
|||
$table->data[1][0] = __('Add Map connection').$iconError;
|
||||
$table->data[1][1] = "<table class='no-class' border='0' id='map_connection'>
|
||||
<tr>
|
||||
<td>".html_print_select($listConnection, 'map_connection_list', '', '', '', '0', true)."
|
||||
<td>".html_print_select($listConnection, 'select-map_connection_list', '', '', '', '0', true)."
|
||||
</td>
|
||||
<td >
|
||||
<a href='javascript: addConnectionMap();'>".html_print_image(
|
||||
|
@ -560,21 +564,23 @@ html_print_table($table);
|
|||
|
||||
$user_groups = users_get_groups($config['user'], 'AR', false);
|
||||
|
||||
echo '<h3>'.__('Layers').'</h3>';
|
||||
echo '<fieldset class="margin-bottom-10"><legend>'.__('Layers').'</legend>';
|
||||
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
$table->valign = [];
|
||||
$table->valign[0] = 'top';
|
||||
$table->valign[1] = 'top';
|
||||
$table->valign[0] = 'top; width: 50%';
|
||||
$table->valign[1] = 'top; width: 50%';
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = '<h4>'.__('List of layers').'</h4>';
|
||||
$table->data[0][1] = '<div class="right">'.html_print_button(__('New layer'), 'new_layer', false, 'newLayer();', 'class="sub add "', true).'</div>';
|
||||
|
||||
$table->data[1][0] = '<table class="databox" border="0" cellpadding="4" cellspacing="4" id="list_layers"></table>';
|
||||
$table->data[1][1] = '<div id="form_layer" class="invisible">
|
||||
$table->data[1][0] = '<div id="form_layer" class="invisible">
|
||||
<table id="form_layer_table" class="" border="0" cellpadding="4" cellspacing="4">
|
||||
<tr>
|
||||
<td colspan="4"><hr/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>'.__('Layer name').':</td>
|
||||
<td>'.html_print_input_text('layer_name_form', '', '', 20, 40, true).'</td>
|
||||
|
@ -592,10 +598,6 @@ $table->data[1][1] = '<div id="form_layer" class="invisible">
|
|||
<td>'.__('Agent').':</td>
|
||||
<td colspan="3">';
|
||||
|
||||
|
||||
|
||||
$table->data[1][1] .= html_print_button(__('Add agent'), 'add_agent', true, '', ['mode' => 'secondary', 'icon' => 'next'], true);
|
||||
|
||||
$params = [];
|
||||
$params['return'] = true;
|
||||
$params['show_helptip'] = true;
|
||||
|
@ -608,12 +610,13 @@ $params['javascript_function_action_after_select'] = 'active_button_add_agent';
|
|||
$params['javascript_is_function_select'] = true;
|
||||
$params['disabled_javascript_on_blur_function'] = false;
|
||||
|
||||
$table->data[1][1] .= ui_print_agent_autocomplete_input($params);
|
||||
|
||||
|
||||
|
||||
$table->data[1][1] .= '</td>
|
||||
$table->data[1][0] .= ui_print_agent_autocomplete_input($params);
|
||||
$buttonAgent = html_print_button(__('Add agent'), 'add_agent', true, '', ['mode' => 'secondary', 'icon' => 'next'], true);
|
||||
$table->data[1][0] .= '</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" align="right">'.$buttonAgent.'</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<h4>'.__('List of Agents to be shown in the layer').'</h4>
|
||||
|
@ -641,7 +644,7 @@ $params['disabled_javascript_on_blur_function'] = false;
|
|||
$agent_for_group_input = ui_print_agent_autocomplete_input($params);
|
||||
$add_group_btn = html_print_button(__('Add'), 'add_group', true, '', ['mode' => 'secondary', 'icon' => 'next'], true);
|
||||
|
||||
$table->data[1][1] .= '<tr><td colspan="4"><hr /></td></tr>
|
||||
$table->data[1][0] .= '<tr><td colspan="4"><hr /></td></tr>
|
||||
<tr>
|
||||
<td>'.__('Group').':</td>
|
||||
<td colspan="3">'.$group_select.'</td>
|
||||
|
@ -661,7 +664,7 @@ $table->data[1][1] .= '<tr><td colspan="4"><hr /></td></tr>
|
|||
</td>
|
||||
</tr>';
|
||||
|
||||
$table->data[1][1] .= '<tr>
|
||||
$table->data[1][0] .= '<tr>
|
||||
<td align="right" colspan="4">'.html_print_button(__('Save Layer'), 'save_layer', false, 'javascript:saveNewLayer();', 'class="sub wand"', true).'
|
||||
'.html_print_input_hidden('current_edit_layer_id', '', true).'
|
||||
</td>
|
||||
|
@ -669,7 +672,12 @@ $table->data[1][1] .= '<tr>
|
|||
</table>
|
||||
</div>';
|
||||
|
||||
$table->data[1][1] = '<fieldset>
|
||||
<legend>'.__('Layers list').'</legend>
|
||||
<table class="databox invisible" border="0" id="list_layers"></table>
|
||||
</fieldset>';
|
||||
html_print_table($table);
|
||||
echo '</fieldset>';
|
||||
|
||||
switch ($action) {
|
||||
case 'save_new':
|
||||
|
@ -1229,6 +1237,8 @@ function getLayerRow (layerId, layerData) {
|
|||
.append($editCol)
|
||||
.append($deleteCol);
|
||||
|
||||
$("#list_layers").removeClass('invisible');
|
||||
|
||||
return $row;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,9 @@ if (is_ajax() === true) {
|
|||
}
|
||||
|
||||
$group = db_get_row('tgrupo', 'id_grupo', $id_group);
|
||||
if (str_contains($group['icon'], '.png') === true) {
|
||||
$group['folder'] = 'groups_small/';
|
||||
}
|
||||
|
||||
echo json_encode($group);
|
||||
return;
|
||||
|
@ -757,6 +760,125 @@ if ($tab == 'tree') {
|
|||
/*
|
||||
* Group tree view.
|
||||
*/
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters filter-table-adv';
|
||||
if (is_metaconsole() === true) {
|
||||
$table->cellspacing = 0;
|
||||
$table->cellpadding = 0;
|
||||
}
|
||||
|
||||
$search_group_string = get_parameter('search_group_string', '');
|
||||
$search_agent_string = get_parameter('search_agent_string', '');
|
||||
$agent_status = get_parameter('agent_status', '');
|
||||
$show_not_init_agents = get_parameter('show_not_init_agents', 1);
|
||||
$show_not_init_modules = get_parameter('show_not_init_modules', 1);
|
||||
$show_full_hirearchy = get_parameter('show_full_hirearchy', 1);
|
||||
|
||||
|
||||
$table->data = [];
|
||||
$table->head = [];
|
||||
$table->style = [];
|
||||
|
||||
$table->style[0] = 'width: 50%;';
|
||||
$table->style[1] = 'width: 50%;';
|
||||
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Search group'),
|
||||
html_print_input_text(
|
||||
'search_group_string',
|
||||
$search_group_string,
|
||||
'',
|
||||
25,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
)
|
||||
);
|
||||
|
||||
$agents_status_list = agents_status_list();
|
||||
|
||||
$table->data[0][1] = html_print_label_input_block(
|
||||
__('Search by agent status').ui_print_help_tip(__('Shows the groups that contain an agent with the status that has been searched'), true),
|
||||
html_print_select(
|
||||
$agents_status_list,
|
||||
'agent_status',
|
||||
$agent_status,
|
||||
'',
|
||||
__('All'),
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'w200p',
|
||||
false,
|
||||
'width: 100%;'
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[1][0] = html_print_label_input_block(
|
||||
__('Search by agent').ui_print_help_tip(__('Shows groups that contain an agent matching the search'), true),
|
||||
html_print_input_text(
|
||||
'search_agent_string',
|
||||
$search_agent_string,
|
||||
'',
|
||||
25,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[1][1] = html_print_label_input_block(
|
||||
__('Show full hierarchy'),
|
||||
html_print_checkbox_switch_extended(
|
||||
'show_full_hirearchy',
|
||||
1,
|
||||
$show_full_hirearchy,
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[3][0] = ' ';
|
||||
|
||||
$table->data[3][1] = html_print_submit_button(
|
||||
__('Filter'),
|
||||
'filter',
|
||||
false,
|
||||
[
|
||||
'class' => 'float-right',
|
||||
'icon' => 'search',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$form = "<form method='post' action=''>";
|
||||
$form .= html_print_table($table, true);
|
||||
$form .= '</form>';
|
||||
|
||||
|
||||
|
||||
ui_toggle(
|
||||
$form,
|
||||
'<span class="subsection_header_title">'.__('Filters').'</span>',
|
||||
'filter_form',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content',
|
||||
'box-flat white_table_graph fixed_filter_bar'
|
||||
);
|
||||
|
||||
|
||||
echo "<div id='tree-controller-recipient'></div>";
|
||||
} else {
|
||||
/*
|
||||
|
@ -826,6 +948,8 @@ if ($tab == 'tree') {
|
|||
);
|
||||
$form .= '</form>';
|
||||
|
||||
|
||||
|
||||
ui_toggle(
|
||||
$form,
|
||||
'<span class="subsection_header_title">'.__('Filters').'</span>',
|
||||
|
@ -1058,87 +1182,119 @@ $tab = 'group_edition';
|
|||
<?php } ?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var treeController = TreeController.getController();
|
||||
treeController.meta = <?php echo (is_metaconsole() === true) ? 1 : 0; ?>;
|
||||
|
||||
if (typeof treeController.recipient != 'undefined' && treeController.recipient.length > 0)
|
||||
treeController.recipient.empty();
|
||||
let show_full_hirearchy = "<?php echo $show_full_hirearchy; ?>";
|
||||
let show_not_init_agents = "<?php echo $show_not_init_agents; ?>";
|
||||
let show_not_init_modules = "<?php echo $show_not_init_modules; ?>";
|
||||
|
||||
showSpinner();
|
||||
$('#checkbox-show_full_hirearchy').on("change", function() {
|
||||
if (show_full_hirearchy == 1) {
|
||||
show_full_hirearchy = 0;
|
||||
} else {
|
||||
show_full_hirearchy = 1;
|
||||
}
|
||||
});
|
||||
|
||||
var parameters = {};
|
||||
parameters['page'] = "include/ajax/tree.ajax";
|
||||
parameters['getChildren'] = 1;
|
||||
parameters['type'] = "<?php echo $tab; ?>";
|
||||
parameters['filter'] = {};
|
||||
parameters['filter']['searchGroup'] = '';
|
||||
parameters['filter']['searchAgent'] = '';
|
||||
parameters['filter']['statusAgent'] = '';
|
||||
parameters['filter']['searchModule'] = '';
|
||||
parameters['filter']['statusModule'] = '';
|
||||
parameters['filter']['groupID'] = '';
|
||||
parameters['filter']['tagID'] = '';
|
||||
parameters['filter']['searchHirearchy'] = 1;
|
||||
parameters['filter']['show_not_init_agents'] = 1;
|
||||
parameters['filter']['show_not_init_modules'] = 1;
|
||||
$('#button-filter').on('click', function(event) {
|
||||
console.log('here');
|
||||
event.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
data: parameters,
|
||||
success: function(data) {
|
||||
if (data.success) {
|
||||
hideSpinner();
|
||||
load_tree(show_full_hirearchy, show_not_init_agents, show_not_init_modules);
|
||||
});
|
||||
|
||||
treeController.init({
|
||||
recipient: $("div#tree-controller-recipient"),
|
||||
page: parameters['page'],
|
||||
emptyMessage: "<?php echo __('No data found'); ?>",
|
||||
foundMessage: "<?php echo __('Found groups'); ?>",
|
||||
tree: data.tree,
|
||||
baseURL: "<?php echo ui_get_full_url(false, false, false, is_metaconsole()); ?>",
|
||||
ajaxURL: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
filter: parameters['filter'],
|
||||
counterTitles: {
|
||||
total: {
|
||||
agents: "<?php echo __('Total agents'); ?>",
|
||||
modules: "<?php echo __('Total modules'); ?>",
|
||||
none: "<?php echo __('Total'); ?>"
|
||||
},
|
||||
alerts: {
|
||||
agents: "<?php echo __('Fired alerts'); ?>",
|
||||
modules: "<?php echo __('Fired alerts'); ?>",
|
||||
none: "<?php echo __('Fired alerts'); ?>"
|
||||
},
|
||||
critical: {
|
||||
agents: "<?php echo __('Critical agents'); ?>",
|
||||
modules: "<?php echo __('Critical modules'); ?>",
|
||||
none: "<?php echo __('Critical'); ?>"
|
||||
},
|
||||
warning: {
|
||||
agents: "<?php echo __('Warning agents'); ?>",
|
||||
modules: "<?php echo __('Warning modules'); ?>",
|
||||
none: "<?php echo __('Warning'); ?>"
|
||||
},
|
||||
unknown: {
|
||||
agents: "<?php echo __('Unknown agents'); ?>",
|
||||
modules: "<?php echo __('Unknown modules'); ?>",
|
||||
none: "<?php echo __('Unknown'); ?>"
|
||||
},
|
||||
not_init: {
|
||||
agents: "<?php echo __('Not init agents'); ?>",
|
||||
modules: "<?php echo __('Not init modules'); ?>",
|
||||
none: "<?php echo __('Not init'); ?>"
|
||||
},
|
||||
ok: {
|
||||
agents: "<?php echo __('Normal agents'); ?>",
|
||||
modules: "<?php echo __('Normal modules'); ?>",
|
||||
none: "<?php echo __('Normal'); ?>"
|
||||
window.addEventListener('load', function() {
|
||||
load_tree(show_full_hirearchy, show_not_init_agents, show_not_init_modules);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
function load_tree(show_full_hirearchy, show_not_init_agents, show_not_init_modules) {
|
||||
var treeController = TreeController.getController();
|
||||
treeController.meta = <?php echo (is_metaconsole() === true) ? 1 : 0; ?>;
|
||||
|
||||
if (typeof treeController.recipient != 'undefined' && treeController.recipient.length > 0)
|
||||
treeController.recipient.empty();
|
||||
|
||||
showSpinner();
|
||||
|
||||
var parameters = {};
|
||||
parameters['page'] = "include/ajax/tree.ajax";
|
||||
parameters['getChildren'] = 1;
|
||||
parameters['type'] = "<?php echo $tab; ?>";
|
||||
parameters['filter'] = {};
|
||||
parameters['filter']['searchGroup'] = $('#text-search_group_string').val();
|
||||
parameters['filter']['searchAgent'] = $('#text-search_agent_string').val();
|
||||
parameters['filter']['statusAgent'] = $('#agent_status option:selected').val();
|
||||
parameters['filter']['searchModule'] = '';
|
||||
parameters['filter']['statusModule'] = '';
|
||||
parameters['filter']['groupID'] = '';
|
||||
parameters['filter']['tagID'] = '';
|
||||
parameters['filter']['searchHirearchy'] = 1;
|
||||
parameters['filter']['show_full_hirearchy'] = show_full_hirearchy;
|
||||
parameters['filter']['show_not_init_agents'] = show_not_init_agents;
|
||||
parameters['filter']['show_not_init_modules'] = show_not_init_modules;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
data: parameters,
|
||||
success: function(data) {
|
||||
if (data.success) {
|
||||
hideSpinner();
|
||||
|
||||
treeController.init({
|
||||
recipient: $("div#tree-controller-recipient"),
|
||||
page: parameters['page'],
|
||||
emptyMessage: "<?php echo __('No data found'); ?>",
|
||||
foundMessage: "<?php echo __('Found groups'); ?>",
|
||||
tree: data.tree,
|
||||
baseURL: "<?php echo ui_get_full_url(false, false, false, is_metaconsole()); ?>",
|
||||
ajaxURL: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
filter: parameters['filter'],
|
||||
counterTitles: {
|
||||
total: {
|
||||
agents: "<?php echo __('Total agents'); ?>",
|
||||
modules: "<?php echo __('Total modules'); ?>",
|
||||
none: "<?php echo __('Total'); ?>"
|
||||
},
|
||||
alerts: {
|
||||
agents: "<?php echo __('Fired alerts'); ?>",
|
||||
modules: "<?php echo __('Fired alerts'); ?>",
|
||||
none: "<?php echo __('Fired alerts'); ?>"
|
||||
},
|
||||
critical: {
|
||||
agents: "<?php echo __('Critical agents'); ?>",
|
||||
modules: "<?php echo __('Critical modules'); ?>",
|
||||
none: "<?php echo __('Critical'); ?>"
|
||||
},
|
||||
warning: {
|
||||
agents: "<?php echo __('Warning agents'); ?>",
|
||||
modules: "<?php echo __('Warning modules'); ?>",
|
||||
none: "<?php echo __('Warning'); ?>"
|
||||
},
|
||||
unknown: {
|
||||
agents: "<?php echo __('Unknown agents'); ?>",
|
||||
modules: "<?php echo __('Unknown modules'); ?>",
|
||||
none: "<?php echo __('Unknown'); ?>"
|
||||
},
|
||||
not_init: {
|
||||
agents: "<?php echo __('Not init agents'); ?>",
|
||||
modules: "<?php echo __('Not init modules'); ?>",
|
||||
none: "<?php echo __('Not init'); ?>"
|
||||
},
|
||||
ok: {
|
||||
agents: "<?php echo __('Normal agents'); ?>",
|
||||
modules: "<?php echo __('Normal modules'); ?>",
|
||||
none: "<?php echo __('Normal'); ?>"
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
|
|
@ -154,7 +154,7 @@ if ($is_management_allowed === true && $update_group === true) {
|
|||
$subcheck = db_get_value('name', 'tmodule_group', 'id_mg', $id_group);
|
||||
|
||||
if ($name) {
|
||||
if (!$check || $subcheck == $name) {
|
||||
if ($check === false || strcasecmp($subcheck, $name) === 0) {
|
||||
$result = db_process_sql_update(
|
||||
'tmodule_group',
|
||||
['name' => $name],
|
||||
|
|
|
@ -255,7 +255,18 @@ $table->data[1][1] = html_print_select(
|
|||
true,
|
||||
'',
|
||||
false,
|
||||
'width:180px;'
|
||||
'width:180px;',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
);
|
||||
$table->data[1][2] = __('When select agents');
|
||||
$table->data[1][2] .= '<br>';
|
||||
|
@ -271,7 +282,31 @@ $table->data[1][2] .= html_print_select(
|
|||
'',
|
||||
true
|
||||
);
|
||||
$table->data[1][3] = html_print_select([], 'module[]', '', false, '', '', true, true, false, '', false, 'width:180px;');
|
||||
$table->data[1][3] = html_print_select(
|
||||
[],
|
||||
'module[]',
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'width:180px;',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
false
|
||||
);
|
||||
|
||||
$usr_groups = users_get_groups($config['id_user'], 'LW', true);
|
||||
$filter_groups = '';
|
||||
|
|
|
@ -111,7 +111,8 @@ if ($delete) {
|
|||
$alerts_agent_modules = [];
|
||||
foreach ($agent_alerts['simple'] as $agent_alert) {
|
||||
if ((in_array($agent_alert['id_alert_template'], $id_alert_templates)) && (in_array($agent_alert['id_agent_module'], $modules_id))) {
|
||||
$alerts_agent_modules = array_merge($alerts_agent_modules, alerts_get_alerts_agent_module($agent_alert['id_agent_module'], true, false, 'id'));
|
||||
// $alerts_agent_modules = array_merge($alerts_agent_modules, alerts_get_alerts_agent_module($agent_alert['id_agent_module'], true, false, 'id'));
|
||||
$alerts_agent_modules[] = $agent_alert['id'];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -126,7 +127,7 @@ if ($delete) {
|
|||
$agent_module_actions = [];
|
||||
|
||||
foreach ($alerts_agent_modules as $alert_agent_module) {
|
||||
$agent_module_actions = alerts_get_alert_agent_module_actions($alert_agent_module['id'], ['id', 'id_alert_action']);
|
||||
$agent_module_actions = alerts_get_alert_agent_module_actions($alert_agent_module, ['id', 'id_alert_action']);
|
||||
|
||||
foreach ($agent_module_actions as $agent_module_action) {
|
||||
foreach ($actions as $action) {
|
||||
|
|
|
@ -194,6 +194,10 @@ if ($update_agents) {
|
|||
$values['safe_mode_module'] = '0';
|
||||
}
|
||||
|
||||
if (get_parameter('ignore_unknown', '') != '') {
|
||||
$values['ignore_unknown'] = get_parameter('ignore_unknown');
|
||||
}
|
||||
|
||||
$secondary_groups_added = (array) get_parameter(
|
||||
'secondary_groups_added',
|
||||
[]
|
||||
|
@ -1183,6 +1187,24 @@ $table->data[7][1] .= html_print_select(
|
|||
true
|
||||
);
|
||||
|
||||
$table->data[8][0] = __('Ignore unknown').ui_print_help_tip(_('This disables the calculation of the unknown state in the agent and any of its modules, so it will never transition to unknown. The state it reflects is the last known status.'), true);
|
||||
$table->data[8][1] = html_print_select(
|
||||
[
|
||||
'' => __('No change'),
|
||||
'1' => __('Yes'),
|
||||
'0' => __('No'),
|
||||
],
|
||||
'ignore_unknown',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'w100p'
|
||||
);
|
||||
|
||||
ui_toggle(html_print_table($table, true), __('Advanced options'));
|
||||
unset($table);
|
||||
|
||||
|
|
|
@ -1319,7 +1319,7 @@ $table->data[29][0] = html_print_label_input_block(
|
|||
);
|
||||
|
||||
$table->data[29][1] = html_print_label_input_block(
|
||||
__('Discard unknown events'),
|
||||
__('Discard unknown events').ui_print_help_tip(__('With this mode, the unknown state will be detected, but it will not generate events.'), true),
|
||||
html_print_select(
|
||||
[
|
||||
'' => __('No change'),
|
||||
|
@ -1544,6 +1544,26 @@ $table->data[40][0] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
$table->data[40][1] = html_print_label_input_block(
|
||||
__('Ignore unknown').ui_print_help_tip(_('This disables the module\'s state calculation to unknown, so it will never transition to unknown. The state it reflects is the last known status.'), true),
|
||||
html_print_select(
|
||||
[
|
||||
'' => __('No change'),
|
||||
'1' => __('Yes'),
|
||||
'0' => __('No'),
|
||||
],
|
||||
'ignore_unknown',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'w100p'
|
||||
)
|
||||
);
|
||||
|
||||
echo '<form method="post" class="max_floating_element_size" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&option=edit_modules" id="form_edit">';
|
||||
html_print_table($table);
|
||||
|
||||
|
@ -2358,6 +2378,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
'plugin_pass',
|
||||
'id_export',
|
||||
'history_data',
|
||||
'ignore_unknown',
|
||||
'critical_inverse',
|
||||
'warning_inverse',
|
||||
'percentage_warning',
|
||||
|
|
|
@ -367,6 +367,8 @@ if ($access_console_node === true) {
|
|||
$sub['godmode/alerts/alert_list']['text'] = __('List of Alerts');
|
||||
$sub['godmode/alerts/alert_list']['id'] = 'List_of_Alerts';
|
||||
$sub['godmode/alerts/alert_list']['pages'] = ['godmode/alerts/alert_view'];
|
||||
$sub['godmode/agentes/planned_downtime.list']['text'] = __('Scheduled downtime');
|
||||
$sub['godmode/agentes/planned_downtime.list']['id'] = 'scheduled_downtime';
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
$sub['godmode/alerts/alert_templates']['text'] = __('Templates');
|
||||
|
@ -476,8 +478,8 @@ if ($access_console_node === true) {
|
|||
}
|
||||
}
|
||||
|
||||
$sub2['godmode/setup/setup§ion=ehorus']['text'] = __('Pandora RC');
|
||||
$sub2['godmode/setup/setup§ion=ehorus']['refr'] = 0;
|
||||
$sub2['godmode/setup/setup§ion=pandorarc']['text'] = __('Pandora RC');
|
||||
$sub2['godmode/setup/setup§ion=pandorarc']['refr'] = 0;
|
||||
|
||||
$sub2['godmode/setup/setup§ion=ITSM']['text'] = __('ITSM');
|
||||
$sub2['godmode/setup/setup§ion=ITSM']['refr'] = 0;
|
||||
|
@ -506,6 +508,8 @@ if ($access_console_node === true) {
|
|||
|
||||
enterprise_hook('skins_submenu');
|
||||
|
||||
enterprise_hook('translate_string_submenu');
|
||||
|
||||
$menu_godmode['gsetup']['sub'] = $sub;
|
||||
}
|
||||
}
|
||||
|
@ -573,12 +577,13 @@ if ($access_console_node === true) {
|
|||
continue;
|
||||
}
|
||||
|
||||
$extmenu = [];
|
||||
if ($extension['godmode_menu']['name'] !== __('DB Schema check') && $extension['godmode_menu']['name'] !== __('DB interface')) {
|
||||
$extmenu = $extension['godmode_menu'];
|
||||
}
|
||||
|
||||
// Check the ACL for this user.
|
||||
if ((bool) check_acl($config['id_user'], 0, $extmenu['acl']) === false) {
|
||||
if ((bool) check_acl($config['id_user'], 0, ($extmenu['acl'] ?? '')) === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -708,6 +713,27 @@ if ($access_console_node === true) {
|
|||
}
|
||||
|
||||
if ($access_console_node === true) {
|
||||
// Tools.
|
||||
$menu_godmode['tools']['text'] = __('Tools');
|
||||
$menu_godmode['tools']['sec2'] = 'operation/extensions';
|
||||
$menu_godmode['tools']['id'] = 'oper-extensions';
|
||||
$sub = [];
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'RR')
|
||||
|| check_acl($config['id_user'], 0, 'RW')
|
||||
|| check_acl($config['id_user'], 0, 'RM')
|
||||
) {
|
||||
$sub['operation/agentes/exportdata']['text'] = __('Export data');
|
||||
$sub['operation/agentes/exportdata']['id'] = 'export_data';
|
||||
}
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$sub['godmode/files_repo/files_repo']['text'] = __('File repository');
|
||||
$sub['godmode/files_repo/files_repo']['id'] = 'file_repository';
|
||||
}
|
||||
|
||||
$menu_godmode['tools']['sub'] = $sub;
|
||||
|
||||
// About.
|
||||
$menu_godmode['about']['text'] = __('About');
|
||||
$menu_godmode['about']['id'] = 'about';
|
||||
|
@ -719,7 +745,7 @@ if ((bool) $config['pure'] === false) {
|
|||
|
||||
echo '<div id="about-div"></div>';
|
||||
// Need to be here because the translate string.
|
||||
if (check_acl($config['id_user'], $group, 'AW')) {
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$("#conf_wizard").click(function() {
|
||||
|
|
|
@ -729,7 +729,7 @@ if ($search_id_group) {
|
|||
}
|
||||
|
||||
if ($search_string != '') {
|
||||
$filter[] = '(name LIKE '."'%".$search_string."%'".'OR description LIKE '."'%".$search_string."%'".'OR tcp_send LIKE '."'%".$search_string."%'".'OR tcp_rcv LIKE '."'%".$search_string."%'".')';
|
||||
$filter[] = '(REPLACE(name, " ", " ") LIKE '."'%".$search_string."%'".' OR REPLACE(REPLACE(description, " ", " "), " ", " ")LIKE '."'%".$search_string."%'".' OR REPLACE(tcp_send, " ", " ") LIKE '."'%".$search_string."%'".'OR REPLACE(tcp_rcv, " ", " ") LIKE '."'%".$search_string."%'".')';
|
||||
}
|
||||
|
||||
$total_components = network_components_get_network_components(
|
||||
|
|
|
@ -236,17 +236,39 @@ if ($add_module === true) {
|
|||
$id_modules
|
||||
);
|
||||
|
||||
$id_agent_modules = db_get_all_rows_sql(
|
||||
'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND nombre IN ('".implode("','", $id_modules)."')"
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente_modulo
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente IN (%s)
|
||||
AND nombre IN ("%s")',
|
||||
implode(',', $id_agents),
|
||||
implode('","', $id_modules)
|
||||
);
|
||||
|
||||
$id_agent_modules = db_get_all_rows_sql($sql);
|
||||
|
||||
if (count($id_agent_modules) > 0 && $id_agent_modules != '') {
|
||||
$order = db_get_row_sql("SELECT `field_order` from tgraph_source WHERE id_graph=$id_graph ORDER BY `field_order` DESC");
|
||||
$sql_order = sprintf(
|
||||
'SELECT `field_order`
|
||||
FROM tgraph_source
|
||||
WHERE id_graph=%d
|
||||
ORDER BY `field_order` DESC',
|
||||
$id_graph
|
||||
);
|
||||
$order = db_get_row_sql($sql_order);
|
||||
|
||||
$order = $order['field_order'];
|
||||
foreach ($id_agent_modules as $id_agent_module) {
|
||||
$order++;
|
||||
$result = db_process_sql_insert('tgraph_source', ['id_graph' => $id_graph, 'id_agent_module' => $id_agent_module['id_agente_modulo'], 'weight' => $weight, 'field_order' => $order]);
|
||||
$result = db_process_sql_insert(
|
||||
'tgraph_source',
|
||||
[
|
||||
'id_graph' => $id_graph,
|
||||
'id_agent_module' => $id_agent_module['id_agente_modulo'],
|
||||
'weight' => $weight,
|
||||
'field_order' => $order,
|
||||
]
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$result = false;
|
||||
|
|
|
@ -95,7 +95,7 @@ $subsection = reporting_enterprise_add_graph_template_subsection('', $buttons);
|
|||
$buttons['graph_container'] = [
|
||||
'active' => true,
|
||||
'text' => '<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_container">'.html_print_image(
|
||||
'images/graph-container.svg@svg',
|
||||
'images/graph-container@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Graph container'),
|
||||
|
|
|
@ -519,9 +519,9 @@ if (!$maps && is_metaconsole() === false) {
|
|||
$data = [];
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
$data[0] = '<a href="index.php?sec=network&sec2=operation/visual_console/render_view&id='.$map['id'].'&refr='.$refr.'">'.$map['name'].'</a>';
|
||||
$data[0] = '<a href="index.php?sec=network&sec2=operation/visual_console/render_view&id='.$map['id'].'&refr='.$refr.'">'.io_safe_output($map['name']).'</a>';
|
||||
} else {
|
||||
$data[0] = '<a href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id='.$map['id'].'&refr='.$refr.'">'.$map['name'].'</a>';
|
||||
$data[0] = '<a href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id='.$map['id'].'&refr='.$refr.'">'.io_safe_output($map['name']).'</a>';
|
||||
}
|
||||
|
||||
$data[1] = ui_print_group_icon($map['id_group'], true);
|
||||
|
@ -541,7 +541,7 @@ if (!$maps && is_metaconsole() === false) {
|
|||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
).'</a>';
|
||||
$data[4] = '<a class="delete_visualmap" href="index.php?sec=network&sec2=godmode/reporting/map_builder&id_layout='.$map['id'].'&delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.$map['name'].'\')) return false;">'.html_print_image(
|
||||
$data[4] = '<a class="delete_visualmap" href="index.php?sec=network&sec2=godmode/reporting/map_builder&id_layout='.$map['id'].'&delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.io_safe_output($map['name']).'\')) return false;">'.html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
|
@ -552,7 +552,7 @@ if (!$maps && is_metaconsole() === false) {
|
|||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
).'</a>';
|
||||
$data[4] = '<a class="delete_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.$map['name'].'\')) return false;">'.html_print_image(
|
||||
$data[4] = '<a class="delete_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.io_safe_output($map['name']).'\')) return false;">'.html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -777,7 +777,7 @@ $table->data[0][0] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
$table->data[0][1] = html_print_label_input_block(
|
||||
__('Poisition'),
|
||||
__('Position'),
|
||||
html_print_input_text_extended(
|
||||
'position_to_delete',
|
||||
1,
|
||||
|
|
|
@ -180,8 +180,8 @@ if ($report_id_user == $config['id_user']
|
|||
$options['div_class'] = '';
|
||||
}
|
||||
|
||||
$table->data[2][1] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
$table->data[3][0] = html_print_label_input_block(
|
||||
__('Write Access Group'),
|
||||
html_print_select_groups(
|
||||
false,
|
||||
'RW',
|
||||
|
@ -216,7 +216,7 @@ if ($enterpriseEnable) {
|
|||
|
||||
|
||||
if (enterprise_installed() === true) {
|
||||
$table->data[3][0] = html_print_label_input_block(
|
||||
$table->data[4][0] = html_print_label_input_block(
|
||||
__('Generate cover page in PDF render'),
|
||||
html_print_checkbox_switch(
|
||||
'cover_page_render',
|
||||
|
@ -226,7 +226,7 @@ if (enterprise_installed() === true) {
|
|||
)
|
||||
);
|
||||
|
||||
$table->data[3][1] = html_print_label_input_block(
|
||||
$table->data[4][1] = html_print_label_input_block(
|
||||
__('Generate index in PDF render'),
|
||||
html_print_checkbox_switch(
|
||||
'index_render',
|
||||
|
|
|
@ -1643,7 +1643,7 @@ switch ($action) {
|
|||
$es['log_number'] = $log_number;
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['period'] = get_parameter('period3');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
|
@ -1661,7 +1661,7 @@ switch ($action) {
|
|||
$es['log_number'] = $log_number;
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['period'] = get_parameter('period3');
|
||||
$values['period_range'] = get_parameter('period_range');
|
||||
$values['show_graph'] = get_parameter('combo_graph_options');
|
||||
$values['group_by_agent'] = get_parameter('checkbox_row_group_by_agent');
|
||||
|
@ -1730,10 +1730,20 @@ switch ($action) {
|
|||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'service_level':
|
||||
$es['period_time_service_level'] = get_parameter('period_time_service_level', '28800');
|
||||
$es['show_agents'] = get_parameter('show_agents', false);
|
||||
case 'agent_module':
|
||||
case 'agent_module_status':
|
||||
$agents_to_report_text = get_parameter('id_agents2-multiple-text', '');
|
||||
if ($agents_to_report_text === '' || $agents_to_report_text === 'null') {
|
||||
$agents_to_report_text = io_safe_input(json_encode(get_parameter('id_agents2', '')));
|
||||
}
|
||||
|
||||
$modules_to_report_text = get_parameter('module-multiple-text', '');
|
||||
if ($modules_to_report_text === '' || $modules_to_report_text === 'null') {
|
||||
$modules_to_report_text = io_safe_input(json_encode(get_parameter('module', '')));
|
||||
}
|
||||
|
||||
// Decode json check modules.
|
||||
$agents_to_report = json_decode(
|
||||
|
@ -1745,11 +1755,16 @@ switch ($action) {
|
|||
true
|
||||
);
|
||||
|
||||
|
||||
$es['module'] = get_same_modules_all(
|
||||
$agents_to_report,
|
||||
$modules_to_report
|
||||
);
|
||||
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$es['module'] = $modules_to_report;
|
||||
}
|
||||
|
||||
// Encode json modules and agents.
|
||||
$es['module'] = base64_encode(json_encode($es['module']));
|
||||
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
||||
|
@ -1928,6 +1943,7 @@ switch ($action) {
|
|||
$values['graph_render'] = (int) get_parameter(
|
||||
'graph_render'
|
||||
);
|
||||
$values['check_unknowns_graph'] = get_parameter_switch('unknowns_graph', 0);
|
||||
case 'simple_baseline_graph':
|
||||
// HACK it is saved in show_graph field.
|
||||
$values['show_graph'] = (int) get_parameter(
|
||||
|
@ -2045,6 +2061,70 @@ switch ($action) {
|
|||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'ncm_backups':
|
||||
$agents_ncm = get_parameter('agent_ncm');
|
||||
$values['ncm_agents'] = json_encode($agents_ncm);
|
||||
$values['id_group'] = get_parameter('ncm_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'ncm':
|
||||
$agents_ncm = get_parameter('agent_ncm');
|
||||
$values['ncm_agents'] = json_encode($agents_ncm);
|
||||
$values['id_group'] = get_parameter('ncm_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_severity_graph':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_attack_complexity':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_by_packages':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_by_agent':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
|
||||
$es['secmon_status'] = get_parameter('secmon_status');
|
||||
$es['security_hardening_score'] = get_parameter('security_hardening_score');
|
||||
$es['vulnerabilities_status'] = get_parameter('vulnerabilities_status');
|
||||
$values['external_source'] = json_encode($es);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_info_agent':
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
$es['server_id'] = get_parameter('server_id');
|
||||
$es['vul_package'] = get_parameter('vul_package');
|
||||
$es['vul_severity'] = get_parameter('vul_severity');
|
||||
$es['vul_ac'] = get_parameter('vul_ac');
|
||||
$es['vul_pr'] = get_parameter('vul_pr');
|
||||
$es['vul_ui'] = get_parameter('vul_ui');
|
||||
$es['vul_av'] = get_parameter('vul_av');
|
||||
$values['external_source'] = json_encode($es);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'top_n_agents_vuls':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$values['top_n_value'] = get_parameter('max_items');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'top_n_vuls_count':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$values['top_n_value'] = get_parameter('max_items');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['top_n'] = get_parameter(
|
||||
|
@ -2065,7 +2145,10 @@ switch ($action) {
|
|||
break;
|
||||
}
|
||||
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
if (isset($values['id_agent']) === false) {
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
}
|
||||
|
||||
$values['id_gs'] = get_parameter('id_custom_graph');
|
||||
|
||||
$values['id_agent_module'] = '';
|
||||
|
@ -2181,7 +2264,10 @@ switch ($action) {
|
|||
$values['id_module_group'] = get_parameter(
|
||||
'combo_modulegroup'
|
||||
);
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
|
||||
if (isset($values['id_group']) === false) {
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
}
|
||||
|
||||
if ($values['server_name'] == '') {
|
||||
$values['server_name'] = get_parameter(
|
||||
|
@ -2437,6 +2523,15 @@ switch ($action) {
|
|||
$style['image_threshold'] = (int) get_parameter(
|
||||
'image_threshold'
|
||||
);
|
||||
|
||||
$style['periodicity_chart'] = (int) get_parameter_checkbox('periodicity_chart', 0);
|
||||
$style['period_maximum'] = (int) get_parameter_checkbox('period_maximum', 1);
|
||||
$style['period_minimum'] = (int) get_parameter_checkbox('period_minimum', 1);
|
||||
$style['period_average'] = (int) get_parameter_checkbox('period_average', 1);
|
||||
$style['period_summatory'] = (int) get_parameter_checkbox('period_summatory', 0);
|
||||
$style['period_slice_chart'] = get_parameter('period_slice_chart', SECONDS_1HOUR);
|
||||
$style['period_mode'] = get_parameter('period_mode', CUSTOM_GRAPH_VBARS);
|
||||
|
||||
if ($label != '') {
|
||||
$style['label'] = $label;
|
||||
} else {
|
||||
|
@ -2704,7 +2799,7 @@ switch ($action) {
|
|||
$es['log_number'] = $log_number;
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['period'] = get_parameter('period3');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
|
@ -2722,17 +2817,27 @@ switch ($action) {
|
|||
$es['log_number'] = $log_number;
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['period'] = get_parameter('period3');
|
||||
$values['period_range'] = get_parameter('period_range');
|
||||
$values['show_graph'] = get_parameter('combo_graph_options');
|
||||
$values['group_by_agent'] = get_parameter('checkbox_row_group_by_agent');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'service_level':
|
||||
$es['period_time_service_level'] = get_parameter('period_time_service_level', '28800');
|
||||
$es['show_agents'] = get_parameter('show_agents', false);
|
||||
case 'agent_module':
|
||||
case 'agent_module_status':
|
||||
$agents_to_report_text = get_parameter('id_agents2-multiple-text');
|
||||
$agents_to_report_text = get_parameter('id_agents2-multiple-text', '');
|
||||
if ($agents_to_report_text === '' || $agents_to_report_text === 'null') {
|
||||
$agents_to_report_text = io_safe_input(json_encode(get_parameter('id_agents2', '')));
|
||||
}
|
||||
|
||||
$modules_to_report_text = get_parameter('module-multiple-text', '');
|
||||
if ($modules_to_report_text === '' || $modules_to_report_text === 'null') {
|
||||
$modules_to_report_text = io_safe_input(json_encode(get_parameter('module', '')));
|
||||
}
|
||||
|
||||
// Decode json check modules.
|
||||
$agents_to_report = json_decode(
|
||||
|
@ -2749,11 +2854,14 @@ switch ($action) {
|
|||
$modules_to_report
|
||||
);
|
||||
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$es['module'] = $modules_to_report;
|
||||
}
|
||||
|
||||
// Encode json modules and agents.
|
||||
$es['module'] = base64_encode(json_encode($es['module']));
|
||||
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
||||
$es['show_type'] = get_parameter('show_type', 0);
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
@ -2867,6 +2975,7 @@ switch ($action) {
|
|||
$values['graph_render'] = (int) get_parameter(
|
||||
'graph_render'
|
||||
);
|
||||
$values['check_unknowns_graph'] = get_parameter_switch('unknowns_graph', 0);
|
||||
case 'simple_baseline_graph':
|
||||
// HACK it is saved in show_graph field.
|
||||
$values['show_graph'] = (int) get_parameter(
|
||||
|
@ -2977,6 +3086,71 @@ switch ($action) {
|
|||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'ncm_backups':
|
||||
$agents_ncm = get_parameter('agent_ncm');
|
||||
$values['ncm_agents'] = json_encode($agents_ncm);
|
||||
$values['id_group'] = get_parameter('ncm_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'ncm':
|
||||
$agents_ncm = get_parameter('agent_ncm');
|
||||
$values['ncm_agents'] = json_encode($agents_ncm);
|
||||
$values['id_agent'] = get_parameter('agent_ncm');
|
||||
$values['id_group'] = get_parameter('ncm_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_severity_graph':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_attack_complexity':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_by_packages':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_by_agent':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
|
||||
$es['secmon_status'] = get_parameter('secmon_status');
|
||||
$es['security_hardening_score'] = get_parameter('security_hardening_score');
|
||||
$es['vulnerabilities_status'] = get_parameter('vulnerabilities_status');
|
||||
$values['external_source'] = json_encode($es);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'vuls_info_agent':
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
$es['server_id'] = get_parameter('server_id');
|
||||
$es['vul_package'] = get_parameter('vul_package');
|
||||
$es['vul_severity'] = get_parameter('vul_severity');
|
||||
$es['vul_ac'] = get_parameter('vul_ac');
|
||||
$es['vul_pr'] = get_parameter('vul_pr');
|
||||
$es['vul_ui'] = get_parameter('vul_ui');
|
||||
$es['vul_av'] = get_parameter('vul_av');
|
||||
$values['external_source'] = json_encode($es);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'top_n_agents_vuls':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$values['top_n_value'] = get_parameter('max_items');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'top_n_vuls_count':
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
$values['top_n_value'] = get_parameter('max_items');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['top_n'] = get_parameter(
|
||||
|
@ -3003,7 +3177,10 @@ switch ($action) {
|
|||
);
|
||||
}
|
||||
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
if (isset($values['id_agent']) === false) {
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
}
|
||||
|
||||
$values['id_gs'] = get_parameter('id_custom_graph');
|
||||
if (($values['type'] == 'alert_report_agent')
|
||||
|| ($values['type'] == 'event_report_agent')
|
||||
|
@ -3117,7 +3294,9 @@ switch ($action) {
|
|||
$values['id_module_group'] = get_parameter(
|
||||
'combo_modulegroup'
|
||||
);
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
if (isset($values['id_group']) === false) {
|
||||
$values['id_group'] = get_parameter('combo_group');
|
||||
}
|
||||
|
||||
|
||||
if ((($values['type'] == 'custom_graph')
|
||||
|
@ -3342,6 +3521,15 @@ switch ($action) {
|
|||
$style['image_threshold'] = (int) get_parameter(
|
||||
'image_threshold'
|
||||
);
|
||||
|
||||
$style['periodicity_chart'] = (int) get_parameter_checkbox('periodicity_chart', 0);
|
||||
$style['period_maximum'] = (int) get_parameter_checkbox('period_maximum', 1);
|
||||
$style['period_minimum'] = (int) get_parameter_checkbox('period_minimum', 1);
|
||||
$style['period_average'] = (int) get_parameter_checkbox('period_average', 1);
|
||||
$style['period_summatory'] = (int) get_parameter_checkbox('period_summatory', 0);
|
||||
$style['period_slice_chart'] = get_parameter('period_slice_chart', SECONDS_1HOUR);
|
||||
$style['period_mode'] = get_parameter('period_mode', CUSTOM_GRAPH_VBARS);
|
||||
|
||||
if ($label != '') {
|
||||
$style['label'] = $label;
|
||||
} else {
|
||||
|
|
|
@ -151,7 +151,7 @@ $table->data[0][] = html_print_label_input_block(
|
|||
__('Name'),
|
||||
html_print_input_text(
|
||||
'name',
|
||||
$visualConsoleName,
|
||||
io_safe_output($visualConsoleName),
|
||||
'',
|
||||
80,
|
||||
100,
|
||||
|
|
|
@ -539,6 +539,7 @@ foreach ($layoutDatas as $layoutData) {
|
|||
$table->data[($i + 1)][5] .= html_print_checkbox('multiple_delete_items', $idLayoutData, false, true);
|
||||
$table->data[($i + 1)][5] .= '<a href="'.$url_delete.'"onclick="javascript: if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
$table->data[($i + 1)][5] .= html_print_input_hidden('updated_'.$idLayoutData, '0', true);
|
||||
$table->data[($i + 1)][5] .= html_print_input_hidden('rowtype_'.$idLayoutData, $layoutData['type'], true);
|
||||
|
||||
// Second row
|
||||
$table->data[($i + 2)]['icon'] = '';
|
||||
|
@ -789,14 +790,6 @@ if ($x > ini_get('max_input_vars')) {
|
|||
|
||||
$pure = get_parameter('pure', 0);
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
echo '<form id="vc_elem_form" method="post" action="index.php?sec=network&sec2=godmode/reporting/visual_console_builder&tab='.$activeTab.'&id_visual_console='.$visualConsole['id'].'">';
|
||||
html_print_input_hidden('action', 'update');
|
||||
} else {
|
||||
echo "<form id='vc_elem_form' method='post' action='index.php?operation=edit_visualmap&sec=screen&sec2=screens/screens&action=visualmap&pure=0&tab=list_elements&id_visual_console=".$idVisualConsole."'>";
|
||||
html_print_input_hidden('action2', 'update');
|
||||
}
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
// Form for multiple delete.
|
||||
|
@ -806,15 +799,14 @@ if (is_metaconsole() === false) {
|
|||
$url_multiple_delete = 'index.php?sec=screen&sec2=screens/screens&action=visualmap&tab='.$activeTab.'&id_visual_console='.$visualConsole['id'];
|
||||
}
|
||||
|
||||
echo '</form>';
|
||||
|
||||
$buttons = html_print_submit_button(
|
||||
__('Update'),
|
||||
'go',
|
||||
false,
|
||||
[
|
||||
'icon' => 'next',
|
||||
'form' => 'vc_elem_form',
|
||||
'icon' => 'next',
|
||||
'form' => 'vc_elem_form',
|
||||
'onclick' => 'submit_update_json()',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -976,4 +968,76 @@ ui_require_javascript_file('tinymce', 'vendor/tinymce/tinymce/');
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
function submit_update_json() {
|
||||
var array_update = [];
|
||||
$('input[id^=hidden-updated_]').each(function(){
|
||||
var id = $(this).attr('id').split('_')[1];
|
||||
|
||||
var label = $('#hidden-label_'+id).val();
|
||||
var image = $('#image_'+id).val();
|
||||
var width = $('#text-width_'+id).val();
|
||||
var height = $('#text-height_'+id).val();
|
||||
var pos_x = $('#text-left_'+id).val();
|
||||
var pos_y = $('#text-top_'+id).val();
|
||||
var parent = $('#parent_'+id).val();
|
||||
var agent = $('#hidden-agent_'+id).val();
|
||||
var module = $('#module_'+id).val();
|
||||
var period = $('#hidden-period_'+id).val();
|
||||
var map_linked = $('#map_linked_'+id).val();
|
||||
var id_server = $('#id_server_id_'+id).val();
|
||||
var rowtype = $('rowtype_'+id).val();
|
||||
var custom_graph = $('#custom_graph_'+id).val();
|
||||
|
||||
array_update.push({
|
||||
'id': id,
|
||||
'label': label,
|
||||
'image': image,
|
||||
'width': width,
|
||||
'height': height,
|
||||
'pos_x': pos_x,
|
||||
'pos_y': pos_y,
|
||||
'parent': parent,
|
||||
'agent': agent,
|
||||
'module': module,
|
||||
'period': period,
|
||||
'map_linked': map_linked,
|
||||
'rowtype': rowtype,
|
||||
'custom_graph': custom_graph,
|
||||
'id_server': id_server,
|
||||
});
|
||||
});
|
||||
|
||||
var background_width = $('#text-width').val();
|
||||
var background_height = $('#text-height').val();
|
||||
|
||||
if (background_height > 0 && background_width > 0){
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
data: {
|
||||
page: "godmode/reporting/visual_console_builder",
|
||||
action: "update_json",
|
||||
tab: "list_elements",
|
||||
array_update: JSON.stringify(array_update),
|
||||
id_visual_console: "<?php echo (is_metaconsole() === true) ? $idVisualConsole : $visualConsole['id']; ?>",
|
||||
background: $('#background').val(),
|
||||
background_width: $('#text-width').val(),
|
||||
background_height: $('#text-height').val(),
|
||||
},
|
||||
dataType: "json",
|
||||
complete: function (data) {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
confirmDialog({
|
||||
title: "<?php echo __('Error.'); ?>",
|
||||
message: "<?php echo __('The width and height property is required and should greater than 0'); ?>",
|
||||
strOKButton: "<?php echo __('Close'); ?>",
|
||||
hideCancelButton: true,
|
||||
size: 300,
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -78,6 +78,7 @@ $action = get_parameterBetweenListValues(
|
|||
'update',
|
||||
'delete',
|
||||
'multiple_delete',
|
||||
'update_json',
|
||||
],
|
||||
'new'
|
||||
);
|
||||
|
@ -164,6 +165,9 @@ switch ($activeTab) {
|
|||
$width = (int) get_parameter('width');
|
||||
$height = (int) get_parameter('height');
|
||||
$visualConsoleName = (string) get_parameter('name');
|
||||
$visualConsoleName = str_replace('<', '', $visualConsoleName);
|
||||
$visualConsoleName = str_replace('>', '', $visualConsoleName);
|
||||
$visualConsoleName = (string) io_safe_input($visualConsoleName);
|
||||
$is_favourite = (int) get_parameter('is_favourite_sent');
|
||||
$auto_adjust = (int) get_parameter('auto_adjust_sent');
|
||||
|
||||
|
@ -239,7 +243,7 @@ switch ($activeTab) {
|
|||
if ($uploadOK == 1) {
|
||||
if (move_uploaded_file($_FILES['background_image']['tmp_name'], $target_file)) {
|
||||
$background = $nameImage;
|
||||
$values['background'] = $background;
|
||||
$values['background'] = io_safe_input($background);
|
||||
$error2 = chmod($target_file, 0644);
|
||||
$uploadOK = $error2;
|
||||
} else {
|
||||
|
@ -523,6 +527,110 @@ switch ($activeTab) {
|
|||
}
|
||||
break;
|
||||
|
||||
case 'update_json':
|
||||
// Update background.
|
||||
$background = get_parameter('background');
|
||||
$width = get_parameter('background_width');
|
||||
$height = get_parameter('background_height');
|
||||
|
||||
if ($width == 0 && $height == 0) {
|
||||
$sizeBackground = getimagesize(
|
||||
$config['homedir'].'/images/console/background/'.$background
|
||||
);
|
||||
$width = $sizeBackground[0];
|
||||
$height = $sizeBackground[1];
|
||||
}
|
||||
|
||||
db_process_sql_update(
|
||||
'tlayout',
|
||||
[
|
||||
'background' => $background,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
],
|
||||
['id' => $idVisualConsole]
|
||||
);
|
||||
|
||||
// Return the updated visual console.
|
||||
$visualConsole = db_get_row_filter(
|
||||
'tlayout',
|
||||
['id' => $idVisualConsole]
|
||||
);
|
||||
|
||||
// Update elements in visual map.
|
||||
$idsElements = db_get_all_rows_filter(
|
||||
'tlayout_data',
|
||||
['id_layout' => $idVisualConsole],
|
||||
[
|
||||
'id',
|
||||
'type',
|
||||
]
|
||||
);
|
||||
|
||||
$array_update = json_decode(io_safe_output(get_parameter('array_update')), true);
|
||||
|
||||
if (count($array_update)) {
|
||||
foreach ($array_update as $row) {
|
||||
$id = $row['id'];
|
||||
$values = [];
|
||||
$values['label'] = $row['label'];
|
||||
$values['image'] = $row['image'];
|
||||
$values['width'] = $row['width'];
|
||||
$values['height'] = $row['height'];
|
||||
$values['pos_x'] = $row['pos_x'];
|
||||
$values['pos_y'] = $row['pos_y'];
|
||||
|
||||
switch ($row['rowtype']) {
|
||||
case NETWORK_LINK:
|
||||
case LINE_ITEM:
|
||||
continue 2;
|
||||
|
||||
break;
|
||||
|
||||
case SIMPLE_VALUE_MAX:
|
||||
case SIMPLE_VALUE_MIN:
|
||||
case SIMPLE_VALUE_AVG:
|
||||
$values['period'] = $row['period'];
|
||||
break;
|
||||
|
||||
case MODULE_GRAPH:
|
||||
$values['period'] = $row['period'];
|
||||
unset($values['image']);
|
||||
break;
|
||||
|
||||
case GROUP_ITEM:
|
||||
$values['id_group'] = $row['group'];
|
||||
break;
|
||||
|
||||
case CIRCULAR_PROGRESS_BAR:
|
||||
case CIRCULAR_INTERIOR_PROGRESS_BAR:
|
||||
case PERCENTILE_BUBBLE:
|
||||
case PERCENTILE_BAR:
|
||||
unset($values['height']);
|
||||
break;
|
||||
}
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
$values['id_metaconsole'] = $row['id_server'];
|
||||
}
|
||||
|
||||
$values['id_agent'] = $row['agent'];
|
||||
$values['id_agente_modulo'] = $row['module'];
|
||||
$values['id_custom_graph'] = $row['custom_graph'];
|
||||
$values['parent_item'] = $row['parent'];
|
||||
$values['id_layout_linked'] = $row['map_linked'];
|
||||
|
||||
if (enterprise_installed()) {
|
||||
enterprise_visual_map_update_action_from_list_elements($row['rowtype'], $values, $id);
|
||||
}
|
||||
|
||||
db_process_sql_update('tlayout_data', $values, ['id' => $id]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
$id_element = get_parameter('id_element');
|
||||
$result = db_process_sql_delete('tlayout_data', ['id' => $id_element]);
|
||||
|
@ -872,7 +980,7 @@ $buttons[$activeTab]['active'] = true;
|
|||
|
||||
$tab_builder = ($activeTab === 'editor') ? 'visual_console_editor_editor_tab' : '';
|
||||
ui_print_standard_header(
|
||||
($visualConsoleName ?? ''),
|
||||
(io_safe_output($visualConsoleName) ?? ''),
|
||||
'images/visual_console.png',
|
||||
false,
|
||||
$tab_builder,
|
||||
|
|
|
@ -860,8 +860,10 @@ if (empty($create) === false || empty($view) === false) {
|
|||
if ($management_allowed === false) {
|
||||
ui_print_warning_message(
|
||||
__(
|
||||
'This console is not manager of this environment,
|
||||
please manage this feature from centralized manager console (Metaconsole).'
|
||||
'This console is not manager of this environment, please manage this feature from feature from %s.',
|
||||
'<a target="_blank" href="'.ui_get_meta_url(
|
||||
'index.php?sec=advanced&sec2=godmode/servers/plugin_registration&tab=plugin_registration&pure=0'
|
||||
).'">'.__('metaconsole').'</a>'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -64,32 +64,33 @@ $table->style = [];
|
|||
// $table->style[0] = 'font-weight: bold';
|
||||
$table->align = [];
|
||||
$table->align[1] = 'center';
|
||||
$table->align[3] = 'center';
|
||||
$table->align[8] = 'right';
|
||||
$table->align[4] = 'center';
|
||||
$table->align[9] = 'right';
|
||||
|
||||
$table->headstyle[1] = 'text-align:center';
|
||||
$table->headstyle[3] = 'text-align:center';
|
||||
$table->headstyle[8] = 'text-align:right;width: 120px;';
|
||||
$table->headstyle[4] = 'text-align:center';
|
||||
$table->headstyle[9] = 'text-align:right;width: 120px;';
|
||||
|
||||
$table->titleclass = 'tabletitle';
|
||||
$table->titlestyle = 'text-transform:uppercase;';
|
||||
|
||||
$table->style[6] = 'display: flex;align-items: center;';
|
||||
$table->style[7] = 'display: flex;align-items: center;';
|
||||
|
||||
$table->head = [];
|
||||
$table->head[0] = __('Name');
|
||||
$table->head[1] = __('Status');
|
||||
$table->head[2] = __('Type');
|
||||
$table->head[3] = __('Version');
|
||||
$table->head[4] = __('Modules');
|
||||
$table->head[5] = __('Lag').ui_print_help_tip(__('Avg. Delay(sec)/Modules delayed'), true);
|
||||
$table->head[6] = __('T/Q').ui_print_help_tip(__('Threads / Queued modules currently'), true);
|
||||
$table->head[3] = __('Master');
|
||||
$table->head[4] = __('Version');
|
||||
$table->head[5] = __('Modules');
|
||||
$table->head[6] = __('Lag').ui_print_help_tip(__('Avg. Delay(sec)/Modules delayed'), true);
|
||||
$table->head[7] = __('T/Q').ui_print_help_tip(__('Threads / Queued modules currently'), true);
|
||||
// This will have a column of data such as "6 hours".
|
||||
$table->head[7] = __('Updated');
|
||||
$table->head[8] = __('Updated');
|
||||
|
||||
// Only Pandora Administrator can delete servers.
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$table->head[8] = '<span title="Operations">'.__('Op.').'</span>';
|
||||
$table->head[9] = '<span title="Operations">'.__('Op.').'</span>';
|
||||
}
|
||||
|
||||
$table->data = [];
|
||||
|
@ -143,9 +144,11 @@ foreach ($servers as $server) {
|
|||
}
|
||||
|
||||
// Type.
|
||||
$data[2] = '<span class="nowrap">'.$server['img'];
|
||||
$data[2] = '<span class="nowrap">'.$server['img'].' '.$server['name'];
|
||||
if ($server['master'] == $master) {
|
||||
$data[2] .= ui_print_help_tip(__('This is a master server'), true);
|
||||
$data[3] .= __('Yes', true);
|
||||
} else {
|
||||
$data[3] .= __('-');
|
||||
}
|
||||
|
||||
if ((int) $server['exec_proxy'] === 1) {
|
||||
|
@ -157,27 +160,27 @@ foreach ($servers as $server) {
|
|||
case 'event':
|
||||
case 'autoprovision':
|
||||
case 'migration':
|
||||
$data[3] = $server['version'];
|
||||
$data[4] = __('N/A');
|
||||
$data[4] = $server['version'];
|
||||
$data[5] = __('N/A');
|
||||
$data[6] = __('N/A');
|
||||
break;
|
||||
|
||||
case 'export':
|
||||
$data[3] = $server['version'];
|
||||
$data[4] = $server['modules'].' '.__('of').' '.$server['modules_total'];
|
||||
$data[5] = __('N/A');
|
||||
$data[4] = $server['version'];
|
||||
$data[5] = $server['modules'].' '.__('of').' '.$server['modules_total'];
|
||||
$data[6] = __('N/A');
|
||||
break;
|
||||
|
||||
default:
|
||||
$data[3] = $server['version'];
|
||||
$data[4] = $server['modules'].' '.__('of').' '.$server['modules_total'];
|
||||
$data[5] = '<span class="nowrap">'.$server['lag_txt'].'</span>';
|
||||
$data[4] = $server['version'];
|
||||
$data[5] = $server['modules'].' '.__('of').' '.$server['modules_total'];
|
||||
$data[6] = '<span class="nowrap">'.$server['lag_txt'].'</span>';
|
||||
break;
|
||||
}
|
||||
|
||||
$data[6] = '';
|
||||
if ($server['queued_modules'] > 500) {
|
||||
$data[6] .= '<div class="inline"><a onclick="show_dialog();" >'.html_print_image(
|
||||
$data[7] = '';
|
||||
if ($server['queued_modules'] >= $config['number_modules_queue']) {
|
||||
$data[7] .= '<div class="inline"><a onclick="show_dialog();" >'.html_print_image(
|
||||
'images/info-warning.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -189,9 +192,9 @@ foreach ($servers as $server) {
|
|||
).'</a></div> ';
|
||||
}
|
||||
|
||||
$data[6] .= $server['threads'].' : '.$server['queued_modules'];
|
||||
$data[7] .= $server['threads'].' : '.$server['queued_modules'];
|
||||
|
||||
$data[7] = ui_print_timestamp($server['keepalive'], true);
|
||||
$data[8] = ui_print_timestamp($server['keepalive'], true);
|
||||
|
||||
if ($server['type'] === 'data') {
|
||||
$ext = '_server';
|
||||
|
@ -208,11 +211,11 @@ foreach ($servers as $server) {
|
|||
|
||||
// Only Pandora Administrator can delete servers.
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$data[8] = '';
|
||||
$data[9] = '';
|
||||
|
||||
if ($server['type'] === 'recon') {
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/snmp-trap@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -221,12 +224,12 @@ foreach ($servers as $server) {
|
|||
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
}
|
||||
|
||||
if ($server['type'] === 'data') {
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_counts='.$server['id_server']).'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_counts='.$server['id_server']).'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/force@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -234,10 +237,10 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
} else if ($server['type'] === 'enterprise snmp') {
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_snmp_enterprise='.$server['id_server']).'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_snmp_enterprise='.$server['id_server']).'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/force@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -245,12 +248,12 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
}
|
||||
|
||||
if ($server['type'] === 'event' && (bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
$data[8] .= '<a class="open-alerts-list-modal" href="">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a class="open-alerts-list-modal" href="">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/alert@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -258,11 +261,11 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
}
|
||||
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server='.$server['id_server']).'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server='.$server['id_server']).'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/edit.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -270,11 +273,11 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
|
||||
if (($names_servers[$safe_server_name] === true) && ($ext === '_server' || $server['type'] === 'enterprise satellite')) {
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext.'&tab=agent_editor').'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext.'&tab=advanced_editor').'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/agents@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -282,10 +285,10 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext).'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext).'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/remote-configuration@svg.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -293,12 +296,12 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
$names_servers[$safe_server_name] = false;
|
||||
}
|
||||
|
||||
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_del='.$server['id_server'].'&delete=1').'">';
|
||||
$data[8] .= html_print_image(
|
||||
$data[9] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_del='.$server['id_server'].'&delete=1').'">';
|
||||
$data[9] .= html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
[
|
||||
|
@ -307,14 +310,14 @@ foreach ($servers as $server) {
|
|||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$data[8] .= '</a>';
|
||||
$data[9] .= '</a>';
|
||||
}
|
||||
|
||||
if ($tiny) {
|
||||
unset($data[4]);
|
||||
unset($data[6]);
|
||||
unset($data[5]);
|
||||
unset($data[7]);
|
||||
unset($data[8]);
|
||||
unset($data[9]);
|
||||
}
|
||||
|
||||
$ext = '';
|
||||
|
@ -323,10 +326,10 @@ foreach ($servers as $server) {
|
|||
}
|
||||
|
||||
if ($tiny) {
|
||||
unset($table->head[4]);
|
||||
unset($table->head[6]);
|
||||
unset($table->head[5]);
|
||||
unset($table->head[7]);
|
||||
unset($table->head[8]);
|
||||
unset($table->head[9]);
|
||||
}
|
||||
|
||||
if ($tiny) {
|
||||
|
|
|
@ -71,6 +71,8 @@ if (isset($config['filemanager']['message']) === true) {
|
|||
$fallback_directory = 'images';
|
||||
// Get directory.
|
||||
$directory = (string) get_parameter('directory');
|
||||
$directory = str_replace('<', '', $text);
|
||||
$directory = str_replace('>', '', $text);
|
||||
if (empty($directory) === true) {
|
||||
$directory = $fallback_directory;
|
||||
} else {
|
||||
|
|
|
@ -54,8 +54,12 @@ if (isset($_POST['create'])) {
|
|||
if (! $result) {
|
||||
ui_print_error_message(__('There was a problem creating link'));
|
||||
} else {
|
||||
ui_print_success_message(__('Successfully created'));
|
||||
$id_link = $result;
|
||||
ui_print_result_message(
|
||||
$id_link,
|
||||
__('Successfully created'),
|
||||
__('Could not be created')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -111,8 +115,8 @@ if ((isset($_GET['form_add'])) or (isset($_GET['form_edit']))) {
|
|||
$link = '';
|
||||
}
|
||||
|
||||
echo '<table class="databox filters filter-table-adv max_floating_element_size" cellpadding="4" cellspacing="4" width="100%">';
|
||||
echo '<form name="ilink" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/links">';
|
||||
echo '<table class="databox filters filter-table-adv max_floating_element_size" cellpadding="4" cellspacing="4" width="100%">';
|
||||
if ($creation_mode == 1) {
|
||||
echo "<input type='hidden' name='create' value='1'>";
|
||||
} else {
|
||||
|
@ -179,10 +183,10 @@ if ((isset($_GET['form_add'])) or (isset($_GET['form_edit']))) {
|
|||
)
|
||||
);
|
||||
|
||||
echo '</form></td></tr></table>';
|
||||
echo '</td></tr></table></form>';
|
||||
} else {
|
||||
// Main list view for Links editor
|
||||
$rows = db_get_all_rows_in_table('tlink', 'name');
|
||||
// Main list view for Links editor.
|
||||
$rows = db_get_all_fields_in_table('tlink', '', '', 'name');
|
||||
if ($rows === false) {
|
||||
$rows = [];
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ if ($idOS > 0) {
|
|||
$description = $os['description'];
|
||||
$icon = $os['icon_name'];
|
||||
} else {
|
||||
$name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
|
||||
$name = io_safe_input(strip_tags(trim(io_safe_output((string) get_parameter('name')))));
|
||||
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
|
||||
$icon = get_parameter('icon', 0);
|
||||
}
|
||||
|
@ -87,9 +87,16 @@ if ($is_management_allowed === true) {
|
|||
|
||||
if (in_array($file_ext, $allowed_extensions) === false) {
|
||||
$message = 9;
|
||||
} else if (exif_imagetype($file_tmp) === false && $file_ext !== 'svg') {
|
||||
$message = 10;
|
||||
} else {
|
||||
$message = 8;
|
||||
move_uploaded_file($file_tmp, $config['homedir'].'/images/os_icons/'.$file_name);
|
||||
|
||||
$file_uploaded = move_uploaded_file($file_tmp, $config['homedir'].'/images/os_icons/'.$file_name);
|
||||
|
||||
if ($file_uploaded !== true) {
|
||||
$message = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -108,7 +115,7 @@ if ($is_management_allowed === true) {
|
|||
|
||||
if ($resultOrId === false) {
|
||||
$message = 2;
|
||||
$tab = 'builder';
|
||||
$tab = 'manage_os';
|
||||
$actionHidden = 'save';
|
||||
$textButton = __('Create');
|
||||
$classButton = ['icon' => 'wand'];
|
||||
|
@ -144,13 +151,19 @@ if ($is_management_allowed === true) {
|
|||
|
||||
if (in_array($file_ext, $allowed_extensions) === false) {
|
||||
$message = 9;
|
||||
} else if (exif_imagetype($file_tmp) === false) {
|
||||
$message = 10;
|
||||
} else {
|
||||
$message = 8;
|
||||
move_uploaded_file($file_tmp, $config['homedir'].'/images/os_icons/'.$file_name);
|
||||
$file_uploaded = move_uploaded_file($file_tmp, $config['homedir'].'/images/os_icons/'.$file_name);
|
||||
|
||||
if ($file_uploaded !== true) {
|
||||
$message = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
|
||||
$name = io_safe_input(strip_tags(trim(io_safe_output((string) get_parameter('name')))));
|
||||
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
|
||||
$icon = get_parameter('icon', 0);
|
||||
|
||||
|
@ -254,7 +267,7 @@ $table->class = 'databox filter-table-adv';
|
|||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Name'),
|
||||
html_print_input_text('name', $name, __('Name'), 20, 30, true, false, false, '', 'w250px')
|
||||
html_print_input_text('name', $name, __('Name'), 20, 30, true, false, true, '', 'w250px')
|
||||
);
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
|
@ -290,6 +303,28 @@ html_print_action_buttons(
|
|||
|
||||
echo '</form>';
|
||||
|
||||
$id_message = get_parameter('id_message', 0);
|
||||
|
||||
if ($id_message !== 0) {
|
||||
switch ($id_message) {
|
||||
case 8:
|
||||
echo ui_print_success_message(__('Icon successfuly uploaded'), '', true);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
echo ui_print_error_message(__('File must be of type JPG, JPEG, PNG or SVG'), '', true);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
echo ui_print_error_message(__('An error ocurrered to upload icon'), '', true);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Nothing to do.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function get_list_os_icons_dir()
|
||||
{
|
||||
|
|
|
@ -162,11 +162,15 @@ if (empty($id_message) === false) {
|
|||
break;
|
||||
|
||||
case 8:
|
||||
echo ui_print_success_message(__('Icon successfuly uploaded'), '', true);
|
||||
header('Location: index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit&id_message=8');
|
||||
break;
|
||||
|
||||
case 9:
|
||||
echo ui_print_error_message(__('File must be of type JPG, JPEG, PNG or SVG'), '', true);
|
||||
header('Location: index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit&id_message=9');
|
||||
break;
|
||||
|
||||
case 10:
|
||||
header('Location: index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit&id_message=10');
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -154,8 +154,7 @@ if ($update_config == 1 && $config['history_db_enabled'] == 1) {
|
|||
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
||||
$total_agents = db_get_value('count(*)', 'tagente');
|
||||
$disable_agentaccess = ($total_agents >= 200 && $config['agentaccess'] == 0) ? true : false;
|
||||
|
||||
// $disable_agentaccess = ($total_agents >= 200 && $config['agentaccess'] == 0) ? true : false;
|
||||
$table_status = new StdClass();
|
||||
$table_status->width = '100%';
|
||||
$table_status->class = 'databox filters';
|
||||
|
@ -666,8 +665,8 @@ $table_other->data[2][1] = html_print_label_input_block(
|
|||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table_other->data[3][0] = html_print_label_input_block(
|
||||
/*
|
||||
$table_other->data[3][0] = html_print_label_input_block(
|
||||
__('Use agent access graph'),
|
||||
html_print_checkbox_switch(
|
||||
'agentaccess',
|
||||
|
@ -676,9 +675,9 @@ $table_other->data[3][0] = html_print_label_input_block(
|
|||
true,
|
||||
$disable_agentaccess
|
||||
)
|
||||
);
|
||||
|
||||
$table_other->data[3][1] = html_print_label_input_block(
|
||||
);
|
||||
*/
|
||||
$table_other->data[3][0] = html_print_label_input_block(
|
||||
__('Max. recommended number of files in attachment directory'),
|
||||
html_print_input_text(
|
||||
'num_files_attachment',
|
||||
|
|
|
@ -93,7 +93,7 @@ $buttons['general'] = [
|
|||
'images/setup.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('General'),
|
||||
'title' => __('General setup'),
|
||||
'class' => 'invert_filter',
|
||||
|
||||
]
|
||||
|
@ -184,7 +184,7 @@ $buttons['ITSM'] = [
|
|||
|
||||
$buttons['ehorus'] = [
|
||||
'active' => false,
|
||||
'text' => '<a href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup§ion=ehorus').'">'.html_print_image(
|
||||
'text' => '<a href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup§ion=pandorarc').'">'.html_print_image(
|
||||
'images/RC.png',
|
||||
true,
|
||||
[
|
||||
|
@ -265,7 +265,7 @@ if (enterprise_installed()) {
|
|||
switch ($section) {
|
||||
case 'general':
|
||||
$buttons['general']['active'] = true;
|
||||
$subpage = __('General');
|
||||
$subpage = __('General setup');
|
||||
$help_header = 'setup_general_tab';
|
||||
break;
|
||||
|
||||
|
@ -297,7 +297,7 @@ switch ($section) {
|
|||
$help_header = 'setup_flow_tab';
|
||||
break;
|
||||
|
||||
case 'ehorus':
|
||||
case 'pandorarc':
|
||||
$buttons['ehorus']['active'] = true;
|
||||
$subpage = __('Pandora RC');
|
||||
$help_header = 'setup_ehorus_tab';
|
||||
|
@ -370,14 +370,14 @@ switch ($section) {
|
|||
break;
|
||||
|
||||
default:
|
||||
$subpage = 'seccion: '.$section;
|
||||
$subpage = 'seccion: ';
|
||||
// Default.
|
||||
break;
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
$subpage,
|
||||
__('Setup').' » '.$subpage,
|
||||
'',
|
||||
false,
|
||||
$help_header,
|
||||
|
@ -388,6 +388,10 @@ ui_print_standard_header(
|
|||
'link' => '',
|
||||
'label' => __('Setup'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => $subpage,
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
|
@ -438,7 +442,7 @@ switch ($section) {
|
|||
include_once $config['homedir'].'/godmode/setup/setup_visuals.php';
|
||||
break;
|
||||
|
||||
case 'ehorus':
|
||||
case 'pandorarc':
|
||||
include_once $config['homedir'].'/godmode/setup/setup_ehorus.php';
|
||||
break;
|
||||
|
||||
|
|
|
@ -187,7 +187,8 @@ $button_test .= ' <span id="ITSM-message" class="invisible"></span>';
|
|||
|
||||
$row['control'] = html_print_label_input_block(
|
||||
__('Test connection pandora to ITSM'),
|
||||
$button_test
|
||||
$button_test,
|
||||
['div_class' => 'ITSM-remote-setup-ITSM_token']
|
||||
);
|
||||
$table_remote->data['ITSM_test'] = $row;
|
||||
|
||||
|
|
|
@ -535,16 +535,47 @@ html_print_action_buttons(
|
|||
__('Update'),
|
||||
'update_button',
|
||||
false,
|
||||
[ 'icon' => 'update' ],
|
||||
[
|
||||
'icon' => 'update',
|
||||
'onclick' => 'onFormSubmit()',
|
||||
],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
echo ui_print_warning_message(
|
||||
[
|
||||
'message' => __('Session timeout must be a number'),
|
||||
'force_class' => 'invisible js_warning_msg',
|
||||
],
|
||||
'',
|
||||
true
|
||||
);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function onFormSubmit() {
|
||||
const isNumber = n => $.isNumeric(n);
|
||||
|
||||
let session_timeout = $('#text-session_timeout').val()
|
||||
if(isNumber(session_timeout)) {
|
||||
if (session_timeout < 0) {
|
||||
|
||||
session_timeout = -1;
|
||||
}
|
||||
if (session_timeout > 604800) {
|
||||
session_timeout = 604800;
|
||||
}
|
||||
$('#text-session_timeout').val(session_timeout);
|
||||
} else {
|
||||
$('.js_warning_msg').removeClass('invisible');
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function showAndHide() {
|
||||
if ($('input[type=checkbox][name=double_auth_enabled]:checked').val() == 1) {
|
||||
$('#table1-2FA_all_users').removeClass('invisible');
|
||||
|
|
|
@ -405,19 +405,6 @@ $table->data[$i++][] = html_print_label_input_block(
|
|||
|
||||
|
||||
$table->data[$i][] = html_print_label_input_block(
|
||||
__('Enable Sflow'),
|
||||
html_print_checkbox_switch_extended(
|
||||
'activate_sflow',
|
||||
1,
|
||||
$config['activate_sflow'],
|
||||
$rbt_disabled,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
),
|
||||
);
|
||||
|
||||
$table->data[$i++][] = html_print_label_input_block(
|
||||
__('General network path'),
|
||||
html_print_input_text(
|
||||
'general_network_path',
|
||||
|
@ -733,7 +720,7 @@ $table->data[$i++][] = html_print_label_input_block(
|
|||
);
|
||||
|
||||
$help_tip = ui_print_help_tip(
|
||||
__('If there are any "In process" events with a specific Extra ID and a New event with that Extra ID is received, it will be created as "In process" instead.'),
|
||||
__('If there are any "In process" events with a specific Extra ID and a New event with that Extra ID is received, it will be created as "In process" instead. The new events also inherit Event Custom ID'),
|
||||
true
|
||||
);
|
||||
|
||||
|
@ -766,6 +753,26 @@ $table->data[$i][] = html_print_label_input_block(
|
|||
true
|
||||
)
|
||||
);
|
||||
$table->data[$i++][] = html_print_label_input_block(
|
||||
__('Number of modules in queue'),
|
||||
html_print_input_number(
|
||||
[
|
||||
'name' => 'number_modules_queue',
|
||||
'min' => 0,
|
||||
'value' => $config['number_modules_queue'],
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[$i][] = html_print_label_input_block(
|
||||
__('Easter eggs'),
|
||||
html_print_checkbox_switch(
|
||||
'eastern_eggs_disabled',
|
||||
1,
|
||||
$config['eastern_eggs_disabled'],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
echo '<form class="max_floating_element_size" id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
||||
|
@ -899,6 +906,35 @@ echo '<legend>'.__('Mail configuration').'</legend>';
|
|||
|
||||
echo '</fieldset>';
|
||||
|
||||
echo '<fieldset class="margin-bottom-10">';
|
||||
echo '<legend>'.__('NCM Configuration').'</legend>';
|
||||
|
||||
$table_ncm_config = new stdClass();
|
||||
$table_ncm_config->width = '100%';
|
||||
$table_ncm_config->class = 'databox filter-table-adv';
|
||||
$table_ncm_config->size = [];
|
||||
$table_ncm_config->size[0] = '50%';
|
||||
$table_ncm_config->data = [];
|
||||
|
||||
$table_ncm_config->data[0][] = html_print_label_input_block(
|
||||
__('FTP server IP').ui_print_help_tip(__('This value will be used by TFTP_SERVER_IP macro in NCM scripts.'), true),
|
||||
html_print_input_text(
|
||||
'tftp_server_ip',
|
||||
$config['tftp_server_ip'],
|
||||
'',
|
||||
false,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'w50p'
|
||||
)
|
||||
);
|
||||
|
||||
html_print_table($table_ncm_config);
|
||||
|
||||
echo '</fieldset>';
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
|
@ -1116,9 +1152,9 @@ $(document).ready (function () {
|
|||
id_imodule = $(value).attr('value');
|
||||
$("select[name='inventory_changes_blacklist[]']")
|
||||
.append(
|
||||
$("<option></option>")
|
||||
$("<option selected='selected'></option>")
|
||||
.val(id_imodule)
|
||||
.html('<i>' + imodule_name + '</i>')
|
||||
.text(imodule_name)
|
||||
);
|
||||
$("#inventory_changes_blacklist_out")
|
||||
.find("option[value='" + id_imodule + "']").remove();
|
||||
|
@ -1144,7 +1180,7 @@ $(document).ready (function () {
|
|||
.append(
|
||||
$("<option></option>")
|
||||
.val(id_imodule)
|
||||
.html('<i>' + imodule_name + '</i>')
|
||||
.text(imodule_name)
|
||||
);
|
||||
$("#inventory_changes_blacklist")
|
||||
.find("option[value='" + id_imodule + "']").remove();
|
||||
|
@ -1160,12 +1196,15 @@ $(document).ready (function () {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#inventory_changes_blacklist > option").each(function(key, value) {
|
||||
$(value).prop('selected',true).trigger('change');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$("#submit-update_button").click(function () {
|
||||
$('#inventory_changes_blacklist option').map(function(){
|
||||
$(this).prop('selected', true);
|
||||
});
|
||||
$("#inventory_changes_blacklist > option").each(function(key, value) {
|
||||
$(value).prop('selected',true).trigger('change');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -83,6 +83,19 @@ $table->data[3][] = html_print_label_input_block(
|
|||
html_print_checkbox_switch_extended('netflow_get_ip_hostname', 1, $config['netflow_get_ip_hostname'], false, $onclick, '', true)
|
||||
);
|
||||
|
||||
$table->data[4][] = html_print_label_input_block(
|
||||
__('Enable Sflow'),
|
||||
html_print_checkbox_switch_extended(
|
||||
'activate_sflow',
|
||||
1,
|
||||
$config['activate_sflow'],
|
||||
$rbt_disabled,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
),
|
||||
);
|
||||
|
||||
echo '<form class="max_floating_element_size" id="netflow_setup" method="post">';
|
||||
html_print_table($table);
|
||||
html_print_input_hidden('update_config', 1);
|
||||
|
|
|
@ -1952,6 +1952,7 @@ if ($create_alert || $update_alert) {
|
|||
[
|
||||
'border' => '0',
|
||||
'alt' => __('Delete'),
|
||||
'class' => 'invert_filter main_menu_icon',
|
||||
]
|
||||
).'</a> </td>';
|
||||
$data[1] .= '</tr>';
|
||||
|
|
|
@ -61,7 +61,7 @@ $license = db_get_value(
|
|||
);
|
||||
|
||||
if (isset($config['lts_updates']) === false) {
|
||||
$config['lts_updates'] = false;
|
||||
$config['lts_updates'] = true;
|
||||
}
|
||||
|
||||
if (empty($license) === true) {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue