From aea28219adc0db01a0f5aadf19fed0665720a1c3 Mon Sep 17 00:00:00 2001 From: mdtrooper Date: Mon, 9 Jun 2014 13:33:55 +0000 Subject: [PATCH] 2014-06-09 Miguel de Dios * include/functions_config.php, general/login_page.php: improved the source code style. * godmode/setup/os.builder.php: fixed the form. * godmode/update_manager_xxx/*, godmode/menu.php, include/functions_update_manager.php, include/ajax/update_manager.ajax.php, include/graphs/functions_gd.php, include/graphs/functions_flot.php, include/config_process.php, include/javascript/update_manager.js, include/javascript/jquery.knob.js, include/javascript/jquery.iframe-transport.js, include/javascript/jquery.fileupload.js, images/check-cross.png: first version of new update manager. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@10144 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 17 + pandora_console/general/login_page.php | 21 +- pandora_console/godmode/menu.php | 4 +- pandora_console/godmode/setup/os.builder.php | 4 +- .../update_manager_xxx/update_manager.css | 141 ++ .../update_manager.offline.php | 49 + .../update_manager.online.php | 58 + .../update_manager.setup.php | 51 + .../update_manager_xxx/update_manager_xxx.php | 66 + pandora_console/images/check-cross.png | Bin 0 -> 1393 bytes .../include/ajax/update_manager.ajax.php | 285 ++++ pandora_console/include/config_process.php | 6 + pandora_console/include/functions_config.php | 3 +- .../include/functions_update_manager.php | 192 +++ .../include/graphs/functions_flot.php | 2 +- .../include/graphs/functions_gd.php | 6 +- .../include/javascript/jquery.fileupload.js | 1367 +++++++++++++++++ .../javascript/jquery.iframe-transport.js | 208 +++ .../include/javascript/jquery.knob.js | 760 +++++++++ .../include/javascript/update_manager.js | 280 ++++ 20 files changed, 3502 insertions(+), 18 deletions(-) create mode 100644 pandora_console/godmode/update_manager_xxx/update_manager.css create mode 100644 pandora_console/godmode/update_manager_xxx/update_manager.offline.php create mode 100644 pandora_console/godmode/update_manager_xxx/update_manager.online.php create mode 100644 pandora_console/godmode/update_manager_xxx/update_manager.setup.php create mode 100644 pandora_console/godmode/update_manager_xxx/update_manager_xxx.php create mode 100755 pandora_console/images/check-cross.png create mode 100644 pandora_console/include/ajax/update_manager.ajax.php create mode 100755 pandora_console/include/functions_update_manager.php create mode 100644 pandora_console/include/javascript/jquery.fileupload.js create mode 100644 pandora_console/include/javascript/jquery.iframe-transport.js create mode 100755 pandora_console/include/javascript/jquery.knob.js create mode 100644 pandora_console/include/javascript/update_manager.js diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index c22ec9c504..4eadc44d41 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,20 @@ +2014-06-09 Miguel de Dios + + * include/functions_config.php, general/login_page.php: improved + the source code style. + + * godmode/setup/os.builder.php: fixed the form. + + * godmode/update_manager_xxx/*, godmode/menu.php, + include/functions_update_manager.php, + include/ajax/update_manager.ajax.php, + include/graphs/functions_gd.php, include/graphs/functions_flot.php, + include/config_process.php, include/javascript/update_manager.js, + include/javascript/jquery.knob.js, + include/javascript/jquery.iframe-transport.js, + include/javascript/jquery.fileupload.js, images/check-cross.png: + first version of new update manager. + 2014-06-09 Sergio Martin * images/login_background.jpg diff --git a/pandora_console/general/login_page.php b/pandora_console/general/login_page.php index 7009b7df2a..bfa39ec2a2 100644 --- a/pandora_console/general/login_page.php +++ b/pandora_console/general/login_page.php @@ -14,22 +14,22 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -if(isset($config["homedir"])) { +if (isset($config["homedir"])) { $homedir = $config["homedir"] . '/'; } else { $homedir = ''; } - + include_once($homedir . 'include/functions_ui.php'); include_once($homedir . 'include/functions.php'); include_once($homedir . 'include/functions_html.php'); -if(!isset($login_screen)) { +if (!isset($login_screen)) { $login_screen = 'login'; } -switch($login_screen) { +switch ($login_screen) { case 'login': $logo_link = 'http://www.pandorafms.com'; $logo_title = __('Go to Pandora FMS Website'); @@ -54,6 +54,7 @@ if (!empty ($page) && !empty ($sec)) { $url .= '&'.safe_url_extraclean($key).'='.safe_url_extraclean($value); } } +$login_body_style = ''; // Overrides the default background with the defined by the user if (!empty($config['login_background'])) { $background_url = ui_get_full_url("images/backgrounds/") . $config['login_background']; @@ -67,10 +68,10 @@ echo '
'; echo '
'; - + //TODO: Put branding in variables (external file) or database /* CUSTOM BRANDING STARTS HERE */ - + // Replace the following with your own URL and logo. // A mashup of the Pandora FMS logo and your companies highly preferred echo '
'; @@ -86,10 +87,10 @@ echo ' html_print_image ($config['homeurl'] . "/images/pandora_login.png", false, array ("class" => "login_logo", "alt" => "logo", "border" => 0, "title" => $logo_title), false, true); } echo ''; - + // This prints the current pandora console version. // For stable/live function it might be wise to comment it out - + /* CUSTOM BRANDING ENDS HERE */ echo ''; echo ''; echo '
'; - switch($login_screen) { + switch ($login_screen) { case 'login': if (!empty ($page) && !empty ($sec)) { foreach ($_POST as $key => $value) { @@ -129,7 +130,7 @@ echo ' echo '

