public function doGet() { error_log("Running the ProxyServlet."); global $config; $this->noHeaders = true; $context = new GadgetContext('GADGET'); // those should be doable in one statement, but php seems to still evauluate the second ? and : pair, // so throws an error about undefined index on post, even though it found it in get ... odd bug $url = isset($_GET['url']) ? $_GET['url'] : false; if (!$url) { $url = isset($_POST['url']) ? $_POST['url'] : false; } $url = urldecode($url); $method = isset($_GET['httpMethod']) ? $_GET['httpMethod'] : false; if (!$method) { $method = isset($_POST['httpMethod']) ? $_POST['httpMethod'] : 'GET'; } if (!$url) { header("HTTP/1.0 400 Bad Request", true); echo "<html><body><h1>400 - Missing url parameter</h1></body></html>"; } $gadgetSigner = new $config['gadget_signer'](); $proxyHandler = new ProxyHandler($context); if (!empty($_GET['output']) && $_GET['output'] == 'js') { $proxyHandler->fetchJson($url, $gadgetSigner, $method); } else { $proxyHandler->fetch($url, $gadgetSigner, $method); } }
public function doGet() { try { $this->noHeaders = true; $context = new GadgetContext('GADGET'); // those should be doable in one statement, but php seems to still evauluate the second ? and : pair, // so throws an error about undefined index on post, even though it found it in get ... odd bug $url = isset($_GET['url']) ? $_GET['url'] : false; if (!$url) { $url = isset($_POST['url']) ? $_POST['url'] : false; } // $url = urldecode($url); $method = isset($_GET['httpMethod']) ? $_GET['httpMethod'] : false; if (!$method) { $method = isset($_POST['httpMethod']) ? $_POST['httpMethod'] : 'GET'; } if (!$url) { header("HTTP/1.0 400 Bad Request", true); echo "<html><body><h1>400 - Missing url parameter</h1></body></html>"; } $signingFetcherFactory = $gadgetSigner = false; if (!empty($_GET['authz']) || !empty($_POST['authz'])) { $gadgetSigner = Config::get('security_token_signer'); $gadgetSigner = new $gadgetSigner(); $signingFetcherFactory = new SigningFetcherFactory(Config::get("private_key_file")); } $proxyHandler = new ProxyHandler($context, $signingFetcherFactory); if (!empty($_GET['output']) && $_GET['output'] == 'js') { $proxyHandler->fetchJson($url, $gadgetSigner, $method); } else { $proxyHandler->fetch($url, $gadgetSigner, $method); } } catch (Exception $e) { // catch all exceptions and give a 500 server error header("HTTP/1.0 500 Internal Server Error"); echo "<h1>Internal server error</h1><p>" . $e->getMessage() . "</p>"; } }