X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOStatus%2Factions%2Fpushcallback.php;h=9b83d43c4ddd7528fc41aedc5c728895c3b4a65b;hb=69b13cb279d7b60cb3a7beb9ad39cfe3a3b7745b;hp=35c92c7323ad237af34f1c9fae7730ad9e04c617;hpb=273c0e036347891570a02502715345f5bbb7b143;p=quix0rs-gnu-social.git diff --git a/plugins/OStatus/actions/pushcallback.php b/plugins/OStatus/actions/pushcallback.php index 35c92c7323..9b83d43c4d 100644 --- a/plugins/OStatus/actions/pushcallback.php +++ b/plugins/OStatus/actions/pushcallback.php @@ -22,8 +22,9 @@ * @maintainer Brion Vibber */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - +if (!defined('STATUSNET')) { + exit(1); +} class PushCallbackAction extends Action { @@ -37,7 +38,7 @@ class PushCallbackAction extends Action $this->handleGet(); } } - + /** * Handler for POST content updates from the hub */ @@ -46,12 +47,13 @@ class PushCallbackAction extends Action $feedid = $this->arg('feed'); common_log(LOG_INFO, "POST for feed id $feedid"); if (!$feedid) { - throw new ServerException('Empty or invalid feed id', 400); + throw new ServerException(_m('Empty or invalid feed id.'), 400); } $feedsub = FeedSub::staticGet('id', $feedid); if (!$feedsub) { - throw new ServerException('Unknown PuSH feed id ' . $feedid, 400); + // TRANS: Server exception. %s is a feed ID. + throw new ServerException(sprintf(_m('Unknown PuSH feed id %s'),$feedid), 400); } $hmac = ''; @@ -68,11 +70,11 @@ class PushCallbackAction extends Action 'post' => $post, 'hmac' => $hmac); $qm = QueueManager::get(); - $qm->enqueue($data, 'pushinput'); + $qm->enqueue($data, 'pushin'); } - + /** - * Handler for GET verification requests from the hub + * Handler for GET verification requests from the hub. */ function handleGet() { @@ -81,31 +83,43 @@ class PushCallbackAction extends Action $challenge = $this->arg('hub_challenge'); $lease_seconds = $this->arg('hub_lease_seconds'); $verify_token = $this->arg('hub_verify_token'); - + common_log(LOG_INFO, __METHOD__ . ": sub verification mode: $mode topic: $topic challenge: $challenge lease_seconds: $lease_seconds verify_token: $verify_token"); + if ($mode != 'subscribe' && $mode != 'unsubscribe') { - common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with mode \"$mode\""); - throw new ServerException("Bogus hub callback: bad mode", 404); + // TRANS: Client exception. %s is an invalid value for hub.mode. + throw new ClientException(sprintf(_m('Bad hub.mode "$s".',$mode)), 404); } - + $feedsub = FeedSub::staticGet('uri', $topic); if (!$feedsub) { - common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback for unknown feed $topic"); - throw new ServerException("Bogus hub callback: unknown feed", 404); + // TRANS: Client exception. %s is an invalid feed name. + throw new ClientException(sprintf(_m('Bad hub.topic feed "%s".'),$topic), 404); } if ($feedsub->verify_token !== $verify_token) { - common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with bad token \"$verify_token\" for feed $topic"); - throw new ServerException("Bogus hub callback: bad token", 404); + // TRANS: Client exception. %1$s the invalid token, %2$s is the topic for which the invalid token was given. + throw new ClientException(sprintf(_m('Bad hub.verify_token %1$s for %2$s.'),$token,$topic), 404); } - if ($mode != $feedsub->sub_state) { - common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with bad mode \"$mode\" for feed $topic in state \"{$feedsub->sub_state}\""); - throw new ServerException("Bogus hub callback: mode doesn't match subscription state.", 404); + if ($mode == 'subscribe') { + // We may get re-sub requests legitimately. + if ($feedsub->sub_state != 'subscribe' && $feedsub->sub_state != 'active') { + // TRANS: Client exception. %s is an invalid topic. + throw new ClientException(sprintf(_m('Unexpected subscribe request for %s.'),$topic), 404); + } + } else { + if ($feedsub->sub_state != 'unsubscribe') { + // TRANS: Client exception. %s is an invalid topic. + throw new ClientException(sprintf(_m('Unexpected unsubscribe request for %s.'),$topic), 404); + } } - // OK! if ($mode == 'subscribe') { - common_log(LOG_INFO, __METHOD__ . ': sub confirmed'); + if ($feedsub->sub_state == 'active') { + common_log(LOG_INFO, __METHOD__ . ': sub update confirmed'); + } else { + common_log(LOG_INFO, __METHOD__ . ': sub confirmed'); + } $feedsub->confirmSubscribe($lease_seconds); } else { common_log(LOG_INFO, __METHOD__ . ": unsub confirmed; deleting sub record for $topic");