function TPLAddErrorHelp($actionData) { //only error will come $noMoreString = false; if ($actionData['microtimeInitiated'] + 35 * 60 > time() && ($actionData['type'] == 'backup' && $actionData['action'] == 'now' || $actionData['type'] == 'scheduleBackup' && $actionData['action'] == 'runTask' || $actionData['type'] == 'installClone' && $actionData['action'] == 'installCloneBackupNow') && ($actionData['status'] == 'netError' && in_array($actionData['error'], array('28', '52', '500', '502', '504', 'timeoutClear')) || $actionData['status'] == 'error' && $actionData['error'] == 'main_plugin_connection_error')) { $actionData['errorMsg'] .= ' <br><span class="droid700 loading_3dot">Checking backup. Please wait<span class="dot">.</span><span class="dot">.</span><span class="dot">.</span></span>'; $noMoreString = true; } if (stripos($actionData['errorMsg'], 'please add FTP details') !== false) { $actionData['errorMsg'] .= ' <a href="' . SUPPORT_URL . 'solution/articles/212271-plugin-theme-update-fails-add-ftp-details-to-wp-config-php/' . GA_HELP_TRACKING . '" target="_blank">How?</a>'; } elseif ($actionData['error'] == 'fsock_error') { $actionData['errorMsg'] .= ' Kindly contact your host.'; } elseif ($actionData['error'] == 'timeoutClear' && !$noMoreString) { if (Reg::get('settings.executeUsingBrowser') != 1) { $fsockSameURLConnectCheckCache = manageCookies::cookieGet('fsockSameURLConnectCheckCache'); if (empty($fsockSameURLConnectCheckCache)) { $fsockSameURLConnectCheckCache = fsockSameURLConnectCheck(APP_URL . 'execute.php'); manageCookies::cookieSet('fsockSameURLConnectCheckCache', $fsockSameURLConnectCheckCache, array('expire' => 0)); } if (empty($fsockSameURLConnectCheckCache['status'])) { $actionData['errorMsg'] .= ' Fsock Error: ' . $fsockSameURLConnectCheckCache['error']; if ($fsockSameURLConnectCheckCache['errorNo'] != 'authentication_required') { $actionData['errorMsg'] .= ' Kindly contact your host.'; } } } } elseif ($actionData['error'] == 'unknown') { //for update if ($actionData['detailedAction'] == 'plugin' || $actionData['detailedAction'] == 'theme') { //for update $actionData['errorMsg'] .= ' Please <a onclick="$(\'#clearPluginCache\').addClass(\'active\');$(\'#reloadStats\').click();">Clear cache and Reload Data</a> and try again. <a href="' . SUPPORT_URL . 'solution/articles/212259-unknown-error-occurred-during-update-process?' . GA_HELP_TRACKING . '" target="_blank">See recommendations</a>.'; } } /* elseif(!$noMoreString && (($actionData['type'] == 'backup' && $actionData['action'] == 'now') || ($actionData['type'] == 'scheduleBackup' && $actionData['action'] == 'runTask'))){ $actionData['errorMsg'] = rtrim($actionData['errorMsg'], '. ').'.';//'. ' => this will remove "." and space " " $actionData['errorMsg'] .= ' Please try the multi-call backup method. <a href="'.SUPPORT_URL.'/solution/articles/212262-backup-methods/'.GA_HELP_TRACKING." target="_blank">See how it works</a>.'; } */ return $actionData['errorMsg']; }
//======================================================================> $check['available']['PHP_VERSION'] = phpversion(); $phpSafeMode = ini_get('safe_mode'); $check['available']['PHP_SAFE_MODE'] = !empty($phpSafeMode); $check['available']['PHP_WITH_MYSQL'] = (class_exists('mysqli') or function_exists('mysql_connect')); $check['available']['PHP_WITH_OPEN_SSL'] = function_exists('openssl_verify'); $check['available']['PHP_WITH_CURL'] = function_exists('curl_exec'); $check['available']['PHP_FILE_UPLOAD'] = ini_get('file_uploads') == 1 ? true : false; //checking PHP_MAX_EXECUTION_TIME_CONFIGURABLE $check['available']['PHP_MAX_EXECUTION_TIME_CONFIGURABLE'] = 0; if ($maximumExecutionTime == ini_get('max_execution_time')) { $check['available']['PHP_MAX_EXECUTION_TIME_CONFIGURABLE'] = 1; } $appFullURL = APP_URL; $fURL = $appFullURL . "/execute.php"; $fsockSameURLConnectCheckResult = fsockSameURLConnectCheck($fURL); $check['available']['FSOCK_SAME_URL_CONNECT_CHECK'] = $fsockSameURLConnectCheckResult['status']; //======================================================================> $check['final']['PHP_VERSION'] = version_compare($check['available']['PHP_VERSION'], $check['required']['PHP_VERSION']) >= 0 ? true : false; $check['final']['PHP_SAFE_MODE'] = $check['required']['PHP_SAFE_MODE'] == $check['available']['PHP_SAFE_MODE'] ? true : false; $check['final']['PHP_WITH_MYSQL'] = $check['required']['PHP_WITH_MYSQL'] == $check['available']['PHP_WITH_MYSQL'] ? true : false; $check['final']['PHP_WITH_OPEN_SSL'] = $check['required']['PHP_WITH_OPEN_SSL'] == $check['available']['PHP_WITH_OPEN_SSL'] ? true : 1; //1 = optional $check['final']['PHP_WITH_CURL'] = $check['required']['PHP_WITH_CURL'] == $check['available']['PHP_WITH_CURL'] ? true : false; $check['final']['PHP_FILE_UPLOAD'] = $check['required']['PHP_FILE_UPLOAD'] == $check['available']['PHP_FILE_UPLOAD'] ? true : false; $check['final']['PHP_MAX_EXECUTION_TIME_CONFIGURABLE'] = $check['required']['PHP_MAX_EXECUTION_TIME_CONFIGURABLE'] == $check['available']['PHP_MAX_EXECUTION_TIME_CONFIGURABLE'] ? true : false; $check['final']['FSOCK_SAME_URL_CONNECT_CHECK'] = $check['required']['FSOCK_SAME_URL_CONNECT_CHECK'] == $check['available']['FSOCK_SAME_URL_CONNECT_CHECK'] ? true : false; //======================================================================> $check['other']['PHPDisabledFunctions'] = explode(',', ini_get('disable_functions')); array_walk($check['other']['PHPDisabledFunctions'], 'trimValue'); $check['other']['PHPDisabledClasses'] = explode(',', ini_get('disable_classes'));
function autoSelectConnectionMethod() { $settings = Reg::get('settings'); if ($settings['autoSelectConnectionMethod'] == 1) { $result = fsockSameURLConnectCheck(APP_URL . 'execute.php'); if ($result['status'] && $settings['executeUsingBrowser'] == 1) { $settings['executeUsingBrowser'] = 0; DB::update("?:settings", array('general' => serialize($settings)), "1"); addNotification($type = 'N', $title = 'FSOCK HAS BEEN ENABLED', $message = 'Your server supports fsock and has been enabled.', $state = 'U', $callbackOnClose = '', $callbackReference = ''); } elseif ($result['status'] == false && $result['errorNo'] != 'authentication_required' && $settings['executeUsingBrowser'] == 0) { $settings['executeUsingBrowser'] = 1; DB::update("?:settings", array('general' => serialize($settings)), "1"); addNotification($type = 'N', $title = 'FSOCK HAS BEEN DISABLED', $message = 'Your server doesn\'t support fsock. An alternative method is being used.', $state = 'U', $callbackOnClose = '', $callbackReference = ''); } } }
function fsockSameURLConnectCheck($url, $fget = true) { if ($fget) { $params = array('check' => 'sameURL'); } else { $fsockSameURLCheckUsingDBValue = uniqid('fsock_', true); $params = array('check' => 'sameURLUsingDB', 'fsockSameURLCheckUsingDBValue' => $fsockSameURLCheckUsingDBValue); } $post_params = array(); foreach ($params as $key => &$val) { if (is_array($val)) { $val = implode(',', $val); } $post_params[] = $key . '=' . urlencode($val); } $post_string = implode('&', $post_params); $parts = parse_url($url); $host = $parts['host']; if (($parts['scheme'] == 'ssl' || $parts['scheme'] == 'https') && extension_loaded('openssl')) { $parts['host'] = "ssl://" . $parts['host']; $parts['port'] = 443; error_reporting(0); } elseif ($parts['port'] == '') { $parts['port'] = 80; } $fp = @fsockopen($parts['host'], $parts['port'], $errno, $errstr, 30); if (!$fp) { return array('status' => false, 'resource' => !empty($fp) ? true : false, 'errorNo' => 'unable_to_intiate_fsock', 'error' => 'Unable to initiate FsockOpen'); } if ($errno > 0) { return array('status' => false, 'errorNo' => $errno, 'error' => $errno . ':' . $errstr); } $settings = Reg::get('settings'); $out = "POST " . $parts['path'] . " HTTP/1.0\r\n"; $out .= "Host: " . $host . "\r\n"; if (!empty($settings['httpAuth']['username'])) { $out .= "Authorization: Basic " . base64_encode($settings['httpAuth']['username'] . ':' . $settings['httpAuth']['password']) . "\r\n"; } $out .= "User-agent: " . "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko Firefox/16.0" . "\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Content-Length: " . strlen($post_string) . "\r\n"; $out .= "Connection: Close\r\n\r\n"; if (isset($post_string)) { $out .= $post_string; } $is_written = fwrite($fp, $out); if (!$is_written) { return array('status' => false, 'writable' => false, 'errorNo' => 'unable_to_write_request', 'error' => 'Unable to write request'); } $temp = ''; if ($fget) { while (!feof($fp)) { $temp .= fgets($fp, 128); } } fclose($fp); if ($fget) { if (strpos($temp, 'WWW-Authenticate:') !== false) { return array('status' => false, 'errorNo' => 'authentication_required', 'error' => 'Your IWP Admin Panel has folder protection.<br><a onclick="$(\'#settings_btn\').click();$(\'#authUsername\').focus();">Set the credentials</a> in settings -> Folder protection.'); } else { return fsockSameURLConnectCheck($url, false); } } else { sleep(7); //due to fsock non-blocking mode we have to wait if (!empty($fsockSameURLCheckUsingDBValue) && $fsockSameURLCheckUsingDBValue == getOption('fsockSameURLCheckUsingDBValue')) { return array('status' => true); } else { return array('status' => false, 'errorNo' => 'unable_to_verify', 'error' => 'Unable to verify content(method using DB)'); } } }