PageRenderTime 24ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/wp-content/plugins/duplicator/classes/server.php

https://gitlab.com/sokeara/Tribal_Education
PHP | 185 lines | 117 code | 29 blank | 39 comment | 34 complexity | 5855c9009ab4e648aa9adb56c7602c02 MD5 | raw file
  1. <?php
  2. if ( ! defined( 'DUPLICATOR_VERSION' ) ) exit; // Exit if accessed directly
  3. require_once (DUPLICATOR_PLUGIN_PATH . 'classes/utility.php');
  4. /**
  5. * Class used to get server statis
  6. * @package Dupicator\classes
  7. */
  8. class DUP_Server
  9. {
  10. /**
  11. * Gets the system requirements which must pass to buld a package
  12. * @return array An array of requirements
  13. */
  14. public static function GetRequirements()
  15. {
  16. global $wpdb;
  17. $dup_tests = array();
  18. //PHP SUPPORT
  19. $safe_ini = strtolower(ini_get('safe_mode'));
  20. $dup_tests['PHP']['SAFE_MODE'] = $safe_ini != 'on' || $safe_ini != 'yes' || $safe_ini != 'true' || ini_get("safe_mode") != 1 ? 'Pass' : 'Fail';
  21. $dup_tests['PHP']['VERSION'] = DUP_Util::$on_php_529_plus ? 'Pass' : 'Fail';
  22. $dup_tests['PHP']['ZIP'] = class_exists('ZipArchive') ? 'Pass' : 'Fail';
  23. $dup_tests['PHP']['FUNC_1'] = function_exists("file_get_contents") ? 'Pass' : 'Fail';
  24. $dup_tests['PHP']['FUNC_2'] = function_exists("file_put_contents") ? 'Pass' : 'Fail';
  25. $dup_tests['PHP']['FUNC_3'] = function_exists("mb_strlen") ? 'Pass' : 'Fail';
  26. $dup_tests['PHP']['ALL'] = ! in_array('Fail', $dup_tests['PHP']) ? 'Pass' : 'Fail';
  27. //PERMISSIONS
  28. $handle_test = @opendir(DUPLICATOR_WPROOTPATH);
  29. $dup_tests['IO']['WPROOT'] = is_writeable(DUPLICATOR_WPROOTPATH) && $handle_test ? 'Pass' : 'Fail';
  30. $dup_tests['IO']['SSDIR'] = is_writeable(DUPLICATOR_SSDIR_PATH) ? 'Pass' : 'Fail';
  31. $dup_tests['IO']['SSTMP'] = is_writeable(DUPLICATOR_SSDIR_PATH_TMP) ? 'Pass' : 'Fail';
  32. $dup_tests['IO']['ALL'] = ! in_array('Fail', $dup_tests['IO']) ? 'Pass' : 'Fail';
  33. @closedir($handle_test);
  34. //SERVER SUPPORT
  35. $dup_tests['SRV']['MYSQLi'] = function_exists('mysqli_connect') ? 'Pass' : 'Fail';
  36. $dup_tests['SRV']['MYSQL_VER'] = version_compare($wpdb->db_version(), '5.0', '>=') ? 'Pass' : 'Fail';
  37. $dup_tests['SRV']['ALL'] = ! in_array('Fail', $dup_tests['SRV']) ? 'Pass' : 'Fail';
  38. //RESERVED FILES
  39. $dup_tests['RES']['INSTALL'] = !(self::InstallerFilesFound()) ? 'Pass' : 'Fail';
  40. $dup_tests['Success'] = $dup_tests['PHP']['ALL'] == 'Pass' && $dup_tests['IO']['ALL'] == 'Pass' &&
  41. $dup_tests['SRV']['ALL'] == 'Pass' && $dup_tests['RES']['INSTALL'] == 'Pass';
  42. return $dup_tests;
  43. }
  44. /**
  45. * Gets the system checks which are not required
  46. * @return array An array of system checks
  47. */
  48. public static function GetChecks()
  49. {
  50. $checks = array();
  51. //WEB SERVER
  52. $web_test1 = false;
  53. foreach ($GLOBALS['DUPLICATOR_SERVER_LIST'] as $value) {
  54. if (stristr($_SERVER['SERVER_SOFTWARE'], $value)) {
  55. $web_test1 = true;
  56. break;
  57. }
  58. }
  59. $checks['SRV']['WEB']['model'] = $web_test1;
  60. $checks['SRV']['WEB']['ALL'] = ($web_test1) ? 'Good' : 'Warn';
  61. //PHP SETTINGS
  62. $php_test1 = ini_get("open_basedir");
  63. $php_test1 = empty($php_test1) ? true : false;
  64. $php_test2 = ini_get("max_execution_time");
  65. $php_test2 = ($php_test2 > DUPLICATOR_SCAN_TIMEOUT) || (strcmp($php_test2 , 'Off') == 0 || $php_test2 == 0) ? true : false;
  66. $php_test3 = function_exists('mysqli_connect');
  67. $checks['SRV']['PHP']['openbase'] = $php_test1;
  68. $checks['SRV']['PHP']['maxtime'] = $php_test2;
  69. $checks['SRV']['PHP']['mysqli'] = $php_test3;
  70. $checks['SRV']['PHP']['ALL'] = ($php_test1 && $php_test2 && $php_test3) ? 'Good' : 'Warn';
  71. //WORDPRESS SETTINGS
  72. global $wp_version;
  73. $wp_test1 = version_compare($wp_version, DUPLICATOR_SCAN_MIN_WP) >= 0 ? true : false;
  74. //Core Files
  75. $files = array();
  76. $files['wp-config.php'] = file_exists(DUP_Util::SafePath(DUPLICATOR_WPROOTPATH . '/wp-config.php'));
  77. $wp_test2 = $files['wp-config.php'];
  78. //Cache
  79. $Package = DUP_Package::GetActive();
  80. $cache_path = DUP_Util::SafePath(WP_CONTENT_DIR) . '/cache';
  81. $dirEmpty = DUP_Util::IsDirectoryEmpty($cache_path);
  82. $dirSize = DUP_Util::GetDirectorySize($cache_path);
  83. $cach_filtered = in_array($cache_path, explode(';', $Package->Archive->FilterDirs));
  84. $wp_test3 = ($cach_filtered || $dirEmpty || $dirSize < DUPLICATOR_SCAN_CACHESIZE ) ? true : false;
  85. $checks['SRV']['WP']['version'] = $wp_test1;
  86. $checks['SRV']['WP']['core'] = $wp_test2;
  87. $checks['SRV']['WP']['cache'] = $wp_test3;
  88. $checks['SRV']['WP']['ALL'] = $wp_test1 && $wp_test2 && $wp_test3 ? 'Good' : 'Warn';
  89. return $checks;
  90. }
  91. /**
  92. * Check to see if duplicator installer files are present
  93. * @return bool True if any reserved files are found
  94. */
  95. public static function InstallerFilesFound()
  96. {
  97. $files = self::GetInstallerFiles();
  98. foreach($files as $file => $path)
  99. {
  100. if (file_exists($path))
  101. return true;
  102. }
  103. return false;
  104. }
  105. /**
  106. * Gets a list of all the installer files by name and full path
  107. * @return array [file_name, file_path]
  108. */
  109. public static function GetInstallerFiles()
  110. {
  111. /* Files:
  112. * installer.php, installer-backup.php, installer-data.sql, installer-log.txt, database.sql */
  113. return array(
  114. DUPLICATOR_INSTALL_PHP => DUPLICATOR_WPROOTPATH . DUPLICATOR_INSTALL_PHP,
  115. DUPLICATOR_INSTALL_BAK => DUPLICATOR_WPROOTPATH . DUPLICATOR_INSTALL_BAK,
  116. DUPLICATOR_INSTALL_SQL => DUPLICATOR_WPROOTPATH . DUPLICATOR_INSTALL_SQL,
  117. DUPLICATOR_INSTALL_LOG => DUPLICATOR_WPROOTPATH . DUPLICATOR_INSTALL_LOG,
  118. DUPLICATOR_INSTALL_DB => DUPLICATOR_WPROOTPATH . DUPLICATOR_INSTALL_DB
  119. );
  120. }
  121. /**
  122. * Get the IP of a client machine
  123. * @return string IP of the client machine
  124. */
  125. public static function GetClientIP()
  126. {
  127. if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)){
  128. return $_SERVER["HTTP_X_FORWARDED_FOR"];
  129. }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
  130. return $_SERVER["REMOTE_ADDR"];
  131. }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) {
  132. return $_SERVER["HTTP_CLIENT_IP"];
  133. }
  134. return '';
  135. }
  136. /**
  137. * Get PHP memory useage
  138. * @return string Returns human readable memory useage.
  139. */
  140. public static function GetPHPMemory($peak = false)
  141. {
  142. if ($peak) {
  143. $result = 'Unable to read PHP peak memory usage';
  144. if (function_exists('memory_get_peak_usage')) {
  145. $result = DUP_Util::ByteSize(memory_get_peak_usage(true));
  146. }
  147. } else {
  148. $result = 'Unable to read PHP memory usage';
  149. if (function_exists('memory_get_usage')) {
  150. $result = DUP_Util::ByteSize(memory_get_usage(true));
  151. }
  152. }
  153. return $result;
  154. }
  155. }
  156. ?>