The "hub" url now contains the nickname

This commit is contained in:
Michael 2017-08-23 05:01:15 +00:00
parent e607a9dcda
commit b378f5fb01
4 changed files with 22 additions and 16 deletions

View file

@ -504,7 +504,7 @@ class dfrn {
if ($public) { if ($public) {
// DFRN itself doesn't uses this. But maybe someone else wants to subscribe to the public feed. // DFRN itself doesn't uses this. But maybe someone else wants to subscribe to the public feed.
ostatus::hublinks($doc, $root); ostatus::hublinks($doc, $root, $owner["nick"]);
$attributes = array("rel" => "salmon", "href" => App::get_baseurl()."/salmon/".$owner["nick"]); $attributes = array("rel" => "salmon", "href" => App::get_baseurl()."/salmon/".$owner["nick"]);
xml::add_element($doc, $root, "link", "", $attributes); xml::add_element($doc, $root, "link", "", $attributes);

View file

@ -1470,7 +1470,7 @@ class ostatus {
/// "type" => "application/json"); /// "type" => "application/json");
/// xml::add_element($doc, $root, "link", "", $attributes); /// xml::add_element($doc, $root, "link", "", $attributes);
self::hublinks($doc, $root); self::hublinks($doc, $root, $owner["nick"]);
$attributes = array("href" => App::get_baseurl()."/salmon/".$owner["nick"], "rel" => "salmon"); $attributes = array("href" => App::get_baseurl()."/salmon/".$owner["nick"], "rel" => "salmon");
xml::add_element($doc, $root, "link", "", $attributes); xml::add_element($doc, $root, "link", "", $attributes);
@ -1494,7 +1494,7 @@ class ostatus {
* @param object $doc XML document * @param object $doc XML document
* @param object $root XML root element where the hub links are added * @param object $root XML root element where the hub links are added
*/ */
public static function hublinks($doc, $root) { public static function hublinks($doc, $root, $nick) {
$hub = get_config('system','huburl'); $hub = get_config('system','huburl');
$hubxml = ''; $hubxml = '';
@ -1505,8 +1505,9 @@ class ostatus {
$h = trim($h); $h = trim($h);
if (! strlen($h)) if (! strlen($h))
continue; continue;
if ($h === '[internal]') if ($h === '[internal]') {
$h = App::get_baseurl() . '/pubsubhubbub'; $h = App::get_baseurl() . '/pubsubhubbub/'.$nick;
}
xml::add_element($doc, $root, "link", "", array("href" => $h, "rel" => "hub")); xml::add_element($doc, $root, "link", "", array("href" => $h, "rel" => "hub"));
} }
} }

View file

@ -54,7 +54,7 @@ function handle_pubsubhubbub($id) {
$headers = array("Content-type: application/atom+xml", $headers = array("Content-type: application/atom+xml",
sprintf("Link: <%s>;rel=hub,<%s>;rel=self", sprintf("Link: <%s>;rel=hub,<%s>;rel=self",
App::get_baseurl().'/pubsubhubbub', App::get_baseurl().'/pubsubhubbub/'.$rr['nickname'],
$rr['topic']), $rr['topic']),
"X-Hub-Signature: sha1=".$hmac_sig); "X-Hub-Signature: sha1=".$hmac_sig);

View file

@ -23,7 +23,7 @@ function pubsubhubbub_init(App $a) {
// [hub_secret] => af11... // [hub_secret] => af11...
// [hub_topic] => http://friendica.local/dfrn_poll/sazius // [hub_topic] => http://friendica.local/dfrn_poll/sazius
if($_SERVER['REQUEST_METHOD'] === 'POST') { if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$hub_mode = post_var('hub_mode'); $hub_mode = post_var('hub_mode');
$hub_callback = post_var('hub_callback'); $hub_callback = post_var('hub_callback');
$hub_verify = post_var('hub_verify'); $hub_verify = post_var('hub_verify');
@ -34,7 +34,7 @@ function pubsubhubbub_init(App $a) {
// check for valid hub_mode // check for valid hub_mode
if ($hub_mode === 'subscribe') { if ($hub_mode === 'subscribe') {
$subscribe = 1; $subscribe = 1;
} else if ($hub_mode === 'unsubscribe') { } elseif ($hub_mode === 'unsubscribe') {
$subscribe = 0; $subscribe = 0;
} else { } else {
logger("pubsubhubbub: invalid hub_mode=$hub_mode, ignoring."); logger("pubsubhubbub: invalid hub_mode=$hub_mode, ignoring.");
@ -44,9 +44,14 @@ function pubsubhubbub_init(App $a) {
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 as a fallback
$nick = substr(strrchr($hub_topic, "/"), 1); $nick = substr(strrchr($hub_topic, "/"), 1);
// Normally the url should now contain the nick name as last part of the url
if ($a->argc > 1) {
$nick = $a->argv[1];
}
if (!$nick) { if (!$nick) {
logger('pubsubhubbub: bad hub_topic=$hub_topic, ignoring.'); logger('pubsubhubbub: bad hub_topic=$hub_topic, ignoring.');
http_status_exit(404); http_status_exit(404);
@ -83,7 +88,7 @@ function pubsubhubbub_init(App $a) {
$contact = $r[0]; $contact = $r[0];
// 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);