%PDF- %PDF-
Direktori : /var/www/html/shaban/laviva/wp-content/plugins/smart-slider-3/nextend/library/ |
Current File : /var/www/html/shaban/laviva/wp-content/plugins/smart-slider-3/nextend/library/nextend.php |
<?php class N2 { public static $version = '2.0.21'; private static $api = 'https://secure.nextendweb.com/api/api.php'; private static $api2 = 'https://api.nextendweb.com/v1/'; public static function getApiUrl() { if (N2Settings::get('api-secondary', 0)) { return self::$api2; } return self::$api; } public static function api($posts, $returnUrl = false) { if (N2Settings::get('api-secondary', 0)) { $api = self::$api2; } else { $api = self::$api; } $posts_default = array( 'platform' => N2Platform::getPlatform() ); $posts = $posts + $posts_default; if ($returnUrl) { return $api . '?' . http_build_query($posts + $posts_default, '', '&'); } if (!isset($data)) { if (function_exists('curl_init') && function_exists('curl_exec') && N2Settings::get('curl', 1)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($posts, '', '&')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']); $proxy = new WP_HTTP_Proxy(); if ($proxy->is_enabled() && $proxy->send_through_proxy($api)) { curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); curl_setopt($ch, CURLOPT_PROXY, $proxy->host()); curl_setopt($ch, CURLOPT_PROXYPORT, $proxy->port()); if ($proxy->use_authentication()) { curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy->authentication()); } } if (N2Settings::get('curl-clean-proxy', 0)) { curl_setopt($ch, CURLOPT_PROXY, ''); } $data = curl_exec($ch); $errorNumber = curl_errno($ch); if ($errorNumber == 60 || $errorNumber == 77) { curl_setopt($ch, CURLOPT_CAINFO, N2LIBRARY . '/cacert.pem'); $data = curl_exec($ch); } $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $error = curl_error($ch); $curlErrorNumber = curl_errno($ch); curl_close($ch); if ($curlErrorNumber) { $href = N2Base::getApplication('smartslider')->router->createUrl(array( "help/index", array('curl' => 1) )); N2Message::error(N2Html::tag('a', array( 'href' => $href . '#support-form' ), n2_('Debug error'))); N2Message::error($curlErrorNumber . $error); return array( 'status' => 'ERROR_HANDLED' ); } } else { $opts = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($posts, '', '&') ) ); $context = stream_context_create($opts); $data = file_get_contents($api, false, $context); if ($data === false) { N2Message::error(n2_('CURL disabled in your php.ini configuration. Please enable it!')); return array( 'status' => 'ERROR_HANDLED' ); } $headers = self::parseHeaders($http_response_header); if ($headers['status'] != '200') { N2Message::error(n2_('Unable to contact with the licensing server, please try again later!')); return array( 'status' => 'ERROR_HANDLED' ); } if (isset($headers['content-type'])) { $contentType = $headers['content-type']; } } } switch ($contentType) { case 'text/html; charset=UTF-8': //CloudFlare challenge preg_match('/"your_ip">.*?:[ ]*(.*?)<\/span>/', $data, $matches); if (count($matches)) { $blockedIP = $matches[1]; N2Message::error(sprintf('Your ip address (%s) is blocked by our hosting provider.<br>Please try: Global Settings -> Framework settings -> Secondary server -> On, or contact us (support@nextendweb.com) with your ip to whitelist it.', $blockedIP)); return array( 'status' => 'ERROR_HANDLED' ); } N2Message::error(sprintf('Unexpected response from the API.<br>Please try: Global Settings -> Framework settings -> Secondary server -> On, contact us (support@nextendweb.com) with the following log:') . '<br><textarea style="width: 100%;height:200px;font-size:8px;">' . base64_encode($data) . '</textarea>'); return array( 'status' => 'ERROR_HANDLED' ); break; case 'application/json': return json_decode($data, true); } return $data; } private static function parseHeaders(array $headers, $header = null) { $output = array(); if ('HTTP' === substr($headers[0], 0, 4)) { list(, $output['status'], $output['status_text']) = explode(' ', $headers[0]); unset($headers[0]); } foreach ($headers as $v) { $h = preg_split('/:\s*/', $v); if (count($h) >= 2) { $output[strtolower($h[0])] = $h[1]; } } if (null !== $header) { if (isset($output[strtolower($header)])) { return $output[strtolower($header)]; } return; } return $output; } }