mirror of
https://github.com/friendica/friendica
synced 2025-04-26 03:50:12 +00:00
bring Diaspora message signing back to the source author - whether they like it or not.
This commit is contained in:
parent
030dcbd467
commit
f29f228463
6 changed files with 107 additions and 33 deletions
|
@ -112,8 +112,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
|
|||
`contact`.`name`, `contact`.`photo`, `contact`.`url`,
|
||||
`contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`,
|
||||
`contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`
|
||||
`contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`,
|
||||
`sign`.`signed_text`, `sign`.`signature`, `sign`.`signer`
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`parent` != 0
|
||||
AND `item`.`wall` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND ( `item`.`edited` > '%s' OR `item`.`changed` > '%s' )
|
||||
|
@ -363,6 +365,18 @@ function get_atom_elements($feed,$item) {
|
|||
$res['app'] = 'OStatus';
|
||||
}
|
||||
|
||||
// base64 encoded json structure representing Diaspora signature
|
||||
|
||||
$dsig = $item->get_item_tags(NAMESPACE_DFRN,'diaspora_signature');
|
||||
if($dsig) {
|
||||
$res['dsprsig'] = unxmlify($dsig[0]['data']);
|
||||
}
|
||||
|
||||
$dguid = $item->get_item_tags(NAMESPACE_DFRN,'diaspora_guid');
|
||||
if($dguid)
|
||||
$res['guid'] = unxmlify($dguid[0]['data']);
|
||||
|
||||
|
||||
/**
|
||||
* If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.
|
||||
*/
|
||||
|
@ -659,6 +673,15 @@ function encode_rel_links($links) {
|
|||
|
||||
function item_store($arr,$force_parent = false) {
|
||||
|
||||
// If a Diaspora signature structure was passed in, pull it out of the
|
||||
// item array and set it aside for later storage.
|
||||
|
||||
$dsprsig = null;
|
||||
if(x($arr,'dsprsig')) {
|
||||
$dsprsig = json_decode(base64_decode($arr['dsprsig']));
|
||||
unset($arr['dsprsig']);
|
||||
}
|
||||
|
||||
if($arr['gravity'])
|
||||
$arr['gravity'] = intval($arr['gravity']);
|
||||
elseif($arr['parent-uri'] == $arr['uri'])
|
||||
|
@ -835,6 +858,16 @@ function item_store($arr,$force_parent = false) {
|
|||
intval($current_post)
|
||||
);
|
||||
|
||||
if($dsprsig) {
|
||||
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
|
||||
intval($current_post),
|
||||
dbesc($dsprsig->signed_text),
|
||||
dbesc($dsprsig->signature),
|
||||
dbesc($dsprsig->signer)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If this is now the last-child, force all _other_ children of this parent to *not* be last-child
|
||||
*/
|
||||
|
@ -1670,10 +1703,19 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
|
|||
$o .= '<dfrn:private>1</dfrn:private>' . "\r\n";
|
||||
|
||||
if($item['extid'])
|
||||
$o .= '<dfrn:extid>' . $item['extid'] . '</dfrn:extid>' . "\r\n";
|
||||
$o .= '<dfrn:extid>' . xmlify($item['extid']) . '</dfrn:extid>' . "\r\n";
|
||||
|
||||
if($item['app'])
|
||||
$o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . $item['app'] . '" ></statusnet:notice_info>';
|
||||
$o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . xmlify($item['app']) . '" ></statusnet:notice_info>' . "\r\n";
|
||||
|
||||
if($item['guid'])
|
||||
$o .= '<dfrn:diaspora_guid>' . $item['guid'] . '</dfrn:diaspora_guid>' . "\r\n";
|
||||
|
||||
if($item['signed_text']) {
|
||||
$sign = base64_encode(json_encode(array('signed_text' => $item['signed_text'],'signature' => $item['signature'],'signer' => $item['signer'])));
|
||||
$o .= '<dfrn:diaspora_signature>' . xmlify($sign) . '</dfrn:diaspora_signature>' . "\r\n";
|
||||
}
|
||||
|
||||
$verb = construct_verb($item);
|
||||
$o .= '<as:verb>' . xmlify($verb) . '</as:verb>' . "\r\n";
|
||||
$actobj = construct_activity_object($item);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue