admittedly local magic-auth is easy so that's mostly done. Now it gets hard.
This commit is contained in:
parent
2a782597ba
commit
dd2483221d
@ -55,10 +55,9 @@ function create_identity($arr) {
|
|||||||
$sig = base64url_encode(rsa_sign($guid,$key['prvkey']));
|
$sig = base64url_encode(rsa_sign($guid,$key['prvkey']));
|
||||||
$hash = base64url_encode(hash('whirlpool',$guid . $sig,true));
|
$hash = base64url_encode(hash('whirlpool',$guid . $sig,true));
|
||||||
|
|
||||||
$r = q("select channel_id from channel where channel_account_id = %d and channel_primary = 1 limit 1",
|
// Force primary until importation works, then we'll offer a choice
|
||||||
intval($arr['account_id'])
|
|
||||||
);
|
$primary = true;
|
||||||
$primary = (! $r) ? true : false;
|
|
||||||
|
|
||||||
$r = q("insert into channel ( channel_account_id, channel_primary,
|
$r = q("insert into channel ( channel_account_id, channel_primary,
|
||||||
channel_name, channel_address, channel_guid, channel_guid_sig,
|
channel_name, channel_address, channel_guid, channel_guid_sig,
|
||||||
|
@ -40,7 +40,7 @@ function chanview_content(&$a) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$o = replace_macros(get_markup_template('chanview.tpl'),array(
|
$o = replace_macros(get_markup_template('chanview.tpl'),array(
|
||||||
'$url' => $xchan['xchan_url']
|
'$url' => z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr']
|
||||||
));
|
));
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
|
@ -3,9 +3,57 @@
|
|||||||
function magic_init(&$a) {
|
function magic_init(&$a) {
|
||||||
|
|
||||||
$url = ((x($_REQUEST,'url')) ? $_REQUEST['url'] : '');
|
$url = ((x($_REQUEST,'url')) ? $_REQUEST['url'] : '');
|
||||||
|
$addr = ((x($_REQUEST,'addr')) ? $_REQUEST['addr'] : '');
|
||||||
|
$hash = ((x($_REQUEST,'hash')) ? $_REQUEST['hash'] : '');
|
||||||
|
$dest = ((x($_REQUEST,'dest')) ? $_REQUEST['dest'] : '');
|
||||||
|
|
||||||
|
|
||||||
if(local_user() && argc() > 1 && intval(argv(1))) {
|
if(local_user()) {
|
||||||
|
|
||||||
|
if($hash) {
|
||||||
|
$x = q("select xchan.xchan_url, hubloc.* from xchan left join hubloc on xchan_hash = hubloc_hash
|
||||||
|
where hublock_hash = '%s' and (hubloc_flags & %d) limit 1",
|
||||||
|
intval(HUBLOC_FLAGS_PRIMARY)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
elseif($addr) {
|
||||||
|
$x = q("select hubloc.* from xchan left join hubloc on xchan_hash = hubloc_hash
|
||||||
|
where xchan_addr = '%s' and (hubloc_flags & %d) limit 1",
|
||||||
|
dbesc($addr),
|
||||||
|
intval(HUBLOC_FLAGS_PRIMARY)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(! $x) {
|
||||||
|
notice( t('Channel not found.') . EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($x[0]['hubloc_url'] === z_root()) {
|
||||||
|
$webbie = substr($x[0]['hubloc_addr'],0,strpos('@',$x[0]['hubloc_addr']));
|
||||||
|
switch($dest) {
|
||||||
|
case 'channel':
|
||||||
|
$desturl = z_root() . '/channel/' . $webbie;
|
||||||
|
break;
|
||||||
|
case 'photos':
|
||||||
|
$desturl = z_root() . '/photos/' . $webbie;
|
||||||
|
break;
|
||||||
|
case 'profile':
|
||||||
|
$desturl = z_root() . '/profile/' . $webbie;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$desturl = $dest;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// We are already authenticated on this site and a registered observer.
|
||||||
|
// Just redirect.
|
||||||
|
goaway($desturl);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$cid = $argv(1);
|
$cid = $argv(1);
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
2012-12-12.167
|
2012-12-13.168
|
||||||
|
Reference in New Issue
Block a user