class-tracking-server-data.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * WPSEO plugin file.
  4. *
  5. * @package WPSEO\Admin\Tracking
  6. */
  7. /**
  8. * Represents the server data.
  9. */
  10. class WPSEO_Tracking_Server_Data implements WPSEO_Collection {
  11. /**
  12. * Returns the collection data.
  13. *
  14. * @return array The collection data.
  15. */
  16. public function get() {
  17. return [
  18. 'server' => $this->get_server_data(),
  19. ];
  20. }
  21. /**
  22. * Returns the values with server details.
  23. *
  24. * @return array Array with the value.
  25. */
  26. protected function get_server_data() {
  27. $server_data = [];
  28. // Validate if the server address is a valid IP-address.
  29. $ipaddress = filter_input( INPUT_SERVER, 'SERVER_ADDR', FILTER_VALIDATE_IP );
  30. if ( $ipaddress ) {
  31. $server_data['ip'] = $ipaddress;
  32. $server_data['Hostname'] = gethostbyaddr( $ipaddress );
  33. }
  34. $server_data['os'] = php_uname();
  35. $server_data['PhpVersion'] = PHP_VERSION;
  36. $server_data['CurlVersion'] = $this->get_curl_info();
  37. $server_data['PhpExtensions'] = $this->get_php_extensions();
  38. return $server_data;
  39. }
  40. /**
  41. * Returns details about the curl version.
  42. *
  43. * @return array|null The curl info. Or null when curl isn't available..
  44. */
  45. protected function get_curl_info() {
  46. if ( ! function_exists( 'curl_version' ) ) {
  47. return null;
  48. }
  49. $curl = curl_version();
  50. $ssl_support = true;
  51. if ( ! $curl['features'] && CURL_VERSION_SSL ) {
  52. $ssl_support = false;
  53. }
  54. return [
  55. 'version' => $curl['version'],
  56. 'sslSupport' => $ssl_support,
  57. ];
  58. }
  59. /**
  60. * Returns a list with php extensions.
  61. *
  62. * @return array Returns the state of the php extensions.
  63. */
  64. protected function get_php_extensions() {
  65. return [
  66. 'imagick' => extension_loaded( 'imagick' ),
  67. 'filter' => extension_loaded( 'filter' ),
  68. 'bcmath' => extension_loaded( 'bcmath' ),
  69. 'modXml' => extension_loaded( 'modXml' ),
  70. 'pcre' => extension_loaded( 'pcre' ),
  71. 'xml' => extension_loaded( 'xml' ),
  72. ];
  73. }
  74. }