| 
<?php
 require_once "config.php";
 require_once "lib/render.php";
 require_once "Auth/OpenID/Server.php";
 
 /**
 * Set up the session
 */
 function init()
 {
 session_name('openid_server');
 session_start();
 }
 
 /**
 * Get the style markup
 */
 function getStyle()
 {
 $parent = rtrim(dirname(getServerURL()), '/');
 $url = htmlspecialchars($parent . '/openid-server.css', ENT_QUOTES);
 return sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $url);
 }
 
 /**
 * Get the URL of the current script
 */
 function getServerURL()
 {
 $path = $_SERVER['SCRIPT_NAME'];
 $host = $_SERVER['HTTP_HOST'];
 $port = $_SERVER['SERVER_PORT'];
 $s = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] ? 's' : '';
 if (($s && $port == "443") || (!$s && $port == "80")) {
 $p = '';
 } else {
 $p = ':' . $port;
 }
 
 return "http$s://$host$p$path";
 }
 
 /**
 * Build a URL to a server action
 */
 function buildURL($action=null, $escaped=true)
 {
 $url = getServerURL();
 if ($action) {
 $url .= '/' . $action;
 }
 return $escaped ? htmlspecialchars($url, ENT_QUOTES) : $url;
 }
 
 /**
 * Extract the current action from the request
 */
 function getAction()
 {
 $path_info = @$_SERVER['PATH_INFO'];
 $action = ($path_info) ? substr($path_info, 1) : '';
 $function_name = 'action_' . $action;
 return $function_name;
 }
 
 /**
 * Write the response to the request
 */
 function writeResponse($resp)
 {
 list ($headers, $body) = $resp;
 array_walk($headers, 'header');
 header(header_connection_close);
 print $body;
 }
 
 /**
 * Instantiate a new OpenID server object
 */
 function getServer()
 {
 static $server = null;
 if (!isset($server)) {
 $server = new Auth_OpenID_Server(getOpenIDStore(),
 buildURL());
 }
 return $server;
 }
 
 /**
 * Return a hashed form of the user's password
 */
 function hashPassword($password)
 {
 return bin2hex(Auth_OpenID_SHA1($password));
 }
 
 /**
 * Get the openid_url out of the cookie
 *
 * @return mixed $openid_url The URL that was stored in the cookie or
 * false if there is none present or if the cookie is bad.
 */
 function getLoggedInUser()
 {
 return isset($_SESSION['openid_url'])
 ? $_SESSION['openid_url']
 : false;
 }
 
 /**
 * Set the openid_url in the cookie
 *
 * @param mixed $identity_url The URL to set. If set to null, the
 * value will be unset.
 */
 function setLoggedInUser($identity_url=null)
 {
 if (!isset($identity_url)) {
 unset($_SESSION['openid_url']);
 } else {
 $_SESSION['openid_url'] = $identity_url;
 }
 }
 
 function getRequestInfo()
 {
 return isset($_SESSION['request'])
 ? unserialize($_SESSION['request'])
 : false;
 }
 
 function setRequestInfo($info=null)
 {
 if (!isset($info)) {
 unset($_SESSION['request']);
 } else {
 $_SESSION['request'] = serialize($info);
 }
 }
 
 
 function getSreg($identity)
 {
 // from config.php
 global $openid_sreg;
 
 if (!is_array($openid_sreg)) {
 return null;
 }
 
 return $openid_sreg[$identity];
 
 }
 
 function idURL($identity)
 {
 return buildURL('idpage') . "?user=" . $identity;
 }
 
 function idFromURL($url)
 {
 if (strpos($url, 'idpage') === false) {
 return null;
 }
 
 $parsed = parse_url($url);
 
 $q = $parsed['query'];
 
 $parts = array();
 parse_str($q, $parts);
 
 return @$parts['user'];
 }
 
 ?>
 |