<?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']; 
} 
 
?>
 
 |