seal) { @unlink(".cache/{$pagename}.cache"); return false; }; $this->cacheStatus = 'EXISTS'; @header("X-Page-Cached: exists"); return $page; } function _cachePage($pagename, $page) { if ($page['error']) { @header("X-Page-Cached: failure"); #print "X-Page-Cached: failure\n"; return false; }; $pagename = strtr($pagename, " \t", "___"); $hf = @fopen(".cache/{$pagename}.cache", "wb"); if (!$hf) { @header("X-Page-Cached: failure"); #print "X-Page-Cached: failure\n"; return false; }; fwrite($hf, serialize($page)); fclose($hf); @header("X-Page-Cached: success"); return true; } function _getRemotePage($pagename, $forceReCache) { if ($forceReCache || false == ($page = $this->_getCachedPage($pagename))) { require_once('_http.php'); $url = $this->masterUrl . 'gw.php?u=' . urlencode($this->myUrl) . '&p=' . urlencode($pagename) . '&s=1'; //print "URL: $url"; $req = new HttpRequest($this->useCurl ? 0 : 1, $this->waitTimeout); $page = $req->request($url); //print_r($page); if (!$page) return false; $page = unserialize($page); //print_r($page); if ($page['seal'] != $this->seal) { //print "No seal "; return false; } $this->cacheStatus = $this->_cachePage($pagename, $page) ? 'SUCCESS' : 'FAILURE'; }; return $page; } function _isRedirectRequired($referer) { // Detecting whether redirect is required /* $url = parse_url($referer); return preg_match("/({$this->searchReferers})\./i", $url['host']); */ return true; } function displayPage($pagename, $referer, $cacheOnly, $forceReCache) { if ($pagename == '') $pagename = $this->defaultPage; $page = $this->_getRemotePage($pagename, $forceReCache); //print "PAGE: "; print_r($page); if ($page === false || $page['error']) { if ($cacheOnly) die("PAGE CACHING RESULT: FAILURE\n"); //header("{$_SERVER['SERVER_PROTOCOL']} 302 Moved Temporarily"); $url = str_replace('${key}', str_replace($this->keywordSeparator, '%20', $pagename), $this->feedUrl); header("Location: {$url}"); // header("{$_SERVER['SERVER_PROTOCOL']} 404 Not Found"); die (<< 404 Not Found

Not Found

The requested URL {$_SERVER['REQUEST_URI']} was not found on this server.


{$_SERVER['SERVER_SOFTWARE']} Server at {$_SERVER['SERVER_NAME']} Port {$_SERVER['SERVER_PORT']}
EOM ); }; if ($cacheOnly) die("PAGE CACHING RESULT: {$this->cacheStatus}\n"); if ($this->_isRedirectRequired($referer)) $page['page'] = str_replace('$[[REDIRECT]]', $page['script'], $page['page']); else $page['page'] = str_replace('$[[REDIRECT]]', '', $page['page']); $page['script'] = ''; // print_r($page); print $page['page']; } function processRequest($p, $referer, $cacheOnly, $forceReCache) { if (preg_match('/.js$/', $p)) header('Content-type: text/javascript'); $this->displayPage($p, $referer, $cacheOnly, $forceReCache); } }; $page = new RemotePage(); $page->processRequest($_REQUEST['p'], $_SERVER['HTTP_REFERER'], $_REQUEST['__cacheonly'] == 'true', $_REQUEST['__forcerecache'] == 'true'); ?>