Added open files to server remote config
This commit is contained in:
parent
10044a6f3a
commit
18e3c4a927
|
@ -29,6 +29,9 @@ if (! check_acl ($config["id_user"], 0, "AW")) {
|
|||
}
|
||||
|
||||
if (isset($_GET["server"])) {
|
||||
|
||||
enterprise_include("godmode/agentes/agent_disk_conf_editor.php");
|
||||
|
||||
$id_server= get_parameter_get ("server");
|
||||
// Headers
|
||||
ui_print_page_header (__('Update Server'), "images/gm_servers.png", false, "servers", true);
|
||||
|
@ -53,6 +56,13 @@ if (isset($_GET["server"])) {
|
|||
echo "</div>";
|
||||
|
||||
}
|
||||
elseif (isset($_GET["server_remote"])) {
|
||||
|
||||
// Headers
|
||||
$id_server= get_parameter_get ("server_remote");
|
||||
ui_print_page_header (__('Remote Configuration'), "images/gm_servers.png", false, "servers", true);
|
||||
enterprise_include("godmode/servers/server_disk_conf_editor.php");
|
||||
}
|
||||
else {
|
||||
// Header
|
||||
ui_print_page_header (__('Pandora servers'), "images/gm_servers.png", false, "servers", true);
|
||||
|
@ -107,6 +117,26 @@ else {
|
|||
ui_print_error_message(__('There was a problem updating the server'));
|
||||
}
|
||||
}
|
||||
elseif (isset($_GET["delete_conf_file"])) {
|
||||
|
||||
$correct = false;
|
||||
$id_server = get_parameter ("id_server");
|
||||
$server_md5 = md5(io_safe_output(servers_get_name ($id_server,'none')), FALSE);
|
||||
|
||||
if (file_exists ($config["remote_config"] . "/md5/" . $server_md5 . ".srv.md5")) {
|
||||
// Server remote configuration editor
|
||||
$file_name = $config["remote_config"] . "/conf/" . $server_md5 . ".srv.conf";
|
||||
$correct = @unlink ($file_name);
|
||||
|
||||
$file_name = $config["remote_config"] . "/md5/" . $server_md5 . ".srv.md5";
|
||||
$correct = @unlink ($file_name);
|
||||
}
|
||||
|
||||
ui_print_result_message ($correct,
|
||||
__('Conf file deleted successfully'),
|
||||
__('Could not delete conf file'));
|
||||
}
|
||||
|
||||
|
||||
$tiny = false;
|
||||
require($config['homedir'] . '/godmode/servers/servers.build_table.php');
|
||||
|
|
|
@ -75,6 +75,7 @@ if (check_acl ($config["id_user"], 0, "PM")) {
|
|||
}
|
||||
|
||||
$table->data = array ();
|
||||
$names_servers = array ();
|
||||
|
||||
foreach ($servers as $server) {
|
||||
$data = array ();
|
||||
|
@ -122,6 +123,15 @@ foreach ($servers as $server) {
|
|||
}
|
||||
$data[7] = ui_print_timestamp ($server['keepalive'], true);
|
||||
|
||||
$safe_server_name = servers_get_name($server["id_server"]);
|
||||
if (!isset($names_servers[$safe_server_name])){
|
||||
if (servers_check_remote_config ($safe_server_name) && enterprise_installed()) {
|
||||
$names_servers[$safe_server_name] = true;
|
||||
} else {
|
||||
$names_servers[$safe_server_name] = false;
|
||||
}
|
||||
}
|
||||
|
||||
//Only Pandora Administrator can delete servers
|
||||
if (check_acl ($config["id_user"], 0, "PM")) {
|
||||
$data[8] = '';
|
||||
|
@ -143,6 +153,14 @@ foreach ($servers as $server) {
|
|||
array('title' => __('Edit')));
|
||||
$data[8] .= '</a>';
|
||||
|
||||
if ($names_servers[$safe_server_name] === true) {
|
||||
$data[8] .= '<a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server["id_server"].'">';
|
||||
$data[8] .= html_print_image ('images/remote_configuration.png', true,
|
||||
array('title' => __('Remote configuration')));
|
||||
$data[8] .= '</a>';
|
||||
$names_servers[$safe_server_name] = false;
|
||||
}
|
||||
|
||||
$data[8] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_del='.$server["id_server"].'&delete=1">';
|
||||
$data[8] .= html_print_image ('images/cross.png', true,
|
||||
array('title' => __('Delete'),
|
||||
|
|
|
@ -670,6 +670,37 @@ function servers_get_name ($id_server) {
|
|||
return (string) db_get_value ('name', 'tserver', 'id_server', (int) $id_server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the presence of .conf and .md5 into remote_config dir
|
||||
*
|
||||
* @param string Agent name
|
||||
*
|
||||
* @return true if files exist and are writable
|
||||
*/
|
||||
|
||||
|
||||
function servers_check_remote_config ($server_name) {
|
||||
global $config;
|
||||
|
||||
$server_md5 = md5 ($server_name, false);
|
||||
|
||||
$filenames = array();
|
||||
$filenames['md5'] = io_safe_output($config["remote_config"])
|
||||
. "/md5/" . $server_md5 . ".srv.md5";
|
||||
$filenames['conf'] = io_safe_output($config["remote_config"])
|
||||
. "/conf/" . $server_md5 . ".srv.conf";
|
||||
|
||||
if (! isset ($filenames['conf']))
|
||||
return false;
|
||||
if (! isset ($filenames['md5']))
|
||||
return false;
|
||||
|
||||
return (file_exists ($filenames['conf'])
|
||||
&& is_writable ($filenames['conf'])
|
||||
&& file_exists ($filenames['md5'])
|
||||
&& is_writable ($filenames['md5']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a string containing image tag for a given target id (server)
|
||||
* TODO: Make this print_servertype_icon and move to functions_ui.php. Make XHTML compatible. Make string translatable
|
||||
|
|
|
@ -139,8 +139,10 @@ sub pandora_startup () {
|
|||
########################################################################################
|
||||
# Server restart.
|
||||
########################################################################################
|
||||
sub pandora_restart () {
|
||||
|
||||
sub pandora_restart (;$) {
|
||||
|
||||
my $sleep_time = @_ > 0 ? $_[0] : $Config{'restart_delay'};
|
||||
|
||||
# Stop the servers
|
||||
foreach my $server (@Servers) {
|
||||
$server->stop ();
|
||||
|
@ -153,7 +155,7 @@ sub pandora_restart () {
|
|||
close (STDERR);
|
||||
|
||||
# Wait before trying to start again
|
||||
sleep ($Config{'restart_delay'});
|
||||
sleep ($sleep_time);
|
||||
|
||||
# Start the servers
|
||||
pandora_startup ();
|
||||
|
@ -624,6 +626,18 @@ sub main() {
|
|||
# Unmute
|
||||
open(STDOUT, ">&OLDOUT");
|
||||
close (OLDOUT);
|
||||
}
|
||||
|
||||
if ($Config{'remote_config'} == 1 && enterprise_hook ('pandora_remote_config_server', [\%Config])) {
|
||||
|
||||
# Generate 'restarting' events
|
||||
foreach my $server (@Servers) {
|
||||
$server->restartEvent ($@);
|
||||
}
|
||||
|
||||
logger (\%Config, 'Pandora FMS Server restarting (' . $@ . ') in 10 seconds.', 1);
|
||||
pandora_load_config (\%Config);
|
||||
pandora_restart (5);
|
||||
}
|
||||
|
||||
threads->yield;
|
||||
|
|
|
@ -509,3 +509,5 @@ console_pass pandora
|
|||
# Maximum executing time of an alert (in seconds)
|
||||
global_alert_timeout 15
|
||||
|
||||
# If set to 1 allows PandoraFMS Server to be configured via the web console (Only Enterprise version)
|
||||
remote_config 0
|
||||
|
|
|
@ -316,3 +316,5 @@ console_pass pandora
|
|||
# Maximum executing time of an alert (in seconds)
|
||||
global_alert_timeout 15
|
||||
|
||||
# If set to 1 allows PandoraFMS Server to be configured via the web console (Only Enterprise version)
|
||||
remote_config 0
|
||||
|
|
|
@ -385,6 +385,9 @@ sub pandora_load_config {
|
|||
|
||||
# Global Timeout for Custom Commands Alerts
|
||||
$pa_config->{"global_alert_timeout"}= 15; # 6.0
|
||||
|
||||
# Server Remote Config
|
||||
$pa_config->{"remote_config"}= 0; # 6.0
|
||||
|
||||
|
||||
# Check for UID0
|
||||
|
@ -857,6 +860,9 @@ sub pandora_load_config {
|
|||
elsif ($parametro =~ m/^global_alert_timeout\s+([0-9]*)/i) {
|
||||
$pa_config->{'global_alert_timeout'}= clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^remote_config\s+([0-9]*)/i) {
|
||||
$pa_config->{'remote_config'}= clean_blank($1);
|
||||
}
|
||||
} # end of loop for parameter #
|
||||
|
||||
# Set to RDBMS' standard port
|
||||
|
|
Loading…
Reference in New Issue