PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.3-beta
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | jetpack_vendor/automattic/jetpack-status/src/class-host.php +216 -0 16.2-beta → 16.3-beta View file →
@@ -1,0 +1,216 @@
1 +<?php
2 +/**
3 + * A hosting provide class for Jetpack.
4 + *
5 + * @package automattic/jetpack-status
6 + */
7 +
8 +namespace Automattic\Jetpack\Status;
9 +
10 +use Automattic\Jetpack\Constants;
11 +
12 +/**
13 + * Hosting provider class.
14 + */
15 +class Host {
16 + /**
17 + * Determine if this site is an WordPress.com on Atomic site or not by looking for presence of the wpcomsh plugin.
18 + *
19 + * @since 1.9.0
20 + *
21 + * @return bool
22 + */
23 + public function is_woa_site() {
24 + $ret = Cache::get( 'is_woa_site' );
25 + if ( null === $ret ) {
26 + $ret = $this->is_atomic_platform() && Constants::is_true( 'WPCOMSH__PLUGIN_FILE' );
27 + Cache::set( 'is_woa_site', $ret );
28 + }
29 + return $ret;
30 + }
31 +
32 + /**
33 + * Determine if the site is hosted on the Atomic hosting platform.
34 + *
35 + * @since 1.9.0
36 + *
37 + * @return bool
38 + */
39 + public function is_atomic_platform() {
40 + return Constants::is_true( 'ATOMIC_SITE_ID' ) && Constants::is_true( 'ATOMIC_CLIENT_ID' );
41 + }
42 +
43 + /**
44 + * Determine if this is a Newspack site.
45 + *
46 + * @return bool
47 + */
48 + public function is_newspack_site() {
49 + return Constants::is_defined( 'NEWSPACK_PLUGIN_FILE' );
50 + }
51 +
52 + /**
53 + * Determine if this is a VIP-hosted site.
54 + *
55 + * @return bool
56 + */
57 + public function is_vip_site() {
58 + return Constants::is_defined( 'WPCOM_IS_VIP_ENV' ) && true === Constants::get_constant( 'WPCOM_IS_VIP_ENV' );
59 + }
60 +
61 + /**
62 + * Determine if this is a Simple platform site.
63 + *
64 + * @return bool
65 + */
66 + public function is_wpcom_simple() {
67 + return Constants::is_defined( 'IS_WPCOM' ) && true === Constants::get_constant( 'IS_WPCOM' );
68 + }
69 +
70 + /**
71 + * Determine if this is a WordPress.com site.
72 + *
73 + * Includes both Simple and WoA platforms.
74 + *
75 + * @return bool
76 + */
77 + public function is_wpcom_platform() {
78 + return $this->is_wpcom_simple() || $this->is_woa_site();
79 + }
80 +
81 + /**
82 + * Determine if this is a P2 site.
83 + * This covers both P2 and P2020 themes.
84 + *
85 + * @return bool
86 + */
87 + public function is_p2_site() {
88 + $site_id = $this->get_wpcom_site_id();
89 + if ( ! $site_id ) {
90 + return false;
91 + }
92 + return str_contains( get_stylesheet(), 'pub/p2' ) || ( function_exists( '\WPForTeams\is_wpforteams_site' ) && \WPForTeams\is_wpforteams_site( $site_id ) );
93 + }
94 +
95 + /**
96 + * Get the current site's WordPress.com ID.
97 + *
98 + * @return mixed The site's WordPress.com ID.
99 + */
100 + public function get_wpcom_site_id() {
101 + if ( $this->is_wpcom_simple() ) {
102 + return get_current_blog_id();
103 + } elseif ( class_exists( 'Jetpack' ) && \Jetpack::is_connection_ready() ) {
104 + return \Jetpack_Options::get_option( 'id' );
105 + }
106 + return false;
107 + }
108 +
109 + /**
110 + * Add all wordpress.com environments to the safe redirect allowed list.
111 + *
112 + * To be used with a filter of allowed domains for a redirect.
113 + *
114 + * @param array $domains Allowed WP.com Environments.
115 + */
116 + public static function allow_wpcom_environments( $domains ) {
117 + $domains[] = 'wordpress.com';
118 + $domains[] = 'jetpack.wordpress.com';
119 + $domains[] = 'wpcalypso.wordpress.com';
120 + $domains[] = 'horizon.wordpress.com';
121 + $domains[] = 'calypso.localhost';
122 + return $domains;
123 + }
124 +
125 + /**
126 + * Return Calypso environment value; used for developing Jetpack and pairing
127 + * it with different Calypso environments, such as localhost.
128 + *
129 + * @since 1.18.0
130 + *
131 + * @return string Calypso environment
132 + */
133 + public function get_calypso_env() {
134 + // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Nonce is not required; only used for changing environments.
135 + if ( isset( $_GET['calypso_env'] ) ) {
136 + return sanitize_key( $_GET['calypso_env'] );
137 + }
138 + // phpcs:enable WordPress.Security.NonceVerification.Recommended
139 +
140 + if ( getenv( 'CALYPSO_ENV' ) ) {
141 + return sanitize_key( getenv( 'CALYPSO_ENV' ) );
142 + }
143 +
144 + if ( defined( 'CALYPSO_ENV' ) && CALYPSO_ENV ) {
145 + return sanitize_key( CALYPSO_ENV );
146 + }
147 +
148 + return '';
149 + }
150 +
151 + /**
152 + * Return source query param value from the URL if exists in the allowed sources list.
153 + *
154 + * @return string "source" query param value
155 + */
156 + public function get_source_query() {
157 + // phpcs:disable WordPress.Security.NonceVerification.Recommended
158 + $allowed_sources = array( 'jetpack-manage', 'a8c-for-agencies' );
159 + if ( isset( $_GET['source'] ) && in_array( $_GET['source'], $allowed_sources, true ) ) {
160 + return sanitize_key( $_GET['source'] );
161 + }
162 +
163 + return '';
164 + }
165 +
166 + /**
167 + * Returns a guess of the hosting provider for the current site based on various checks.
168 + *
169 + * @since 5.0.4 Added $guess parameter.
170 + * @since 6.0.0 Removed $guess parameter.
171 + *
172 + * @return string
173 + */
174 + public function get_known_host_guess() {
175 + // First, let's check if we can recognize provider manually:
176 + switch ( true ) {
177 + case $this->is_woa_site():
178 + $provider = 'woa';
179 + break;
180 + case $this->is_atomic_platform():
181 + $provider = 'atomic';
182 + break;
183 + case $this->is_newspack_site():
184 + $provider = 'newspack';
185 + break;
186 + case $this->is_vip_site():
187 + $provider = 'vip';
188 + break;
189 + case $this->is_wpcom_simple():
190 + case $this->is_wpcom_platform():
191 + $provider = 'wpcom';
192 + break;
193 + default:
194 + $provider = 'unknown';
195 + break;
196 + }
197 +
198 + return $provider;
199 + }
200 +
201 + /**
202 + * Add public-api.wordpress.com to the safe redirect allowed list - only added when someone allows API access.
203 + *
204 + * @since 3.0.2 Ported from Jetpack to the Status package.
205 + *
206 + * To be used with a filter of allowed domains for a redirect.
207 + *
208 + * @param array $domains Allowed WP.com Environments.
209 + *
210 + * @return array
211 + */
212 + public static function allow_wpcom_public_api_domain( $domains ) {
213 + $domains[] = 'public-api.wordpress.com';
214 + return $domains;
215 + }
216 +}