nextcloud/apps/user_webfinger/webfinger.php

65 lines
1.6 KiB
PHP
Raw Normal View History

2011-09-12 02:12:34 +04:00
<?php
2012-08-10 12:01:17 +04:00
if (!OCP\App::isEnabled("user_webfinger")) {
return;
}
2012-03-31 04:42:41 +04:00
header("Access-Control-Allow-Origin: *");
2012-05-11 17:26:45 +04:00
header("Content-Type: application/xrd+json");
2012-03-31 04:42:41 +04:00
/**
2012-08-13 01:58:55 +04:00
* To include your app in the webfinger JSON, add a new script with file name
2012-03-31 04:42:41 +04:00
* 'webfinger.php' to /apps/yourapp/appinfo/, which prints out the XML parts
* to be included. That script can make use of the constants WF_USER (e. g.
* "user"), WF_ID (user@host) and WF_BASEURL (e. g. https://host/owncloud).
2012-03-31 04:42:41 +04:00
* An example could look like this:
*
2012-08-13 01:58:55 +04:00
* {
* "rel":"myProfile",
* "type":"text/html",
* "href":"<?php echo WF_BASEURL; ?>/apps/myApp/profile.php?user=<?php echo WF_USER; ?>"
* }
2012-03-31 04:42:41 +04:00
*
2012-08-10 12:01:17 +04:00
* but can also use complex database queries to generate the webfinger result
2012-03-31 04:42:41 +04:00
**/
2011-09-12 02:12:34 +04:00
$userName = '';
$hostName = '';
2012-05-07 11:26:54 +04:00
$request = strip_tags(urldecode($_GET['q']));
2011-09-12 02:12:34 +04:00
if($_GET['q']) {
$reqParts = explode('@', $request);
if(count($reqParts)==2) {
2012-05-07 11:51:37 +04:00
$userName = $reqParts[0];
$hostName = $reqParts[1];
}
2011-09-12 02:12:34 +04:00
}
if(substr($userName, 0, 5) == 'acct:') {
$userName = substr($userName, 5);
}
if($userName == "") {
$id = "";
} else {
$id = $userName . '@' . $hostName;
}
if(isset($_SERVER['HTTPS'])) {
2012-03-31 04:42:41 +04:00
$baseAddress = 'https://';
} else {
2012-03-31 04:42:41 +04:00
$baseAddress = 'http://';
}
2012-03-31 04:42:41 +04:00
$baseAddress .= $_SERVER['SERVER_NAME'].OC::$WEBROOT;
2012-05-07 13:15:24 +04:00
if(empty($id)) {
header("HTTP/1.0 400 Bad Request");
}
2012-03-31 04:42:41 +04:00
define('WF_USER', $userName);
define('WF_ID', $id);
define('WF_BASEURL', $baseAddress);
2012-05-11 17:26:45 +04:00
echo "{\"links\":[";
2012-03-31 04:42:41 +04:00
$apps = OC_Appconfig::getApps();
foreach($apps as $app) {
2012-05-02 02:50:26 +04:00
if(OCP\App::isEnabled($app)) {
if(is_file(OC_App::getAppPath($app). '/appinfo/webfinger.php')) {
2012-03-31 04:42:41 +04:00
require($app . '/appinfo/webfinger.php');
}
}
}
2012-05-11 17:26:45 +04:00
echo "]}";