0) { $debug_enabled = false; foreach (explode("\n", $debug_whitelist) as $allowed_ip) { if (trim($allowed_ip) === $_SERVER['REMOTE_ADDR']) { $debug_enabled = true; break; } } } if ($debug_enabled) { ini_set('display_errors', '1'); error_reporting(E_ALL); define('DEBUG', 'true'); } } require_once __DIR__ . '/lib/RssBridge.php'; // extensions check if (!extension_loaded('openssl')) die('"openssl" extension not loaded. Please check "php.ini"'); // FIXME : beta test UA spoofing, please report any blacklisting by PHP-fopen-unfriendly websites ini_set('user_agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20121202 Firefox/30.0 (rss-bridge/0.1; +https://github.com/sebsauvage/rss-bridge)'); // default whitelist $whitelist_file = './whitelist.txt'; $whitelist_default = array( "BandcampBridge", "CryptomeBridge", "DansTonChatBridge", "DuckDuckGoBridge", "FacebookBridge", "FlickrExploreBridge", "GooglePlusPostBridge", "GoogleSearchBridge", "IdenticaBridge", "InstagramBridge", "OpenClassroomsBridge", "PinterestBridge", "ScmbBridge", "TwitterBridge", "WikipediaBridge", "YoutubeBridge"); if (!file_exists($whitelist_file)) { $whitelist_selection = $whitelist_default; $whitelist_write = implode("\n", $whitelist_default); file_put_contents($whitelist_file, $whitelist_write); } else { $whitelist_selection = explode("\n", file_get_contents($whitelist_file)); } Cache::purge(); try{ Bridge::setDir(__DIR__ . '/bridges/'); Format::setDir(__DIR__ . '/formats/'); Cache::setDir(__DIR__ . '/caches/'); $action=filter_input(INPUT_GET,'action'); $bridge=filter_input(INPUT_GET,'bridge'); if($action === 'display' && !empty($bridge)){ unset($_REQUEST['action']); unset($_REQUEST['bridge']); // DEPRECATED: 'nameBridge' scheme is replaced by 'name' in bridge parameter values // this is to keep compatibility until futher complete removal if(($pos=strpos($bridge,'Bridge'))===(strlen($bridge)-strlen('Bridge'))){ $bridge=substr($bridge,0,$pos); } $format = filter_input(INPUT_GET,'format'); unset($_REQUEST['format']); // DEPRECATED: 'nameFormat' scheme is replaced by 'name' in format parameter values // this is to keep compatibility until futher complete removal if(($pos=strpos($format,'Format'))===(strlen($format)-strlen('Format'))){ $format=substr($format,0,$pos); } // whitelist control if(!Bridge::isWhitelisted($whitelist_selection, $bridge)) { throw new \HttpException('This bridge is not whitelisted', 401); die; } $cache = Cache::create('FileCache'); // Data retrieval $bridge = Bridge::create($bridge); if(!defined("DEBUG")) { $bridge->setCache($cache); } $noproxy=filter_input(INPUT_GET,'_noproxy',FILTER_VALIDATE_BOOLEAN); if(defined('PROXY_URL') && PROXY_BYBRIDGE && $noproxy){ $bridge->useProxy=false; } $bridge->loadMetadatas(); $bridge->setDatas($_REQUEST); // Data transformation try { $format = Format::create($format); $format ->setDatas($bridge->getDatas()) ->setExtraInfos(array( 'name' => $bridge->getName(), 'uri' => $bridge->getURI(), )) ->display(); } catch(Exception $e) { echo "The brige has crashed. You should report this to the bridges maintainer"; } die; } } catch(HttpException $e){ header('HTTP/1.1 ' . $e->getCode() . ' ' . Http::getMessageForCode($e->getCode())); header('Content-Type: text/plain'); die($e->getMessage()); } catch(\Exception $e){ die($e->getMessage()); } $formats = Format::searchInformation(); ?>