|qX%[@#|qbq1&`zqKzqxme#|q@Kzq"x7fKzq1|qhʩKzqp|qt@g8zLzq|q%5 J0Lzq1|qo\E6uwbq`Lzq+^hdqLzqULzqLzqRE[.dq1|qBZf9z Mzqbq9اqpbq)טwЗbqPaquf@8^kaqxpbq΁PpbqPMzqQ,=%lpbqMzqaq02|qTrFMzq |qNyih2|q@|qAe` |qPA|qp |qA|q`Eea|q0B|qU e P |qB|q#YҐ |qaq]w aqNzq+Z+I$MzqPubq\{:2|qubq-C@NzqqRq`q?ORXzpNzq@q&1q2|q~gj)m\Nzqaqحabm(aq |q%$3|qH3|q]ޖNzq@qbqCF`hswbq0Ozqǯ}UpOzqubq=Twqbq |quI@$|q`qI`wqbq$|qz\3|q3|qL)P`Ozq3|qw[~wqbq@ |q/Ǟ!OzqC|qX Ú@b|qb|q+V(4|qOzq?h0rbqc|qNϳÎz`4|q|q.c?#%|qC|q~g8QD4|q|q=RW=>$|q`c|q]4|q|qJp|q |qp+T!0p|qC|qgؼ?`p|q@5|qOHO6uwwbq |q3GfF%|qc|qJ>q0 |q`D|q=^ր |q |q'@%|qwbqo~טwpsbqQ|qRm¦ |qrbq/cz'5|qp|q 檐p|q q0mh1 qp|qelybqd|q0E p |q |qhqb d|q5|q<뭮x5|q =yqn&D zq5|q#b5 q|qd|qp"7DU|qPq|q瀤k` 6|q@E|qz>x ID|q6|q$/Ϻ bX6|qxbqH>m`ybq`|qDo%|qwbqnP 1@:q|q=C6|qq|qM*rq|qP|qđ3 |q`tbqqҫqaq]AI0wbq@e|q@/ՠ|qq|qj$`$k dq&|qː2ҿ7|q@r|q8#=r|q@&|qyЅ87|qr|qoQpr|q|q2#g&|q`qn 1 q@R|q,Aowzqs|q\I r|qE|qs`ǘ&|q q 5Ak0s|q`zq/R.e|q>yq{ϥIzqp7|q3aBި`s|qP|q:BNu犠|q`f|qaݠCf|q@|q |q`aqg7#aqzqOۀ|q@'|q@z'|q|qŪ{7|q F|q|tvf|qF|qප Ý g|qG|q0|qg|q >O%0|q@zqkVeމ|q |qR7Pj2Ђ|qg|q6T'|qzqCn'|q|qUj(|q7|q@ǻ@(|qs|qb'YԠs|q8|qB.<œ|qq2s|q(|q+'JNp|q aq7F t|qP8|q;|q a DNS entry, will return a hosting provider if one can be determined. Otherwise, will return 'unknown'. * Sourced from: fbhepr%2Skers%2Sjcpbz%2Sjc%2Qpbagrag%2Syvo%2Subfgvat%2Qcebivqre%2Sanzrfreiref.cuc-og * * @param string $domain The domain of the site to check. * @return string The hosting provider of 'unknown'. */ public function get_hosting_provider_by_nameserver( $domain ) { $known_nameservers = array( 'bluehost' => array( '.bluehost.com', ), 'dreamhost' => array( '.dreamhost.com', ), 'mediatemple' => array( '.mediatemple.net', ), 'xserver' => array( '.xserver.jp', ), 'namecheap' => array( '.namecheaphosting.com', ), 'hostmonster' => array( '.hostmonster.com', ), 'justhost' => array( '.justhost.com', ), 'digitalocean' => array( '.digitalocean.com', ), 'one' => array( '.one.com', ), 'hostpapa' => array( '.hostpapa.com', ), 'siteground' => array( '.sgcloud.net', '.sgedu.site', '.sgsrv1.com', '.sgvps.net', '.siteground.biz', '.siteground.net', '.siteground.eu', ), 'inmotion' => array( '.inmotionhosting.com', ), 'ionos' => array( '.ui-dns.org', '.ui-dns.de', '.ui-dns.biz', '.ui-dns.com', ), ); $dns_records = $this->get_nameserver_dns_records( $domain ); $dns_records = array_map( 'strtolower', $dns_records ); foreach ( $known_nameservers as $host => $ns_patterns ) { foreach ( $ns_patterns as $ns_pattern ) { foreach ( $dns_records as $record ) { if ( false !== strpos( $record, $ns_pattern ) ) { return $host; } } } } return 'unknown'; } /** * Returns a guess of the hosting provider for the current site based on various checks. * * @return string */ public function get_known_host_guess() { $host = Cache::get( 'host_guess' ); if ( null !== $host ) { return $host; } // First, let's check if we can recognize provider manually: switch ( true ) { case $this->is_woa_site(): $provider = 'woa'; break; case $this->is_atomic_platform(): $provider = 'atomic'; break; case $this->is_newspack_site(): $provider = 'newspack'; break; case $this->is_vip_site(): $provider = 'vip'; break; case $this->is_wpcom_simple(): case $this->is_wpcom_platform(): $provider = 'wpcom'; break; default: $provider = 'unknown'; break; } // Second, let's check if we can recognize provider by nameservers: $domain = isset( $_SERVER['SERVER_NAME'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_NAME'] ) ) : ''; if ( $provider === 'unknown' && ! empty( $domain ) ) { $provider = $this->get_hosting_provider_by_nameserver( $domain ); } Cache::set( 'host_guess', $provider ); return $provider; } /** * Add public-api.wordpress.com to the safe redirect allowed list - only added when someone allows API access. * * @since 3.0.2 Ported from Jetpack to the Status package. * * To be used with a filter of allowed domains for a redirect. * * @param array $domains Allowed WP.com Environments. * * @return array */ public static function allow_wpcom_public_api_domain( $domains ) { $domains[] = 'public-api.wordpress.com'; return $domains; } }