forked from GNUsocial/gnu-social
OStatus: initial hookup of remote group membership (notice delivery not yet working quite right)
- added a temp config var to disable salmon magic signatures until they're working consistently
This commit is contained in:
@@ -367,6 +367,9 @@ class ActivityObject
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fixme missing avatar, bio info, etc
|
||||
*/
|
||||
static function fromProfile($profile)
|
||||
{
|
||||
$object = new ActivityObject();
|
||||
@@ -379,6 +382,9 @@ class ActivityObject
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fixme missing avatar, bio info, etc
|
||||
*/
|
||||
function asString($tag='activity:object')
|
||||
{
|
||||
$xs = new XMLStringer(true);
|
||||
|
@@ -28,15 +28,26 @@
|
||||
*/
|
||||
class Salmon
|
||||
{
|
||||
/**
|
||||
* Sign and post the given Atom entry as a Salmon message.
|
||||
*
|
||||
* @fixme pass through the actor for signing?
|
||||
*
|
||||
* @param string $endpoint_uri
|
||||
* @param string $xml
|
||||
* @return boolean success
|
||||
*/
|
||||
public function post($endpoint_uri, $xml)
|
||||
{
|
||||
if (empty($endpoint_uri)) {
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
$xml = $this->createMagicEnv($xml);
|
||||
|
||||
$headers = array('Content-type: application/atom+xml');
|
||||
if (!common_config('ostatus', 'skip_signatures')) {
|
||||
$xml = $this->createMagicEnv($xml);
|
||||
}
|
||||
|
||||
$headers = array('Content-Type: application/atom+xml');
|
||||
|
||||
try {
|
||||
$client = new HTTPClient();
|
||||
@@ -51,7 +62,7 @@ class Salmon
|
||||
$response->getStatus() . ': ' . $response->getBody());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function createMagicEnv($text)
|
||||
|
@@ -41,7 +41,7 @@ class SalmonAction extends Action
|
||||
$this->clientError(_('This method requires a POST.'));
|
||||
}
|
||||
|
||||
if ($_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
|
||||
if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
|
||||
$this->clientError(_('Salmon requires application/atom+xml'));
|
||||
}
|
||||
|
||||
@@ -57,11 +57,13 @@ class SalmonAction extends Action
|
||||
|
||||
// Check the signature
|
||||
$salmon = new Salmon;
|
||||
if (!$salmon->verifyMagicEnv($dom)) {
|
||||
common_log(LOG_DEBUG, "Salmon signature verification failed.");
|
||||
$this->clientError(_m('Salmon signature verification failed.'));
|
||||
if (!common_config('ostatus', 'skip_signatures')) {
|
||||
if (!$salmon->verifyMagicEnv($dom)) {
|
||||
common_log(LOG_DEBUG, "Salmon signature verification failed.");
|
||||
$this->clientError(_m('Salmon signature verification failed.'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->act = new Activity($dom->documentElement);
|
||||
return true;
|
||||
}
|
||||
@@ -101,6 +103,9 @@ class SalmonAction extends Action
|
||||
case ActivityVerb::JOIN:
|
||||
$this->handleJoin();
|
||||
break;
|
||||
case ActivityVerb::LEAVE:
|
||||
$this->handleLeave();
|
||||
break;
|
||||
default:
|
||||
throw new ClientException(_("Unimplemented."));
|
||||
}
|
||||
@@ -154,6 +159,14 @@ class SalmonAction extends Action
|
||||
throw new ClientException(_("Unimplemented!"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hmmmm
|
||||
*/
|
||||
function handleLeave()
|
||||
{
|
||||
throw new ClientException(_("Unimplemented!"));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Ostatus_profile
|
||||
*/
|
||||
|
Reference in New Issue
Block a user