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.
This commit is contained in:
parent
acac58fba0
commit
b1a92d620e
15
boot.php
15
boot.php
@ -49,7 +49,7 @@ define ( 'RED_PLATFORM', 'redmatrix' );
|
||||
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
|
||||
define ( 'ZOT_REVISION', 1 );
|
||||
|
||||
define ( 'DB_UPDATE_VERSION', 1135 );
|
||||
define ( 'DB_UPDATE_VERSION', 1136 );
|
||||
|
||||
/**
|
||||
* Constant with a HTML line break.
|
||||
@ -2194,6 +2194,19 @@ function get_directory_realm() {
|
||||
return DIRECTORY_REALM;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the primary directory server.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_directory_primary() {
|
||||
if($x = get_config('system', 'directory_primary'))
|
||||
return $x;
|
||||
|
||||
return DIRECTORY_FALLBACK_MASTER;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief return relative date of last completed poller execution
|
||||
|
@ -164,6 +164,10 @@ function poller_run($argv, $argc){
|
||||
db_utcnow(), db_quoteinterval('14 DAY')
|
||||
);
|
||||
|
||||
$dirmode = intval(get_config('system','directory_mode'));
|
||||
if($dirmode == DIRECTORY_MODE_SECONDARY) {
|
||||
logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . z_root() . '&realm=' . get_directory_realm()),true));
|
||||
}
|
||||
|
||||
/**
|
||||
* End Cron Weekly
|
||||
|
@ -1533,6 +1533,7 @@ CREATE TABLE IF NOT EXISTS `xlink` (
|
||||
`xlink_rating_text` TEXT NOT NULL DEFAULT '',
|
||||
`xlink_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`xlink_static` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`xlink_sig` text NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`xlink_id`),
|
||||
KEY `xlink_xchan` (`xlink_xchan`),
|
||||
KEY `xlink_link` (`xlink_link`),
|
||||
|
@ -1146,6 +1146,7 @@ CREATE TABLE "xlink" (
|
||||
"xlink_rating_text" TEXT NOT NULL DEFAULT '',
|
||||
"xlink_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
|
||||
"xlink_static" numeric(1) NOT NULL DEFAULT '0',
|
||||
"xlink_sig" text NOT NULL DEFAULT '',
|
||||
PRIMARY KEY ("xlink_id")
|
||||
);
|
||||
create index "xlink_xchan" on xlink ("xlink_xchan");
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
define( 'UPDATE_VERSION' , 1135 );
|
||||
define( 'UPDATE_VERSION' , 1136 );
|
||||
|
||||
/**
|
||||
*
|
||||
@ -1549,4 +1549,11 @@ function update_r1134() {
|
||||
if($r)
|
||||
return UPDATE_SUCCESS;
|
||||
return UPDATE_FAILED;
|
||||
}
|
||||
|
||||
function update_r1135() {
|
||||
$r = q("ALTER TABLE xlink ADD xlink_sig TEXT NOT NULL DEFAULT ''");
|
||||
if($r)
|
||||
return UPDATE_SUCCESS;
|
||||
return UPDATE_FAILED;
|
||||
}
|
64
mod/regdir.php
Normal file
64
mod/regdir.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?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 {
|
||||
$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);
|
||||
|
||||
|
||||
}
|
@ -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)
|
||||
|
@ -1 +1 @@
|
||||
2015-01-31.933
|
||||
2015-02-01.934
|
||||
|
Reference in New Issue
Block a user