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/RSS-Bridge/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)){ // 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'); // 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; } // Data retrieval $bridge = Bridge::create($bridge); $cache = Cache::create('FileCache'); $bridge->setCache($cache); $noproxy = filter_input(INPUT_GET, '_noproxy', FILTER_VALIDATE_BOOLEAN); if(defined('PROXY_URL') && PROXY_BYBRIDGE && $noproxy){ define('NOPROXY',true); } $params = $_GET; unset($params['action']); unset($params['bridge']); unset($params['format']); unset($params['_noproxy']); $bridge->setDatas($params); // Data transformation try { $format = Format::create($format); $format ->setItems($bridge->getItems()) ->setExtraInfos(array( 'name' => $bridge->getName(), 'uri' => $bridge->getURI(), )) ->display(); } catch(Exception $e){ echo "The bridge 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(); ?>