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:
Brion Vibber
2010-02-22 09:43:27 -08:00
parent 7e8c3ea418
commit 06f155c02d
7 changed files with 336 additions and 55 deletions

View File

@@ -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);

View File

@@ -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)

View File

@@ -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
*/