Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/apps.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Hülsmann <fh@cbix.de>2012-03-31 04:42:41 +0400
committerFlorian Hülsmann <fh@cbix.de>2012-03-31 04:42:41 +0400
commit7f69709c9325bf7a149abb492f9d76fbbf9a01d1 (patch)
treeb9220869d2d18d4b785d62d10b4e35841563838f /user_webfinger
parentee3e1039112006a0d2e089ce297c95a479587e0e (diff)
webfinger reimplementation started
Diffstat (limited to 'user_webfinger')
-rw-r--r--user_webfinger/.htaccess3
-rw-r--r--user_webfinger/appinfo/info.xml6
-rw-r--r--user_webfinger/host-meta1
-rw-r--r--user_webfinger/host-meta.php16
-rw-r--r--user_webfinger/webfinger.php57
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>