The "hub" url now contains the nickname
This commit is contained in:
parent
e607a9dcda
commit
b378f5fb01
4 changed files with 22 additions and 16 deletions
|
@ -504,7 +504,7 @@ class dfrn {
|
|||
|
||||
if ($public) {
|
||||
// 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"]);
|
||||
xml::add_element($doc, $root, "link", "", $attributes);
|
||||
|
|
|
@ -1470,7 +1470,7 @@ class ostatus {
|
|||
/// "type" => "application/json");
|
||||
/// 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");
|
||||
xml::add_element($doc, $root, "link", "", $attributes);
|
||||
|
@ -1494,7 +1494,7 @@ class ostatus {
|
|||
* @param object $doc XML document
|
||||
* @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');
|
||||
|
||||
$hubxml = '';
|
||||
|
@ -1505,8 +1505,9 @@ class ostatus {
|
|||
$h = trim($h);
|
||||
if (! strlen($h))
|
||||
continue;
|
||||
if ($h === '[internal]')
|
||||
$h = App::get_baseurl() . '/pubsubhubbub';
|
||||
if ($h === '[internal]') {
|
||||
$h = App::get_baseurl() . '/pubsubhubbub/'.$nick;
|
||||
}
|
||||
xml::add_element($doc, $root, "link", "", array("href" => $h, "rel" => "hub"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ function handle_pubsubhubbub($id) {
|
|||
|
||||
$headers = array("Content-type: application/atom+xml",
|
||||
sprintf("Link: <%s>;rel=hub,<%s>;rel=self",
|
||||
App::get_baseurl().'/pubsubhubbub',
|
||||
App::get_baseurl().'/pubsubhubbub/'.$rr['nickname'],
|
||||
$rr['topic']),
|
||||
"X-Hub-Signature: sha1=".$hmac_sig);
|
||||
|
||||
|
|
|
@ -16,14 +16,14 @@ function pubsubhubbub_init(App $a) {
|
|||
// Subscription request from subscriber
|
||||
// https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html#anchor4
|
||||
// Example from GNU Social:
|
||||
// [hub_mode] => subscribe
|
||||
// [hub_callback] => http://status.local/main/push/callback/1
|
||||
// [hub_verify] => sync
|
||||
// [hub_verify_token] => af11...
|
||||
// [hub_secret] => af11...
|
||||
// [hub_topic] => http://friendica.local/dfrn_poll/sazius
|
||||
// [hub_mode] => subscribe
|
||||
// [hub_callback] => http://status.local/main/push/callback/1
|
||||
// [hub_verify] => sync
|
||||
// [hub_verify_token] => af11...
|
||||
// [hub_secret] => af11...
|
||||
// [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_callback = post_var('hub_callback');
|
||||
$hub_verify = post_var('hub_verify');
|
||||
|
@ -34,7 +34,7 @@ function pubsubhubbub_init(App $a) {
|
|||
// check for valid hub_mode
|
||||
if ($hub_mode === 'subscribe') {
|
||||
$subscribe = 1;
|
||||
} else if ($hub_mode === 'unsubscribe') {
|
||||
} elseif ($hub_mode === 'unsubscribe') {
|
||||
$subscribe = 0;
|
||||
} else {
|
||||
logger("pubsubhubbub: invalid hub_mode=$hub_mode, ignoring.");
|
||||
|
@ -44,9 +44,14 @@ function pubsubhubbub_init(App $a) {
|
|||
logger("pubsubhubbub: $hub_mode request from " .
|
||||
$_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);
|
||||
|
||||
// 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) {
|
||||
logger('pubsubhubbub: bad hub_topic=$hub_topic, ignoring.');
|
||||
http_status_exit(404);
|
||||
|
@ -83,7 +88,7 @@ function pubsubhubbub_init(App $a) {
|
|||
$contact = $r[0];
|
||||
|
||||
// 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 . ' != ' .
|
||||
$contact['poll']);
|
||||
http_status_exit(404);
|
||||
|
|
Loading…
Reference in a new issue