2016-04-19 03:38:38 +00:00
|
|
|
<?php
|
2021-12-03 03:01:39 +00:00
|
|
|
|
2016-04-19 03:38:38 +00:00
|
|
|
namespace Zotlabs\Module;
|
|
|
|
|
2020-06-29 03:24:36 +00:00
|
|
|
use App;
|
|
|
|
use Zotlabs\Web\Controller;
|
2022-01-25 01:26:12 +00:00
|
|
|
use Zotlabs\Lib\Channel;
|
2016-04-19 03:38:38 +00:00
|
|
|
|
2021-12-02 23:02:31 +00:00
|
|
|
class Rmagic extends Controller
|
|
|
|
{
|
2016-04-19 03:38:38 +00:00
|
|
|
|
2021-12-02 23:02:31 +00:00
|
|
|
public function init()
|
|
|
|
{
|
|
|
|
|
|
|
|
if (local_channel()) {
|
|
|
|
goaway(z_root());
|
|
|
|
}
|
|
|
|
|
2022-01-25 01:26:12 +00:00
|
|
|
$me = Channel::get_my_address();
|
2021-12-02 23:02:31 +00:00
|
|
|
if ($me) {
|
2021-12-03 03:01:39 +00:00
|
|
|
$r = q(
|
|
|
|
"select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
|
2021-12-02 23:02:31 +00:00
|
|
|
dbesc($me)
|
|
|
|
);
|
|
|
|
if ($r) {
|
|
|
|
if ($r[0]['hubloc_url'] === z_root()) {
|
|
|
|
goaway(z_root() . '/login');
|
|
|
|
}
|
|
|
|
$dest = bin2hex(z_root() . '/' . str_replace(['rmagic', 'zid='], ['', 'zid_='], App::$query_string));
|
|
|
|
goaway($r[0]['hubloc_url'] . '/magic' . '?f=&owa=1&bdest=' . $dest);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function post()
|
|
|
|
{
|
|
|
|
|
|
|
|
$address = trim($_REQUEST['address']);
|
|
|
|
|
|
|
|
if (strpos($address, '@') === false) {
|
|
|
|
$arr = ['address' => $address];
|
|
|
|
call_hooks('reverse_magic_auth', $arr);
|
|
|
|
|
|
|
|
// if they're still here...
|
|
|
|
notice(t('Authentication failed.') . EOL);
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
// Presumed Red identity. Perform reverse magic auth
|
|
|
|
|
|
|
|
if (strpos($address, '@') === false) {
|
|
|
|
notice('Invalid address.');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$r = null;
|
|
|
|
if ($address) {
|
2021-12-03 03:01:39 +00:00
|
|
|
$r = q(
|
|
|
|
"select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
|
2021-12-02 23:02:31 +00:00
|
|
|
dbesc($address)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
if ($r) {
|
|
|
|
$url = $r[0]['hubloc_url'];
|
|
|
|
} else {
|
|
|
|
$url = 'https://' . substr($address, strpos($address, '@') + 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($url) {
|
|
|
|
if ($_SESSION['return_url']) {
|
|
|
|
$dest = bin2hex(z_root() . '/' . str_replace('zid=', 'zid_=', $_SESSION['return_url']));
|
|
|
|
} else {
|
|
|
|
$dest = bin2hex(z_root() . '/' . str_replace(['rmagic', 'zid='], ['', 'zid_='], App::$query_string));
|
|
|
|
}
|
|
|
|
goaway($url . '/magic' . '?f=&owa=1&bdest=' . $dest);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function get()
|
|
|
|
{
|
2021-12-03 03:01:39 +00:00
|
|
|
return replace_macros(
|
|
|
|
get_markup_template('rmagic.tpl'),
|
2021-12-02 23:02:31 +00:00
|
|
|
[
|
|
|
|
'$title' => t('Remote Authentication'),
|
|
|
|
'$address' => ['address', t('Enter your channel address (e.g. channel@example.com)'), '', ''],
|
|
|
|
'$action' => 'rmagic',
|
|
|
|
'$method' => 'post',
|
|
|
|
'$submit' => t('Authenticate')
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
2016-04-19 03:38:38 +00:00
|
|
|
}
|