diff --git a/apps/remoteStorage/appinfo/webfinger.php b/apps/remoteStorage/appinfo/webfinger.php index bb3fe1681b..7c0ab84605 100644 --- a/apps/remoteStorage/appinfo/webfinger.php +++ b/apps/remoteStorage/appinfo/webfinger.php @@ -1,6 +1,6 @@ + auth="/apps/remoteStorage/auth.php/"> diff --git a/apps/user_webfinger/appinfo/install.php b/apps/user_webfinger/appinfo/install.php index 678d57ae8f..c8d9a42742 100644 --- a/apps/user_webfinger/appinfo/install.php +++ b/apps/user_webfinger/appinfo/install.php @@ -1,4 +1,8 @@ '*', + 'Content-Type' => 'application/xml+xrd' +); $appInfoDir = __DIR__; $thisAppDir = dirname($appInfoDir); $appsDir = dirname($thisAppDir); @@ -17,6 +21,7 @@ if(isset($_SERVER['HTTPS'])) { } $lrddTmpl .= '://' . $serverName . $webRoot . '/apps/user_webfinger/webfinger.php?q={uri}'; $hostMetaPath = $docRoot . '/.well-known/host-meta'; +$hostMetaDir = $docRoot . '/.well-known'; $hostMetaContents = " " . $serverName . " @@ -24,7 +29,7 @@ $hostMetaContents = " Resource Descriptor "; -@mkdir(dirname($hostMetaPath)); +@mkdir($hostMetaDir); $hostMeta = fopen($hostMetaPath, 'w'); if(!$hostMeta) { die("Could not open " . $hostMetaPath . " for writing, please check permissions!"); @@ -33,3 +38,14 @@ if(!fwrite($hostMeta, $hostMetaContents, strlen($hostMetaContents))) { die("Could not write to " . $hostMetaPath . ", please check permissions!"); } fclose($hostMeta); + +// write custom headers into .htaccess: +$htaccess = fopen($hostMetaDir . '/.htaccess', 'w'); +//TODO: check compatibility! +fwrite($htaccess, " +\n"); +foreach($hostMetaHeader as $header => $value) { + fwrite($htaccess, "Header set " . $header . " \"" . $value . "\"\n"); +} +fwrite($htaccess, "\n"); +fclose($htaccess); diff --git a/apps/user_webfinger/webfinger.php b/apps/user_webfinger/webfinger.php index ecbfeed8e4..9ada473ca8 100644 --- a/apps/user_webfinger/webfinger.php +++ b/apps/user_webfinger/webfinger.php @@ -6,13 +6,13 @@ header("Content-Type: application/xrd+xml"); * To include your app in the webfinger XML, add a new script with file name * '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_ADDRESS ("user@host") and WF_ROOT ("https://host/owncloud"). + * "user"), WF_ID (user@host) and WF_BASEURL (e. g. https://host/owncloud). * An example could look like this: * * + * href="/apps/myApp/profile.php?user="> * * '* but can also use complex database queries to generate the webfinger result @@ -24,19 +24,25 @@ $SERVERROOT=str_replace("\\",'/',dirname(dirname(dirname(dirname(__FILE__))))); $SUBURI=substr(realpath($_SERVER["SCRIPT_FILENAME"]),strlen($SERVERROOT)); $WEBROOT=substr($SUBURI,0,-34); */ -require_once('../../lib/base.php'); -$id = $_GET['q']; +require_once('../../lib/base.php'); +$request = urldecode($_GET['q']); if($_GET['q']) { - $bits = explode('@', $_GET['q']); - $userName = $bits[0]; + $reqParts = explode('@', $request); + $userName = $reqParts[0]; + $hostName = $reqParts[1]; } else { - $id = ''; $userName = ''; + $hostName = ''; } if(substr($userName, 0, 5) == 'acct:') { $userName = substr($userName, 5); } +if($userName == "") { + $id = ""; +} else { + $id = $userName . '@' . $hostName; +} if(isset($_SERVER['HTTPS'])) { $baseAddress = 'https://'; } else { @@ -44,22 +50,19 @@ if(isset($_SERVER['HTTPS'])) { } $baseAddress .= $_SERVER['SERVER_NAME'].OC::$WEBROOT; define('WF_USER', $userName); -define('WF_ADDRESS', $id); -define('WF_ROOT', $baseAddress); +define('WF_ID', $id); +define('WF_BASEURL', $baseAddress); echo "<"; ?> ?xml version="1.0" encoding="UTF-8"?> - - acct: + + acct: