PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 3.1.0
Defender Security – Malware Scanner, Login Security & Firewall v3.1.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / src / component / security-tweaks / servers / server.php

server.php in Defender Security – Malware Scanner, Login Security & Firewall 3.1.0, at src/component/security-tweaks/servers/server.php

111 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WP_Defender\Component\Security_Tweaks\Servers;
4
5 class Server {
6 public static function create( $server ) {
7 return new Server_Factory( $server );
8 }
9
10 /**
11 * @param string $default_server_name
12 *
13 * @return string
14 */
15 public static function get_software_by_self_ping( $default_server_name = 'apache' ) {
16 $request = wp_remote_head(
17 home_url(),
18 array(
19 'user-agent' => ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : 'Defender Self Ping',
20 // Most hosts don't really have valid ssl or ssl still pending.
21 'sslverify' => apply_filters( 'defender_ssl_verify', true ),
22 )
23 );
24 $server = wp_remote_retrieve_header( $request, 'server' );
25 $server = explode( '/', $server );
26
27 if ( isset( $server[0] ) ) {
28 $server = strtolower( $server[0] );
29 } else {
30 $server = $default_server_name;
31 }
32
33 return $server;
34 }
35
36 /**
37 * @return string
38 */
39 public static function get_software() {
40 if ( empty( $_SERVER['SERVER_SOFTWARE'] ) ) {
41 return self::get_software_by_self_ping();
42 }
43
44 $server = explode( ' ', $_SERVER['SERVER_SOFTWARE'] );
45 $server = explode( '/', reset( $server ) );
46 if ( isset( $server[0] ) ) {
47 return strtolower( $server[0] );
48 } else {
49 return self::get_software_by_self_ping();
50 }
51 }
52
53 /**
54 * Determine the server.
55 *
56 * @return string
57 */
58 public static function get_current_server() {
59 $url = home_url();
60 $server_type = get_site_transient( 'defender_current_server' );
61
62 if ( ! is_array( $server_type ) ) {
63 $server_type = array();
64 }
65
66 if ( isset( $server_type[ $url ] ) && ! empty( $server_type[ $url ] ) ) {
67 return strtolower( $server_type[ $url ] );
68 }
69
70 // Url should end with php.
71 global $is_apache, $is_nginx, $is_IIS, $is_iis7;
72
73 if ( $is_nginx ) {
74 $server = 'nginx';
75 } elseif ( $is_apache ) {
76 // Case the url is detecting php file.
77 if ( 'php' === pathinfo( $url, PATHINFO_EXTENSION ) ) {
78 $server = 'apache';
79 } else {
80 $server = self::get_software();
81 }
82 } elseif ( $is_iis7 || $is_IIS ) {
83 $server = 'iis-7';
84 } else {
85 $server = self::get_software();
86 }
87
88 $server_type[ $url ] = $server;
89 set_site_transient( 'defender_current_server', $server_type, 3600 );
90
91 return $server;
92 }
93
94 /**
95 * Check whether ping test failed or not.
96 *
97 * @param string $url
98 *
99 * @return bool
100 */
101 public static function ping_test_failed( $url ) {
102 $response = wp_remote_post( $url, array( 'user-agent' => 'WP Defender Self Ping Test' ) );
103
104 if ( is_wp_error( $response ) ) {
105 return true;
106 }
107
108 return 200 !== wp_remote_retrieve_response_code( $response );
109 }
110 }
111