X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fredir.php;h=12f53900a7528c8826788aad408b384c23f4d176;hb=1c6535c0b45c32ccbb0e2bd49e5bb7a6d5435d27;hp=9223e5483c0c5b816485e8c7dd62ac88402bf3ca;hpb=43d5876e8b35d53a0bef5248c5d63e5bc209dbbf;p=friendica.git diff --git a/mod/redir.php b/mod/redir.php index 9223e5483c..12f53900a7 100644 --- a/mod/redir.php +++ b/mod/redir.php @@ -1,22 +1,39 @@ argc == 2 && intval($a->argv[1])) { + if( $con_url || (local_user() && $a->argc > 1 && intval($a->argv[1])) ) { - $cid = $a->argv[1]; + if($con_url) { + $con_url = str_replace('https', 'http', $con_url); - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($cid), - intval(local_user()) - ); + $r = q("SELECT * FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1", + dbesc($con_url), + intval(local_user()) + ); + + if((! dbm::is_result($r)) || ($r[0]['network'] !== NETWORK_DFRN)) + goaway(z_root()); + + $cid = $r[0]['id']; + } + else { + $cid = $a->argv[1]; - if((! count($r)) || ($r[0]['network'] !== NETWORK_DFRN)) - goaway(z_root()); + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($cid), + intval(local_user()) + ); + + if((! dbm::is_result($r)) || ($r[0]['network'] !== NETWORK_DFRN)) + goaway(z_root()); + } $dfrn_id = $orig_id = (($r[0]['issued-id']) ? $r[0]['issued-id'] : $r[0]['dfrn-id']); @@ -40,18 +57,20 @@ function redir_init(&$a) { intval(time() + 45) ); - logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG); + logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG); $dest = (($url) ? '&destination_url=' . $url : ''); - goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id - . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest ); + goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id + . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest . $quiet ); } - if(local_user()) - $handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3); - if(remote_user()) + if (local_user()) { + $handle = $a->user['nickname'] . '@' . substr(App::get_baseurl(),strpos(App::get_baseurl(),'://')+3); + } + if (remote_user()) { $handle = $_SESSION['handle']; + } - if($url) { + if ($url) { $url = str_replace('{zid}','&zid=' . $handle,$url); goaway($url); }