Added open files to server remote config

This commit is contained in:
fermin831 2015-10-09 16:00:34 +02:00
parent 10044a6f3a
commit 18e3c4a927
7 changed files with 106 additions and 3 deletions

View File

@ -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');

View File

@ -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] .= '&nbsp;&nbsp;<a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_del='.$server["id_server"].'&amp;delete=1">';
$data[8] .= html_print_image ('images/cross.png', true,
array('title' => __('Delete'),

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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