mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
Added rr to um offline. Ticket #510
This commit is contained in:
parent
44ac96ae5e
commit
6a39147940
@ -43,6 +43,8 @@ $baseurl = ui_get_full_url(false, false, false, false);
|
|||||||
var package_updated_successfully = "<?php echo __('Package updated successfully.'); ?>\n";
|
var package_updated_successfully = "<?php echo __('Package updated successfully.'); ?>\n";
|
||||||
var if_there_are_any_database_change = "<?php echo __('If there are any database change, it will be applied on the next login.'); ?>\n";
|
var if_there_are_any_database_change = "<?php echo __('If there are any database change, it will be applied on the next login.'); ?>\n";
|
||||||
var package_not_updated = "<?php echo __('Package not updated.'); ?>\n";
|
var package_not_updated = "<?php echo __('Package not updated.'); ?>\n";
|
||||||
|
var error_in_mr = "<?php echo __('Error in MR file'); ?>\n";
|
||||||
|
var error_in_mr_accept = "<?php echo __('MR not accepted'); ?>\n";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<form id="form-offline_update" method="post" enctype="multipart/form-data" class="fileupload_form">
|
<form id="form-offline_update" method="post" enctype="multipart/form-data" class="fileupload_form">
|
||||||
|
@ -109,128 +109,137 @@ if ($install_package) {
|
|||||||
global $config;
|
global $config;
|
||||||
ob_clean();
|
ob_clean();
|
||||||
|
|
||||||
$package = (string) get_parameter("package");
|
$accept = (bool)get_parameter("accept", false);
|
||||||
$package = trim($package);
|
if ($accept) {
|
||||||
|
$package = (string) get_parameter("package");
|
||||||
$chunks = explode("_", basename($package));
|
$package = trim($package);
|
||||||
$chunks = explode(".", $chunks[1]);
|
|
||||||
$version = $chunks[0];
|
|
||||||
|
|
||||||
// All files extracted
|
|
||||||
$files_total = $package . "/files.txt";
|
|
||||||
// Files copied
|
|
||||||
$files_copied = $package . "/files.copied.txt";
|
|
||||||
$return = array();
|
|
||||||
|
|
||||||
if (file_exists($files_copied)) {
|
|
||||||
unlink($files_copied);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_exists($package)) {
|
|
||||||
|
|
||||||
if ($files_h = fopen($files_total, "r")) {
|
$chunks = explode("_", basename($package));
|
||||||
|
$chunks = explode(".", $chunks[1]);
|
||||||
|
$version = $chunks[0];
|
||||||
|
|
||||||
|
// All files extracted
|
||||||
|
$files_total = $package . "/files.txt";
|
||||||
|
// Files copied
|
||||||
|
$files_copied = $package . "/files.copied.txt";
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
if (file_exists($files_copied)) {
|
||||||
|
unlink($files_copied);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists($package)) {
|
||||||
|
|
||||||
while ($line = stream_get_line($files_h, 65535, "\n")) {
|
if ($files_h = fopen($files_total, "r")) {
|
||||||
$line = trim($line);
|
|
||||||
|
|
||||||
// Tries to move the old file to the directory backup inside the extracted package
|
while ($line = stream_get_line($files_h, 65535, "\n")) {
|
||||||
if (file_exists($config["homedir"] . "/" . $line)) {
|
$line = trim($line);
|
||||||
rename($config["homedir"] . "/" . $line,
|
|
||||||
$package . "/backup/" . $line);
|
// Tries to move the old file to the directory backup inside the extracted package
|
||||||
}
|
if (file_exists($config["homedir"] . "/" . $line)) {
|
||||||
// Tries to move the new file to the Pandora directory
|
rename($config["homedir"] . "/" . $line,
|
||||||
$dirname = dirname($line);
|
$package . "/backup/" . $line);
|
||||||
if (!file_exists($config["homedir"] . "/" . $dirname)) {
|
}
|
||||||
$dir_array = explode("/", $dirname);
|
// Tries to move the new file to the Pandora directory
|
||||||
$temp_dir = "";
|
$dirname = dirname($line);
|
||||||
foreach ($dir_array as $dir) {
|
if (!file_exists($config["homedir"] . "/" . $dirname)) {
|
||||||
$temp_dir .= "/" . $dir;
|
$dir_array = explode("/", $dirname);
|
||||||
if (!file_exists($config["homedir"] . $temp_dir)) {
|
$temp_dir = "";
|
||||||
mkdir($config["homedir"] . $temp_dir);
|
foreach ($dir_array as $dir) {
|
||||||
|
$temp_dir .= "/" . $dir;
|
||||||
|
if (!file_exists($config["homedir"] . $temp_dir)) {
|
||||||
|
mkdir($config["homedir"] . $temp_dir);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (is_dir($package . "/" . $line)) {
|
||||||
if (is_dir($package . "/" . $line)) {
|
if (!file_exists($config["homedir"] . "/" . $line)) {
|
||||||
if (!file_exists($config["homedir"] . "/" . $line)) {
|
mkdir($config["homedir"] . "/" . $line);
|
||||||
mkdir($config["homedir"] . "/" . $line);
|
file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX);
|
||||||
file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX);
|
}
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
else {
|
if (rename($package."/".$line, $config["homedir"]."/".$line)) {
|
||||||
if (rename($package."/".$line, $config["homedir"]."/".$line)) {
|
|
||||||
|
// Append the moved file to the copied files txt
|
||||||
// Append the moved file to the copied files txt
|
if (!file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX)) {
|
||||||
if (!file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX)) {
|
|
||||||
|
// If the copy process fail, this code tries to restore the files backed up before
|
||||||
|
if ($files_copied_h = fopen($files_copied, "r")) {
|
||||||
|
while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
|
||||||
|
$line_c = trim($line_c);
|
||||||
|
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line_c)) {
|
||||||
|
$backup_status = __("Some of your files might not be recovered.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
|
||||||
|
$backup_status = __("Some of your files might not be recovered.");
|
||||||
|
}
|
||||||
|
fclose($files_copied_h);
|
||||||
|
} else {
|
||||||
|
$backup_status = __("Some of your old files might not be recovered.");
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($files_h);
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"]= __("Line '$line' not copied to the progress file.")." ".$backup_status;
|
||||||
|
echo json_encode($return);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
// If the copy process fail, this code tries to restore the files backed up before
|
// If the copy process fail, this code tries to restore the files backed up before
|
||||||
if ($files_copied_h = fopen($files_copied, "r")) {
|
if ($files_copied_h = fopen($files_copied, "r")) {
|
||||||
while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
|
while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
|
||||||
$line_c = trim($line_c);
|
$line_c = trim($line_c);
|
||||||
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line_c)) {
|
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
|
||||||
$backup_status = __("Some of your files might not be recovered.");
|
$backup_status = __("Some of your old files might not be recovered.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
|
|
||||||
$backup_status = __("Some of your files might not be recovered.");
|
|
||||||
}
|
|
||||||
fclose($files_copied_h);
|
fclose($files_copied_h);
|
||||||
} else {
|
}
|
||||||
$backup_status = __("Some of your old files might not be recovered.");
|
else {
|
||||||
|
$backup_status = __("Some of your files might not be recovered.");
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose($files_h);
|
fclose($files_h);
|
||||||
$return["status"] = "error";
|
$return["status"] = "error";
|
||||||
$return["message"]= __("Line '$line' not copied to the progress file.")." ".$backup_status;
|
$return["message"]= __("File '$line' not copied.")." ".$backup_status;
|
||||||
echo json_encode($return);
|
echo json_encode($return);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
|
||||||
// If the copy process fail, this code tries to restore the files backed up before
|
|
||||||
if ($files_copied_h = fopen($files_copied, "r")) {
|
|
||||||
while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
|
|
||||||
$line_c = trim($line_c);
|
|
||||||
if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
|
|
||||||
$backup_status = __("Some of your old files might not be recovered.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose($files_copied_h);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$backup_status = __("Some of your files might not be recovered.");
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose($files_h);
|
|
||||||
$return["status"] = "error";
|
|
||||||
$return["message"]= __("File '$line' not copied.")." ".$backup_status;
|
|
||||||
echo json_encode($return);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
fclose($files_h);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"]= __("An error ocurred while reading a file.");
|
||||||
|
echo json_encode($return);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
fclose($files_h);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$return["status"] = "error";
|
$return["status"] = "error";
|
||||||
$return["message"]= __("An error ocurred while reading a file.");
|
$return["message"]= __("The package does not exist");
|
||||||
echo json_encode($return);
|
echo json_encode($return);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
update_manager_enterprise_set_version($version);
|
||||||
$return["status"] = "error";
|
db_pandora_audit("Update Pandora", "Update version: $version of Pandora FMS by ".$config['id_user']);
|
||||||
$return["message"]= __("The package does not exist");
|
|
||||||
|
$return["status"] = "success";
|
||||||
|
echo json_encode($return);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$return["status"] = "error";
|
||||||
|
$return["message"]= __("Package not accepted");
|
||||||
echo json_encode($return);
|
echo json_encode($return);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
update_manager_enterprise_set_version($version);
|
|
||||||
db_pandora_audit("Update Pandora", "Update version: $version of Pandora FMS by ".$config['id_user']);
|
|
||||||
|
|
||||||
$return["status"] = "success";
|
|
||||||
echo json_encode($return);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($check_install_package) {
|
if ($check_install_package) {
|
||||||
|
@ -193,40 +193,196 @@ function formatFileSize(bytes) {
|
|||||||
function install_package (package, homeurl) {
|
function install_package (package, homeurl) {
|
||||||
var home_url = (typeof homeurl !== 'undefined') ? homeurl + '/' : '';
|
var home_url = (typeof homeurl !== 'undefined') ? homeurl + '/' : '';
|
||||||
|
|
||||||
var parameters = {};
|
$("<div id='pkg_apply_dialog' class= 'dialog ui-dialog-content'></div>").dialog ({
|
||||||
parameters['page'] = 'include/ajax/update_manager.ajax';
|
resizable: true,
|
||||||
parameters['install_package'] = 1;
|
draggable: true,
|
||||||
parameters['package'] = package;
|
modal: true,
|
||||||
|
overlay: {
|
||||||
$('#form-offline_update ul').find('li').removeClass('suc');
|
opacity: 0.5,
|
||||||
$('#form-offline_update ul').find('li').addClass('loading');
|
background: 'black'
|
||||||
|
},
|
||||||
$.ajax({
|
width: 600,
|
||||||
type: 'POST',
|
height: 350,
|
||||||
url: home_url + 'ajax.php',
|
buttons: {
|
||||||
data: parameters,
|
"Apply package": function () {
|
||||||
dataType: "json",
|
$("#pkg_apply_dialog").dialog("close");
|
||||||
success: function (data) {
|
|
||||||
$('#form-offline_update ul').find('li').removeClass('loading');
|
var parameters = {};
|
||||||
if (data.status == "success") {
|
parameters['page'] = 'include/ajax/update_manager.ajax';
|
||||||
$('#form-offline_update ul').find('li').addClass('suc');
|
parameters['search_minor'] = 1;
|
||||||
$('#form-offline_update ul').find('li').find('p').html(package_updated_successfully)
|
|
||||||
.append("<i>" + if_there_are_any_database_change + "</i>");
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: home_url + 'ajax.php',
|
||||||
|
data: parameters,
|
||||||
|
dataType: "json",
|
||||||
|
success: function (data) {
|
||||||
|
if (data['have_minor']) {
|
||||||
|
$("<div id='mr_dialog2' class='dialog ui-dialog-content' title='Menor release available'></div>").dialog ({
|
||||||
|
resizable: true,
|
||||||
|
draggable: true,
|
||||||
|
modal: true,
|
||||||
|
overlay: {
|
||||||
|
opacity: 0.5,
|
||||||
|
background: 'black'
|
||||||
|
},
|
||||||
|
width: 600,
|
||||||
|
height: 350,
|
||||||
|
buttons: {
|
||||||
|
"Apply minor releases": function () {
|
||||||
|
var no_error = apply_minor_release(data['mr']);
|
||||||
|
$("#apply_rr_button").remove();
|
||||||
|
$("#cancel_rr_button").remove();
|
||||||
|
if (no_error) {
|
||||||
|
var parameters = {};
|
||||||
|
parameters['page'] = 'include/ajax/update_manager.ajax';
|
||||||
|
parameters['install_package'] = 1;
|
||||||
|
parameters['package'] = package;
|
||||||
|
parameters['accept'] = 1;
|
||||||
|
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').addClass('loading');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: home_url + 'ajax.php',
|
||||||
|
data: parameters,
|
||||||
|
dataType: "json",
|
||||||
|
success: function (data) {
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('loading');
|
||||||
|
if (data.status == "success") {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_updated_successfully)
|
||||||
|
.append("<i>" + if_there_are_any_database_change + "</i>");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('error');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_not_updated)
|
||||||
|
.append("<i>"+data.message+"</i>");
|
||||||
|
}
|
||||||
|
$('#form-offline_update ul').find('li').css("cursor", "pointer");
|
||||||
|
$('#form-offline_update ul').find('li').click(function() {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check the status of the update
|
||||||
|
check_install_package(package, homeurl);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('error');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(error_in_mr)
|
||||||
|
.append("<i>"+data.message+"</i>");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Cancel": function () {
|
||||||
|
$("#mr_dialog2").dialog("close");
|
||||||
|
$('#form-offline_update ul').find('li').addClass('error');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(error_in_mr_accept)
|
||||||
|
.append("<i>"+data.message+"</i>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('button:contains(Apply minor releases)').attr("id","apply_rr_button");
|
||||||
|
$('button:contains(Cancel)').attr("id","cancel_rr_button");
|
||||||
|
|
||||||
|
var dialog_text = "<div><h3>Do you want to apply minor releases?</h3></br>";
|
||||||
|
dialog_text = dialog_text + "<h2>We recommend launch a planned downtime to this process</h2></br>";
|
||||||
|
dialog_text = dialog_text + "<a href=\"<?php echo $config['homeurl']; ?>index.php?sec=extensions&sec2=godmode/agentes/planned_downtime.list\">Planned downtimes</a></div>"
|
||||||
|
|
||||||
|
$('#mr_dialog2').html(dialog_text);
|
||||||
|
$('#mr_dialog2').dialog('open');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#pkg_apply_dialog").dialog("close");
|
||||||
|
|
||||||
|
var parameters = {};
|
||||||
|
parameters['page'] = 'include/ajax/update_manager.ajax';
|
||||||
|
parameters['install_package'] = 1;
|
||||||
|
parameters['package'] = package;
|
||||||
|
parameters['accept'] = 1;
|
||||||
|
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').addClass('loading');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: home_url + 'ajax.php',
|
||||||
|
data: parameters,
|
||||||
|
dataType: "json",
|
||||||
|
success: function (data) {
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('loading');
|
||||||
|
if (data.status == "success") {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_updated_successfully)
|
||||||
|
.append("<i>" + if_there_are_any_database_change + "</i>");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('error');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_not_updated)
|
||||||
|
.append("<i>"+data.message+"</i>");
|
||||||
|
}
|
||||||
|
$('#form-offline_update ul').find('li').css("cursor", "pointer");
|
||||||
|
$('#form-offline_update ul').find('li').click(function() {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check the status of the update
|
||||||
|
check_install_package(package, homeurl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"Cancel": function () {
|
||||||
|
$(this).dialog("close");
|
||||||
|
|
||||||
|
var parameters = {};
|
||||||
|
parameters['page'] = 'include/ajax/update_manager.ajax';
|
||||||
|
parameters['install_package'] = 1;
|
||||||
|
parameters['package'] = package;
|
||||||
|
parameters['accept'] = 0;
|
||||||
|
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').addClass('loading');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: home_url + 'ajax.php',
|
||||||
|
data: parameters,
|
||||||
|
dataType: "json",
|
||||||
|
success: function (data) {
|
||||||
|
$('#form-offline_update ul').find('li').removeClass('loading');
|
||||||
|
if (data.status == "success") {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('suc');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_updated_successfully)
|
||||||
|
.append("<i>" + if_there_are_any_database_change + "</i>");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#form-offline_update ul').find('li').addClass('error');
|
||||||
|
$('#form-offline_update ul').find('li').find('p').html(package_not_updated)
|
||||||
|
.append("<i>"+data.message+"</i>");
|
||||||
|
}
|
||||||
|
$('#form-offline_update ul').find('li').css("cursor", "pointer");
|
||||||
|
$('#form-offline_update ul').find('li').click(function() {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check the status of the update
|
||||||
|
check_install_package(package, homeurl);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$('#form-offline_update ul').find('li').addClass('error');
|
|
||||||
$('#form-offline_update ul').find('li').find('p').html(package_not_updated)
|
|
||||||
.append("<i>"+data.message+"</i>");
|
|
||||||
}
|
|
||||||
$('#form-offline_update ul').find('li').css("cursor", "pointer");
|
|
||||||
$('#form-offline_update ul').find('li').click(function() {
|
|
||||||
window.location.reload();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var dialog_text = "<div><h3>Do you want to apply the package?</h3></br>";
|
||||||
|
|
||||||
// Check the status of the update
|
$('#pkg_apply_dialog').html(dialog_text);
|
||||||
check_install_package(package, homeurl);
|
$('#pkg_apply_dialog').dialog('open');
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_install_package(package, homeurl) {
|
function check_install_package(package, homeurl) {
|
||||||
@ -552,8 +708,6 @@ function install_free_package(package, version, homeurl) {
|
|||||||
|
|
||||||
function apply_minor_release (n_mr) {
|
function apply_minor_release (n_mr) {
|
||||||
var error = false;
|
var error = false;
|
||||||
$("#apply_rr_button").remove();
|
|
||||||
$("#cancel_rr_button").remove();
|
|
||||||
$('#mr_dialog2').empty();
|
$('#mr_dialog2').empty();
|
||||||
$.each(n_mr, function(i, mr) {
|
$.each(n_mr, function(i, mr) {
|
||||||
var params = {};
|
var params = {};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user