* @copyright 2005 Janrain, Inc. * @license http://www.gnu.org/copyleft/lesser.html LGPL */ /** * Data. */ $store_types = array("Filesystem" => "Auth_OpenID_FileStore", "MySQL" => "Auth_OpenID_MySQLStore", "PostgreSQL" => "Auth_OpenID_PostgreSQLStore", "SQLite" => "Auth_OpenID_SQLiteStore"); /** * Main. */ $messages = array(); session_start(); init_session(); if (!check_session()) { render_form(); } else { print generate_config(); } /** * Functions. */ function check_url($url) { $p = parse_url($url); if ($p === false) { return false; } if (!array_key_exists('host', $p)) { return false; } return true; } function check_session() { global $messages; if ($_GET && isset($_GET['clear'])) { session_destroy(); $_SESSION = array(); init_session(); return false; } if (isset($_GET['generate'])) { if (!$_SESSION['server_url']) { $messages[] = "Please enter a server URL."; } if (!$_SESSION['store_type']) { $messages[] = "No store type chosen."; } else { switch ($_SESSION['store_type']) { case "Filesystem": if (!$_SESSION['store_data']['fs_path']) { $messages[] = "Please specify a filesystem store path."; } break; case "SQLite": if (!$_SESSION['store_data']['sqlite_path']) { $messages[] = "Please specify a SQLite database path."; } break; default: if (!($_SESSION['store_data']['host'] && $_SESSION['store_data']['database'] && $_SESSION['store_data']['username'] && $_SESSION['store_data']['password'])) { $messages[] = "Please specify database connection details."; } } } } if ($_SESSION['store_type'] && $_SESSION['server_url'] && (parse_url($_SESSION['server_url']) !== false) && ((($_SESSION['store_type'] == 'Filesystem') && $_SESSION['store_data']['fs_path']) || (($_SESSION['store_type'] == 'SQLite') && $_SESSION['store_data']['sqlite_path']) || ($_SESSION['store_data']['host'] && $_SESSION['store_data']['username'] && $_SESSION['store_data']['database'] && $_SESSION['store_data']['password']))) { return true; } return false; } function render_form() { global $store_types, $fields, $messages; $basedir_msg = ""; if (ini_get('open_basedir')) { $basedir_msg = "
Note: Due to the ". "open_basedir setting, be sure to ". "choose a path in:"; } ?>

OpenID Server Configuration

"; foreach ($messages as $m) { print "
$m
"; } print ""; } ?>

This form will auto-generate an OpenID server configuration for use with the OpenID server example.

Store method:
>
>
> >
OpenID URLs to serve:
"; foreach ($_SESSION['users'] as $url => $p) { print ""; } print "
OpenID URLPassword Hash
".$url."".$p."
"; } ?>
Add an OpenID:
Trusted sites:
"; foreach ($_SESSION['trust_roots'] as $url) { print ""; } print "
Trusted site URL
".$url."
"; } ?>
Add a trusted site:

OpenID Server Configuration

Put the following text into config.php.

Back to form


/**
 * Set any extra include paths needed to use the library
 */
set_include_path(get_include_path() . PATH_SEPARATOR . "");


/**
 * The URL for the server.
 *
 * This is the location of server.php. For example:
 *
 * $server_url = 'http://example.com/~user/server.php';
 *
 * This must be a full URL.
 */
$server_url = "";

/**
 * Initialize an OpenID store
 *
 * @return object $store an instance of OpenID store (see the
 * documentation for how to create one)
 */
function getOpenIDStore()
{
    require_once 'Auth/OpenID/MySQLStore.php';
    require_once 'DB.php';

    $dsn = array(
                 'phptype'  => 'mysql',
                 'username' => '',
                 'password' => '',
                 'hostspec' => ''
                 );

    $db =& DB::connect($dsn);

    if (PEAR::isError($db)) {
        return null;
    }

    $db->query("USE ");
        
    return new Auth_OpenID_MySQLStore($db);
require_once 'Auth/OpenID/PostgreSQLStore.php';
    require_once 'DB.php';

    $dsn = array(
                 'phptype'  => 'pgsql',
                 'username' => '',
                 'password' => '',
                 'hostspec' => '',
                 'database' => ''
                 );

    $db =& DB::connect($dsn);

    if (PEAR::isError($db)) {
        return null;
    }

    return new Auth_OpenID_PostgreSQLStore($db);

}

/**
 * Users who are allowed to log in to this OpenID server.
 *
 * This is an array from URL to password hash. The URL must include
 * the proper OpenID server information in order to work with this
 * server.
 *
 * This must be set for the server to be usable. If it is not set, no
 * users will be able to log in.
 *
 * Example:
 * $openid_users = array(
 *                    'http://joe.example.com/' => sha1('foo')
 *                      )
 */
$openid_users = array( $hash) {
    $i++;
    print "\n    '$url' => '$hash'";
    if ($i < count($_SESSION['users'])) {
        print ",";
    }
}
?>

);

/**
 * Trusted sites is an array of trust roots.
 *
 * Sites in this list will not have to be approved by the user in
 * order to be used. It is OK to leave this value as-is.
 *
 * In a more robust server, this site should be a per-user setting.
 */
$trusted_sites = array(

);