mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-21 02:55:17 +00:00
69 lines
No EOL
1.6 KiB
PHP
69 lines
No EOL
1.6 KiB
PHP
<?php
|
|
|
|
|
|
function regdir_init(&$a) {
|
|
|
|
$result = array('success' => false);
|
|
|
|
$url = $_REQUEST['url'];
|
|
|
|
|
|
// we probably don't need the realm as we will find out in the probe.
|
|
// What we may want to die is throw an error if you're trying to register in a different realm
|
|
// so this configuration issue can be discovered.
|
|
|
|
$realm = $_REQUEST['realm'];
|
|
if(! $realm)
|
|
$realm = DIRECTORY_REALM;
|
|
|
|
$dirmode = intval(get_config('system','directory_mode'));
|
|
|
|
if($dirmode == DIRECTORY_MODE_NORMAL) {
|
|
$ret['message'] = t('This site is not a directory server');
|
|
json_return_and_die($ret);
|
|
}
|
|
|
|
$m = null;
|
|
if($url) {
|
|
$m = parse_url($url);
|
|
|
|
if((! $m) || (! @dns_get_record($m['host'], DNS_A + DNS_CNAME + DNS_PTR)) || (! filter_var($m['host'], FILTER_VALIDATE_IP) )) {
|
|
$result['message'] = 'unparseable url';
|
|
json_return_and_die($result);
|
|
}
|
|
|
|
$f = zot_finger('sys@' . $m['host']);
|
|
if($f['success']) {
|
|
$j = json_decode($f['body'],true);
|
|
if($j['success'] && $j['guid']) {
|
|
$x = import_xchan($j);
|
|
if($x['success']) {
|
|
$result['success'] = true;
|
|
json_return_and_die($result);
|
|
}
|
|
}
|
|
}
|
|
|
|
json_return_and_die($result);
|
|
}
|
|
else {
|
|
if($dirmode == DIRECTORY_MODE_STANDALONE) {
|
|
$r = array(array('site_url' => z_root()));
|
|
}
|
|
else {
|
|
$r = q("select site_url from site where site_flags in ( 1, 2 ) and site_realm = '%s'",
|
|
dbesc(get_directory_realm())
|
|
);
|
|
}
|
|
if($r) {
|
|
$result['success'] = true;
|
|
$result['directories'] = array();
|
|
foreach($r as $rr)
|
|
$result['directories'][] = $rr['site_url'];
|
|
json_return_and_die($result);
|
|
}
|
|
}
|
|
json_return_and_die($result);
|
|
|
|
|
|
}
|