preliminary network abstraction, configurable debugging.
This commit is contained in:
parent
0ebd4aa783
commit
b91494d22e
4
boot.php
4
boot.php
|
@ -605,10 +605,12 @@ if(! function_exists('get_config')) {
|
||||||
function get_config($family, $key, $instore = false) {
|
function get_config($family, $key, $instore = false) {
|
||||||
|
|
||||||
global $a;
|
global $a;
|
||||||
|
|
||||||
if(! $instore) {
|
if(! $instore) {
|
||||||
if(isset($a->config[$family][$key])) {
|
if(isset($a->config[$family][$key])) {
|
||||||
if($a->config[$family][$key] == '!<unset>!')
|
if($a->config[$family][$key] === '!<unset>!') {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
return $a->config[$family][$key];
|
return $a->config[$family][$key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -464,3 +464,93 @@ function item_store($arr) {
|
||||||
|
|
||||||
return $current_post;
|
return $current_post;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_item_contact($item,$contacts) {
|
||||||
|
if(! count($contacts) || (! is_array($item)))
|
||||||
|
return false;
|
||||||
|
foreach($contacts as $contact) {
|
||||||
|
if($contact['id'] == $item['contact-id']) {
|
||||||
|
return $contact;
|
||||||
|
break; // NOTREACHED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function dfrn_deliver($contact,$atom,$debugging = false) {
|
||||||
|
|
||||||
|
|
||||||
|
if((! strlen($contact['dfrn-id'])) && (! $contact['duplex']))
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
|
||||||
|
|
||||||
|
if($contact['duplex'] && $contact['dfrn-id'])
|
||||||
|
$idtosend = '0:' . $orig_id;
|
||||||
|
if($contact['duplex'] && $contact['issued-id'])
|
||||||
|
$idtosend = '1:' . $orig_id;
|
||||||
|
|
||||||
|
$url = $contact['notify'] . '?dfrn_id=' . $idtosend;
|
||||||
|
|
||||||
|
if($debugging)
|
||||||
|
echo "URL: $url";
|
||||||
|
|
||||||
|
$xml = fetch_url($url);
|
||||||
|
|
||||||
|
if($debugging)
|
||||||
|
echo $xml;
|
||||||
|
|
||||||
|
if(! $xml)
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
$res = simplexml_load_string($xml);
|
||||||
|
|
||||||
|
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
|
||||||
|
return (($res->status) ? $res->status : 3);
|
||||||
|
|
||||||
|
$postvars = array();
|
||||||
|
$sent_dfrn_id = hex2bin($res->dfrn_id);
|
||||||
|
$challenge = hex2bin($res->challenge);
|
||||||
|
|
||||||
|
$final_dfrn_id = '';
|
||||||
|
|
||||||
|
if($contact['duplex'] && strlen($contact['prvkey'])) {
|
||||||
|
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
|
||||||
|
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
|
||||||
|
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
|
||||||
|
|
||||||
|
if(strpos($final_dfrn_id,':') == 1)
|
||||||
|
$final_dfrn_id = substr($final_dfrn_id,2);
|
||||||
|
|
||||||
|
if($final_dfrn_id != $orig_id) {
|
||||||
|
// did not decode properly - cannot trust this site
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
$postvars['dfrn_id'] = $idtosend;
|
||||||
|
|
||||||
|
|
||||||
|
if(($contact['rel']) && ($contact['rel'] != REL_FAN) && (! $contact['blocked']) && (! $contact['readonly'])) {
|
||||||
|
$postvars['data'] = $atom;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$postvars['data'] = str_replace('<dfrn:comment-allow>1','<dfrn:comment-allow>0',$atom);
|
||||||
|
}
|
||||||
|
|
||||||
|
$xml = post_url($contact['notify'],$postvars);
|
||||||
|
|
||||||
|
if($debugging)
|
||||||
|
echo $xml;
|
||||||
|
|
||||||
|
$res = simplexml_load_string($xml);
|
||||||
|
|
||||||
|
return $res->status;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$debugging = false;
|
|
||||||
|
|
||||||
require_once("boot.php");
|
require_once("boot.php");
|
||||||
|
|
||||||
$a = new App;
|
$a = new App;
|
||||||
|
@ -11,10 +9,14 @@
|
||||||
$db = new dba($db_host, $db_user, $db_pass, $db_data);
|
$db = new dba($db_host, $db_user, $db_pass, $db_data);
|
||||||
unset($db_host, $db_user, $db_pass, $db_data);
|
unset($db_host, $db_user, $db_pass, $db_data);
|
||||||
|
|
||||||
|
|
||||||
|
$debugging = get_config('system','debugging');
|
||||||
|
|
||||||
require_once("session.php");
|
require_once("session.php");
|
||||||
require_once("datetime.php");
|
require_once("datetime.php");
|
||||||
require_once('include/items.php');
|
require_once('include/items.php');
|
||||||
|
|
||||||
|
|
||||||
if($argc < 3)
|
if($argc < 3)
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
@ -164,9 +166,8 @@
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
|
||||||
if($followup) {
|
if($followup) {
|
||||||
foreach($items as $item) {
|
foreach($items as $item) { // there is only one item
|
||||||
|
|
||||||
$verb = construct_verb($item);
|
$verb = construct_verb($item);
|
||||||
$actobj = construct_activity($item);
|
$actobj = construct_activity($item);
|
||||||
|
@ -203,8 +204,9 @@
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
foreach($contacts as $contact) {
|
$contact = get_item_contact($item,$contacts);
|
||||||
if($item['contact-id'] == $contact['id']) {
|
if(! $contact)
|
||||||
|
continue;
|
||||||
|
|
||||||
$verb = construct_verb($item);
|
$verb = construct_verb($item);
|
||||||
$actobj = construct_activity($item);
|
$actobj = construct_activity($item);
|
||||||
|
@ -251,17 +253,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
$atom .= "</feed>\r\n";
|
$atom .= "</feed>\r\n";
|
||||||
|
|
||||||
if($debugging)
|
if($debugging)
|
||||||
echo $atom;
|
echo $atom;
|
||||||
|
|
||||||
// create a clone of this feed but with comments disabled to send to those who can't respond.
|
|
||||||
|
|
||||||
$atom_nowrite = str_replace('<dfrn:comment-allow>1','<dfrn:comment-allow>0',$atom);
|
|
||||||
|
|
||||||
|
|
||||||
if($followup)
|
if($followup)
|
||||||
$recip_str = $parent['contact-id'];
|
$recip_str = $parent['contact-id'];
|
||||||
|
@ -277,86 +273,21 @@
|
||||||
|
|
||||||
// delivery loop
|
// delivery loop
|
||||||
|
|
||||||
foreach($r as $rr) {
|
foreach($r as $contact) {
|
||||||
if($rr['self'])
|
if($contact['self'])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if((! strlen($rr['dfrn-id'])) && (! $rr['duplex']))
|
$deliver_status = 0;
|
||||||
continue;
|
|
||||||
|
|
||||||
|
switch($contact['network']) {
|
||||||
$idtosend = $orig_id = (($rr['dfrn-id']) ? $rr['dfrn-id'] : $rr['issued-id']);
|
case 'dfrn':
|
||||||
|
$deliver_status = dfrn_deliver($contact,$atom,$debugging);
|
||||||
if($rr['duplex'] && $rr['dfrn-id'])
|
break;
|
||||||
$idtosend = '0:' . $orig_id;
|
default:
|
||||||
if($rr['duplex'] && $rr['issued-id'])
|
break;
|
||||||
$idtosend = '1:' . $orig_id;
|
|
||||||
|
|
||||||
$url = $rr['notify'] . '?dfrn_id=' . $idtosend;
|
|
||||||
|
|
||||||
if($debugging)
|
|
||||||
echo "URL: $url";
|
|
||||||
|
|
||||||
$xml = fetch_url($url);
|
|
||||||
|
|
||||||
if($debugging)
|
|
||||||
echo $xml;
|
|
||||||
|
|
||||||
if(! $xml)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
$res = simplexml_load_string($xml);
|
|
||||||
|
|
||||||
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
$postvars = array();
|
|
||||||
|
|
||||||
$sent_dfrn_id = hex2bin($res->dfrn_id);
|
|
||||||
$challenge = hex2bin($res->challenge);
|
|
||||||
|
|
||||||
$final_dfrn_id = '';
|
|
||||||
|
|
||||||
if($rr['duplex'] && strlen($rr['prvkey'])) {
|
|
||||||
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$rr['prvkey']);
|
|
||||||
openssl_private_decrypt($challenge,$postvars['challenge'],$rr['prvkey']);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$rr['pubkey']);
|
|
||||||
openssl_public_decrypt($challenge,$postvars['challenge'],$rr['pubkey']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
|
if(($cmd == 'mail') && ($deliver_status == 0)) {
|
||||||
|
|
||||||
if(strpos($final_dfrn_id,':') == 1)
|
|
||||||
$final_dfrn_id = substr($final_dfrn_id,2);
|
|
||||||
|
|
||||||
if($final_dfrn_id != $orig_id) {
|
|
||||||
// did not decode properly - cannot trust this site
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$postvars['dfrn_id'] = $idtosend;
|
|
||||||
|
|
||||||
if(($rr['rel']) && ($rr['rel'] != REL_FAN) && (! $rr['blocked']) && (! $rr['readonly'])) {
|
|
||||||
$postvars['data'] = $atom;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$postvars['data'] = $atom_nowrite;
|
|
||||||
}
|
|
||||||
|
|
||||||
$xml = post_url($rr['notify'],$postvars);
|
|
||||||
|
|
||||||
if($debugging)
|
|
||||||
echo $xml;
|
|
||||||
|
|
||||||
$res = simplexml_load_string($xml);
|
|
||||||
|
|
||||||
// Currently there is no retry attempt for failed mail delivery.
|
|
||||||
// We need to handle this in the UI, report the non-deliverables and try again
|
|
||||||
|
|
||||||
if(($cmd == 'mail') && (intval($res->status) == 0)) {
|
|
||||||
|
|
||||||
$r = q("UPDATE `mail` SET `delivered` = 1 WHERE `id` = %d LIMIT 1",
|
$r = q("UPDATE `mail` SET `delivered` = 1 WHERE `id` = %d LIMIT 1",
|
||||||
intval($item_id)
|
intval($item_id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$debugging = false;
|
|
||||||
|
|
||||||
require_once('boot.php');
|
require_once('boot.php');
|
||||||
|
|
||||||
|
@ -18,6 +17,8 @@
|
||||||
|
|
||||||
require_once('include/Contact.php');
|
require_once('include/Contact.php');
|
||||||
|
|
||||||
|
$debugging = get_config('system','debugging');
|
||||||
|
|
||||||
$a->set_baseurl(get_config('system','url'));
|
$a->set_baseurl(get_config('system','url'));
|
||||||
|
|
||||||
$contacts = q("SELECT * FROM `contact`
|
$contacts = q("SELECT * FROM `contact`
|
||||||
|
|
|
@ -234,8 +234,10 @@ function dfrn_notify_post(&$a) {
|
||||||
|
|
||||||
if($datarray['type'] == 'remote-comment') {
|
if($datarray['type'] == 'remote-comment') {
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &",
|
|
||||||
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" $proc_debug &",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
|
|
||||||
if(($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
|
if(($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
|
||||||
|
|
|
@ -226,8 +226,9 @@ function item_post(&$a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" $proc_debug &",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
|
|
||||||
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
||||||
|
@ -314,10 +315,12 @@ function item_content(&$a) {
|
||||||
}
|
}
|
||||||
$drop_id = intval($item['id']);
|
$drop_id = intval($item['id']);
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
|
|
||||||
// send the notification upstream/downstream as the case may be
|
// send the notification upstream/downstream as the case may be
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" &",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" $proc_debug &",
|
||||||
array(), $foo));
|
array(), $foo));
|
||||||
|
|
||||||
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
||||||
|
|
|
@ -96,8 +96,9 @@ function like_content(&$a) {
|
||||||
);
|
);
|
||||||
|
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" $proc_debug &",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -163,8 +164,9 @@ EOT;
|
||||||
|
|
||||||
|
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" $proc_debug &",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
|
|
||||||
return; // NOTREACHED
|
return; // NOTREACHED
|
||||||
|
|
|
@ -68,9 +68,11 @@ function message_post(&$a) {
|
||||||
$post_id = $r[0]['id'];
|
$post_id = $r[0]['id'];
|
||||||
|
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
notice("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" $proc_debug &");
|
||||||
|
|
||||||
if($post_id) {
|
if($post_id) {
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" &",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" $proc_debug &",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
notice( t('Message sent.') . EOL );
|
notice( t('Message sent.') . EOL );
|
||||||
}
|
}
|
||||||
|
@ -136,8 +138,10 @@ function message_content(&$a) {
|
||||||
if(($a->argc > 2) && ($a->argv[1] == 'redeliver') && intval($a->argv[2])) {
|
if(($a->argc > 2) && ($a->argv[1] == 'redeliver') && intval($a->argv[2])) {
|
||||||
$post_id = intval($a->argv[2]);
|
$post_id = intval($a->argv[2]);
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" &",
|
|
||||||
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" $proc_debug & ",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
goaway($a->get_baseurl() . '/message' );
|
goaway($a->get_baseurl() . '/message' );
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,11 +125,12 @@ function photos_post(&$a) {
|
||||||
|
|
||||||
$drop_id = intval($rr['id']);
|
$drop_id = intval($rr['id']);
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
$proc_debug = get_config('system','proc_debug');
|
||||||
|
|
||||||
// send the notification upstream/downstream as the case may be
|
// send the notification upstream/downstream as the case may be
|
||||||
|
|
||||||
if($rr['visible'])
|
if($rr['visible'])
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" $proc_debug & ",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -165,10 +166,12 @@ function photos_post(&$a) {
|
||||||
$drop_id = intval($i[0]['id']);
|
$drop_id = intval($i[0]['id']);
|
||||||
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
|
|
||||||
|
$proc_debug = get_config('system','proc_debug']);
|
||||||
|
|
||||||
// send the notification upstream/downstream as the case may be
|
// send the notification upstream/downstream as the case may be
|
||||||
|
|
||||||
if($i[0]['visible'])
|
if($i[0]['visible'])
|
||||||
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ",
|
proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" $proc_debug & ",
|
||||||
array(),$foo));
|
array(),$foo));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,9 +77,6 @@ function profile_init(&$a) {
|
||||||
function profile_content(&$a, $update = 0) {
|
function profile_content(&$a, $update = 0) {
|
||||||
|
|
||||||
|
|
||||||
file_put_contents('uid.log',"{$_SERVER['QUERY_STRING']} ". session_id() . "\n", FILE_APPEND);
|
|
||||||
|
|
||||||
|
|
||||||
require_once("include/bbcode.php");
|
require_once("include/bbcode.php");
|
||||||
require_once('include/security.php');
|
require_once('include/security.php');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue