getCookieJar() public méthode

Return the current cookie jar or null if none.
public getCookieJar ( ) : Zend_Http_CookieJar | null
Résultat Zend_Http_CookieJar | null
 public static function login($request)
 {
     $blogPath = SJB_Settings::getSettingByName('blog_path');
     if (empty($blogPath)) {
         return;
     }
     $username = $request['username'];
     $password = $request['password'];
     $userInfo = SJB_UserManager::getUserInfoByUserName($username);
     $userInfo = $userInfo ? base64_encode(serialize($userInfo)) : false;
     $url = SJB_System::getSystemSettings('SITE_URL') . $blogPath . '/wp-login.php';
     $client = new Zend_Http_Client($url, array('useragent' => SJB_Request::getUserAgent(), 'maxredirects' => 0));
     $client->setCookieJar();
     $client->setCookie($_COOKIE);
     $client->setMethod(Zend_Http_Client::POST);
     $client->setParameterPost(array('log' => $username, 'pwd' => $password, 'noSJB' => 1, 'userInfo' => $userInfo, 'wp-submit' => 'Log in'));
     try {
         $response = $client->request();
         foreach ($response->getHeaders() as $key => $header) {
             if ('set-cookie' == strtolower($key)) {
                 if (is_array($header)) {
                     foreach ($header as $val) {
                         header("Set-Cookie: " . $val, false);
                     }
                 } else {
                     header("Set-Cookie: " . $header, false);
                 }
             }
         }
         $_SESSION['wp_cookie_jar'] = @serialize($client->getCookieJar());
     } catch (Exception $ex) {
     }
 }
 public function shutdownHttpClient(Zend_Http_Client $httpClient)
 {
     if (!isset($this->_restSession)) {
         $this->_restSession = new Zend_Session_Namespace('App_Rest_Service_' . $this->getRestService()->getServiceName() . '_Session');
     }
     $this->_restSession->cookieJar = $httpClient->getCookieJar();
 }
 /**
  * Test we can unset a cookie jar
  *
  */
 public function testUnsetCookieJar()
 {
     // Set the cookie jar just like in testSetNewCookieJar
     $this->client->setCookieJar();
     $this->client->setCookie('cookie', 'value');
     $this->client->setCookie('chocolate', 'chips');
     $jar = $this->client->getCookieJar();
     // Try unsetting the cookiejar
     $this->client->setCookieJar(null);
     $this->assertNull($this->client->getCookieJar(), 'Cookie jar is expected to be null but it is not');
 }
Exemple #4
0
 /**
  * constructor for Zend_Service_Tine20
  * @param string           $url         the url of the Tine 2.0 installation
  * @param Zend_Http_Client $httpClient
  * @return void
  */
 public function __construct($url, $httpClient = null)
 {
     $this->_url = $url;
     if (!$httpClient instanceof Zend_Http_Client) {
         $httpClient = new Zend_Http_Client();
     }
     if (!$httpClient->getCookieJar() instanceof Zend_Http_CookieJar) {
         $httpClient->setCookieJar();
     }
     parent::__construct($url, $httpClient);
 }
