From b1a92d620ebf760a3cfd83f6fb62990494d3ad60 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 1 Feb 2015 15:10:52 -0800 Subject: two tracks proceeding in parallel - first adding the ability to store a digital signature with ratings so that directories can pass them around, second provide some directory registration functions so we can obtain a list of directories from somewhere (to pass ratings around between them). This gives the primary directory role some value as that is where you register your directory. --- mod/regdir.php | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mod/zfinger.php | 9 +++++++- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 mod/regdir.php (limited to 'mod') diff --git a/mod/regdir.php b/mod/regdir.php new file mode 100644 index 000000000..c00187978 --- /dev/null +++ b/mod/regdir.php @@ -0,0 +1,64 @@ + 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 { + $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); + + +} \ No newline at end of file diff --git a/mod/zfinger.php b/mod/zfinger.php index 6f4febc6f..f4b7efd96 100644 --- a/mod/zfinger.php +++ b/mod/zfinger.php @@ -99,13 +99,14 @@ function zfinger_init(&$a) { $id = $e['channel_id']; + $sys_channel = (($e['channel_pageflags'] & PAGE_SYSTEM) ? true : false); $special_channel = (($e['channel_pageflags'] & PAGE_PREMIUM) ? true : false); $adult_channel = (($e['channel_pageflags'] & PAGE_ADULT) ? true : false); $censored = (($e['channel_pageflags'] & PAGE_CENSORED) ? true : false); $searchable = (($e['channel_pageflags'] & PAGE_HIDDEN) ? false : true); $deleted = (($e['xchan_flags'] & XCHAN_FLAGS_DELETED) ? true : false); - if($deleted || $censored) + if($deleted || $censored || $sys_channel) $searchable = false; $public_forum = false; @@ -237,6 +238,12 @@ function zfinger_init(&$a) { $dirmode = get_config('system','directory_mode'); if(($dirmode === false) || ($dirmode == DIRECTORY_MODE_NORMAL)) $ret['site']['directory_mode'] = 'normal'; + + // downgrade mis-configured primaries + + if($dirmode == DIRECTORY_MODE_PRIMARY && z_root() != get_directory_primary()) + $dirmode = DIRECTORY_MODE_SECONDARY; + if($dirmode == DIRECTORY_MODE_PRIMARY) $ret['site']['directory_mode'] = 'primary'; elseif($dirmode == DIRECTORY_MODE_SECONDARY) -- cgit v1.2.3 From e58bef049d7736d448f7bb5688affe491b9e24b1 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 1 Feb 2015 15:41:01 -0800 Subject: admin/dbsync not reporting failed updates --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mod') diff --git a/mod/admin.php b/mod/admin.php index ec922cc72..e1808fd55 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -562,7 +562,7 @@ function admin_page_dbsync(&$a) { if(count($r)) { foreach($r as $rr) { $upd = intval(substr($rr['k'],8)); - if($upd < 1139 || $rr['v'] === 'success') + if($rr['v'] === 'success') continue; $failed[] = $upd; } -- cgit v1.2.3