Merge branch 'master' of https://github.com/friendica/red
This commit is contained in:
commit
592be71626
@ -423,7 +423,7 @@ function user_deny($hash) {
|
||||
if(! count($register))
|
||||
return false;
|
||||
|
||||
$account = q("SELECT account_id FROM account WHERE account_id = %d LIMIT 1",
|
||||
$account = q("SELECT account_id, account_email FROM account WHERE account_id = %d LIMIT 1",
|
||||
intval($register[0]['uid'])
|
||||
);
|
||||
|
||||
|
@ -121,7 +121,129 @@ function diaspora_is_blacklisted($s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function diaspora_process_outbound($arr) {
|
||||
|
||||
/*
|
||||
|
||||
We are passed the following array from the notifier, providing everything we need to make delivery decisions.
|
||||
|
||||
diaspora_process_outbound(array(
|
||||
'channel' => $channel,
|
||||
'env_recips' => $env_recips,
|
||||
'recipients' => $recipients,
|
||||
'item' => $item,
|
||||
'target_item' => $target_item,
|
||||
'hub' => $hub,
|
||||
'top_level_post' => $top_level_post,
|
||||
'private' => $private,
|
||||
'followup' => $followup,
|
||||
'relay_to_owner' => $relay_to_owner,
|
||||
'uplink' => $uplink,
|
||||
'cmd' => $cmd,
|
||||
'expire' => $expire,
|
||||
'mail' => $mail,
|
||||
'fsuggest' => $fsuggest,
|
||||
'normal_mode' => $normal_mode,
|
||||
'packet_type' => $packet_type,
|
||||
'walltowall' => $walltowall,
|
||||
));
|
||||
*/
|
||||
|
||||
|
||||
if($arr['walltowall'])
|
||||
return;
|
||||
|
||||
if($arr['env_recips']) {
|
||||
$r = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where hubloc_url = '%s'
|
||||
and xchan_hash in (" . implode(',',$arr['env_recips']) . ")
|
||||
and xchan_network in ('diaspora', 'friendica-over-diaspora') ",
|
||||
dbesc($arr['hub']['hubloc_url'])
|
||||
);
|
||||
if(! $r) {
|
||||
logger('diaspora_process_outbound: no recipients');
|
||||
return;
|
||||
}
|
||||
|
||||
foreach($r as $contact) {
|
||||
|
||||
if($arr['mail']) {
|
||||
diaspora_send_mail($arr['item'],$arr['channel'],$contact);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(! $arr['normal_mode'])
|
||||
continue;
|
||||
|
||||
// special handling for followup to public post
|
||||
// all other public posts processed as public batches further below
|
||||
|
||||
if((! $arr['private']) && ($arr['followup'])) {
|
||||
diaspora_send_followup($arr['target_item'],$arr['channel'],$contact, true);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(! $contact['xchan_pubkey'])
|
||||
continue;
|
||||
|
||||
if(activity_match($arr['target_item']['verb'],ACTIVITY_DISLIKE)) {
|
||||
continue;
|
||||
}
|
||||
elseif(($arr['target_item']['item_restrict'] & ITEM_DELETED)
|
||||
&& (($arr['target_item']['mid'] === $arr['target_item']['parent_mid']) || $arr['followup'])) {
|
||||
// send both top-level retractions and relayable retractions for owner to relay
|
||||
diaspora_send_retraction($arr['target_item'],$arr['channel'],$contact);
|
||||
continue;
|
||||
}
|
||||
elseif($arr['followup']) {
|
||||
// send comments and likes to owner to relay
|
||||
diaspora_send_followup($arr['target_item'],$arr['channel'],$contact);
|
||||
continue;
|
||||
}
|
||||
|
||||
elseif($target_item['mid'] !== $target_item['parent_mid']) {
|
||||
// we are the relay - send comments, likes and relayable_retractions
|
||||
// (of comments and likes) to our conversants
|
||||
diaspora_send_relay($arr['target_item'],$arr['channel'],$contact);
|
||||
continue;
|
||||
}
|
||||
elseif($arr['top_level']) {
|
||||
diaspora_send_status($arr['target_item'],$arr['channel'],$contact);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// public message
|
||||
|
||||
$contact = $arr['hub'];
|
||||
|
||||
if($target_item['verb'] === ACTIVITY_DISLIKE) {
|
||||
// unsupported
|
||||
return;
|
||||
}
|
||||
elseif(($arr['target_item']['deleted'])
|
||||
&& ($arr['target_item']['mid'] === $arr['target_item']['parent_mod'])) {
|
||||
// top-level retraction
|
||||
logger('delivery: diaspora retract: ' . $loc);
|
||||
diaspora_send_retraction($arr['target_item'],$arr['channel'],$contact,true);
|
||||
return;
|
||||
}
|
||||
elseif($arr['target_item']['mid'] !== $arr['target_item']['parent_mid']) {
|
||||
// we are the relay - send comments, likes and relayable_retractions to our conversants
|
||||
logger('delivery: diaspora relay: ' . $loc);
|
||||
diaspora_send_relay($arr['target_item'],$arr['channel'],$contact,true);
|
||||
return;
|
||||
}
|
||||
elseif($arr['top_level_post']) {
|
||||
// currently no workable solution for sending walltowall
|
||||
logger('delivery: diaspora status: ' . $loc);
|
||||
diaspora_send_status($arr['target_item'],$arr['channel'],$contact,true);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -226,13 +348,13 @@ $magic_env = <<< EOT
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<diaspora xmlns="https://joindiaspora.com/protocol" xmlns:me="http://salmon-protocol.org/ns/magic-env" >
|
||||
<header>
|
||||
<author_id>$handle</author_id>
|
||||
<author_id>$handle</author_id>
|
||||
</header>
|
||||
<me:env>
|
||||
<me:encoding>base64url</me:encoding>
|
||||
<me:alg>RSA-SHA256</me:alg>
|
||||
<me:data type="application/xml">$data</me:data>
|
||||
<me:sig>$sig</me:sig>
|
||||
<me:encoding>base64url</me:encoding>
|
||||
<me:alg>RSA-SHA256</me:alg>
|
||||
<me:data type="application/xml">$data</me:data>
|
||||
<me:sig>$sig</me:sig>
|
||||
</me:env>
|
||||
</diaspora>
|
||||
EOT;
|
||||
@ -323,10 +445,10 @@ $magic_env = <<< EOT
|
||||
<diaspora xmlns="https://joindiaspora.com/protocol" xmlns:me="http://salmon-protocol.org/ns/magic-env" >
|
||||
$encrypted_header
|
||||
<me:env>
|
||||
<me:encoding>base64url</me:encoding>
|
||||
<me:alg>RSA-SHA256</me:alg>
|
||||
<me:data type="application/xml">$data</me:data>
|
||||
<me:sig>$sig</me:sig>
|
||||
<me:encoding>base64url</me:encoding>
|
||||
<me:alg>RSA-SHA256</me:alg>
|
||||
<me:data type="application/xml">$data</me:data>
|
||||
<me:sig>$sig</me:sig>
|
||||
</me:env>
|
||||
</diaspora>
|
||||
EOT;
|
||||
@ -386,19 +508,19 @@ function diaspora_decode($importer,$xml) {
|
||||
* $decrypted now contains something like
|
||||
*
|
||||
* <decrypted_header>
|
||||
* <iv>8e+G2+ET8l5BPuW0sVTnQw==</iv>
|
||||
* <aes_key>UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=</aes_key>
|
||||
* <iv>8e+G2+ET8l5BPuW0sVTnQw==</iv>
|
||||
* <aes_key>UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=</aes_key>
|
||||
|
||||
***** OBSOLETE
|
||||
|
||||
* <author>
|
||||
* <name>Ryan Hughes</name>
|
||||
* <uri>acct:galaxor@diaspora.pirateship.org</uri>
|
||||
* </author>
|
||||
* <author>
|
||||
* <name>Ryan Hughes</name>
|
||||
* <uri>acct:galaxor@diaspora.pirateship.org</uri>
|
||||
* </author>
|
||||
|
||||
***** CURRENT
|
||||
|
||||
* <author_id>galaxor@diaspora.priateship.org</author_id>
|
||||
* <author_id>galaxor@diaspora.priateship.org</author_id>
|
||||
|
||||
***** END DIFFS
|
||||
|
||||
@ -576,7 +698,7 @@ function diaspora_request($importer,$xml) {
|
||||
if($new_connection) {
|
||||
require_once('include/enotify.php');
|
||||
notification(array(
|
||||
'type' => NOTIFY_INTRO,
|
||||
'type' => NOTIFY_INTRO,
|
||||
'from_xchan' => $ret['xchan_hash'],
|
||||
'to_xchan' => $importer['channel_hash'],
|
||||
'link' => z_root() . '/connedit/' . $new_connection[0]['abook_id'],
|
||||
@ -585,7 +707,7 @@ function diaspora_request($importer,$xml) {
|
||||
if($default_perms) {
|
||||
// Send back a sharing notification to them
|
||||
diaspora_share($importer['channel_id'],$new_connection[0]);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1309,11 +1431,11 @@ function diaspora_conversation($importer,$xml,$msg) {
|
||||
);
|
||||
if($r)
|
||||
$c = q("select * from conv where uid = %d and guid = '%s' limit 1",
|
||||
intval($importer['channel_id']),
|
||||
dbesc($guid)
|
||||
);
|
||||
if(count($c))
|
||||
$conversation = $c[0];
|
||||
intval($importer['channel_id']),
|
||||
dbesc($guid)
|
||||
);
|
||||
if(count($c))
|
||||
$conversation = $c[0];
|
||||
}
|
||||
if(! $conversation) {
|
||||
logger('diaspora_conversation: unable to create conversation.');
|
||||
@ -1578,7 +1700,7 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
|
||||
$link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n";
|
||||
|
||||
$link_text = scale_external_images($link_text, true,
|
||||
array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
|
||||
array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
|
||||
|
||||
if(strpos($parent_item['body'],$link_text) === false) {
|
||||
$r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d",
|
||||
@ -2044,6 +2166,18 @@ function diaspora_profile($importer,$xml,$msg) {
|
||||
function diaspora_share($me,$contact) {
|
||||
$a = get_app();
|
||||
$myaddr = $me['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
|
||||
if(! array_key_exists('xchan_hash',$contact)) {
|
||||
$c = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where xchan_hash = '%s' limit 1",
|
||||
dbesc($contact['hubloc_hash'])
|
||||
);
|
||||
if(! $c) {
|
||||
logger('diaspora_share: ' . $contact['hubloc_hash'] . ' not found.');
|
||||
return;
|
||||
}
|
||||
$contact = $c[0];
|
||||
}
|
||||
|
||||
$theiraddr = $contact['xchan_addr'];
|
||||
|
||||
$tpl = get_markup_template('diaspora_share.tpl');
|
||||
@ -2052,29 +2186,25 @@ function diaspora_share($me,$contact) {
|
||||
'$recipient' => $theiraddr
|
||||
));
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']));
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['channel_prvkey'],$contact['xchan_pubkey'])));
|
||||
return(diaspora_transmit($owner,$contact,$slap, false));
|
||||
}
|
||||
|
||||
function diaspora_unshare($me,$contact) {
|
||||
|
||||
$a = get_app();
|
||||
$myaddr = $me['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
$myaddr = $me['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
|
||||
$tpl = get_markup_template('diaspora_retract.tpl');
|
||||
$msg = replace_macros($tpl, array(
|
||||
'$guid' => $me['guid'],
|
||||
'$guid' => $me['channel_guid'],
|
||||
'$type' => 'Person',
|
||||
'$handle' => $myaddr
|
||||
));
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey'])));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$me,$contact,$me['prvkey'],$contact['pubkey']));
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$me,$contact,$me['channel_prvkey'],$contact['xchan_pubkey'])));
|
||||
|
||||
return(diaspora_transmit($owner,$contact,$slap, false));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -2082,7 +2212,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||
|
||||
$a = get_app();
|
||||
$myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
$theiraddr = $contact['xchan_addr'];
|
||||
|
||||
$images = array();
|
||||
|
||||
@ -2112,12 +2241,38 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||
}
|
||||
*/
|
||||
|
||||
//if(strlen($title))
|
||||
// $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
|
||||
|
||||
$body = str_ireplace("[quote", "\n\n[quote", $body);
|
||||
$body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
|
||||
|
||||
// strip bookmark indicators
|
||||
|
||||
$body = preg_replace('/\#\^\[([zu])rl/i', '[$1rl', $body);
|
||||
$body = preg_replace('/\#\^http/i', 'http', $body);
|
||||
|
||||
// protect tags and mentions from hijacking
|
||||
|
||||
if(! intval(get_pconfig($owner['channel_id'],'system','allow_tag_hijacking'))) {
|
||||
$new_tag = html_entity_decode('⋕',ENT_COMPAT,'UTF-8');
|
||||
$new_mention = html_entity_decode('@',ENT_COMPAT,'UTF-8');
|
||||
|
||||
// #-tags
|
||||
$body = preg_replace('/\#\[url/i', $new_tag . '[url', $body);
|
||||
$body = preg_replace('/\#\[zrl/i', $new_tag . '[zrl', $body);
|
||||
// @-mentions
|
||||
$body = preg_replace('/\@\[url/i', $new_mention . '[url', $body);
|
||||
$body = preg_replace('/\@\[zrl/i', $new_mention . '[zrl', $body);
|
||||
}
|
||||
|
||||
// remove multiple newlines
|
||||
do {
|
||||
$oldbody = $body;
|
||||
$body = str_replace("\n\n\n", "\n\n", $body);
|
||||
} while ($oldbody != $body);
|
||||
|
||||
|
||||
// convert to markdown
|
||||
$body = xmlify(html_entity_decode(bb2diaspora($body)));
|
||||
//$body = bb2diaspora($body);
|
||||
|
||||
// Adding the title
|
||||
if(strlen($title))
|
||||
@ -2133,7 +2288,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$public = (($item['item_private']) ? 'false' : 'true');
|
||||
|
||||
require_once('include/datetime.php');
|
||||
@ -2150,7 +2304,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||
'$handle' => xmlify($myaddr),
|
||||
'$public' => $public,
|
||||
'$created' => $created,
|
||||
'$provider' => $item['app']
|
||||
'$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
|
||||
));
|
||||
} else {
|
||||
$tpl = get_markup_template('diaspora_post.tpl');
|
||||
@ -2160,14 +2314,13 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||
'$handle' => xmlify($myaddr),
|
||||
'$public' => $public,
|
||||
'$created' => $created,
|
||||
'$provider' => $item['app']
|
||||
'$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
|
||||
));
|
||||
}
|
||||
|
||||
logger('diaspora_send_status: '.$owner['channel_name'].' -> '.$contact['xchan_name'].' base message: '.$msg, LOGGER_DATA);
|
||||
logger('diaspora_send_status: '.$owner['channel_name'].' -> '.$contact['xchan_name'].' base message: ' . $msg, LOGGER_DATA);
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
|
||||
|
||||
$return_code = diaspora_transmit($owner,$contact,$slap,$public_batch);
|
||||
|
||||
@ -2210,7 +2363,7 @@ function diaspora_is_reshare($body) {
|
||||
$ret= array();
|
||||
|
||||
$ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
|
||||
if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == ""))
|
||||
if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == ""))
|
||||
return(false);
|
||||
|
||||
$link = "";
|
||||
@ -2262,7 +2415,6 @@ function diaspora_send_images($item,$owner,$contact,$images,$public_batch = fals
|
||||
|
||||
logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA);
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
|
||||
|
||||
diaspora_transmit($owner,$contact,$slap,$public_batch);
|
||||
}
|
||||
@ -2346,7 +2498,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
|
||||
$a = get_app();
|
||||
$myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
// $theiraddr = $contact['addr'];
|
||||
|
||||
|
||||
$body = $item['body'];
|
||||
$text = html_entity_decode(bb2diaspora($body));
|
||||
@ -2356,7 +2508,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
// likes on comments
|
||||
if($item['verb'] === ACTIVITY_LIKE && $item['thr_parent']) {
|
||||
$p = q("select * from item where mid = '%s' limit 1",
|
||||
dbesc($item['thr_parent'])
|
||||
dbesc($item['thr_parent'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
@ -2364,9 +2516,9 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||
$p = q("select * from item where parent = %d and id = %d limit 1",
|
||||
intval($item['parent']),
|
||||
intval($item['parent'])
|
||||
);
|
||||
intval($item['parent']),
|
||||
intval($item['parent'])
|
||||
);
|
||||
}
|
||||
if($p)
|
||||
$parent = $p[0];
|
||||
@ -2471,8 +2623,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
||||
logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
|
||||
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
|
||||
|
||||
return(diaspora_transmit($owner,$contact,$slap,$public_batch));
|
||||
|
||||
@ -2506,8 +2657,7 @@ function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) {
|
||||
'$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')))
|
||||
));
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
|
||||
|
||||
return(diaspora_transmit($owner,$contact,$slap,$public_batch));
|
||||
}
|
||||
@ -2542,7 +2692,7 @@ function diaspora_send_mail($item,$owner,$contact) {
|
||||
$signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';'
|
||||
. $created . ';' . $myaddr . ';' . $cnv['guid'];
|
||||
|
||||
$sig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
|
||||
$sig = base64_encode(rsa_sign($signed_text,$owner['channel_prvkey'],'sha256'));
|
||||
|
||||
$msg = array(
|
||||
'guid' => xmlify($item['guid']),
|
||||
@ -2567,8 +2717,7 @@ function diaspora_send_mail($item,$owner,$contact) {
|
||||
|
||||
logger('diaspora_conversation: ' . print_r($xmsg,true), LOGGER_DATA);
|
||||
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false)));
|
||||
//$slap = 'xml=' . urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false));
|
||||
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],false)));
|
||||
|
||||
return(diaspora_transmit($owner,$contact,$slap,false));
|
||||
|
||||
@ -2582,6 +2731,21 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false)
|
||||
return 200;
|
||||
}
|
||||
|
||||
if($public_batch)
|
||||
$dest_url = $contact['hubloc_callback'] . '/public';
|
||||
else
|
||||
$dest_url = $contact['hubloc_callback'] . '/users/' . $contact['hubloc_guid'];
|
||||
|
||||
logger('diaspora_transmit: URL: ' . $dest_url, LOGGER_DEBUG);
|
||||
|
||||
if(intval(get_config('system','diaspora_test')))
|
||||
return 200;
|
||||
|
||||
|
||||
|
||||
return 200;
|
||||
|
||||
|
||||
$a = get_app();
|
||||
$logid = random_string(4);
|
||||
$dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']);
|
||||
|
@ -95,6 +95,7 @@ function collect_recipients($item,&$private_envelope) {
|
||||
$recipients[] = $item['author_xchan'];
|
||||
if($item['owner_xchan'] != $item['author_xchan'])
|
||||
$recipients[] = $item['owner_xchan'];
|
||||
|
||||
return $recipients;
|
||||
|
||||
}
|
||||
|
@ -929,7 +929,7 @@ function discover_by_webbie($webbie) {
|
||||
dbesc($webbie)
|
||||
);
|
||||
if(! $r) {
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated ) values ('%s','%s','%s','%s','%s','%s','%s','%s')",
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_flags ) values ('%s','%s','%s','%s','%s','%s','%s','%s', %d)",
|
||||
dbesc($guid),
|
||||
dbesc($addr),
|
||||
dbesc($addr),
|
||||
@ -937,7 +937,8 @@ function discover_by_webbie($webbie) {
|
||||
dbesc(trim($diaspora_base,'/')),
|
||||
dbesc($hostname),
|
||||
dbesc($notify),
|
||||
dbesc(datetime_convert())
|
||||
dbesc(datetime_convert()),
|
||||
intval(HUBLOC_FLAGS_PRIMARY)
|
||||
);
|
||||
}
|
||||
$photos = import_profile_photo($vcard['photo'],$addr);
|
||||
|
@ -103,28 +103,33 @@ function notifier_run($argv, $argc){
|
||||
);
|
||||
if($r) {
|
||||
// Get the sender
|
||||
$s = q("select * from channel where channel_id = %d limit 1",
|
||||
$s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
|
||||
intval($r[0]['abook_channel'])
|
||||
);
|
||||
if($s) {
|
||||
|
||||
// send a refresh message to each hub they have registered here
|
||||
$h = q("select * from hubloc where hubloc_hash = '%s'",
|
||||
dbesc($r[0]['hubloc_hash'])
|
||||
);
|
||||
if($h) {
|
||||
foreach($h as $hh) {
|
||||
$data = zot_build_packet($s[0],'refresh',array(array(
|
||||
'guid' => $hh['hubloc_guid'],
|
||||
'guid_sig' => $hh['hubloc_guid_sig'],
|
||||
'url' => $hh['hubloc_url'])
|
||||
));
|
||||
if($data) {
|
||||
$result = zot_zot($hh['hubloc_callback'],$data);
|
||||
if($r[0]['hubloc_network'] === 'diaspora' || $r[0]['hubloc_network'] === 'friendica_over_diaspora') {
|
||||
require_once('include/diaspora.php');
|
||||
diaspora_share($s[0],$r[0]);
|
||||
}
|
||||
else {
|
||||
// send a refresh message to each hub they have registered here
|
||||
$h = q("select * from hubloc where hubloc_hash = '%s'",
|
||||
dbesc($r[0]['hubloc_hash'])
|
||||
);
|
||||
if($h) {
|
||||
foreach($h as $hh) {
|
||||
$data = zot_build_packet($s[0],'refresh',array(array(
|
||||
'guid' => $hh['hubloc_guid'],
|
||||
'guid_sig' => $hh['hubloc_guid_sig'],
|
||||
'url' => $hh['hubloc_url'])
|
||||
));
|
||||
if($data) {
|
||||
$result = zot_zot($hh['hubloc_callback'],$data);
|
||||
// zot_queue_item is not yet written
|
||||
// if(! $result['success'])
|
||||
// zot_queue_item();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -366,6 +371,8 @@ function notifier_run($argv, $argc){
|
||||
|
||||
}
|
||||
|
||||
$walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
|
||||
|
||||
// Generic delivery section, we have an encoded item and recipients
|
||||
// Now start the delivery process
|
||||
|
||||
@ -438,11 +445,11 @@ function notifier_run($argv, $argc){
|
||||
// aren't the owner or author.
|
||||
|
||||
|
||||
$r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
$r = q("select hubloc_guid, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
where hubloc_hash in (" . implode(',',$recipients) . ") group by hubloc_sitekey order by hubloc_connected desc limit 1");
|
||||
}
|
||||
else {
|
||||
$r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
$r = q("select hubloc_guid, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
|
||||
where hubloc_hash in (" . implode(',',$recipients) . ") $sql_extra group by hubloc_sitekey");
|
||||
}
|
||||
|
||||
@ -485,6 +492,42 @@ function notifier_run($argv, $argc){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($hub['hubloc_network'] === 'diaspora' || $hub['hubloc_network'] === 'friendica-over-diaspora') {
|
||||
if(! get_config('system','diaspora_enabled'))
|
||||
continue;
|
||||
|
||||
require_once('include/diaspora.php');
|
||||
|
||||
diaspora_process_outbound(array(
|
||||
'channel' => $channel,
|
||||
'env_recips' => $env_recips,
|
||||
'recipients' => $recipients,
|
||||
'item' => $item,
|
||||
'target_item' => $target_item,
|
||||
'hub' => $hub,
|
||||
'top_level_post' => $top_level_post,
|
||||
'private' => $private,
|
||||
'followup' => $followup,
|
||||
'relay_to_owner' => $relay_to_owner,
|
||||
'uplink' => $uplink,
|
||||
'cmd' => $cmd,
|
||||
'expire' => $expire,
|
||||
'mail' => $mail,
|
||||
'fsuggest' => $fsuggest,
|
||||
'normal_mode' => $normal_mode,
|
||||
'packet_type' => $packet_type,
|
||||
'walltowall' => $walltowall
|
||||
));
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// default: zot protocol
|
||||
|
||||
|
||||
$hash = random_string();
|
||||
if($packet_type === 'refresh' || $packet_type === 'purge') {
|
||||
$n = zot_build_packet($channel,$packet_type);
|
||||
|
@ -198,11 +198,17 @@ function zot_finger($webbie,$channel,$autofallback = true) {
|
||||
|
||||
if($r) {
|
||||
$url = $r[0]['hubloc_url'];
|
||||
|
||||
if($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') {
|
||||
logger('zot_finger: alternate network: ' . $webbie);
|
||||
return array('success' => false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$url = 'https://' . $host;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$rhs = '/.well-known/zot-info';
|
||||
$https = ((strpos($url,'https://') === 0) ? true : false);
|
||||
|
||||
@ -271,6 +277,11 @@ function zot_finger($webbie,$channel,$autofallback = true) {
|
||||
|
||||
function zot_refresh($them,$channel = null, $force = false) {
|
||||
|
||||
if(array_key_exists('xchan_network',$them) && ($them['xchan_network'] !== 'zot')) {
|
||||
logger('zot_refresh: not got zot. ' . $them['xchan_name']);
|
||||
return true;
|
||||
}
|
||||
|
||||
logger('zot_refresh: them: ' . print_r($them,true), LOGGER_DATA);
|
||||
if($channel)
|
||||
logger('zot_refresh: channel: ' . print_r($channel,true), LOGGER_DATA);
|
||||
|
11
view/tpl/diaspora_comment.tpl
Normal file
11
view/tpl/diaspora_comment.tpl
Normal file
@ -0,0 +1,11 @@
|
||||
<XML>
|
||||
<post>
|
||||
<comment>
|
||||
<guid>{{$guid}}</guid>
|
||||
<parent_guid>{{$parent_guid}}</parent_guid>
|
||||
<author_signature>{{$authorsig}}</author_signature>
|
||||
<text>{{$body}}</text>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
</comment>
|
||||
</post>
|
||||
</XML>
|
12
view/tpl/diaspora_comment_relay.tpl
Normal file
12
view/tpl/diaspora_comment_relay.tpl
Normal file
@ -0,0 +1,12 @@
|
||||
<XML>
|
||||
<post>
|
||||
<comment>
|
||||
<guid>{{$guid}}</guid>
|
||||
<parent_guid>{{$parent_guid}}</parent_guid>
|
||||
<parent_author_signature>{{$parentsig}}</parent_author_signature>
|
||||
<author_signature>{{$authorsig}}</author_signature>
|
||||
<text>{{$body}}</text>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
</comment>
|
||||
</post>
|
||||
</XML>
|
29
view/tpl/diaspora_conversation.tpl
Normal file
29
view/tpl/diaspora_conversation.tpl
Normal file
@ -0,0 +1,29 @@
|
||||
<XML>
|
||||
<post>
|
||||
<conversation>
|
||||
<guid>{{$conv.guid}}</guid>
|
||||
<subject>{{$conv.subject}}</subject>
|
||||
<created_at>{{$conv.created_at}}</created_at>
|
||||
|
||||
{{foreach $conv.messages as $msg}}
|
||||
|
||||
<message>
|
||||
<guid>{{$msg.guid}}</guid>
|
||||
<parent_guid>{{$msg.parent_guid}}</parent_guid>
|
||||
{{if $msg.parent_author_signature}}
|
||||
<parent_author_signature>{{$msg.parent_author_signature}}</parent_author_signature>
|
||||
{{/if}}
|
||||
<author_signature>{{$msg.author_signature}}</author_signature>
|
||||
<text>{{$msg.text}}</text>
|
||||
<created_at>{{$msg.created_at}}</created_at>
|
||||
<diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
|
||||
<conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
|
||||
</message>
|
||||
|
||||
{{/foreach}}
|
||||
|
||||
<diaspora_handle>{{$conv.diaspora_handle}}</diaspora_handle>
|
||||
<participant_handles>{{$conv.participant_handles}}</participant_handles>
|
||||
</conversation>
|
||||
</post>
|
||||
</XML>
|
12
view/tpl/diaspora_like.tpl
Normal file
12
view/tpl/diaspora_like.tpl
Normal file
@ -0,0 +1,12 @@
|
||||
<XML>
|
||||
<post>
|
||||
<like>
|
||||
<positive>{{$positive}}</positive>
|
||||
<guid>{{$guid}}</guid>
|
||||
<target_type>{{$target_type}}</target_type>
|
||||
<parent_guid>{{$parent_guid}}</parent_guid>
|
||||
<author_signature>{{$authorsig}}</author_signature>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
</like>
|
||||
</post>
|
||||
</XML>
|
13
view/tpl/diaspora_like_relay.tpl
Normal file
13
view/tpl/diaspora_like_relay.tpl
Normal file
@ -0,0 +1,13 @@
|
||||
<XML>
|
||||
<post>
|
||||
<like>
|
||||
<positive>{{$positive}}</positive>
|
||||
<guid>{{$guid}}</guid>
|
||||
<target_type>{{$target_type}}</target_type>
|
||||
<parent_guid>{{$parent_guid}}</parent_guid>
|
||||
<parent_author_signature>{{$parentsig}}</parent_author_signature>
|
||||
<author_signature>{{$authorsig}}</author_signature>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
</like>
|
||||
</post>
|
||||
</XML>
|
13
view/tpl/diaspora_message.tpl
Normal file
13
view/tpl/diaspora_message.tpl
Normal file
@ -0,0 +1,13 @@
|
||||
<XML>
|
||||
<post>
|
||||
<message>
|
||||
<guid>{{$msg.guid}}</guid>
|
||||
<parent_guid>{{$msg.parent_guid}}</parent_guid>
|
||||
<author_signature>{{$msg.author_signature}}</author_signature>
|
||||
<text>{{$msg.text}}</text>
|
||||
<created_at>{{$msg.created_at}}</created_at>
|
||||
<diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
|
||||
<conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
|
||||
</message>
|
||||
</post>
|
||||
</XML>
|
13
view/tpl/diaspora_photo.tpl
Normal file
13
view/tpl/diaspora_photo.tpl
Normal file
@ -0,0 +1,13 @@
|
||||
<XML>
|
||||
<post>
|
||||
<photo>
|
||||
<guid>{{$guid}}</guid>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
<public>{{$public}}</public>
|
||||
<created_at>{{$created_at}}</created_at>
|
||||
<remote_photo_path>{{$path}}</remote_photo_path>
|
||||
<remote_photo_name>{{$filename}}</remote_photo_name>
|
||||
<status_message_guid>{{$msg_guid}}</status_message_guid>
|
||||
</photo>
|
||||
</post>
|
||||
</XML>
|
12
view/tpl/diaspora_post.tpl
Normal file
12
view/tpl/diaspora_post.tpl
Normal file
@ -0,0 +1,12 @@
|
||||
<XML>
|
||||
<post>
|
||||
<status_message>
|
||||
<raw_message>{{$body}}</raw_message>
|
||||
<guid>{{$guid}}</guid>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
<public>{{$public}}</public>
|
||||
<created_at>{{$created}}</created_at>
|
||||
<provider_display_name>{{$provider}}</provider_display_name>
|
||||
</status_message>
|
||||
</post>
|
||||
</XML>
|
16
view/tpl/diaspora_profile.tpl
Normal file
16
view/tpl/diaspora_profile.tpl
Normal file
@ -0,0 +1,16 @@
|
||||
<XML>
|
||||
<post><profile>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
<first_name>{{$first}}</first_name>
|
||||
<last_name>{{$last}}</last_name>
|
||||
<image_url>{{$large}}</image_url>
|
||||
<image_url_medium>{{$medium}}</image_url_medium>
|
||||
<image_url_small>{{$small}}</image_url_small>
|
||||
<birthday>{{$dob}}</birthday>
|
||||
<gender>{{$gender}}</gender>
|
||||
<bio>{{$about}}</bio>
|
||||
<location>{{$location}}</location>
|
||||
<searchable>{{$searchable}}</searchable>
|
||||
<tag_string>{{$tags}}</tag_string>
|
||||
</profile></post>
|
||||
</XML>
|
10
view/tpl/diaspora_relay_retraction.tpl
Normal file
10
view/tpl/diaspora_relay_retraction.tpl
Normal file
@ -0,0 +1,10 @@
|
||||
<XML>
|
||||
<post>
|
||||
<relayable_retraction>
|
||||
<target_type>{{$type}}</target_type>
|
||||
<target_guid>{{$guid}}</target_guid>
|
||||
<target_author_signature>{{$signature}}</target_author_signature>
|
||||
<sender_handle>{{$handle}}</sender_handle>
|
||||
</relayable_retraction>
|
||||
</post>
|
||||
</XML>
|
11
view/tpl/diaspora_relayable_retraction.tpl
Normal file
11
view/tpl/diaspora_relayable_retraction.tpl
Normal file
@ -0,0 +1,11 @@
|
||||
<XML>
|
||||
<post>
|
||||
<relayable_retraction>
|
||||
<parent_author_signature>{{$parentsig}}</parent_author_signature>
|
||||
<target_guid>{{$guid}}</target_guid>
|
||||
<target_type>{{$target_type}}</target_type>
|
||||
<sender_handle>{{$handle}}</sender_handle>
|
||||
<target_author_signature>{{$authorsig}}</target_author_signature>
|
||||
</relayable_retraction>
|
||||
</post>
|
||||
</XML>
|
13
view/tpl/diaspora_reshare.tpl
Normal file
13
view/tpl/diaspora_reshare.tpl
Normal file
@ -0,0 +1,13 @@
|
||||
<XML>
|
||||
<post>
|
||||
<reshare>
|
||||
<root_diaspora_id>{{$root_handle}}</root_diaspora_id>
|
||||
<root_guid>{{$root_guid}}</root_guid>
|
||||
<guid>{{$guid}}</guid>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
<public>{{$public}}</public>
|
||||
<created_at>{{$created}}</created_at>
|
||||
<provider_display_name>{{$provider}}</provider_display_name>
|
||||
</reshare>
|
||||
</post>
|
||||
</XML>
|
9
view/tpl/diaspora_retract.tpl
Normal file
9
view/tpl/diaspora_retract.tpl
Normal file
@ -0,0 +1,9 @@
|
||||
<XML>
|
||||
<post>
|
||||
<retraction>
|
||||
<post_guid>{{$guid}}</post_guid>
|
||||
<diaspora_handle>{{$handle}}</diaspora_handle>
|
||||
<type>{{$type}}</type>
|
||||
</retraction>
|
||||
</post>
|
||||
</XML>
|
8
view/tpl/diaspora_share.tpl
Normal file
8
view/tpl/diaspora_share.tpl
Normal file
@ -0,0 +1,8 @@
|
||||
<XML>
|
||||
<post>
|
||||
<request>
|
||||
<sender_handle>{{$sender}}</sender_handle>
|
||||
<recipient_handle>{{$recipient}}</recipient_handle>
|
||||
</request>
|
||||
</post>
|
||||
</XML>
|
10
view/tpl/diaspora_signed_retract.tpl
Normal file
10
view/tpl/diaspora_signed_retract.tpl
Normal file
@ -0,0 +1,10 @@
|
||||
<XML>
|
||||
<post>
|
||||
<signed_retraction>
|
||||
<target_guid>{{$guid}}</target_guid>
|
||||
<target_type>{{$type}}</target_type>
|
||||
<sender_handle>{{$handle}}</sender_handle>
|
||||
<target_author_signature>{{$signature}}</target_author_signature>
|
||||
</signed_retraction>
|
||||
</post>
|
||||
</XML>
|
@ -1,6 +1,6 @@
|
||||
<h1>{{$notif_header}}</h1>
|
||||
{{if $notifications_available}}
|
||||
<a href="#" onclick="markRead('notify');">{{$notif_link_mark_seen}}</a>
|
||||
<a href="#" onclick="markRead('notify'); setTimeout(function() { window.location.href=window.location.href; },1500); return false;">{{$notif_link_mark_seen}}</a>
|
||||
{{/if}}
|
||||
<div class="notif-network-wrapper">
|
||||
{{$notif_content}}
|
||||
|
@ -1,8 +1,3 @@
|
||||
{{*
|
||||
* AUTOMATICALLY GENERATED TEMPLATE
|
||||
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
|
||||
*
|
||||
*}}
|
||||
<Link rel="http://joindiaspora.com/seed_location" type="text/html" href="{{$baseurl}}/" />
|
||||
<Link rel="http://joindiaspora.com/guid" type="text/html" href="{{$dspr_guid}}" />
|
||||
<Link rel="diaspora-public-key" type="RSA" href="{{$dspr_key}}" />
|
||||
|
Reference in New Issue
Block a user