'; break; default: - if(isset($error_info)) { + if (isset($error_info)) { echo '

' . $error_info['title'] . '

'; echo '
'; echo '' . html_print_image($config['homeurl'] . '/images/refresh.png', true, array('title' => __('Refresh')), false, true) . ''; diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 7251af307e..edf1abdd2e 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -218,6 +218,8 @@ if (check_acl ($config['id_user'], 0, "PM")) { $sub["godmode/setup/os"]["text"] = __('Edit OS'); $sub["godmode/setup/license"]["text"] = __('License'); + $sub["godmode/update_manager_xxx/update_manager_xxx"]["text"] = __('xxxx'); + enterprise_hook ('enterprise_acl_submenu'); enterprise_hook ('skins_submenu'); $sub["extras/pandora_diag"]["text"] = __('Diagnostic info'); @@ -270,7 +272,7 @@ if (check_acl ($config['id_user'], 0, "PM")) { if ($extmenu["name"] == 'DB interface' && !check_acl ($config['id_user'], 0, "DM")) { continue; } - + //Check the ACL for this user if (! check_acl ($config['id_user'], 0, $extmenu['acl'])) { continue; diff --git a/pandora_console/godmode/setup/os.builder.php b/pandora_console/godmode/setup/os.builder.php index 874cd4a119..1e0344a41f 100644 --- a/pandora_console/godmode/setup/os.builder.php +++ b/pandora_console/godmode/setup/os.builder.php @@ -39,7 +39,7 @@ $table->data[2][0] = __('Icon'); $table->data[2][1] = html_print_select($icons, 'icon', $icon, 'show_icon_OS();', __('None'), 0, true); $table->data[2][1] .= ' ' . ui_print_os_icon($idOS, false, true) . ''; -echo ''; + html_print_table($table); html_print_input_hidden('id_os', $idOS); @@ -86,7 +86,7 @@ function show_icon_OS() { async: false, timeout: 10000, success: function (data) { - $("#icon_image").html(data); + $("#icon_image").html(data); } }); } diff --git a/pandora_console/godmode/update_manager_xxx/update_manager.css b/pandora_console/godmode/update_manager_xxx/update_manager.css new file mode 100644 index 0000000000..2c0f7014d2 --- /dev/null +++ b/pandora_console/godmode/update_manager_xxx/update_manager.css @@ -0,0 +1,141 @@ +.fileupload_form { + background-color: #373A3D; + background-image: -moz-linear-gradient(center top , #373A3D, #313437); + border-radius: 3px; + font-family: 'PT Sans Narrow',sans-serif; + margin: 20px; + padding: 30px; +} +#drop_file { + background-color: #E6E6E6; + border: 20px solid rgba(0, 0, 0, 0); + border-radius: 3px; + color: #707070; + font-size: 16px; + font-weight: bold; + margin-bottom: 30px; + padding: 40px 50px; + text-align: center; + text-transform: uppercase; +} +#drop_file table { + vertical-align: middle; +} +#drop_file table td, #drop_file table label { + color: #707070; + font-family: 'PT Sans Narrow',sans-serif; + font-size: 16px; + font-weight: bold; + margin-top: 0; + vertical-align: middle; +} +#drop_file table select { + float: none; +} +#drop_file a { + background-color: #FF9933; + border-radius: 2px; + color: #FFFFFF; + cursor: pointer; + display: inline-block; + font-size: 14px; + line-height: 1; + padding: 12px 26px; +} +#drop_file a:hover { + background-color: #FFB972; + text-decoration: none; +} +#drop_file input { + display: none; +} +.fileupload_form ul { + border-bottom: 1px solid #3D4043; + border-top: 1px solid #2B2E31; + list-style: none outside none; + margin: 0 -30px; + padding: 0; +} +.fileupload_form ul li { + background-color: #333639; + background-image: -moz-linear-gradient(center top , #333639, #303335); + border-bottom: 1px solid #2B2E31; + border-top: 1px solid #3D4043; + padding: 15px; + position: relative; +} +.fileupload_form ul li #input-progress { + left: 68px; + position: absolute; +} +.fileupload_form ul li p { + color: #EEEEEE; + font-size: 12px; + font-weight: bold; + left: 95px; + overflow: hidden; + position: absolute; + top: 12px; + white-space: nowrap; +} +.fileupload_form ul li i { + color: #7F7F7F; + display: block; + font-style: normal; + font-weight: normal; +} +.fileupload_form ul li canvas { + left: 13px; + position: absolute; + top: 15px; +} +.fileupload_form ul li span { + background: url("../../images/check-cross.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0); + cursor: pointer; + height: 12px; + position: absolute; + right: 13px; + top: 34px; + width: 15px; +} +.fileupload_form ul li div { + display: block !important; +} +.fileupload_form ul li.working span { + background-position: 0 -12px; + height: 16px; +} +.fileupload_form ul li.loading span { + background: url("../../images/spinner.gif") no-repeat scroll 0 0 rgba(0, 0, 0, 0); + height: 16px; +} +.fileupload_form ul li.suc span { + background: url("../../images/check-cross.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0); + height: 12px; +} +.fileupload_form ul li.suc p { + color: #5A8629; +} +.fileupload_form ul li.error span { + background: url("../../images/check-cross.png") no-repeat scroll 0 -12px rgba(0, 0, 0, 0); + height: 16px; +} +.fileupload_form ul li.error p { + color: #FF3333; +} + +#log_zone { + background-color: #E6E6E6; + border: 20px solid rgba(0, 0, 0, 0); + border-radius: 3px; + color: #707070; + font-size: 12px; + margin-bottom: 30px; + padding: 10px; + text-align: left; +} + +#box_online { + background-color: #E6E6E6; + padding: 10px; +} \ No newline at end of file diff --git a/pandora_console/godmode/update_manager_xxx/update_manager.offline.php b/pandora_console/godmode/update_manager_xxx/update_manager.offline.php new file mode 100644 index 0000000000..9efa394026 --- /dev/null +++ b/pandora_console/godmode/update_manager_xxx/update_manager.offline.php @@ -0,0 +1,49 @@ + + + + +
+
    + + + + + + + + + \ No newline at end of file diff --git a/pandora_console/godmode/update_manager_xxx/update_manager.online.php b/pandora_console/godmode/update_manager_xxx/update_manager.online.php new file mode 100644 index 0000000000..675bd63cc8 --- /dev/null +++ b/pandora_console/godmode/update_manager_xxx/update_manager.online.php @@ -0,0 +1,58 @@ +' . + __('The new Update Manager client is shipped with Pandora FMS It helps system administrators to update their Pandora FMS automatically, since the Update Manager does the task of getting new modules, new plugins and new features (even full migrations tools for future versions) automatically.') . + '

    ' . + '

    ' . + __('Update Manager is one of the most advanced features of Pandora FMS Enterprise version, for more information visit http://pandorafms.com.') . + '

    ' . + '

    ' . + __('Update Manager sends anonymous information about Pandora FMS usage (number of agents and modules running). To disable it, remove remote server address from Update Manager plugin setup.') . + '

    '); + +echo "
    "; + echo ""; + echo ""; + echo ""; + + echo ""; + + echo ""; + + echo "
    "; + + echo ""; + +echo "
    "; + +$enterprise = enterprise_hook('update_manager_enterprise_main'); +if ($enterprise == ENTERPRISE_NOT_HOOK) { + //Open view + update_manager_main(); +} +?> \ No newline at end of file diff --git a/pandora_console/godmode/update_manager_xxx/update_manager.setup.php b/pandora_console/godmode/update_manager_xxx/update_manager.setup.php new file mode 100644 index 0000000000..5cbb7bbdd6 --- /dev/null +++ b/pandora_console/godmode/update_manager_xxx/update_manager.setup.php @@ -0,0 +1,51 @@ +'; +$table = null; +$table->width = '98%'; + +$table->style[0] = 'font-weight: bolder; vertical-align: top;'; + +$table->data[0][0] = __('URL update manager:'); +$table->data[0][1] = html_print_input_text('url_update_manager', + $url_update_manager, __('URL update manager'), 40, 60, true); + +html_print_input_hidden('action_update_url_update_manager', 1); +html_print_table($table); + +echo '
    '; +html_print_submit_button (__('Update'), 'update_button', false, + 'class="sub upd"'); +echo '
    '; +echo ''; +?> \ No newline at end of file diff --git a/pandora_console/godmode/update_manager_xxx/update_manager_xxx.php b/pandora_console/godmode/update_manager_xxx/update_manager_xxx.php new file mode 100644 index 0000000000..219f31a637 --- /dev/null +++ b/pandora_console/godmode/update_manager_xxx/update_manager_xxx.php @@ -0,0 +1,66 @@ + array( + 'active' => ($tab == 'setup') ? true : false, + 'text' => '' . + html_print_image ("images/gm_setup.png", true, array ("title" => __('Options'))) .''), + 'offline' => array( + 'active' => ($tab == 'offline') ? true : false, + 'text' => '' . + html_print_image ("images/box.disabled.png", true, array ("title" => __('Offline update manager'))) .''), + 'online' => array( + 'active' => ($tab == 'online') ? true : false, + 'text' => '' . + html_print_image("images/op_gis.png", true, array ("title" => __('Online update manager'))) .'') + ); + +switch ($tab) { + case 'setup': + $title = __('Update manager » Setup'); + break; + case 'offline': + $title = __('Update manager » Offline'); + break; + case 'online': + $title = __('Update manager » Online'); + break; +} + +ui_print_page_header($title, + "images/gm_setup.png", false, "", true, $buttons); + +switch ($tab) { + case 'setup': + require("update_manager.setup.php"); + break; + case 'offline': + require("update_manager.offline.php"); + break; + case 'online': + default: + require("update_manager.online.php"); + break; +} +?> \ No newline at end of file diff --git a/pandora_console/images/check-cross.png b/pandora_console/images/check-cross.png new file mode 100755 index 0000000000000000000000000000000000000000..3446eb06394c7c271c36c21b46fafb726846dc9e GIT binary patch literal 1393 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+l!3HEV&ax!|DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49qE+ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y};zOkkuW=D6f1m*%GCm3X??DgkBmQZiGlTpis^ zjm=CPUCo`$U5yM4EeuV}fV7jNiHoy|rHMJr3~YLxEX^$q4V;~UI^7HnU5zYV9i5zA zEnQq(jEtRJElgp0J@bl767!N%VfJPM?S<-f!mHQHxhOTUB)=#mKR*YS0s=DfOY(~| z@(UE4gH08}GxJjN%Zovg1M#a%YEfocYKmJ?ey##IbgeS6*iP8j5WOkngqS|iG5VmS zfs|BWLcsI~V!{(XkOR*;sd>QsQUuHxUw?V2F)%PL_H=O!skk*~ioeT|K!M}8%`TdL z6H#3h9J?r6FmtMsQsAjF&82U&To;8}EpeXa>vBE781KG$&wg?b zD_g~1PBqUM&b$M2+;{LL?fJ*_SHU@Teq&nOKFyUa-U@nu1PffaPt6I{*WVDJA z7K!mTygR{8`M@fnZL1f@yxAt|kbdTun=9iv-jCW9zp~F6UX@Azx~g;k5tTb(p-*gr zHM-h)6Zy{@KjwCLB&qr)HPCTQYJ;EVGC>>ehn=ss@JyJpy)Q3xp7)xq#}t`LcKp{% czt6OV literal 0 HcmV?d00001 diff --git a/pandora_console/include/ajax/update_manager.ajax.php b/pandora_console/include/ajax/update_manager.ajax.php new file mode 100644 index 0000000000..dbc35ff015 --- /dev/null +++ b/pandora_console/include/ajax/update_manager.ajax.php @@ -0,0 +1,285 @@ +open($path) === true) { + // The files will be extracted one by one + for($i = 0; $i < $zip->numFiles; $i++) { + $filename = $zip->getNameIndex($i); + + if ($zip->extractTo($destination, array($filename))) { + // Creates a file with the name of the files extracted + file_put_contents ($destination."/files.txt", $filename."\n", FILE_APPEND | LOCK_EX); + } else { + // Deletes the entire extraction directory if a file can not be extracted + delete_directory($destination); + $return["status"] = "error"; + $return["message"] = __("There was an error extracting the file '".$filename."' from the package."); + echo json_encode($return); + return; + } + } + // Creates a file with the number of files extracted + file_put_contents ($destination."/files.info.txt", $zip->numFiles); + // Zip close + $zip->close(); + + $return["status"] = "success"; + $return["package"] = $destination; + echo json_encode($return); + return; + } else { + $return["status"] = "error"; + $return["message"] = __("The package was not extracted."); + echo json_encode($return); + return; + } + } else { + $return["status"] = "error"; + $return["message"] = __("Invalid extension. The package must have the extension .oum."); + echo json_encode($return); + return; + } + } + + $return["status"] = "error"; + $return["message"] = __("The file was not uploaded succesfully."); + echo json_encode($return); + return; +} + +if ($install_package) { + ob_clean(); + + $package = (string) get_parameter("package"); + $package = trim($package); + + // 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")) { + + while ($line = stream_get_line($files_h, 65535, "\n")) { + $line = trim($line); + + // Tries to move the old file to the directory backup inside the extracted package + if (file_exists($config["homedir"]."/".$line)) { + rename($config["homedir"]."/".$line, $package."/backup/".$line); + } + // Tries to move the new file to the Integria directory + $dirname = dirname($line); + if (!file_exists($config["homedir"]."/".$dirname)) { + $dir_array = explode("/", $dirname); + $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 (!file_exists($config["homedir"]."/".$line)) { + mkdir($config["homedir"]."/".$line); + file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX); + } + } else { + if (rename($package."/".$line, $config["homedir"]."/".$line)) { + + // Append the moved file to the copied files txt + 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 ($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; + } + } else { + $return["status"] = "error"; + $return["message"]= __("The package does not exist"); + echo json_encode($return); + return; + } + + $return["status"] = "success"; + echo json_encode($return); + return; +} + +if ($check_install_enterprise_package) { + + check_install_enterprise_package(); + + return; + +} + +if ($check_install_package) { + + return; +} + +if ($check_online_enterprise_packages) { + + update_manager_check_online_enterprise_packages(); + + return; + +} + +if ($check_online_packages) { + + return; +} + +if ($update_last_enterprise_package) { + + update_manager_update_last_enterprise_package(); + + return; + +} + +if ($update_last_package) { + + return; +} + +if ($install_enterprise_package) { + $package = get_parameter('package', ''); + + update_manager_starting_enterprise_update($package, + $config['attachment_store'] . "/downloads/" . $package); + + return; +} + +if ($install_package_online) { + + return; +} + +if ($install_package_step2) { + update_manager_install_package_step2(); + + return; +} + +if ($check_progress_enterprise_update) { + update_manager_check_progress_enterprise(); + + return; +} + +if ($check_progress_update) { + + return; +} +?> \ No newline at end of file diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index fede12f0e4..30522bd770 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -175,6 +175,12 @@ if (!isset($config['inventory_changes_blacklist'])) { $config['inventory_changes_blacklist'] = array(); } +//NEW UPDATE MANAGER URL +if (!isset($config['url_update_manager'])) { + config_update_value('url_update_manager', + 'https://artica.es/integriaupdate4/server.php'); +} + if (defined('METACONSOLE')) { enterprise_include_once('meta/include/functions_users_meta.php'); enterprise_hook('set_meta_user_language'); diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 265bf328a6..e87acaced6 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -45,7 +45,8 @@ function config_update_value ($token, $value) { global $config; if ($token == 'list_ACL_IPs_for_API') { - $value = str_replace(array("\r\n", "\r", "\n"), ";", io_safe_output($value)); + $value = str_replace(array("\r\n", "\r", "\n"), ";", + io_safe_output($value)); } if (!isset ($config[$token])) { diff --git a/pandora_console/include/functions_update_manager.php b/pandora_console/include/functions_update_manager.php new file mode 100755 index 0000000000..436c4ac042 --- /dev/null +++ b/pandora_console/include/functions_update_manager.php @@ -0,0 +1,192 @@ + $license, + 'current_update' => $current_update, + 'limit_count' => $limit_count, + 'build' => $build_version, + 'version' => $pandora_version, + ); +} + +//Function to remove dir and files inside +function rrmdir($dir) { + if (is_dir($dir)) { + $objects = scandir($dir); + foreach ($objects as $object) { + if ($object != "." && $object != "..") { + if (filetype($dir."/".$object) == "dir") + rrmdir($dir."/".$object); else unlink($dir."/".$object); + } + } + reset($objects); + rmdir($dir); + } +} + +function update_manager_install_package_step2() { + global $config; + + ob_clean(); + + $package = (string) get_parameter("package"); + $package = trim($package); + + $version = (string)get_parameter("version", 0); + + $path = sys_get_temp_dir() . "/pandora_oum/" . $package; + + // All files extracted + $files_total = $path."/files.txt"; + // Files copied + $files_copied = $path."/files.copied.txt"; + $return = array(); + + if (file_exists($files_copied)) { + unlink($files_copied); + } + + if (file_exists($path)) { + + if ($files_h = fopen($files_total, "r")) { + + while ($line = stream_get_line($files_h, 65535, "\n")) { + + $line = trim($line); + + // Tries to move the old file to the directory backup inside the extracted package + if (file_exists($config["homedir"]."/".$line)) { + rename($config["homedir"]."/".$line, $path."/backup/".$line); + } + // Tries to move the new file to the Integria directory + $dirname = dirname($line); + if (!file_exists($config["homedir"]."/".$dirname)) { + $dir_array = explode("/", $dirname); + $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($path."/".$line)) { + if (!file_exists($config["homedir"]."/".$line)) { + mkdir($config["homedir"]."/".$line); + file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX); + } + } + else { + //Copy the new file + if (rename($path."/".$line, $config["homedir"]."/".$line)) { + + // Append the moved file to the copied files txt + 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($path."/backup/".$line, $config["homedir"]."/".$line_c)) { + $backup_status = __("Some of your files might not be recovered."); + } + } + if (!rename($path."/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 ($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($path."/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; + } + } + else { + $return["status"] = "error"; + $return["message"]= __("The package does not exist"); + echo json_encode($return); + return; + } + + $return["status"] = "success"; + $return["message"]= __("The package is installed."); + echo json_encode($return); + + update_manager_enterprise_set_version($version); + + return; +} + +function update_manager_main() { + +} +?> \ No newline at end of file diff --git a/pandora_console/include/graphs/functions_flot.php b/pandora_console/include/graphs/functions_flot.php index 068a021292..9b71e1a827 100644 --- a/pandora_console/include/graphs/functions_flot.php +++ b/pandora_console/include/graphs/functions_flot.php @@ -395,7 +395,7 @@ function flot_pie_chart ($values, $labels, $width, $height, $water_mark, } $return .= "