Файловый менеджер - Редактировать - /home/infrafs/www/wp-content/plugins/really-simple-ssl/lets-encrypt/functions.php
Назад
<?php defined( 'ABSPATH' ) or die( "you do not have access to this page!" ); /** * Check if we need to use DNS verification * @return bool */ function rsssl_dns_verification_required(){ /** * If our current hosting provider does not allow or require local SSL certificate generation, * We do not need to DNS verification either. */ if ( !rsssl_do_local_lets_encrypt_generation() ) { return false; } if ( get_option('rsssl_verification_type')==='DNS' ) { return true; } if ( rsssl_wildcard_certificate_required() ) { return true; } return false; } if ( !function_exists('rsssl_is_cpanel')) { /** * Check if we're on CPanel * * @return bool */ function rsssl_is_cpanel() { if (get_option('rsssl_force_cpanel')) { return true; } $open_basedir = ini_get("open_basedir"); if ( empty($open_basedir) && file_exists( "/usr/local/cpanel" ) ) { return true; } else if (rsssl_check_port(2082)) { return true; } else { return false; } } } if (!function_exists('rsssl_cpanel_api_supported')) { /** * Check if CPanel supports the api * * @return bool */ function rsssl_cpanel_api_supported() { return rsssl_is_cpanel() && file_exists( "/usr/local/cpanel/php/cpanel.php" ); } } if (!function_exists('rsssl_activated_by_default')) { /** * Check if the host has ssl, activated by default * * @return bool */ function rsssl_activated_by_default() { $activated_by_default = false; $activated_by_default_hosts = RSSSL_LE()->config->activated_by_default; $current_host = rsssl_get_other_host(); if ( in_array( $current_host, $activated_by_default_hosts ) ) { $activated_by_default = true; } return $activated_by_default; } } if (!function_exists('rsssl_activation_required')) { /** * Check if the host has ssl, activation required * * @return bool */ function rsssl_activation_required() { $dashboard_activation_required = false; $dashboard_activation_required_hosts = RSSSL_LE()->config->dashboard_activation_required; $current_host = rsssl_get_other_host(); if ( in_array( $current_host, $dashboard_activation_required_hosts ) ) { $dashboard_activation_required = true; } return $dashboard_activation_required; } } if (!function_exists('rsssl_paid_only')) { /** * Check if the host has ssl, paid only * * @return bool */ function rsssl_paid_only() { $paid_only = false; $paid_only_hosts = RSSSL_LE()->config->paid_only; $current_host = rsssl_get_other_host(); if ( in_array( $current_host, $paid_only_hosts ) ) { $paid_only = true; } return $paid_only; } } if ( !function_exists('rsssl_is_plesk')) { /** * https://stackoverflow.com/questions/26927248/how-to-detect-servers-control-panel-type-with-php * @return false */ function rsssl_is_plesk() { if (get_option('rsssl_force_plesk')) { return true; } if ( get_option('rsssl_hosting_dashboard')==='plesk' ){ return true; } //cpanel takes precedence, as it's more precise if ( rsssl_is_cpanel() ) { return false; } $open_basedir = ini_get("open_basedir"); if ( empty($open_basedir) && is_dir( '/usr/local/psa' ) ) { return true; } else if (rsssl_check_port(8443)) { return true; } else { return false; } } } if ( !function_exists('rsssl_is_directadmin')) { /** * https://stackoverflow.com/questions/26927248/how-to-detect-servers-control-panel-type-with-php * @return bool */ function rsssl_is_directadmin() { if (get_option('rsssl_force_directadmin')) { return true; } if ( get_option('rsssl_hosting_dashboard')==='directadmin' ){ return true; } //cpanel takes precedence, as it's more precise if ( rsssl_is_cpanel() ) { return false; } if ( rsssl_is_plesk() ) { return false; } if (rsssl_check_port(2222)) { return true; } else { return false; } } } /** * @param int $port * * @return bool */ function rsssl_check_port( $port) { $port_check_status = get_option("rsssl_port_check_$port"); if ( !function_exists('fsockopen') || $port_check_status === 'fail' ) { return false; } $ipAddress = gethostbyname('localhost'); $link = @fsockopen( $ipAddress, $port, $errno, $error, 5 ); if ( $link ) { update_option("rsssl_port_check_$port", 'success'); return true; } update_option("rsssl_port_check_$port", 'fail'); return false; } if ( !function_exists('rsssl_get_other_host') ) { /** * Get the selected hosting provider, if any. * @return bool|string */ function rsssl_get_other_host() { return rsssl_get_value( 'other_host_type', false ); } } if ( !function_exists('rsssl_progress_add')) { /** * @param string $item */ function rsssl_progress_add( $item ) { $progress = get_option( "rsssl_le_installation_progress", array() ); if ( ! in_array( $item, $progress ) ) { $progress[] = $item; update_option( "rsssl_le_installation_progress", $progress ); } } } if ( !function_exists('rsssl_uses_known_dashboard')) { /** * Check if website uses any of the known dashboards. */ function rsssl_uses_known_dashboard( ) { if ( rsssl_is_cpanel() || rsssl_is_plesk() || rsssl_is_directadmin() ) { return true; } else { return false; } } } if ( !function_exists('rsssl_is_ready_for')) { /** * @param string $item */ function rsssl_is_ready_for( $item ) { if ( !rsssl_do_local_lets_encrypt_generation() ) { rsssl_progress_add('directories'); rsssl_progress_add('generation'); rsssl_progress_add('dns-verification'); } if ( !rsssl_dns_verification_required() ) { rsssl_progress_add('dns-verification'); } if (empty(rsssl_get_not_completed_steps($item))){ return true; } else{ return false; } } } function rsssl_get_not_completed_steps($item){ $sequence = array_column( RSSSL_LE()->config->steps['lets-encrypt'], 'id'); //drop all statuses after $item. We only need to know if all previous ones have been completed $index = array_search($item, $sequence); $sequence = array_slice($sequence, 0, $index, true); $not_completed = array(); $finished = get_option("rsssl_le_installation_progress", array()); foreach ($sequence as $status ) { if (!in_array($status, $finished)) { $not_completed[] = $status; } } return $not_completed; } if ( !function_exists('rsssl_progress_remove')) { /** * @param string $item */ function rsssl_progress_remove( $item ) { $progress = get_option( "rsssl_le_installation_progress", array() ); if ( in_array( $item, $progress ) ) { $index = array_search( $item, $progress ); unset( $progress[ $index ] ); update_option( "rsssl_le_installation_progress", $progress ); } } } if ( !function_exists('rsssl_php_requirement_met')) { /** * Get PHP version status for tests * * @return RSSSL_RESPONSE */ function rsssl_php_requirement_met() { if ( version_compare( PHP_VERSION, rsssl_le_php_version, '<' ) ) { rsssl_progress_remove( 'system-status' ); $action = 'stop'; $status = 'error'; $message = sprintf( __( "The minimum requirements for the PHP version have not been met. Please upgrade to %s", "really-simple-ssl" ), rsssl_le_php_version ); } else { $action = 'continue'; $status = 'success'; $message = __( "You have the required PHP version to continue.", "really-simple-ssl" ); } return new RSSSL_RESPONSE( $status, $action, $message ); } } if ( ! function_exists( 'rsssl_get_value' ) ) { /** * Get value for a rsssl option * For usage very early in the execution order, use the $page option. This bypasses the class usage. * * @param string $fieldname * @param bool $use_default * * @return array|bool|mixed|string */ function rsssl_get_value( $fieldname, $use_default = true ) { $default = false; $fields = get_option( 'rsssl_options_lets-encrypt' ); if ($use_default) { if ( ! isset( RSSSL_LE()->config->fields[ $fieldname ] ) ) { return false; } $default = ( isset( RSSSL_LE()->config->fields[ $fieldname ]['default'] ) ) ? RSSSL_LE()->config->fields[ $fieldname ]['default'] : ''; } $value = isset( $fields[ $fieldname ] ) ? $fields[ $fieldname ] : $default; return $value; } } if ( !function_exists('rsssl_do_local_lets_encrypt_generation')) { /** * Check if the setup requires local certificate generation * @return bool */ function rsssl_do_local_lets_encrypt_generation() { $not_local_cert_hosts = RSSSL_LE()->config->not_local_certificate_hosts; $current_host = rsssl_get_other_host(); if ( in_array( $current_host, $not_local_cert_hosts ) ) { return false; } return true; } } function rsssl_get_manual_instructions_text( $url ){ $default_url = 'https://really-simple-ssl.com/install-ssl-certificate'; $dashboard_activation_required = rsssl_activation_required(); $activated_by_default = rsssl_activated_by_default(); $paid_only = rsssl_paid_only(); $button_activate = '<br><a href="'.$default_url.'" target="_blank" class="button button-primary">'.__("Instructions","really-simple-ssl").'</a> '; $button_complete = '<br><a href="'.$default_url.'" target="_blank" class="button button-primary">'.__("Instructions","really-simple-ssl").'</a> '; if ( $url === $default_url ) { $complete_manually = sprintf(__("Please complete manually in your hosting dashboard.", "really-simple-ssl"), '<a target="_blank" href="'.$url.'">', '</a>'); $activate_manually = sprintf(__("Please activate it manually on your hosting dashboard.", "really-simple-ssl"), '<a target="_blank" href="'.$url.'">', '</a>'); } else { $complete_manually = sprintf(__("Please complete %smanually%s", "really-simple-ssl"), '<a target="_blank" href="'.$url.'">', '</a>'); $activate_manually = sprintf(__("Please activate it on your dashboard %smanually%s", "really-simple-ssl"), '<a target="_blank" href="'.$url.'">', '</a>'); $button_activate .= '<a href="'.$url.'" target="_blank" class="button button-primary">'.__("Go to activation","really-simple-ssl").'</a>'; $button_complete .= '<a href="'.$url.'" target="_blank" class="button button-primary">'.__("Go to installation","really-simple-ssl").'</a>'; } if ( $activated_by_default ) { $msg = sprintf(__("According to our information, your hosting provider supplies your account with an SSL certificate by default. Please contact your %shosting support%s if this is not the case.","really-simple-ssl"), '<a target="_blank" href="'.$url.'">', '</a>').' '. __("After completing the installation, you can continue to the next step to complete your configuration.","really-simple-ssl"); } else if ( $dashboard_activation_required ) { $msg = __( "You already have free SSL on your hosting environment.", "really-simple-ssl" ).' '. $activate_manually.' '. __("After completing the installation, you can continue to the next step to complete your configuration.","really-simple-ssl") .$button_activate; } else if ( $paid_only ) { $msg = sprintf(__("According to our information, your hosting provider does not allow any kind of SSL installation, other then their own paid certificate. For an alternative hosting provider with SSL, see this %sarticle%s.","really-simple-ssl"), '<a target="_blank" href="https://really-simple-ssl.com/hosting-providers-with-free-ssl">', '</a>'); } else { $msg = __("Your hosting environment does not allow automatic SSL installation.","really-simple-ssl").' '. $complete_manually.' '. sprintf(__("You can follow these %sinstructions%s.","really-simple-ssl"), '<a target="_blank" href="'.$default_url.'">', '</a>').' '. __("After completing the installation, you can continue to the next step to complete your configuration.","really-simple-ssl") .$button_complete; } return $msg; } if ( ! function_exists( 'rsssl_notice' ) ) { /** * Notification without arrow on the left. Should be used outside notifications center * @param string $msg * @param string $type notice | warning | success * @param bool $remove_after_change * @param bool $echo * @param array $condition $condition['question'] $condition['answer'] * * @return string|void */ function rsssl_notice( $msg, $type = 'notice', $remove_after_change = false, $echo = true, $condition = false) { if ( $msg == '' ) { return; } // Condition $condition_check = ""; $condition_question = ""; $condition_answer = ""; $rsssl_hidden = ""; if ($condition) { $condition_check = "condition-check"; $condition_question = "data-condition-question='{$condition['question']}'"; $condition_answer = "data-condition-answer='{$condition['answer']}'"; $args['condition'] = array($condition['question'] => $condition['answer']); $rsssl_hidden = rsssl_field::this()->condition_applies($args) ? "" : "rsssl-hidden";; } // Hide $remove_after_change_class = $remove_after_change ? "rsssl-remove-after-change" : ""; $html = "<div class='rsssl-panel-wrap'><div class='rsssl-panel rsssl-notification rsssl-{$type} {$remove_after_change_class} {$rsssl_hidden} {$condition_check}' {$condition_question} {$condition_answer}><div>{$msg}</div></div></div>"; if ( $echo ) { echo $html; } else { return $html; } } } if ( ! function_exists( 'rsssl_sidebar_notice' ) ) { /** * @param string $msg * @param string $type notice | warning | success * @param bool $echo * @param bool|array $condition $condition['question'] $condition['answer'] * * @return string|void */ function rsssl_sidebar_notice( $msg, $type = 'notice', $echo = true, $condition = false) { if ( $msg == '' ) { return; } // Condition $condition_check = ""; $condition_question = ""; $condition_answer = ""; $rsssl_hidden = ""; if ($condition) { $condition_check = "condition-check"; $condition_question = "data-condition-question='{$condition['question']}'"; $condition_answer = "data-condition-answer='{$condition['answer']}'"; $args['condition'] = array($condition['question'] => $condition['answer']); $rsssl_hidden = rsssl_field::this()->condition_applies($args) ? "" : "rsssl-hidden";; } $html = "<div class='rsssl-help-modal rsssl-notice rsssl-{$type} {$rsssl_hidden} {$condition_check}' {$condition_question} {$condition_answer}>{$msg}</div>"; if ( $echo ) { echo $html; } else { return $html; } } } if (!function_exists('rsssl_read_more')) { /** * Create a generic read more text with link for help texts. * * @param string $url * @param bool $add_space * * @return string */ function rsssl_read_more( $url, $add_space = true ) { $html = sprintf( __( "For more information, please read this %sarticle%s", 'really-simple-ssl' ), '<a target="_blank" href="' . $url . '">', '</a>' ); if ( $add_space ) { $html = ' ' . $html; } return $html; } } register_activation_hook( __FILE__, 'rsssl_set_activation_time_stamp' ); if ( ! function_exists( 'rsssl_set_activation_time_stamp' ) ) { function rsssl_set_activation_time_stamp( $networkwide ) { update_option( 'rsssl_activation_time', time() ); } } if ( ! function_exists( 'rsssl_array_filter_multidimensional' ) ) { function rsssl_array_filter_multidimensional( $array, $filter_key, $filter_value ) { $new = array_filter( $array, function ( $var ) use ( $filter_value, $filter_key ) { return isset( $var[ $filter_key ] ) ? ( $var[ $filter_key ] == $filter_value ) : false; } ); return $new; } } if ( !function_exists('rsssl_is_subdomain') ) { /** * Check if we're on a subdomain. * If this is a www domain, we return false */ function rsssl_is_subdomain(){ $domain = rsssl_get_domain(); if ( strpos($domain, 'www.') !== false ) return false; $root = rsssl_get_root_domain($domain); if ($root === $domain ) { return false; } else { return true; } } } if ( !function_exists('rsssl_get_subdomain') ) { /** * Get root domain of a domain */ function rsssl_get_root_domain($domain){ $sub = strtolower(trim($domain)); $count = substr_count($sub, '.'); if($count === 2){ if(strlen(explode('.', $sub)[1]) > 3) $sub = explode('.', $sub, 2)[1]; } else if($count > 2){ $sub = rsssl_get_root_domain(explode('.', $sub, 2)[1]); } return $sub; } } if ( ! function_exists( 'rsssl_get_domain' ) ) { function rsssl_get_domain() { //Get current domain $domain = site_url(); //Parse to strip off any /subfolder/ $parse = parse_url($domain); $domain = $parse['host']; $domain = str_replace(array('http://', 'https://' ), '', $domain); return $domain; } } function rsssl_insert_after_key($array, $key, $items){ $keys = array_keys($array); $key = array_search($key, $keys); $array = array_slice($array, 0, $key, true) + $items + array_slice($array, 3, count($array)-3, true); return $array; } if ( !function_exists('rsssl_wildcard_certificate_required') ) { /** * Check if the site requires a wildcard * * @return bool */ function rsssl_wildcard_certificate_required() { //if DNS verification, create wildcard. if ( get_option('rsssl_verification_type') === 'DNS' ) { return true; } if ( ! is_multisite() ) { return false; } else { if ( defined( 'SUBDOMAIN_INSTALL' ) && SUBDOMAIN_INSTALL ) { return true; } else { return false; } } } } if ( !function_exists('rsssl_maybe_drop_subdomain_test') ) { function rsssl_maybe_drop_subdomain_test( $steps ) { if ( is_multisite() ) { $index = array_search( 'system-status', array_column( $steps['lets-encrypt'], 'id' ) ); $index ++; $actions = $steps['lets-encrypt'][ $index ]['actions']; //get the is_subdomain_setup $sub_index = array_search( 'is_subdomain_setup', array_column( $actions, 'action' ) ); unset( $actions[ $sub_index ] ); $steps['lets-encrypt'][ $index ]['actions'] = $actions; } return $steps; } add_filter( 'rsssl_steps', 'rsssl_maybe_drop_subdomain_test', 20 ); } if ( !function_exists('rsssl_can_install_shell_addon') ) { function rsssl_can_install_shell_addon(){ //if not cpanel if ( !rsssl_is_cpanel() ) { return false; } //if already installed if (defined('rsssl_shell_path')){ return false; } if ( function_exists('shell_exec') || function_exists('system') || function_exists('passthru') || function_exists('exec') ) { return true; } else { return false; } } } if ( !function_exists('rsssl_generated_by_rsssl')) { /** * If a bundle generation is completed, this value is set to true. * * @return bool */ function rsssl_generated_by_rsssl() { return get_option( 'rsssl_le_certificate_generated_by_rsssl' ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка