From 6b28fbe7b600b56ab06b373173d9f04fae9333ce Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Sat, 5 Dec 2009 07:17:51 +0000 Subject: Make dummy aggregator handle RSSCloud challenge/response with domain parameter --- plugins/RSSCloud/LoggingAggregator.php | 53 +++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 13 deletions(-) (limited to 'plugins/RSSCloud') diff --git a/plugins/RSSCloud/LoggingAggregator.php b/plugins/RSSCloud/LoggingAggregator.php index 2573d9343..cbdefc36b 100644 --- a/plugins/RSSCloud/LoggingAggregator.php +++ b/plugins/RSSCloud/LoggingAggregator.php @@ -36,6 +36,9 @@ if (!defined('STATUSNET')) { class LoggingAggregatorAction extends Action { + var $challenge = null; + var $url = null; + /** * Initialization. * @@ -46,6 +49,13 @@ class LoggingAggregatorAction extends Action function prepare($args) { parent::prepare($args); + + $this->url = $this->arg('url'); + $this->challenge = $this->arg('challenge'); + + common_debug("args = " . var_export($this->args, true)); + common_debug('url = ' . $this->url . ' challenge = ' . $this->challenge); + return true; } @@ -53,33 +63,50 @@ class LoggingAggregatorAction extends Action { parent::handle($args); - if ($_SERVER['REQUEST_METHOD'] != 'POST') { - $this->showError('This resource requires an HTTP POST.'); + if (empty($this->url)) { + $this->showError('Hey, you have to provide a url parameter.'); + return; } - $this->url = $this->arg('url'); + if (!empty($this->challenge)) { + + // must be a GET + + if ($_SERVER['REQUEST_METHOD'] != 'GET') { + $this->showError('This resource requires an HTTP GET.'); + return; + } + + header('Content-Type: text/xml'); + echo "\n"; + + } else { + + // must be a POST + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + $this->showError('This resource requires an HTTP POST.'); + return; + } + + header('Content-Type: text/xml'); + echo '' . "\n"; - if (empty($this->url)) { - $this->showError('Hey, you have to provide a url parameter.'); } - $this->ip = $_SERVER['REMOTE_ADDR']; + $this->ip = $_SERVER['REMOTE_ADDR']; common_log(LOG_INFO, 'RSSCloud Logging Aggregator - ' . $this->ip . ' claims the feed at ' . $this->url . ' has been updated.'); - - header('Content-Type: text/xml'); - echo '' . "\n"; - - } + } function showError($msg) { - header('HTTP/1.1 403 Forbidden'); + header('HTTP/1.1 400 Bad Request'); header('Content-Type: text/xml'); echo "\n"; echo "\n"; - exit(); } } \ No newline at end of file -- cgit v1.2.3-54-g00ecf