diff options
author | Florian Hülsmann <fh@cbix.de> | 2012-03-31 04:42:41 +0400 |
---|---|---|
committer | Florian Hülsmann <fh@cbix.de> | 2012-03-31 04:42:41 +0400 |
commit | 7f69709c9325bf7a149abb492f9d76fbbf9a01d1 (patch) | |
tree | b9220869d2d18d4b785d62d10b4e35841563838f /user_webfinger | |
parent | ee3e1039112006a0d2e089ce297c95a479587e0e (diff) |
webfinger reimplementation started
Diffstat (limited to 'user_webfinger')
-rw-r--r-- | user_webfinger/.htaccess | 3 | ||||
-rw-r--r-- | user_webfinger/appinfo/info.xml | 6 | ||||
-rw-r--r-- | user_webfinger/host-meta | 1 | ||||
-rw-r--r-- | user_webfinger/host-meta.php | 16 | ||||
-rw-r--r-- | user_webfinger/webfinger.php | 57 |
5 files changed, 45 insertions, 38 deletions
diff --git a/user_webfinger/.htaccess b/user_webfinger/.htaccess deleted file mode 100644 index 4d4d2e9c5..000000000 --- a/user_webfinger/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -RewriteEngine On -RewriteBase / -RewriteRule host-meta$ \/\.well-known\/host-meta\.php [L] diff --git a/user_webfinger/appinfo/info.xml b/user_webfinger/appinfo/info.xml index 55cf2cf22..d47fb723a 100644 --- a/user_webfinger/appinfo/info.xml +++ b/user_webfinger/appinfo/info.xml @@ -2,9 +2,9 @@ <info> <id>user_webfinger</id> <name>Webfinger</name> - <description>Provide WebFinger for all users so they get a user address like user@owncloudinstance which can be used for unhosted applications. If you don't run ownCloud in the root of your domain, for instance if you run it on example.com/owncloud/, then make sure you link example.com/.well-known/ to example.com/owncloud/apps/user_webfinger/ - by running something like "ln -s /var/www/owncloud/apps/user_webfinger /var/www/.well-known". Only enable this app if you run this ownCloud installation on a public web address, not if you run it on an intranet or on localhost.</description> - <version>0.2</version> + <description>Provide WebFinger for all users so they get a user address like user@owncloudinstance which can be used for external applications. Other apps can provide information for webfinger requests, such as remoteStorage compatibility.</description> + <version>0.3</version> <licence>AGPL or MIT</licence> - <author>Michiel de Jong</author> + <author>Michiel de Jong, Florian Hülsmann</author> <require>2</require> </info> diff --git a/user_webfinger/host-meta b/user_webfinger/host-meta deleted file mode 100644 index dfaf36361..000000000 --- a/user_webfinger/host-meta +++ /dev/null @@ -1 +0,0 @@ -please run 'a2enmod rewrite' on your server, set 'AllowOverride All' for /var/www in /etc/apache2/sites-enabled/000-default or equivalent, and then run '/etc/init.d/apache2 restart' diff --git a/user_webfinger/host-meta.php b/user_webfinger/host-meta.php deleted file mode 100644 index ac577cf9a..000000000 --- a/user_webfinger/host-meta.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -if($_SERVER['SCRIPT_NAME'] == '/.well-known/host-meta.php') { - header("Access-Control-Allow-Origin: *"); -} else { - header('Please-first: activate'); -} -header("Content-Type: application/xrd+xml"); -echo "<"; -?> -?xml version="1.0" encoding="UTF-8"?> -<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" xmlns:hm="http://host-meta.net/xrd/1.0"> - <hm:Host xmlns="http://host-meta.net/xrd/1.0"><?php echo $_SERVER['SERVER_NAME'] ?></hm:Host> - <Link rel="lrdd" template="http<?php echo (isset($_SERVER['HTTPS'])?'s':''); ?>://<?php echo $_SERVER['SERVER_NAME'] ?>/.well-known/webfinger.php?q={uri}"> - </Link> -</XRD> - diff --git a/user_webfinger/webfinger.php b/user_webfinger/webfinger.php index 5c2a24aa0..ecbfeed8e 100644 --- a/user_webfinger/webfinger.php +++ b/user_webfinger/webfinger.php @@ -1,41 +1,68 @@ <?php -if($_SERVER['SCRIPT_NAME'] == '/.well-known/webfinger.php') { - header("Access-Control-Allow-Origin: *"); -} else { - header('Please-first: activate'); -} +header("Access-Control-Allow-Origin: *"); 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"). + * An example could look like this: + * + * <Link + * rel="myProfile" + * type="text/html" + * href="<?php echo WF_ROOT; ?>/apps/myApp/profile.php?user=<?php echo WF_USER; ?>"> + * </Link> + * + '* but can also use complex database queries to generate the webfinger result + **/ // calculate the documentroot // modified version of the one in lib/base.php that takes the .well-known symlink into account -$DOCUMENTROOT=realpath($_SERVER['DOCUMENT_ROOT']); +/*$DOCUMENTROOT=realpath($_SERVER['DOCUMENT_ROOT']); $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']; if($_GET['q']) { $bits = explode('@', $_GET['q']); $userName = $bits[0]; } else { + $id = ''; $userName = ''; } if(substr($userName, 0, 5) == 'acct:') { $userName = substr($userName, 5); } if(isset($_SERVER['HTTPS'])) { - $baseAddress = 'https://'.$_SERVER['SERVER_NAME'].'/apps/remoteStorage/'; + $baseAddress = 'https://'; } else { - $baseAddress = 'http://'.$_SERVER['SERVER_NAME'].'/apps/remoteStorage/'; + $baseAddress = 'http://'; } +$baseAddress .= $_SERVER['SERVER_NAME'].OC::$WEBROOT; +define('WF_USER', $userName); +define('WF_ADDRESS', $id); +define('WF_ROOT', $baseAddress); echo "<"; ?> ?xml version="1.0" encoding="UTF-8"?> <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" xmlns:hm="http://host-meta.net/xrd/1.0"> - <hm:Host xmlns="http://host-meta.net/xrd/1.0"><?php echo $_SERVER['SERVER_NAME'] ?></hm:Host> - <Link - rel="remoteStorage" - template="<?php echo $baseAddress ?>WebDAV.php/<?php echo $userName ?>/remoteStorage/{category}/" - api="WebDAV" - auth="<?php echo $baseAddress; ?>auth.php/<?php echo $userName ?>" - ></Link> + <hm:Host xmlns="http://host-meta.net/xrd/1.0"><?php echo $_SERVER['SERVER_NAME']; ?></hm:Host> + <Subject>acct:<?php echo $userName . '@' . $_SERVER['SERVER_NAME'] ?></Subject> +<?php +$apps = OC_Appconfig::getApps(); +foreach($apps as $app) { + //echo "checking $app...\n"; + if(OC_App::isEnabled($app)) { + //echo "is enabled\n"; + if(is_file(OC::$APPSROOT . '/apps/' . $app . '/appinfo/webfinger.php')) { + //echo "has webfinger.php\n"; + require($app . '/appinfo/webfinger.php'); + } + } +} +?> </XRD> |