86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * WPSEO plugin file.
 | 
						|
 *
 | 
						|
 * @package WPSEO\Admin\Tracking
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Represents the server data.
 | 
						|
 */
 | 
						|
class WPSEO_Tracking_Server_Data implements WPSEO_Collection {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns the collection data.
 | 
						|
	 *
 | 
						|
	 * @return array The collection data.
 | 
						|
	 */
 | 
						|
	public function get() {
 | 
						|
		return [
 | 
						|
			'server' => $this->get_server_data(),
 | 
						|
		];
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns the values with server details.
 | 
						|
	 *
 | 
						|
	 * @return array Array with the value.
 | 
						|
	 */
 | 
						|
	protected function get_server_data() {
 | 
						|
		$server_data = [];
 | 
						|
 | 
						|
		// Validate if the server address is a valid IP-address.
 | 
						|
		$ipaddress = isset( $_SERVER['SERVER_ADDR'] ) ? filter_var( wp_unslash( $_SERVER['SERVER_ADDR'] ), FILTER_VALIDATE_IP ) : '';
 | 
						|
		if ( $ipaddress ) {
 | 
						|
			$server_data['ip']       = $ipaddress;
 | 
						|
			$server_data['Hostname'] = gethostbyaddr( $ipaddress );
 | 
						|
		}
 | 
						|
 | 
						|
		$server_data['os']            = function_exists( 'php_uname' ) ? php_uname() : PHP_OS;
 | 
						|
		$server_data['PhpVersion']    = PHP_VERSION;
 | 
						|
		$server_data['CurlVersion']   = $this->get_curl_info();
 | 
						|
		$server_data['PhpExtensions'] = $this->get_php_extensions();
 | 
						|
 | 
						|
		return $server_data;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns details about the curl version.
 | 
						|
	 *
 | 
						|
	 * @return array|null The curl info. Or null when curl isn't available..
 | 
						|
	 */
 | 
						|
	protected function get_curl_info() {
 | 
						|
		if ( ! function_exists( 'curl_version' ) ) {
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
 | 
						|
		$curl = curl_version();
 | 
						|
 | 
						|
		$ssl_support = true;
 | 
						|
		if ( ! $curl['features'] && CURL_VERSION_SSL ) {
 | 
						|
			$ssl_support = false;
 | 
						|
		}
 | 
						|
 | 
						|
		return [
 | 
						|
			'version'    => $curl['version'],
 | 
						|
			'sslSupport' => $ssl_support,
 | 
						|
		];
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns a list with php extensions.
 | 
						|
	 *
 | 
						|
	 * @return array Returns the state of the php extensions.
 | 
						|
	 */
 | 
						|
	protected function get_php_extensions() {
 | 
						|
		return [
 | 
						|
			'imagick'   => extension_loaded( 'imagick' ),
 | 
						|
			'filter'    => extension_loaded( 'filter' ),
 | 
						|
			'bcmath'    => extension_loaded( 'bcmath' ),
 | 
						|
			'pcre'      => extension_loaded( 'pcre' ),
 | 
						|
			'xml'       => extension_loaded( 'xml' ),
 | 
						|
			'pdo_mysql' => extension_loaded( 'pdo_mysql' ),
 | 
						|
		];
 | 
						|
	}
 | 
						|
}
 |