Exemple #5
0
 /**
  * 
  * @param string $url
  * @param array $param
  * @param string $method
  * @return string
  */
 protected function _request($url, $param = array(), $method = Zend_Http_Client::POST)
 {
     if ($this->_client === null) {
         $config = array('useragent' => 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/44.0', 'encodecookies' => false, 'timeout' => 180);
         $this->_client = new Zend_Http_Client($url, $config);
         $this->_client->setCookieJar();
     }
     $this->_client->resetParameters()->setUri($url);
     if (count($param['post']) > 0) {
         foreach ($param['post'] as $name => $value) {
             $this->_client->setParameterPost($name, $value);
         }
     }
     if (count($param['get']) > 0) {
         foreach ($param['get'] as $name => $value) {
             $this->_client->setParameterPost($name, $value);
         }
     }
     if (count($param['file']) > 0) {
         foreach ($param['file'] as $name => $value) {
             $this->_client->setFileUpload($value, $name);
         }
     }
     if (count($param['cookie']) > 0) {
         foreach ($param['cookie'] as $name => $value) {
             $this->_client->setCookie($name, $value);
         }
     }
     if (count($this->_cookies) > 0) {
         foreach ($this->_cookies as $cookie) {
             $this->_client->setCookie($cookie);
         }
     }
     $response = $this->_client->request($method);
     $this->_cookies = $this->_client->getCookieJar()->getAllCookies();
     return $response->getBody();
 }
 /**
  * get an array with standard information about the playable
  * @param string $url the hoster page or resource ID
  * @param boolean $isId
  * @return array format:
  * 		array(
  * 			'title' => TITLE
  * 			'description' => DESCRIPTION
  * 			'length' => LENGTH
  * 			...
  * 		)
  */
 function getPlayableInfos($url, $isId = true)
 {
     if (!$isId) {
         $url = $this->getResourceId($url);
     }
     // use cached values
     if (array_key_exists($url, $this->info_cache)) {
         return $this->info_cache[$url];
     }
     $http = new Zend_Http_Client("http://www.dailymotion.com/video/" . $url, array('headers' => array('User-Agent' => "vlc-shares/" . X_VlcShares::VERSION . " dailymotion/" . X_VlcShares_Plugins_DailyMotion::VERSION)));
     $http->setCookieJar(true);
     $http->getCookieJar()->addCookie(new Zend_Http_Cookie('family_filter', 'off', 'www.dailymotion.com'));
     $datas = $http->request()->getBody();
     if (preg_match('/<title>(.*)404(.*)<\\/title>/', $datas)) {
         throw new Exception("Invalid ID {{$url}}", self::E_ID_INVALID);
     }
     $matches = array();
     if (!preg_match('/\\.addVariable\\(\\"sequence\\",  \\"(?P<sequence>.*?)\\"/', $datas, $matches)) {
         throw new Exception("Invalid ID {{$url}}, sequence not found", self::E_ID_INVALID);
     }
     $sequence = urldecode($matches['sequence']);
     $matches = array();
     if (!preg_match('/videotitle\\=(?P<title>[^&]+)&/', $sequence, $matches)) {
         $title = "";
     }
     $title = urldecode($matches['title']);
     $matches = array();
     if (!preg_match('/\\"videoDescription\\"\\:\\"(?P<description>[^\\"]*)\\"/', $sequence, $matches)) {
         $description = '';
     }
     $description = urldecode($matches['description']);
     $matches = array();
     if (!preg_match('/\\"duration\\"\\:(?P<length>.*)\\,/', $sequence, $matches)) {
         $length = '';
     }
     $length = $matches['length'];
     $thumbnail = "http://www.dailymotion.com/thumbnail/320x240/video/{$url}";
     $matches = array();
     if (!preg_match('/\\"sdURL\\"\\:\\"(?P<video>[^\\"]+)\\"/', $sequence, $matches)) {
         $video = '';
     }
     $video = stripslashes($matches['video']);
     $infos = array('title' => $title, 'description' => $description, 'length' => $length, 'thumbnail' => $thumbnail, 'url' => $video);
     // add in cache
     $this->info_cache[$url] = $infos;
     return $infos;
 }
Exemple #7
0
 function post($url = null, $params = null, $config = array())
 {
     $_config = array();
     $arrParams = array();
     //-----------------
     // Установим URL
     if ($url) {
         $this->client->setUri($url);
     } else {
         $url = $this->client->getUri(TRUE);
     }
     // Установим параметры запроса
     if ($params) {
         if (is_string($params)) {
             // Преобразуем строку запроса в массив
             parse_str($params, $arrParams);
             $this->client->setParameterPost($arrParams);
         } else {
             $this->client->setParameterPost($params);
         }
     }
     // Установим заголовок Referer
     if (!empty($this->last_url)) {
         $_config['headers']['Referer'] = $this->last_url;
     }
     // Запомним последний URL
     $this->last_url = $url;
     // Обьединим два массива
     $config = $_config + $config;
     // Сохраним последнюю конфигурацию
     $this->last_config = $this->_setConfig($config);
     // Выполним запрос
     $response = $this->client->request("POST");
     $html = $response->getBody();
     // Запомним последний запрос в виде строки
     $this->last_request = $this->client->getLastRequest();
     // Запомним последний запрос в виде Zend_Http_Response
     $this->last_response = $this->client->getLastResponse();
     // Запомним последние полученные Сookies
     $this->last_cookies = $this->client->getCookieJar()->getAllCookies();
     return new PGPage($this->client->getUri(TRUE), $this->clean($html), $this);
 }
 protected function fetch($url, $retry = true)
 {
     if ($this->options->get('username', '') == '' || $this->options->get('password', '') == '') {
         X_Debug::e("Account missing");
         return false;
     }
     $http = new Zend_Http_Client();
     $http->setCookieJar(true);
     // load cookies from file
     try {
         /* @var $cacheHelper X_VlcShares_Plugins_Helper_Cache */
         $cacheHelper = X_VlcShares_Plugins::helpers()->helper('cache');
         $cookies = unserialize($cacheHelper->retrieveItem("realdebrid::cookies"));
         X_Debug::i("Using cached authentication");
         foreach ($cookies as $c) {
             $_c = new Zend_Http_Cookie($c['name'], $c['value'], $c['domain'], $c['exp'], $c['path']);
             $http->getCookieJar()->addCookie($_c);
         }
     } catch (Exception $e) {
         // no cache plugin or no authentication performed
         // perform a new authentication
         X_Debug::i("Authentication required: {$e->getMessage()}");
         try {
             $http->setUri(sprintf(self::API_URL_LOGIN, $this->options->get('username'), md5($this->options->get('password')), time()));
             $loginBody = Zend_Json::decode($http->request()->getBody());
         } catch (Exception $e) {
             if ($retry) {
                 X_Debug::e("Login request failed, try again: {$e->getMessage()}");
                 return $this->fetch($url, false);
             } else {
                 X_Debug::e("Login request failed (2nd time): {$e->getMessage()}");
                 throw $e;
             }
         }
         if ($loginBody['error'] != 0) {
             // invalid login info
             throw new Exception("Invalid Real-Debrid account");
         } else {
             X_Debug::i("Authentication performed, valid account");
             // login ok, store information in cache (try)
             try {
                 /* @var $cacheHelper X_VlcShares_Plugins_Helper_Cache */
                 $cacheHelper = X_VlcShares_Plugins::helpers()->helper('cache');
                 $cks = $http->getCookieJar()->getAllCookies(Zend_Http_CookieJar::COOKIE_OBJECT);
                 $minValidity = 99999999999;
                 foreach ($cks as $i => $c) {
                     /* @var $c Zend_Http_Cookie */
                     $expire = $c->getExpiryTime();
                     if ($expire != null && $expire < $minValidity) {
                         $minValidity = $expire;
                     }
                     $cks[$i] = array('domain' => $c->getDomain(), 'exp' => $c->getExpiryTime(), 'name' => $c->getName(), 'path' => $c->getPath(), 'value' => $c->getValue());
                 }
                 $minValidity = (int) ($minValidity - time() / 60) - 1;
                 if ($minValidity < 0) {
                     $minValidity = 5;
                 }
                 // if error, set to 5 minutes
                 // perform a new authentication every 7 days
                 $cacheHelper->storeItem("realdebrid::cookies", serialize($cks), $minValidity);
             } catch (Exception $e) {
                 X_Debug::e("Real Debrid requires cache plugin, but it's disabled!!!");
             }
         }
     }
     $url = urlencode($url);
     $url = sprintf(self::API_URL_FETCH, $url, time());
     X_Debug::i("Fetching: {$url}");
     $http->setUri($url)->setHeaders(array('User-Agent: vlc-shares/' . X_VlcShares::VERSION . ' realdebrid/' . X_VlcShares_Plugins_RealDebrid::VERSION));
     // always add "showlink=1" and "lang=en" in the cookies
     //$http
     //->setCookie('showlink', '1')
     //->setCookie('lang','en');
     $links = $http->request()->getBody();
     //X_Debug::i("Request: ".var_export( $http->getLastRequest() , true));
     //X_Debug::i("Real debrid response: ".$links);
     $json = Zend_Json::decode($links);
     if (isset($json['error'])) {
         switch ($json['error']) {
             case '0':
                 // everything ok
                 break;
             case '2':
                 // invalid login
                 // invalid account or login missing.
                 // Try 1 more time only forcing relogin
                 if ($retry) {
                     return $this->fetch($url, false);
                 } else {
                     return false;
                 }
             case '5':
                 // expired account
                 return false;
             default:
                 // maybe invalid links?
                 return false;
         }
     }
     $links = array();
     /*
     			Minecraft MindCrack - S3E266 - Revisiting Arkas.mp4 (720p)|-|http:\/\/s08.real-debrid.com\/dl\/94i41374r203339931\/Minecraft%20MindCrack%20-%20S3E266%20-%20Revisiting%20Arkas.mp4|--|Minecraft MindCrack - S3E266 - Revisiting Arkas.flv (HQ)|-|http:\/\/s08.real-debrid.com\/dl\/94i41374r203434188\/Minecraft%20MindCrack%20-%20S3E266%20-%20Revisiting%20Arkas.flv|--|Minecraft MindCrack - S3E266 - Revisiting Arkas.flv (SD)|-|http:\/\/s08.real-debrid.com\/dl\/94i41374r203537640\/Minecraft%20MindCrack%20-%20S3E266%20-%20Revisiting%20Arkas.flv|--|Minecraft MindCrack - S3E266 - Revisiting Arkas.flv (240p)|-|http:\/\/s08.real-debrid.com\/dl\/94i41374r203631597\/Minecraft%20MindCrack%20-%20S3E266%20-%20Revisiting%20Arkas.flv"
     */
     $linksS = $json['generated_links'];
     $xLinksS = explode('|--|', $linksS);
     foreach ($xLinksS as $xLinkS) {
         // $xLinkS = Minecraft MindCrack - S3E266 - Revisiting Arkas.mp4 (720p)|-|http:\/\/s08.real-debrid.com\/dl\/94i41374r203339931\/Minecraft%20MindCrack%20-%20S3E266%20-%20Revisiting%20Arkas.mp4
         $xLink = explode('|-|', $xLinkS);
         $links[] = $xLink[1];
     }
     if (count($links) > 1) {
         $links = array_reverse($links, false);
     }
     return $links;
 }
 public function videoAction()
 {
     $id = $this->getRequest()->getParam("id", false);
     if (!$id) {
         throw new Exception(X_Env::_("p_veoh_invalid_id"));
     }
     // this algorithm is taken from jdownload veoh hoster plugin
     $http1 = new Zend_Http_Client();
     $http1->setCookieJar(true);
     $http1->setUri("http://www.veoh.com/watch/{$id}");
     $response1 = $http1->request()->getBody();
     $fbsettingPattern = '/FB\\.init\\(\\"(?P<fbsetting>[^\\"]+)\\"/';
     $fbsetting = array();
     if (!preg_match($fbsettingPattern, $response1, $fbsetting)) {
         X_Debug::e("Can't get FBSetting. Regex failed");
         throw new Exception("Can't get FBSetting");
     }
     $fbsetting = $fbsetting['fbsetting'];
     $http2 = new Zend_Http_Client();
     $http2->setUri("http://www.veoh.com/static/swf/webplayer/VWPBeacon.swf?port=50246&version=1.2.2.1112");
     $response2 = $http2->request();
     $http1->setUri("http://www.veoh.com/rest/v2/execute.xml?apiKey=" . base64_decode(X_VlcShares_Plugins_Veoh::APIKEY) . "&method=veoh.video.findByPermalink&permalink=" . $id . "&");
     $response1 = $http1->request()->getBody();
     $fHashPath = array();
     if (!preg_match('/fullHashPath\\=\\"(?P<fHashPath>[^\\"]+)\\"/', $response1, $fHashPath)) {
         X_Debug::e("Can't get fHashPath. Regex failed");
         throw new Exception("Can't get fHashPath");
     }
     $fHashPath = $fHashPath['fHashPath'];
     $fHashToken = array();
     if (!preg_match('/fullHashPathToken\\=\\"(?P<fHashToken>[^\\"]+)\\"/', $response1, $fHashToken)) {
         X_Debug::e("Can't get fHashToken. Regex failed");
         throw new Exception("Can't get fHashToken");
     }
     $fHashToken = $fHashToken['fHashToken'];
     // TODO check if correct
     $fHashToken = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, pack('H*', base64_decode(X_VlcShares_Plugins_Veoh::SKEY)), base64_decode($fHashToken), MCRYPT_MODE_CBC, pack('H*', base64_decode(X_VlcShares_Plugins_Veoh::IV)));
     //$fHashToken = trim($fHashToken);
     if (!preg_match('/(?P<fHashToken>[a-z0-9A-z]+)/', $fHashToken, $fHashToken)) {
         throw new Exception("Decryption failed");
     }
     $fHashToken = $fHashToken['fHashToken'];
     if ($fHashPath == null || $fHashToken == null) {
         throw new Exception("Hoster failure");
     }
     X_Debug::i("HashPath: {$fHashPath}, HashToken: {$fHashToken}");
     $http1->getCookieJar()->addCookie(new Zend_Http_Cookie("fbsetting_{$fbsetting}", "%7B%22connectState%22%3A2%2C%22oneLineStorySetting%22%3A3%2C%22shortStorySetting%22%3A3%2C%22inFacebook%22%3Afalse%7D", "http://www.veoh.com"));
     $http1->getCookieJar()->addCookie(new Zend_Http_Cookie("base_domain_{$fbsetting}", "veoh.com", "http://www.veoh.com"));
     $cookies = $http1->getCookieJar()->getAllCookies(Zend_Http_CookieJar::COOKIE_STRING_CONCAT);
     $opts = array('http' => array('header' => array("Referer: http://www.veoh.com/static/swf/qlipso/production/MediaPlayer.swf?version=2.0.0.011311.5", "x-flash-version: 10,1,53,64", "Cookie: {$cookies}"), 'content' => $fHashPath . $fHashToken));
     $context = stream_context_create($opts);
     X_Debug::i("Video url: {$fHashPath}{$fHashToken}");
     // this action is so special.... no layout or viewRenderer
     $this->_helper->viewRenderer->setNoRender();
     $this->_helper->layout->disableLayout();
     // if user abort request (vlc/wii stop playing), this process ends
     ignore_user_abort(false);
     // close and clean the output buffer, everything will be read and send to device
     ob_end_clean();
     header("Content-Type: video/flv");
     @readfile("{$fHashPath}{$fHashToken}", false, $context);
 }
 public function premiumAction()
 {
     // time to get params from get
     /* @var $request Zend_Controller_Request_Http */
     $request = $this->getRequest();
     if (!$this->plugin->config('premium.enabled', true) || $this->plugin->config('premium.username', '') == '' || $this->plugin->config('premium.password', '') == '') {
         throw new Exception(X_Env::_('p_megavideo_err_premiumdisabled'));
     }
     X_Debug::i('Premium account support enabled');
     $videoId = $request->getParam('v', false);
     // video file url
     $qualityType = $request->getParam('q', X_VlcShares_Plugins_Helper_Megavideo::QUALITY_NORMAL);
     // video file url
     if ($videoId === false) {
         // invalid request
         throw new Exception(X_Env::_('p_megavideo_err_invalidrequest'));
         return;
     }
     X_Debug::i("Video: {$videoId}");
     // i check for NOPREMIUM quality: i don't need authentication in NOPREMIUM mode
     if ($qualityType != X_VlcShares_Plugins_Helper_Megavideo::QUALITY_NOPREMIUM) {
         X_Debug::i('Premium features enabled');
         $http = new Zend_Http_Client('http://localhost/', array('maxredirects' => 10, 'timeout' => 10, 'keepalive' => true));
         $http->setHeaders(array('User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20101019 Firefox/4.0.1', 'Accept-Language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4'));
         $jarFile = APPLICATION_PATH . '/../data/megavideo/cookie.jar';
         $ns = new Zend_Session_Namespace(__CLASS__);
         if ($this->jar == null) {
             if (false && isset($ns->jar) && $ns->jar instanceof Zend_Http_CookieJar) {
                 $this->jar = $ns->jar;
                 X_Debug::i('Loading stored authentication in Session');
             } elseif (file_exists($jarFile)) {
                 $this->jar = new Zend_Http_CookieJar();
                 $cookies = unserialize(file_get_contents($jarFile));
                 foreach ($cookies as $c) {
                     $_c = new Zend_Http_Cookie($c['name'], $c['value'], $c['domain'], $c['exp'], $c['path']);
                     $this->jar->addCookie($_c);
                 }
                 X_Debug::i('Loading stored authentication in File');
             } else {
                 $this->jar = new Zend_Http_CookieJar();
                 //$this->jar->addCookie(new Zend_Http_Cookie('l', 'it', 'http://www.megavideo.com'));
             }
         }
         $http->setCookieJar($this->jar);
         $userId = false;
         if ($http->getCookieJar() != null) {
             //X_Debug::i(var_export($http->getCookieJar()->getAllCookies(Zend_Http_CookieJar::COOKIE_STRING_ARRAY), true));
             //$userId = $http->getCookieJar()->getCookie($cookieUri, 'user', Zend_Http_CookieJar::COOKIE_STRING_ARRAY);
             $userId = $this->_getMatchCookieValue('user', 'http://www.megavideo.com/', $http->getCookieJar());
             X_Debug::i("First check for userId: {$userId}");
         }
         if ($userId == false) {
             X_Debug::i("No valid userId found in Cookies");
             $this->_authenticateHttp($http, $this->plugin->config('premium.username', ''), $this->plugin->config('premium.password', ''));
             //X_Debug::i(var_export($http->getCookieJar()->getAllCookies(Zend_Http_CookieJar::COOKIE_STRING_ARRAY), true));
             //$userId = $http->getCookieJar()->getCookie($cookieUri, 'user', Zend_Http_CookieJar::COOKIE_STRING_ARRAY);
             $userId = $this->_getMatchCookieValue('user', 'http://www.megavideo.com/', $http->getCookieJar());
             if ($userId == false) {
                 X_Debug::f("Invalid account given");
                 throw new Exception(X_Env::_('p_megavideo_invalidaccount'));
             }
         }
         X_Debug::i("UserId in cookies: {$userId}");
         $uri = "http://www.megavideo.com/xml/player_login.php?u={$userId}&v={$videoId}";
         $http->setUri($uri);
         $response = $http->request();
         $htmlString = $response->getBody();
         if (strpos($htmlString, 'type="premium"') === false) {
             X_Debug::w("Account isn't premium or not authenticated");
             X_Debug::i(var_export($htmlString));
             // invalid cookies
             // need to re-authenticate
             $this->_authenticateHttp($http, $this->plugin->config('premium.username', ''), $this->plugin->config('premium.password', ''));
             $response = $http->request();
             $htmlString = $response->getBody();
             if (strpos($htmlString, 'type="premium"') === false) {
                 X_Debug::f("Invalid premium account");
                 X_Debug::i(var_export($htmlString));
                 throw new Exception(X_Env::_('p_megavideo_invalidpremiumaccount'));
             }
         }
         // time to store the cookie
         $this->jar = $http->getCookieJar();
         // store the cookiejar
         $cks = $this->jar->getAllCookies(Zend_Http_CookieJar::COOKIE_OBJECT);
         foreach ($cks as $i => $c) {
             /* @var $c Zend_Http_Cookie */
             $cks[$i] = array('domain' => $c->getDomain(), 'exp' => $c->getExpiryTime(), 'name' => $c->getName(), 'path' => $c->getPath(), 'value' => $c->getValue());
         }
         if (@file_put_contents($jarFile, serialize($cks), LOCK_EX) === false) {
             X_Debug::e('Error while writing jar file. Check permissions. Everything will work, but much more slower');
         }
         // in htmlString we should have an xml like this one:
         /*
         	<?xml version="1.0" encoding="UTF-8"?> 
         	<user type="premium" user="******" downloadurl="http%3A%2F%2Fwww444.megavideo.com%2Ffiles%2Fd9ab7ef6313e55ab26240f2aac9dd74f%2FAmerican.Dad.-.1AJN08.-.Tutto.su.Steve.%28All.About.Steve%29.-.DVDMuX.BY.Pi3TRo.%26amp%3B.yodonvito.avi" />		
         */
         // i create context here so i can use the same context
         // for normal link quality video
         $cookies = $http->getCookieJar()->getAllCookies(Zend_Http_CookieJar::COOKIE_STRING_CONCAT);
         $opts = array('http' => array('header' => array("Cookie: {$cookies}")));
     } else {
         X_Debug::i('Premium features NOT enabled');
         // if quality == NOPREMIUM i don't need authentication or context
         // no context needed
         $opts = array('http' => array());
     }
     $context = stream_context_create($opts);
     $videoUrl = null;
     switch ($qualityType) {
         case X_VlcShares_Plugins_Helper_Megavideo::QUALITY_NOPREMIUM:
             X_Debug::w("Premium proxy feature, but NOPREMIUM quality? O_o");
             $megavideo = new X_Megavideo($videoId);
             $videoUrl = $megavideo->get('URL');
             break;
         case X_VlcShares_Plugins_Helper_Megavideo::QUALITY_FULL:
             X_Debug::i("FULL quality selected");
             if (preg_match('/ downloadurl=\\"([^\\"]*)\\" /', $htmlString, $match)) {
                 // match[1] is the video link
                 $videoUrl = urldecode(@$match[1]);
                 // i break the case because 1 have a match
                 break;
             } else {
                 // no videoURL, fallback to normal
                 X_Debug::e('No download url, fallback to NORMAL quality');
                 //X_Debug::i($htmlString);
             }
         case X_VlcShares_Plugins_Helper_Megavideo::QUALITY_NORMAL:
         default:
             $megavideo = new X_Megavideo($videoId, $context, $userId);
             $videoUrl = $megavideo->get('URL');
     }
     X_Debug::i("VideoURL: {$videoUrl}");
     // this action is so special.... no layout or viewRenderer
     $this->_helper->viewRenderer->setNoRender();
     $this->_helper->layout->disableLayout();
     // if user abort request (vlc/wii stop playing), this process ends
     ignore_user_abort(false);
     // close and clean the output buffer, everything will be read and send to device
     ob_end_clean();
     header("Content-Type: video/mp4");
     // readfile open a file and send it directly to output buffer
     readfile($videoUrl, false, $context);
 }
 private function _loadPage($uri, $forceAuth = false)
 {
     X_Debug::i("Loading page {$uri}");
     $http = new Zend_Http_Client($uri, array('maxredirects' => $this->config('request.maxredirects', 10), 'timeout' => $this->config('request.timeout', 10), 'keepalive' => true));
     $http->setHeaders(array('User-Agent: vlc-shares/' . X_VlcShares::VERSION . ' animeftw/' . self::VERSION));
     $jarFile = APPLICATION_PATH . '/../data/animeftw/cookie.jar';
     $ns = new Zend_Session_Namespace(__CLASS__);
     if ($this->jar == null) {
         if (false && isset($ns->jar) && $ns->jar instanceof Zend_Http_CookieJar) {
             $this->jar = $ns->jar;
             X_Debug::i('Loading stored authentication in Session');
         } elseif (file_exists($jarFile)) {
             if (filectime($jarFile) < time() - 24 * 60 * 60) {
                 X_Debug::i('Jarfile is old. Refreshing it');
                 @unlink($jarFile);
             } else {
                 $this->jar = new Zend_Http_CookieJar();
                 $cookies = unserialize(file_get_contents($jarFile));
                 foreach ($cookies as $c) {
                     $_c = new Zend_Http_Cookie($c['name'], $c['value'], $c['domain'], $c['exp'], $c['path']);
                     $this->jar->addCookie($_c);
                 }
                 X_Debug::i('Loading stored authentication in File');
             }
         }
     }
     $http->setCookieJar($this->jar);
     $response = $http->request();
     $htmlString = $response->getBody();
     if ($forceAuth && $this->config('auth.username', '') != '' && $this->config('auth.password', '') != '' && !$this->_isAuthenticated($htmlString)) {
         X_Debug::i("Autentication needed");
         $http->setCookieJar(true);
         $pageLogin = $this->config('login.url', self::PAGE_LOGIN);
         $http->setUri($pageLogin);
         $http->setParameterPost(array('username' => (string) $this->config('auth.username', ''), 'password' => (string) $this->config('auth.password', ''), '_submit_check' => '1', 'submit' => 'Sign In', 'remember' => 'on', 'last_page' => 'https://www.animeftw.tv'));
         // TODO remove this
         if (APPLICATION_ENV == 'development') {
             $response = $http->request(Zend_Http_Client::POST);
             if (!$this->_isAuthenticated($response->getBody())) {
                 X_Debug::w('Wrong credentials or authentication procedure doesn\'t work');
             } else {
                 X_Debug::w('Client authenticated. Full access granted');
             }
             //X_Debug::i($response->getBody());
         } else {
             $http->request(Zend_Http_Client::POST);
         }
         $this->jar = $http->getCookieJar();
         // store the cookiejar
         $cks = $this->jar->getAllCookies(Zend_Http_CookieJar::COOKIE_OBJECT);
         foreach ($cks as $i => $c) {
             /* @var $c Zend_Http_Cookie */
             $cks[$i] = array('domain' => $c->getDomain(), 'exp' => $c->getExpiryTime(), 'name' => $c->getName(), 'path' => $c->getPath(), 'value' => $c->getValue());
         }
         if (@file_put_contents($jarFile, serialize($cks), LOCK_EX) === false) {
             X_Debug::e('Error while writing jar file. Check permissions. Everything will work, but much more slower');
         }
         //$ns->jar = $this->jar;
         // time to do a new old request
         //$http->resetParameters();
         $http->setUri($uri);
         $response = $http->request(Zend_Http_Client::GET);
         $htmlString = $response->getBody();
     }
     return $htmlString;
 }
 private function _loadPage($uri, $forceAuth = false)
 {
     X_Debug::i("Loading page {$uri}");
     $http = new Zend_Http_Client($uri, array('maxredirects' => $this->config('request.maxredirects', 10), 'timeout' => $this->config('request.timeout', 10), 'keepalive' => true));
     $http->setHeaders(array($this->config('hide.useragent', false) ? 'User-Agent: vlc-shares/' . X_VlcShares::VERSION : 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20101019 Firefox/4.0.1'));
     $jarFile = APPLICATION_PATH . '/../data/animedb/cookie.jar';
     $ns = new Zend_Session_Namespace(__CLASS__);
     if ($this->jar == null) {
         if (false && isset($ns->jar) && $ns->jar instanceof Zend_Http_CookieJar) {
             $this->jar = $ns->jar;
             X_Debug::i('Loading stored authentication in Session');
         } elseif (file_exists($jarFile)) {
             $this->jar = new Zend_Http_CookieJar();
             $cookies = unserialize(file_get_contents($jarFile));
             foreach ($cookies as $c) {
                 $_c = new Zend_Http_Cookie($c['name'], $c['value'], $c['domain'], $c['exp'], $c['path']);
                 $this->jar->addCookie($_c);
             }
             X_Debug::i('Loading stored authentication in File');
         }
     }
     $http->setCookieJar($this->jar);
     //time to make the request
     $response = $http->request();
     $htmlString = $response->getBody();
     //X_Debug::i($htmlString);
     // before return the page, I have to check if i'm authenticated
     // TODO REMOVE AUTH
     if ($forceAuth && $this->config('auth.username', '') != '' && $this->config('auth.password', '') != '' && !$this->_isAuthenticated($htmlString)) {
         X_Debug::i("Autentication needed");
         $token = $this->_getSecurityToken($htmlString);
         //$sValue = $this->_getSValue($htmlString);
         // do new login
         $http->setCookieJar(true);
         $pageLogin = $this->config('login.url', 'http://animedb.tv/forum/login.php?do=login');
         $http->setUri($pageLogin);
         $http->setParameterPost(array('vb_login_username' => (string) $this->config('auth.username', ''), 'vb_login_password' => (string) $this->config('auth.password', ''), 'vb_login_password_hint' => 'Password', 'vb_login_md5password' => '', 'vb_login_md5password_utf' => '', 'securitytoken' => $token, 'do' => 'login', 'cookieuser' => 1, 's' => '', 'x' => 13, 'y' => 30));
         // TODO remove this
         if (APPLICATION_ENV == 'development') {
             $response = $http->request(Zend_Http_Client::POST);
             if (!$this->_isAuthenticated($response->getBody(), '<p class="blockrow restore">Grazie per esserti collegato,')) {
                 X_Debug::w('Wrong credentials or authentication procedure doesn\'t work');
             } else {
                 X_Debug::w('Client authenticated. Full access granted');
             }
             //X_Debug::i($response->getBody());
         } else {
             $http->request(Zend_Http_Client::POST);
         }
         $this->jar = $http->getCookieJar();
         // store the cookiejar
         $cks = $this->jar->getAllCookies(Zend_Http_CookieJar::COOKIE_OBJECT);
         foreach ($cks as $i => $c) {
             /* @var $c Zend_Http_Cookie */
             $cks[$i] = array('domain' => $c->getDomain(), 'exp' => $c->getExpiryTime(), 'name' => $c->getName(), 'path' => $c->getPath(), 'value' => $c->getValue());
         }
         if (@file_put_contents($jarFile, serialize($cks), LOCK_EX) === false) {
             X_Debug::e('Error while writing jar file. Check permissions. Everything will work, but much more slower');
         }
         //$ns->jar = $this->jar;
         // time to do a new old request
         //$http->resetParameters();
         $http->setUri($uri);
         $response = $http->request(Zend_Http_Client::GET);
         $htmlString = $response->getBody();
         //X_Debug::i($htmlString);
     }
     return $htmlString;
 }
 private function _loadPage($uri)
 {
     X_Debug::i("Loading page {$uri}");
     $http = new Zend_Http_Client($uri, array('maxredirects' => $this->config('request.maxredirects', 10), 'timeout' => $this->config('request.timeout', 10), 'keepalive' => true));
     $http->setHeaders(array($this->config('hide.useragent', false) ? 'User-Agent: vlc-shares/' . X_VlcShares::VERSION : 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20101019 Firefox/4.0.1', 'X-Requested-With: XMLHttpRequest', 'Referer: http://www.opfitalia.net/mediacenter/index.php?page=show_streaming', 'Content-Type: application/x-www-form-urlencoded'));
     $jarFile = APPLICATION_PATH . '/../data/opfitalia/cookie.jar';
     //$ns = new Zend_Session_Namespace(__CLASS__);
     if ($this->jar == null) {
         // Session disabled, i'm not sure wiimc can handle sessions
         /*if ( false && isset($ns->jar) && $ns->jar instanceof Zend_Http_CookieJar ) {
         			$this->jar = $ns->jar;
         			X_Debug::i('Loading stored authentication in Session');
         		} else*/
         if (file_exists($jarFile)) {
             $this->jar = new Zend_Http_CookieJar();
             $cookies = unserialize(file_get_contents($jarFile));
             foreach ($cookies as $c) {
                 $_c = new Zend_Http_Cookie($c['name'], $c['value'], $c['domain'], $c['exp'], $c['path']);
                 $this->jar->addCookie($_c);
             }
             X_Debug::i('Loading stored authentication in File');
         } else {
             X_Debug::i('No cookie file');
         }
     }
     $http->setCookieJar($this->jar);
     //time to make the request
     $response = $http->request();
     $jsonString = $response->getBody();
     try {
         $decoded = Zend_Json::decode($jsonString, Zend_Json::TYPE_OBJECT);
         return $decoded;
     } catch (Exception $e) {
         // if the request doesn't return JSON code,
         // maybe user isn't authenticated
         X_Debug::i('User not authenticated');
         if ($this->config('auth.username', '') != '' && $this->config('auth.password', '') != '') {
             X_Debug::i("Autentication needed");
             // do new login
             $http->setCookieJar(true);
             $pageLogin = $this->config('login.url', 'http://www.opfitalia.net/mediacenter/index.php?page=login');
             $http->setUri($pageLogin);
             // TODO remove this
             $http->setParameterPost(array('username' => (string) $this->config('auth.username', ''), 'password' => (string) hash('sha256', $this->config('auth.password', ''), false), 'redirectUrl' => '', 'rememberMe' => '1'));
             // TODO remove this
             if (APPLICATION_ENV == 'development') {
                 $response = $http->request(Zend_Http_Client::POST);
                 if (!$this->_isAuthenticated($response->getBody(), 'correttamente')) {
                     X_Debug::w('Wrong credentials or authentication procedure doesn\'t work');
                 } else {
                     X_Debug::w('Client authenticated. Full access granted');
                 }
                 //X_Debug::i($response->getBody());
             } else {
                 $http->request(Zend_Http_Client::POST);
             }
             $this->jar = $http->getCookieJar();
             // store the cookiejar
             $cks = $this->jar->getAllCookies(Zend_Http_CookieJar::COOKIE_OBJECT);
             foreach ($cks as $i => $c) {
                 /* @var $c Zend_Http_Cookie */
                 $cks[$i] = array('domain' => $c->getDomain(), 'exp' => $c->getExpiryTime(), 'name' => $c->getName(), 'path' => $c->getPath(), 'value' => $c->getValue());
             }
             if (@file_put_contents($jarFile, serialize($cks), LOCK_EX) === false) {
                 X_Debug::e('Error while writing jar file. Check permissions. Everything will work, but much more slower');
             }
             //$ns->jar = $this->jar;
             $http->setUri($uri);
             $http->resetParameters(false);
             $response = $http->request(Zend_Http_Client::GET);
             $jsonString = $response->getBody();
             try {
                 $decoded = Zend_Json::decode($jsonString, Zend_Json::TYPE_OBJECT);
             } catch (Exception $e) {
                 // epic fail
                 // Useless authentication
                 //X_Debug::i('Epic fail page: '.print_r($jsonString, true));
                 throw new Exception('Authetication failed');
             }
         } else {
             throw new Exception('Username/Password not found');
         }
     }
     return $decoded;
 }
Exemple #14
0
 public function isAuthenticated()
 {
     return $this->request->getCookieJar()->getCookie('http://' . $this->config->getHost() . ':' . $this->config->getPort(), 'AuthSession') !== false;
 }