PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.1.0
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.1.0
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
urlopen.php 5 years ago
urlopen.php
256 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 } else if(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('http' => array(
92 'method' => 'POST',
93 'header' => implode("\r\n", array_merge(array('Content-Type: application/x-www-form-urlencoded'), $headers)),
94 'content' => rplg_get_query_string($postdata),
95 'timeout' => RPLG_SOCKET_TIMEOUT
96 ));
97 } else {
98 $params = array('http' => array(
99 'header' => implode("\r\n", $headers)
100 ));
101 }
102
103 ini_set('user_agent', RPLG_USER_AGENT);
104 $ctx = stream_context_create($params);
105 $fp = fopen($url, 'rb', false, $ctx);
106 if(!$fp) { return false; }
107
108 $response_header_array = explode(' ', $http_response_header[0], 3);
109
110 $unused = $response_header_array[0];
111
112 $response['code'] = $response_header_array[0];
113
114 $unused = $response_header_array[2];
115
116 $resp_headers = array_slice($http_response_header, 1);
117
118 foreach($resp_headers as $unused=>$header) {
119 $header = explode(':', $header);
120 $header[0] = trim($header[0]);
121 $header[1] = trim($header[1]);
122 $resp_headers[strtolower($header[0])] = strtolower($header[1]);
123 }
124 $response['data'] = stream_get_contents($fp);
125 $response['headers'] = $resp_headers;
126 }
127
128 /*-------------------------------- fsockpen --------------------------------*/
129 function _rplg_fsockopen_urlopen($url, $postdata, $headers, &$response) {
130 $buf = '';
131 $req = '';
132 $length = 0;
133 $postdata_str = rplg_get_query_string($postdata);
134 $url_pieces = parse_url($url);
135 $host = $url_pieces['host'];
136
137 if(!isset($url_pieces['port'])) {
138 switch($url_pieces['scheme']) {
139 case 'http':
140 $url_pieces['port'] = 80;
141 break;
142 case 'https':
143 $url_pieces['port'] = 443;
144 $host = 'ssl://' . $url_pieces['host'];
145 break;
146 }
147 }
148
149 if(!isset($url_pieces['path'])) { $url_pieces['path'] = '/'; }
150
151 if(($url_pieces['port'] == 80 && $url_pieces['scheme'] == 'http') ||
152 ($url_pieces['port'] == 443 && $url_pieces['scheme'] == 'https')) {
153 $req_host = $url_pieces['host'];
154 } else {
155 $req_host = $url_pieces['host'] . ':' . $url_pieces['port'];
156 }
157
158 $fp = @fsockopen($host, $url_pieces['port'], $errno, $errstr, RPLG_SOCKET_TIMEOUT);
159 if(!$fp) { return false; }
160
161 $path = $url_pieces['path'];
162 if (isset($url_pieces['query'])) $path .= '?'.$url_pieces['query'];
163
164 $req .= ($postdata_str ? 'POST' : 'GET') . ' ' . $path . " HTTP/1.1\r\n";
165 $req .= 'Host: ' . $req_host . "\r\n";
166 $req .= rplg_get_http_headers_for_request($postdata_str, $headers);
167 if($postdata_str) {
168 $req .= "\r\n\r\n" . $postdata_str;
169 }
170 $req .= "\r\n\r\n";
171
172 fwrite($fp, $req);
173 while(!feof($fp)) {
174 $buf .= fgets($fp, 4096);
175 }
176
177 list($headers, $response['data']) = explode("\r\n\r\n", $buf, 2);
178
179 $headers = _rplg_get_response_headers($headers, $response);
180
181 if(isset($headers['transfer-encoding']) && 'chunked' == strtolower($headers['transfer-encoding'])) {
182 $chunk_data = $response['data'];
183 $joined_data = '';
184 while(true) {
185 list($chunk_length, $chunk_data) = explode("\r\n", $chunk_data, 2);
186 $chunk_length = hexdec($chunk_length);
187 if(!$chunk_length || !strlen($chunk_data)) { break; }
188
189 $joined_data .= substr($chunk_data, 0, $chunk_length);
190 $chunk_data = substr($chunk_data, $chunk_length + 1);
191 $length += $chunk_length;
192 }
193 $response['data'] = $joined_data;
194 } else {
195 $length = $headers['content-length'];
196 }
197 $response['headers'] = $headers;
198 }
199
200 /*-------------------------------- helpers --------------------------------*/
201 function rplg_get_query_string($params) {
202 $query = '';
203
204 if($params) {
205 foreach($params as $key=>$value) {
206 $query .= urlencode($key) . '=' . urlencode($value) . '&';
207 }
208 }
209 return $query;
210 }
211
212 function _rplg_get_response_headers($headers, &$response) {
213 $headers = explode("\r\n", $headers);
214
215 $header_array = explode(' ', $headers[0], 3);
216
217 $unused = $header_array[0];
218
219 $response['code'] = $header_array[1];
220
221 $unused = $header_array[2];
222
223 $headers = array_slice($headers, 1);
224 foreach($headers as $unused=>$header) {
225 $header = explode(':', $header);
226 $header[0] = trim($header[0]);
227 $header[1] = trim($header[1]);
228 $headers[strtolower($header[0])] = $header[1];
229 }
230 return $headers;
231 }
232
233 function rplg_get_http_headers_for_request($content, $headers) {
234 $req_headers = array();
235 $req_headers[] = 'User-Agent: ' . RPLG_USER_AGENT;
236 $req_headers[] = 'Connection: close';
237 if($content) {
238 $req_headers[] = 'Content-Length: ' . strlen($content);
239 $req_headers[] = 'Content-Type: application/x-www-form-urlencoded';
240 }
241 return implode("\r\n", array_merge($req_headers, $headers));
242 }
243
244 function rplg_url_method() {
245 if(function_exists('curl_init')) {
246 return 'curl';
247 } else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
248 return 'fopen';
249 } else {
250 return 'fsockopen';
251 }
252 }
253 }
254
255 ?>
256