From c0094aa4f865defe8be63963b32f69d05e258f48 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 6 Jun 2011 16:26:11 -0700 Subject: [PATCH] strict privacy mode (Friendika-Z) - refuse to talk to networks with privacy issues --- boot.php | 14 +++++++++++++- include/notifier.php | 10 ++++++++-- mod/dfrn_request.php | 10 ++++++---- mod/follow.php | 5 +++-- mod/salmon.php | 5 +++++ 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 1e51a47239..12689b4ab0 100644 --- a/boot.php +++ b/boot.php @@ -527,8 +527,20 @@ function check_config(&$a) { $plugins = get_config('system','addon'); $plugins_arr = array(); - if($plugins) + if($plugins) { $plugins_arr = explode(',',str_replace(' ', '',$plugins)); + if(get_config('system','strict_privacy')) { + unset($a->config['system']['huburl']); + for($x = 0; $x < count($plugins_arr); $x ++) { + if( $plugins_arr[$x] === 'facebook' + || $plugins_arr[$x] === 'twitter' + || $plugins_arr[$x] === 'statusnet') { + unset($plugins_arr[$x]); + } + } + } + } + $a->plugins = $plugins_arr; diff --git a/include/notifier.php b/include/notifier.php index db2542849d..98e38fb115 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -27,6 +27,8 @@ function notifier_run($argv, $argc){ $a->set_baseurl(get_config('system','url')); + $prv = get_config('system','strict_privacy'); + logger('notifier: invoked: ' . print_r($argv,true)); $cmd = $argv[1]; @@ -329,6 +331,10 @@ function notifier_run($argv, $argc){ } break; case 'stat': + + if($prv) + break; + if($followup && $contact['notify']) { logger('notifier: slapdelivery: ' . $contact['name']); $deliver_status = slapper($owner,$contact['notify'],$slap); @@ -373,7 +379,7 @@ function notifier_run($argv, $argc){ } break; case 'mail': - + // WARNING: does not currently convert to RFC2047 header encodings, etc. $addr = $contact['addr']; @@ -459,7 +465,7 @@ function notifier_run($argv, $argc){ if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) { foreach($url_recipients as $url) { - if($url) { + if($url && (! $prv)) { logger('notifier: urldelivery: ' . $url); $deliver_status = slapper($owner,$url,$slap); // TODO: redeliver/queue these items on failure, though there is no contact record diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 537a7a497a..338dc9cf1d 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -626,19 +626,21 @@ function dfrn_request_content(&$a) { else $tpl = get_markup_template('auto_request.tpl'); + $prv = get_config('system','strict_privacy'); + $o .= replace_macros($tpl,array( '$header' => t('Friend/Connection Request'), - '$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'), + '$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo') . (($prv) ? ', testuser@identi.ca' : ''), '$pls_answer' => t('Please answer the following:'), - '$does_know' => t('Does $name know you?'), + '$does_know' => sprintf( t('Does %s know you?'),$a->profile['name']), '$yes' => t('Yes'), '$no' => t('No'), '$add_note' => t('Add a personal note:'), '$page_desc' => t("Please enter your 'Identity Address' from one of the following supported social networks:"), '$friendika' => t('Friendika'), - '$statusnet' => t('StatusNet/Federated Social Web'), + '$statusnet' => (($prv) ? t('StatusNet/Federated Social Web') : ''), '$private_net' => t("Private \x28secure\x29 network"), - '$public_net' => t("Public \x28insecure\x29 network"), + '$public_net' => (($prv) ? t("Public \x28insecure\x29 network") : ''), '$your_address' => t('Your Identity Address:'), '$submit' => t('Submit Request'), '$cancel' => t('Cancel'), diff --git a/mod/follow.php b/mod/follow.php index 9a9f9da7d8..31cfcfb64c 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -22,10 +22,8 @@ function follow_post(&$a) { // NOTREACHED } - $ret = probe_url($url); - if($ret['network'] === NETWORK_DFRN) { if(strlen($a->path)) $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']); @@ -36,6 +34,9 @@ function follow_post(&$a) { // NOTREACHED } + elseif(get_config('system','strict_privacy')) { + unset($ret['notify']); + } // do we have enough information? diff --git a/mod/salmon.php b/mod/salmon.php index c2f76aa0a6..bf33033d81 100644 --- a/mod/salmon.php +++ b/mod/salmon.php @@ -192,6 +192,11 @@ function salmon_post(&$a) { // NOTREACHED } + // Check if we're allowed to talk to insecure networks + + if(get_config('system','strict_privacy')) + salmon_return(400); + require_once('include/items.php'); // Placeholder for hub discovery. We shouldn't find any hubs