aboutsummaryrefslogtreecommitdiff
path: root/mod/oauth_api/vendors/oauth/example/server
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-03-15 03:46:37 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-03-15 03:46:37 +0000
commit6c8c03142db734678d460ee085a73df1d05a88a1 (patch)
tree2ae02d3f7f68fbc7c16aed798dcae16047531767 /mod/oauth_api/vendors/oauth/example/server
parent74d029022863a78500ec76bdf000b781b5838544 (diff)
downloadelgg-6c8c03142db734678d460ee085a73df1d05a88a1.tar.gz
elgg-6c8c03142db734678d460ee085a73df1d05a88a1.tar.bz2
Refs #3115. Moved oauth_lib to oauth_api.
git-svn-id: http://code.elgg.org/elgg/trunk@8715 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/oauth_api/vendors/oauth/example/server')
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/INSTALL53
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/init.php127
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl2
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl13
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl21
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl41
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/hello.php65
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/index.php37
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/logon.php55
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/oauth.php77
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/register.php28
-rw-r--r--mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php71
13 files changed, 592 insertions, 0 deletions
diff --git a/mod/oauth_api/vendors/oauth/example/server/INSTALL b/mod/oauth_api/vendors/oauth/example/server/INSTALL
new file mode 100644
index 000000000..249c85e9d
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/INSTALL
@@ -0,0 +1,53 @@
+In this example I assume that oauth-php lives in /home/john/src/oauth-php
+
+
+1) Create a virtual host and set the DB_DSN VARIABLE to the DSN of your (mysql) database.
+
+Example
+<VirtualHost *>
+ ServerAdmin admin@localhost
+ ServerName hello.local
+ DocumentRoot /home/john/src/oauth-php/example/server/www
+
+ UseCanonicalName Off
+ ServerSignature On
+
+ SetEnv DB_DSN mysql://foo:bar@localhost/oauth_example_server_db
+
+ <Directory "home/john/src/oauth-php/example/server/www">
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+
+ <IfModule mod_php5.c>
+ php_value magic_quotes_gpc 0
+ php_value register_globals 0
+ php_value session.auto_start 0
+ </IfModule>
+
+ </Directory>
+</VirtualHost>
+
+
+2) Create the database structure for the server:
+
+# mysql -u foo -p bar -h localhost < /home/john/src/oauth-php/library/store/mysql/mysql.sql
+
+
+
+3) Download and install smarty into the smarty/core/smarty directory:
+
+# cd /home/john/src/oauth-php/example/server/core
+# wget 'http://www.smarty.net/do_download.php?download_file=Smarty-2.6.19.tar.gz'
+# tar zxf Smarty-2.6.19.tar.gz
+# mv Smarty-2.6.19 smarty
+
+
+4) That's it! Point your browser to
+
+ http://hello.local/
+
+To get started.
+
+Arjan Scherpenisse <arjan@mediamatic.nl>, July 2008
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/init.php b/mod/oauth_api/vendors/oauth/example/server/core/init.php
new file mode 100644
index 000000000..e5bb9de35
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/init.php
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * Global initialization file for the server, defines some helper
+ * functions, required includes, and starts the session.
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+/*
+ * Simple 'user management'
+ */
+define ('USERNAME', 'sysadmin');
+define ('PASSWORD', 'sysadmin');
+
+
+/*
+ * Always announce XRDS OAuth discovery
+ */
+header('X-XRDS-Location: http://' . $_SERVER['SERVER_NAME'] . '/services.xrds');
+
+
+/*
+ * Initialize the database connection
+ */
+$info = parse_url(getenv('DB_DSN'));
+($GLOBALS['db_conn'] = mysql_connect($info['host'], $info['user'], $info['pass'])) || die(mysql_error());
+mysql_select_db(basename($info['path']), $GLOBALS['db_conn']) || die(mysql_error());
+unset($info);
+
+
+require_once '../../../library/OAuthServer.php';
+
+/*
+ * Initialize OAuth store
+ */
+require_once '../../../library/OAuthStore.php';
+OAuthStore::instance('MySQL', array('conn' => $GLOBALS['db_conn']));
+
+
+/*
+ * Session
+ */
+session_start();
+
+
+/*
+ * Template handling
+ */
+require_once 'smarty/libs/Smarty.class.php';
+function session_smarty()
+{
+ if (!isset($GLOBALS['smarty']))
+ {
+ $GLOBALS['smarty'] = new Smarty;
+ $GLOBALS['smarty']->template_dir = dirname(__FILE__) . '/templates/';
+ $GLOBALS['smarty']->compile_dir = dirname(__FILE__) . '/../cache/templates_c';
+ }
+
+ return $GLOBALS['smarty'];
+}
+
+function assert_logged_in()
+{
+ if (empty($_SESSION['authorized']))
+ {
+ $uri = $_SERVER['REQUEST_URI'];
+ header('Location: /logon?goto=' . urlencode($uri));
+ }
+}
+
+function assert_request_vars()
+{
+ foreach(func_get_args() as $a)
+ {
+ if (!isset($_REQUEST[$a]))
+ {
+ header('HTTP/1.1 400 Bad Request');
+ echo 'Bad request.';
+ exit;
+ }
+ }
+}
+
+function assert_request_vars_all()
+{
+ foreach($_REQUEST as $row)
+ {
+ foreach(func_get_args() as $a)
+ {
+ if (!isset($row[$a]))
+ {
+ header('HTTP/1.1 400 Bad Request');
+ echo 'Bad request.';
+ exit;
+ }
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl
new file mode 100644
index 000000000..308b1d01b
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl
@@ -0,0 +1,2 @@
+</body>
+</html>
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl
new file mode 100644
index 000000000..5046f54b0
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl
@@ -0,0 +1,2 @@
+<html>
+ <body>
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl
new file mode 100644
index 000000000..7b065537d
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl
@@ -0,0 +1,13 @@
+{include file='inc/header.tpl'}
+
+<h1>OAuth server</h1>
+Go to:
+
+<ul>
+ <li><a href="/logon">Logon</a></li>
+ <li><a href="/register">Register your consumer</a></li>
+</ul>
+
+Afterwards, make an OAuth test request to <strong>http://{$smarty.server.name}/hello</strong> to test your connection.</p>
+
+{include file='inc/footer.tpl'}
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl
new file mode 100644
index 000000000..5ccd432b5
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl
@@ -0,0 +1,21 @@
+{include file='inc/header.tpl'}
+
+<h1>Login</h1>
+
+<form method="post">
+ <input type="hidden" name="goto" value="{$smarty.request.goto}" />
+
+ <label for="username">User name</label><br />
+ <input type="text" name="username" id="username" />
+
+ <br /><br />
+
+ <label for="password">Password</label><br />
+ <input type="text" name="password" id="password" />
+
+ <br /><br />
+
+ <input type="submit" value="Login" />
+</form>
+
+{include file='inc/footer.tpl'}
diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl
new file mode 100644
index 000000000..0e28c1584
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl
@@ -0,0 +1,41 @@
+{include file='inc/header.tpl'}
+
+<h1>Register server</h1>
+
+<p>Register a server which is gonna act as an identity client.</p>
+
+<form method="post">
+
+ <fieldset>
+ <legend>About You</legend>
+
+ <p>
+ <label for="requester_name">Your name</label><br/>
+ <input class="text" id="requester_name" name="requester_name" type="text" value="{$consumer.requester_name|default:$smarty.request.requester_name|escape}" />
+ </p>
+
+ <p>
+ <label for="requester_email">Your email address</label><br/>
+ <input class="text" id="requester_email" name="requester_email" type="text" value="{$consumer.requester_email|default:$smarty.request.requester_email|escape}" />
+ </p>
+ </fieldset>
+
+ <fieldset>
+ <legend>Location Of Your Application Or Site</legend>
+
+ <p>
+ <label for="application_uri">URL of your application or site</label><br/>
+ <input id="application_uri" class="text" name="application_uri" type="text" value="{$consumer.application_uri|default:$smarty.request.application_uri|escape}" />
+ </p>
+
+ <p>
+ <label for="callback_uri">Callback URL</label><br/>
+ <input id="callback_uri" class="text" name="callback_uri" type="text" value="{$consumer.callback_uri|default:$smarty.request.callback_uri|escape}" />
+ </p>
+ </fieldset>
+
+ <br />
+ <input type="submit" value="Register server" />
+</form>
+
+{include file='inc/footer.tpl'}
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/hello.php b/mod/oauth_api/vendors/oauth/example/server/www/hello.php
new file mode 100644
index 000000000..8cb94bb1e
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/hello.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * An example service, http://hostname/hello. You will only get the
+ * 'Hello, world!' string back if you have signed your request with
+ * oauth.
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+require_once '../core/init.php';
+
+$authorized = false;
+$server = new OAuthServer();
+try
+{
+ if ($server->verifyIfSigned())
+ {
+ $authorized = true;
+ }
+}
+catch (OAuthException $e)
+{
+}
+
+if (!$authorized)
+{
+ header('HTTP/1.1 401 Unauthorized');
+ header('Content-Type: text/plain');
+
+ echo "OAuth Verification Failed: " . $e->getMessage();
+ die;
+}
+
+// From here on we are authenticated with OAuth.
+
+header('Content-type: text/plain');
+echo 'Hello, world!';
+
+?> \ No newline at end of file
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/index.php b/mod/oauth_api/vendors/oauth/example/server/www/index.php
new file mode 100644
index 000000000..f5cadbe61
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/index.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+require '../core/init.php';
+
+$smarty = session_smarty();
+$smarty->display('index.tpl');
+
+?>
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/logon.php b/mod/oauth_api/vendors/oauth/example/server/www/logon.php
new file mode 100644
index 000000000..5c937b719
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/logon.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * Simple logon for consumer registration at this server.
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+require_once '../core/init.php';
+
+if (isset($_POST['username']) && isset($_POST['password']))
+{
+ if ($_POST['username'] == USERNAME && $_POST['password'] == PASSWORD)
+ {
+ $_SESSION['authorized'] = true;
+ if (!empty($_REQUEST['goto']))
+ {
+ header('Location: ' . $_REQUEST['goto']);
+ die;
+ }
+
+ echo "Logon succesfull.";
+ die;
+ }
+}
+
+$smarty = session_smarty();
+$smarty->display('logon.tpl');
+
+?> \ No newline at end of file
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/oauth.php b/mod/oauth_api/vendors/oauth/example/server/www/oauth.php
new file mode 100644
index 000000000..e0badcc39
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/oauth.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * This file implements the OAuth server endpoints. The most basic
+ * implementation of an OAuth server.
+ *
+ * Call with: /oauth/request_token, /oauth/authorize, /oauth/access_token
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+require_once '../core/init.php';
+
+$server = new OAuthServer();
+
+switch($_SERVER['PATH_INFO'])
+{
+case '/request_token':
+ $server->requestToken();
+ exit;
+
+case '/access_token':
+ $server->accessToken();
+ exit;
+
+case '/authorize':
+ # logon
+
+ assert_logged_in();
+
+ try
+ {
+ $server->authorizeVerify();
+ $server->authorizeFinish(true, 1);
+ }
+ catch (OAuthException $e)
+ {
+ header('HTTP/1.1 400 Bad Request');
+ header('Content-Type: text/plain');
+
+ echo "Failed OAuth Request: " . $e->getMessage();
+ }
+ exit;
+
+
+default:
+ header('HTTP/1.1 500 Internal Server Error');
+ header('Content-Type: text/plain');
+ echo "Unknown request";
+}
+
+?> \ No newline at end of file
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/register.php b/mod/oauth_api/vendors/oauth/example/server/www/register.php
new file mode 100644
index 000000000..c5785c2c8
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/register.php
@@ -0,0 +1,28 @@
+<?php
+
+require_once '../core/init.php';
+
+assert_logged_in();
+
+if ($_SERVER['REQUEST_METHOD'] == 'POST')
+{
+ try
+ {
+ $store = OAuthStore::instance();
+ $key = $store->updateConsumer($_POST, 1, true);
+
+ $c = $store->getConsumer($key);
+ echo 'Your consumer key is: <strong>' . $c['consumer_key'] . '</strong><br />';
+ echo 'Your consumer secret is: <strong>' . $c['consumer_secret'] . '</strong><br />';
+ }
+ catch (OAuthException $e)
+ {
+ echo '<strong>Error: ' . $e->getMessage() . '</strong><br />';
+ }
+}
+
+
+$smarty = session_smarty();
+$smarty->display('register.tpl');
+
+?> \ No newline at end of file
diff --git a/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php b/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php
new file mode 100644
index 000000000..4c50aa12b
--- /dev/null
+++ b/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * oauth-php: Example OAuth server
+ *
+ * XRDS discovery for OAuth. This file helps the consumer program to
+ * discover where the OAuth endpoints for this server are.
+ *
+ * @author Arjan Scherpenisse <arjan@scherpenisse.net>
+ *
+ *
+ * The MIT License
+ *
+ * Copyright (c) 2007-2008 Mediamatic Lab
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+header('Content-Type: application/xrds+xml');
+
+$server = $_SERVER['SERVER_NAME'];
+
+echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
+
+?>
+<XRDS xmlns="xri://$xrds">
+ <XRD xmlns:simple="http://xrds-simple.net/core/1.0" xmlns="xri://$XRD*($v*2.0)" xmlns:openid="http://openid.net/xmlns/1.0" version="2.0" xml:id="main">
+ <Type>xri://$xrds*simple</Type>
+ <Service>
+ <Type>http://oauth.net/discovery/1.0</Type>
+ <URI>#main</URI>
+ </Service>
+ <Service>
+ <Type>http://oauth.net/core/1.0/endpoint/request</Type>
+ <Type>http://oauth.net/core/1.0/parameters/auth-header</Type>
+ <Type>http://oauth.net/core/1.0/parameters/uri-query</Type>
+ <Type>http://oauth.net/core/1.0/signature/HMAC-SHA1</Type>
+ <Type>http://oauth.net/core/1.0/signature/PLAINTEXT</Type>
+ <URI>http://<?=$server?>/oauth/request_token</URI>
+ </Service>
+ <Service>
+ <Type>http://oauth.net/core/1.0/endpoint/authorize</Type>
+ <Type>http://oauth.net/core/1.0/parameters/uri-query</Type>
+ <URI>http://<?=$server?>/oauth/authorize</URI>
+ </Service>
+ <Service>
+ <Type>http://oauth.net/core/1.0/endpoint/access</Type>
+ <Type>http://oauth.net/core/1.0/parameters/auth-header</Type>
+ <Type>http://oauth.net/core/1.0/parameters/uri-query</Type>
+ <Type>http://oauth.net/core/1.0/signature/HMAC-SHA1</Type>
+ <Type>http://oauth.net/core/1.0/signature/PLAINTEXT</Type>
+ <URI>http://<?=$server?>/oauth/access_token</URI>
+ </Service>
+ </XRD>
+</XRDS>