diff --git a/boot.php b/boot.php index 646f968cd..06094e42b 100644 --- a/boot.php +++ b/boot.php @@ -521,6 +521,13 @@ if(! class_exists('App')) { $this->module = 'hostxrd'; } + if(strstr($this->cmd,'.well-known/zot-guid/')) { + $this->argc -= 1; + array_shift($this->argv); + $this->argv[0] = 'zfinger'; + $this->module = 'zfinger'; + } + /** * See if there is any page number information, and initialise * pagination diff --git a/mod/zfinger.php b/mod/zfinger.php new file mode 100644 index 000000000..1434471ca --- /dev/null +++ b/mod/zfinger.php @@ -0,0 +1,42 @@ +argv,true)); + + $ret = array('success' => false, 'message' => ''); + if(argc() > 1) { + $zguid = argv(1); + + if(strlen($zguid)) { + $r = q("select * from entity where entity_global_id = '%s' limit 1", + dbesc($zguid) + ); + if(! ($r && count($r))) { + $ret['message'] = 'Item not found.'; + json_return_and_die($ret); + } + } + else { + $ret['message'] = 'Invalid request'; + json_return_and_die($ret); + } + $e = $r[0]; + + $ret['success'] = true; + + $ret['guid'] = $e['entity_global_id']; + $ret['url'] = z_root(); + $ret['primary'] = (bool) $e['entity_primary']; + $ret['callback'] = z_root() . '/' . 'post'; + $ret['sitekey'] = get_config('system','pubkey'); + $ret['key'] = $e['pubkey']; + + // more stuff + + json_return_and_die($ret); + + } + $ret['message'] = 'Item not found.'; + json_return_and_die($ret); +} \ No newline at end of file