X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fdfrn_poll.php;h=0d703dfb3122523a2b3484665e91ead80cef7e2d;hb=7ae1e4620de35329350fd54b3598666e143ea0a0;hp=718aa165c6bbefd9a229e40f5e7a2d1c739a1dfd;hpb=26d748f6d8d7616b4a337350df69898716ec043e;p=friendica.git diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index 718aa165c6..0d703dfb31 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -26,15 +26,24 @@ function dfrn_poll_init(&$a) { $dfrn_id = substr($dfrn_id,2); } - if(($dfrn_id === '') && (! x($_POST,'dfrn_id')) && ($a->argc > 1)) { + if(($dfrn_id === '') && (! x($_POST,'dfrn_id'))) { if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { killme(); } - logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] ); + $user = ''; + if($a->argc > 1) { + $r = q("SELECT `hidewall`,`nickname` FROM `user` WHERE `user`.`nickname` = '%s' LIMIT 1", + dbesc($a->argv[1]) + ); + if((! count($r)) || (count($r) && $r[0]['hidewall'])) + killme(); + $user = $r[0]['nickname']; + } + + logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $user); header("Content-type: application/atom+xml"); - $o = get_feed_for($a, '', $a->argv[1],$last_update); - echo $o; + echo get_feed_for($a, '', $user,$last_update); killme(); } @@ -55,7 +64,7 @@ function dfrn_poll_init(&$a) { $my_id = '0:' . $dfrn_id; break; default: - goaway($a->get_baseurl()); + goaway(z_root()); break; // NOTREACHED } @@ -78,10 +87,16 @@ function dfrn_poll_init(&$a) { if((int) $xml->status == 1) { $_SESSION['authenticated'] = 1; + if(! x($_SESSION,'remote')) + $_SESSION['remote'] = array(); + + $_SESSION['remote'][] = array('cid' => $r[0]['id'],'uid' => $r[0]['uid'],'url' => $r[0]['url']); + $_SESSION['visitor_id'] = $r[0]['id']; $_SESSION['visitor_home'] = $r[0]['url']; + $_SESSION['visitor_handle'] = $r[0]['addr']; $_SESSION['visitor_visiting'] = $r[0]['uid']; - notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL); + info( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL); // Visitors get 1 day session. $session_id = session_id(); $expire = time() + 86400; @@ -94,7 +109,7 @@ function dfrn_poll_init(&$a) { $profile = $r[0]['nickname']; goaway((strlen($destination_url)) ? $destination_url : $a->get_baseurl() . '/profile/' . $profile); } - goaway($a->get_baseurl()); + goaway(z_root()); } @@ -192,7 +207,7 @@ function dfrn_poll_post(&$a) { $ptype = ((x($_POST,'type')) ? $_POST['type'] : ''); $dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0); $perm = ((x($_POST,'perm')) ? $_POST['perm'] : 'r'); - + if($ptype === 'profile-check') { if((strlen($challenge)) && (strlen($sec))) { @@ -291,7 +306,7 @@ function dfrn_poll_post(&$a) { $my_id = '0:' . $dfrn_id; break; default: - goaway($a->get_baseurl()); + goaway(z_root()); break; // NOTREACHED } @@ -351,8 +366,8 @@ function dfrn_poll_post(&$a) { intval($contact_id) ); } - } - + } + header("Content-type: application/atom+xml"); $o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction); echo $o; @@ -414,15 +429,17 @@ function dfrn_poll_content(&$a) { $my_id = '0:' . $dfrn_id; break; default: - goaway($a->get_baseurl()); + goaway(z_root()); break; // NOTREACHED } + $nickname = $a->argv[1]; + $r = q("SELECT `contact`.*, `user`.`username`, `user`.`nickname` FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `user`.`nickname` = '%s' $sql_extra LIMIT 1", - dbesc($a->argv[1]) + dbesc($nickname) ); if(count($r)) { @@ -431,7 +448,7 @@ function dfrn_poll_content(&$a) { $encrypted_id = ''; $id_str = $my_id . '.' . mt_rand(1000,9999); - if($r[0]['duplex'] && strlen($r[0]['pubkey'])) { + if(($r[0]['duplex'] && strlen($r[0]['pubkey'])) || (! strlen($r[0]['prvkey']))) { openssl_public_encrypt($hash,$challenge,$r[0]['pubkey']); openssl_public_encrypt($id_str,$encrypted_id,$r[0]['pubkey']); } @@ -472,7 +489,7 @@ function dfrn_poll_content(&$a) { )); } - $profile = $r[0]['nickname']; + $profile = ((count($r) && $r[0]['nickname']) ? $r[0]['nickname'] : $nickname); switch($destination_url) { case 'profile': @@ -504,10 +521,13 @@ function dfrn_poll_content(&$a) { if(((int) $xml->status == 0) && ($xml->challenge == $hash) && ($xml->sec == $sec)) { $_SESSION['authenticated'] = 1; + if(! x($_SESSION,'remote')) + $_SESSION['remote'] = array(); + $_SESSION['remote'][] = array('cid' => $r[0]['id'],'uid' => $r[0]['uid'],'url' => $r[0]['url']); $_SESSION['visitor_id'] = $r[0]['id']; $_SESSION['visitor_home'] = $r[0]['url']; $_SESSION['visitor_visiting'] = $r[0]['uid']; - notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL); + info( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL); // Visitors get 1 day session. $session_id = session_id(); $expire = time() + 86400;