PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.11.0
Independent Analytics – WordPress Analytics Plugin v2.11.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Utils / Request.php
independent-analytics / IAWP / Utils Last commit date
BladeOne.php 2 years ago CSV.php 2 years ago Calculations.php 2 years ago Currency.php 1 year ago Device.php 1 year ago Device_Cache.php 2 years ago Dir.php 2 years ago Link_Validator.php 1 year ago Number_Formatter.php 2 years ago Request.php 1 year ago Salt.php 2 years ago Security.php 1 year ago Server.php 2 years ago Singleton.php 2 years ago String_Util.php 2 years ago Timezone.php 1 year ago URL.php 1 year ago WP_Async_Request.php 1 year ago WordPress_Site_Date_Format_Pattern.php 2 years ago
Request.php
115 lines
1 <?php
2
3 namespace IAWP\Utils;
4
5 use IAWPSCOPED\Illuminate\Support\Str;
6 use IAWPSCOPED\IPLib\Factory;
7 /** @internal */
8 class Request
9 {
10 public static function get_post_array(string $field) : ?array
11 {
12 if (!\array_key_exists($field, $_POST) || !\is_array($_POST[$field])) {
13 return null;
14 }
15 return \rest_sanitize_array($_POST[$field]);
16 }
17 public static function get_post_string(string $field) : ?string
18 {
19 if (!\array_key_exists($field, $_POST)) {
20 return null;
21 }
22 return \sanitize_text_field($_POST[$field]);
23 }
24 public static function path_relative_to_site_url($url = null)
25 {
26 if (\is_null($url)) {
27 $url = self::url();
28 }
29 $site_url = \site_url();
30 if ($url == $site_url) {
31 return '/';
32 } elseif (\substr($url, 0, \strlen($site_url)) == $site_url) {
33 return \substr($url, \strlen($site_url));
34 } else {
35 return $url;
36 }
37 }
38 public static function ip()
39 {
40 if (\defined('IAWP_TEST_IP')) {
41 return \IAWP_TEST_IP;
42 }
43 $headers = ['HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', 'HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_INCAP_CLIENT_IP', 'HTTP_CF_CONNECTING_IP'];
44 if (\is_string(self::custom_ip_header())) {
45 \array_unshift($headers, self::custom_ip_header());
46 }
47 foreach ($headers as $header) {
48 if (isset($_SERVER[$header])) {
49 return \explode(',', $_SERVER[$header])[0];
50 }
51 }
52 return null;
53 }
54 public static function custom_ip_header() : ?string
55 {
56 // add_filter('iawp_header_with_ip_address', function () {
57 // return 'CUSTOM_HEADER_NAME';
58 // });
59 $user_defined_header = \apply_filters('iawp_header_with_ip_address', null);
60 if (!\is_string($user_defined_header)) {
61 return null;
62 }
63 $user_defined_header = \IAWP\Utils\Security::string($user_defined_header);
64 if (Str::of($user_defined_header)->test('/^[a-zA-Z_]+$/')) {
65 return $user_defined_header;
66 }
67 return null;
68 }
69 public static function user_agent()
70 {
71 return $_SERVER['HTTP_USER_AGENT'];
72 }
73 public static function is_ip_address_blocked() : bool
74 {
75 $blocked_ips = \IAWPSCOPED\iawp()->get_option('iawp_blocked_ips', []);
76 // No address could be blocked
77 if (\count($blocked_ips) == 0) {
78 return \false;
79 }
80 $visitor_address = Factory::parseAddressString(self::ip());
81 // We cannot block invalid ip addresses
82 if ($visitor_address === null) {
83 return \false;
84 }
85 foreach ($blocked_ips as $blocked_ip) {
86 $blocked_range = Factory::parseRangeString($blocked_ip);
87 // We cannot check an ip address against an invalid range
88 if ($blocked_range === null) {
89 continue;
90 }
91 // If the address matches this particular blocked range, then the ip address is indeed blocked
92 if ($blocked_range->contains($visitor_address)) {
93 return \true;
94 }
95 }
96 return \false;
97 }
98 private static function scheme()
99 {
100 if (!empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https' || !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' || !empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') {
101 return 'https';
102 } else {
103 return 'http';
104 }
105 }
106 private static function url()
107 {
108 if (!empty($_SERVER['HTTP_HOST']) && !empty($_SERVER['REQUEST_URI'])) {
109 return \esc_url_raw(self::scheme() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
110 } else {
111 return null;
112 }
113 }
114 }
115