PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.7.2
Defender Security – Malware Scanner, Login Security & Firewall v5.7.2
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 / class-server-factory.php

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

119 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Responsible for handling server-specific operations
4 * within the WP_Defender plugin. It provides functionality to identify and utilize supported server configurations.
5 *
6 * @package WP_Defender\Component\Security_Tweaks\Servers
7 */
8
9 namespace WP_Defender\Component\Security_Tweaks\Servers;
10
11 use WP_Error;
12
13 /**
14 * Class Server_Factory
15 * Handles the creation and management of server instances based on the server environment.
16 */
17 class Server_Factory {
18
19 /**
20 * Server name holder for showing notice.
21 *
22 * @var string
23 */
24 private $requested_server;
25
26 /**
27 * Server name holder.
28 *
29 * @var string
30 */
31 private $server = null;
32
33 /**
34 * Supported server list holder.
35 *
36 * @var array
37 */
38 private $servers = array();
39
40 /**
41 * Constructor method.
42 *
43 * @param string $server The name of the server to handle.
44 *
45 * @return void
46 */
47 public function __construct( $server ) {
48 $this->requested_server = $server;
49
50 $this->get_supported_servers();
51
52 if ( empty( $this->servers[ $server ] ) ) {
53 global $defender_server_not_supported;
54
55 $defender_server_not_supported = new WP_Error(
56 'defender_not_supported_server',
57 sprintf(
58 /* translators: %s: Server name. */
59 esc_html__( 'The %s server is not supported yet.', 'defender-security' ),
60 '<strong>' . $server . '</strong>'
61 )
62 );
63 // Using Apache as a fallback server not to showing errors.
64 $server = 'apache';
65 }
66
67 $this->server = $this->servers[ $server ];
68 }
69
70 /**
71 * Get supported servers.
72 *
73 * @return void
74 */
75 public function get_supported_servers() {
76 $this->servers = apply_filters(
77 'defender_get_supported_servers',
78 array(
79 'nginx' => 'Nginx',
80 'unit' => 'Nginx', // We're going to use the same server for Nginx and Unit.
81 'apache' => 'Apache',
82 'litespeed' => 'Apache', // We're going to use the same server for Apache and LiteSpeed.
83 'iis-7' => 'IIS_7',
84 'flywheel' => 'Flywheel',
85 'cloudflare' => 'Flywheel', // We're going to use the same server for Flywheel and Cloudflare.
86 // A specific case for WordPress Playground.
87 'php.wasm' => 'PHP_Wasm',
88 )
89 );
90 }
91
92 /**
93 * Get the server for specific service. Return WP_Defender\Component\Security_Tweaks\Servers\[$server].
94 *
95 * @param string $service The service for which the server instance is needed.
96 */
97 public function from( $service ) {
98 $server = __NAMESPACE__ . '\\' . $this->server;
99
100 if ( ! class_exists( $server ) ) {
101 global $defender_server_not_supported;
102
103 $defender_server_not_supported = new WP_Error(
104 'defender_not_supported_server',
105 sprintf(
106 /* translators: %s: Server name. */
107 esc_html__( 'The %s server is not supported yet.', 'defender-security' ),
108 '<strong>' . $this->requested_server . '</strong>'
109 )
110 );
111
112 // Using Apache as a fallback server not to showing errors.
113 $server = __NAMESPACE__ . '\\Apache';
114 }
115
116 return new $server( $service );
117 }
118 }
119