PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.10.15
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.10.15
4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / widgets / dep / urlopen.php
premium-addons-for-elementor / widgets / dep Last commit date
form-presets 2 years ago pa-pins-handler.php 2 years ago pa-tiktok-handler.php 2 years ago pa-weather-handler.php 2 years ago urlopen.php 2 years ago
urlopen.php
266 lines
1 <?php
2
3 if ( ! function_exists( 'rplg_urlopen' ) ) {
4
5 define( 'RPLG_USER_AGENT', 'RPLG-WPPlugin/1.0' );
6 define( 'RPLG_SOCKET_TIMEOUT', 10 );
7
8 function rplg_json_decode( $data ) {
9 return json_decode( $data );
10 }
11
12 function rplg_json_urlopen( $url, $postdata = false, $headers = array() ) {
13 if ( ! ( $response = rplg_urlopen( $url, $postdata, $headers ) ) || ! $response['code'] ) {
14 // $this->last_error = 'COULDNT_CONNECT';
15 return false;
16 }
17 return rplg_json_decode( $response['data'] );
18 }
19
20 function rplg_urlopen( $url, $postdata = false, $headers = array() ) {
21 $response = array(
22 'data' => '',
23 'code' => 0,
24 );
25
26 $url = preg_replace( '/\s+/', '+', $url );
27
28 if ( function_exists( 'curl_init' ) ) {
29 if ( ! function_exists( 'curl_setopt_array' ) ) {
30 function curl_setopt_array( &$ch, $curl_options ) {
31 foreach ( $curl_options as $option => $value ) {
32 if ( ! curl_setopt( $ch, $option, $value ) ) {
33 return false;
34 }
35 }
36 return true;
37 }
38 }
39 _rplg_curl_urlopen( $url, $postdata, $headers, $response );
40 } elseif ( ini_get( 'allow_url_fopen' ) && function_exists( 'stream_get_contents' ) ) {
41 _rplg_fopen_urlopen( $url, $postdata, $headers, $response );
42 } else {
43 _rplg_fsockopen_urlopen( $url, $postdata, $headers, $response );
44 }
45 return $response;
46 }
47
48 /*-------------------------------- curl --------------------------------*/
49 function _rplg_curl_urlopen( $url, $postdata, $headers, &$response ) {
50 $c = curl_init( $url );
51 $postdata_str = rplg_get_query_string( $postdata );
52
53 $c_options = array(
54 CURLOPT_USERAGENT => RPLG_USER_AGENT,
55 CURLOPT_RETURNTRANSFER => true,
56 CURLOPT_POST => ( $postdata_str ? 1 : 0 ),
57 CURLOPT_HEADER => true,
58 CURLOPT_HTTPHEADER => array_merge( array( 'Expect:' ), $headers ),
59 CURLOPT_TIMEOUT => RPLG_SOCKET_TIMEOUT,
60 );
61 if ( $postdata ) {
62 $c_options[ CURLOPT_POSTFIELDS ] = $postdata_str;
63 }
64 curl_setopt_array( $c, $c_options );
65
66 $open_basedir = ini_get( 'open_basedir' );
67 if ( empty( $open_basedir ) ) {
68 curl_setopt( $c, CURLOPT_FOLLOWLOCATION, true );
69 }
70 curl_setopt( $c, CURLOPT_SSL_VERIFYPEER, false );
71
72 $data = curl_exec( $c );
73
74 // cURL automatically handles Proxy rewrites, remove the "HTTP/1.0 200 Connection established" string
75 if ( stripos( $data, "HTTP/1.0 200 Connection established\r\n\r\n" ) !== false ) {
76 $data = str_ireplace( "HTTP/1.0 200 Connection established\r\n\r\n", '', $data );
77 }
78
79 list($resp_headers, $response['data']) = explode( "\r\n\r\n", $data, 2 );
80
81 $response['headers'] = _rplg_get_response_headers( $resp_headers, $response );
82 $response['code'] = curl_getinfo( $c, CURLINFO_HTTP_CODE );
83 curl_close( $c );
84 }
85
86 /*-------------------------------- fopen --------------------------------*/
87 function _rplg_fopen_urlopen( $url, $postdata, $headers, &$response ) {
88 $params = array();
89
90 if ( $postdata ) {
91 $params = array(
92 'http' => array(
93 'method' => 'POST',
94 'header' => implode( "\r\n", array_merge( array( 'Content-Type: application/x-www-form-urlencoded' ), $headers ) ),
95 'content' => rplg_get_query_string( $postdata ),
96 'timeout' => RPLG_SOCKET_TIMEOUT,
97 ),
98 );
99 } else {
100 $params = array(
101 'http' => array(
102 'header' => implode( "\r\n", $headers ),
103 ),
104 );
105 }
106
107 ini_set( 'user_agent', RPLG_USER_AGENT );
108 $ctx = stream_context_create( $params );
109 $fp = fopen( $url, 'rb', false, $ctx );
110 if ( ! $fp ) {
111 return false; }
112
113 $response_header_array = explode( ' ', $http_response_header[0], 3 );
114
115 $unused = $response_header_array[0];
116
117 $response['code'] = $response_header_array[0];
118
119 $unused = $response_header_array[2];
120
121 $resp_headers = array_slice( $http_response_header, 1 );
122
123 foreach ( $resp_headers as $unused => $header ) {
124 $header = explode( ':', $header );
125 $header[0] = trim( $header[0] );
126 $header[1] = trim( $header[1] );
127 $resp_headers[ strtolower( $header[0] ) ] = strtolower( $header[1] );
128 }
129 $response['data'] = stream_get_contents( $fp );
130 $response['headers'] = $resp_headers;
131 }
132
133 /*-------------------------------- fsockpen --------------------------------*/
134 function _rplg_fsockopen_urlopen( $url, $postdata, $headers, &$response ) {
135 $buf = '';
136 $req = '';
137 $length = 0;
138 $postdata_str = rplg_get_query_string( $postdata );
139 $url_pieces = parse_url( $url );
140 $host = $url_pieces['host'];
141
142 if ( ! isset( $url_pieces['port'] ) ) {
143 switch ( $url_pieces['scheme'] ) {
144 case 'http':
145 $url_pieces['port'] = 80;
146 break;
147 case 'https':
148 $url_pieces['port'] = 443;
149 $host = 'ssl://' . $url_pieces['host'];
150 break;
151 }
152 }
153
154 if ( ! isset( $url_pieces['path'] ) ) {
155 $url_pieces['path'] = '/'; }
156
157 if ( ( $url_pieces['port'] == 80 && $url_pieces['scheme'] == 'http' ) ||
158 ( $url_pieces['port'] == 443 && $url_pieces['scheme'] == 'https' ) ) {
159 $req_host = $url_pieces['host'];
160 } else {
161 $req_host = $url_pieces['host'] . ':' . $url_pieces['port'];
162 }
163
164 $fp = @fsockopen( $host, $url_pieces['port'], $errno, $errstr, RPLG_SOCKET_TIMEOUT );
165 if ( ! $fp ) {
166 return false; }
167
168 $path = $url_pieces['path'];
169 if ( isset( $url_pieces['query'] ) ) {
170 $path .= '?' . $url_pieces['query'];
171 }
172
173 $req .= ( $postdata_str ? 'POST' : 'GET' ) . ' ' . $path . " HTTP/1.1\r\n";
174 $req .= 'Host: ' . $req_host . "\r\n";
175 $req .= rplg_get_http_headers_for_request( $postdata_str, $headers );
176 if ( $postdata_str ) {
177 $req .= "\r\n\r\n" . $postdata_str;
178 }
179 $req .= "\r\n\r\n";
180
181 fwrite( $fp, $req );
182 while ( ! feof( $fp ) ) {
183 $buf .= fgets( $fp, 4096 );
184 }
185
186 list($headers, $response['data']) = explode( "\r\n\r\n", $buf, 2 );
187
188 $headers = _rplg_get_response_headers( $headers, $response );
189
190 if ( isset( $headers['transfer-encoding'] ) && 'chunked' == strtolower( $headers['transfer-encoding'] ) ) {
191 $chunk_data = $response['data'];
192 $joined_data = '';
193 while ( true ) {
194 list($chunk_length, $chunk_data) = explode( "\r\n", $chunk_data, 2 );
195 $chunk_length = hexdec( $chunk_length );
196 if ( ! $chunk_length || ! strlen( $chunk_data ) ) {
197 break; }
198
199 $joined_data .= substr( $chunk_data, 0, $chunk_length );
200 $chunk_data = substr( $chunk_data, $chunk_length + 1 );
201 $length += $chunk_length;
202 }
203 $response['data'] = $joined_data;
204 } else {
205 $length = $headers['content-length'];
206 }
207 $response['headers'] = $headers;
208 }
209
210 /*-------------------------------- helpers --------------------------------*/
211 function rplg_get_query_string( $params ) {
212 $query = '';
213
214 if ( $params ) {
215 foreach ( $params as $key => $value ) {
216 $query .= urlencode( $key ) . '=' . urlencode( $value ) . '&';
217 }
218 }
219 return $query;
220 }
221
222 function _rplg_get_response_headers( $headers, &$response ) {
223 $headers = explode( "\r\n", $headers );
224
225 $header_array = explode( ' ', $headers[0], 3 );
226
227 $unused = $header_array[0];
228
229 $response['code'] = $header_array[1];
230
231 $unused = $header_array[2];
232
233 $headers = array_slice( $headers, 1 );
234 foreach ( $headers as $unused => $header ) {
235 $header = explode( ':', $header );
236 $header[0] = trim( $header[0] );
237 $header[1] = trim( $header[1] );
238 $headers[ strtolower( $header[0] ) ] = $header[1];
239 }
240 return $headers;
241 }
242
243 function rplg_get_http_headers_for_request( $content, $headers ) {
244 $req_headers = array();
245 $req_headers[] = 'User-Agent: ' . RPLG_USER_AGENT;
246 $req_headers[] = 'Connection: close';
247 if ( $content ) {
248 $req_headers[] = 'Content-Length: ' . strlen( $content );
249 $req_headers[] = 'Content-Type: application/x-www-form-urlencoded';
250 }
251 return implode( "\r\n", array_merge( $req_headers, $headers ) );
252 }
253
254 function rplg_url_method() {
255 if ( function_exists( 'curl_init' ) ) {
256 return 'curl';
257 } elseif ( ini_get( 'allow_url_fopen' ) && function_exists( 'stream_get_contents' ) ) {
258 return 'fopen';
259 } else {
260 return 'fsockopen';
261 }
262 }
263 }
264
265
266