From a5ddaa9dbca4e3b4e285b232f96b28242f8ea1d8 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 13 Nov 2018 22:23:16 +0000 Subject: [PATCH] Issue 6128: Websub could work now --- include/api.php | 14 ++++++++++++++ mod/pubsubhubbub.php | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/api.php b/include/api.php index 267ba0c067..f4d7c5f5a6 100644 --- a/include/api.php +++ b/include/api.php @@ -1649,6 +1649,7 @@ function api_statuses_home_timeline($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -1731,6 +1732,7 @@ function api_statuses_public_timeline($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -1787,6 +1789,7 @@ function api_statuses_networkpublic_timeline($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -2108,6 +2111,7 @@ function api_statuses_mentions($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -2188,6 +2192,7 @@ function api_statuses_user_timeline($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -2263,8 +2268,10 @@ function api_favorites_create_destroy($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); + break; } return api_format_data("status", $type, $data); @@ -2330,8 +2337,10 @@ function api_favorites($type) $data = ['status' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); + break; } return api_format_data("statuses", $type, $data); @@ -3145,6 +3154,7 @@ function api_lists_statuses($type) $data = ['status' => $items]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); break; @@ -3541,8 +3551,10 @@ function api_direct_messages_new($type) switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $sender); + break; } return api_format_data("direct-messages", $type, $data); @@ -3807,8 +3819,10 @@ function api_direct_messages_box($type, $box, $verbose) $data = ['direct_message' => $ret]; switch ($type) { case "atom": + break; case "rss": $data = api_rss_extra($a, $data, $user_info); + break; } return api_format_data("direct-messages", $type, $data); diff --git a/mod/pubsubhubbub.php b/mod/pubsubhubbub.php index d38cbe227d..59fd458f7a 100644 --- a/mod/pubsubhubbub.php +++ b/mod/pubsubhubbub.php @@ -65,7 +65,7 @@ function pubsubhubbub_init(App $a) { // fetch user from database given the nickname $condition = ['nickname' => $nick, 'account_expired' => false, 'account_removed' => false]; - $owner = DBA::selectFirst('user', ['uid', 'hidewall'], $condition); + $owner = DBA::selectFirst('user', ['uid', 'hidewall', 'nickname'], $condition); if (!DBA::isResult($owner)) { Logger::log('Local account not found: ' . $nick . ' - topic: ' . $hub_topic . ' - callback: ' . $hub_callback); System::httpExit(404); @@ -88,7 +88,9 @@ function pubsubhubbub_init(App $a) { // sanity check that topic URLs are the same $hub_topic2 = str_replace('/feed/', '/dfrn_poll/', $hub_topic); - if (!Strings::compareLink($hub_topic, $contact['poll']) && !Strings::compareLink($hub_topic2, $contact['poll'])) { + $self = System::baseUrl() . '/api/statuses/user_timeline/' . $owner['nickname'] . '.atom'; + + if (!Strings::compareLink($hub_topic, $contact['poll']) && !Strings::compareLink($hub_topic2, $contact['poll']) && !Strings::compareLink($hub_topic, $self)) { Logger::log('Hub topic ' . $hub_topic . ' != ' . $contact['poll']); System::httpExit(404); }