Merge pull request #2174 from annando/1512-ostatus-subscribe

Bugfix: OStatus subscription worked by random until now ...
This commit is contained in:
Tobias Diekershoff 2015-12-13 08:30:43 +01:00
commit 224ff8c132

View file

@ -39,7 +39,7 @@ function pubsubhubbub_init(&$a) {
http_status_exit(404); http_status_exit(404);
} }
logger("pubsubhubbub: $hub_mode request from " . logger("pubsubhubbub: $hub_mode request from " .
$_SERVER['REMOTE_ADDR']); $_SERVER['REMOTE_ADDR']);
// get the nick name from the topic, a bit hacky but needed // get the nick name from the topic, a bit hacky but needed
@ -52,9 +52,9 @@ function pubsubhubbub_init(&$a) {
// fetch user from database given the nickname // fetch user from database given the nickname
$r = q("SELECT * FROM `user` WHERE `nickname` = '%s'" . $r = q("SELECT * FROM `user` WHERE `nickname` = '%s'" .
" AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1", " AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1",
dbesc($nick)); dbesc($nick));
if(!count($r)) { if(!count($r)) {
logger('pubsubhubbub: local account not found: ' . $nick); logger('pubsubhubbub: local account not found: ' . $nick);
http_status_exit(404); http_status_exit(404);
@ -70,8 +70,8 @@ function pubsubhubbub_init(&$a) {
} }
// get corresponding row from contact table // get corresponding row from contact table
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0" . $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND NOT `blocked`".
" AND `pending` = 0 LIMIT 1", " AND NOT `pending` AND `self` LIMIT 1",
intval($owner['uid'])); intval($owner['uid']));
if(!count($r)) { if(!count($r)) {
logger('pubsubhubbub: contact not found.'); logger('pubsubhubbub: contact not found.');
@ -82,20 +82,20 @@ function pubsubhubbub_init(&$a) {
// sanity check that topic URLs are the same // sanity check that topic URLs are the same
if(!link_compare($hub_topic, $contact['poll'])) { if(!link_compare($hub_topic, $contact['poll'])) {
logger('pubsubhubbub: hub topic ' . $hub_topic . ' != ' . logger('pubsubhubbub: hub topic ' . $hub_topic . ' != ' .
$contact['poll']); $contact['poll']);
http_status_exit(404); http_status_exit(404);
} }
// do subscriber verification according to the PuSH protocol // do subscriber verification according to the PuSH protocol
$hub_challenge = random_string(40); $hub_challenge = random_string(40);
$params = 'hub.mode=' . $params = 'hub.mode=' .
($subscribe == 1 ? 'subscribe' : 'unsubscribe') . ($subscribe == 1 ? 'subscribe' : 'unsubscribe') .
'&hub.topic=' . urlencode($hub_topic) . '&hub.topic=' . urlencode($hub_topic) .
'&hub.challenge=' . $hub_challenge . '&hub.challenge=' . $hub_challenge .
'&hub.lease_seconds=604800' . '&hub.lease_seconds=604800' .
'&hub.verify_token=' . $hub_verify_token; '&hub.verify_token=' . $hub_verify_token;
// lease time is hard coded to one week (in seconds) // lease time is hard coded to one week (in seconds)
// we don't actually enforce the lease time because GNU // we don't actually enforce the lease time because GNU
// Social/StatusNet doesn't honour it (yet) // Social/StatusNet doesn't honour it (yet)