cvs: docweb /include cvs-auth.inc /sql users.sql

From: Date: Fri, 18 Feb 2005 18:07:49 +0000
Subject: cvs: docweb /include cvs-auth.inc /sql users.sql
Groups: php.doc.web 
Request: Send a blank email to doc-web+get-615@lists.php.net to get a copy of this message
nlopess Fri Feb 18 13:07:49 2005 EDT Added files: /docweb/sql users.sql Modified files: /docweb/include cvs-auth.inc Log: convert auth script to sqlite http://cvs.php.net/diff.php/docweb/include/cvs-auth.inc?r1=1.3&r2=1.4&ty=u Index: docweb/include/cvs-auth.inc diff -u docweb/include/cvs-auth.inc:1.3 docweb/include/cvs-auth.inc:1.4 --- docweb/include/cvs-auth.inc:1.3 Mon Jan 17 07:15:48 2005 +++ docweb/include/cvs-auth.inc Fri Feb 18 13:07:48 2005 @@ -18,9 +18,11 @@ * | Jacques Marneweck <jacques@php.net> | * +----------------------------------------------------------------------+ * - * $Id: cvs-auth.inc,v 1.3 2005/01/17 12:15:48 jacques Exp $ + * $Id: cvs-auth.inc,v 1.4 2005/02/18 18:07:48 nlopess Exp $ */ +require_once(dirname(__FILE__) . '/../build-ops.php'); + function auth_vs_cvs($name, $pass) { $cvs_encode = array( @@ -54,7 +56,7 @@ $cvs = fsockopen($cvsinfo['host'], $cvsinfo['port'], $errno, $errstr); if (!$cvs) - return $errstr; + return false; $pkt = "BEGIN AUTH REQUEST\n$cvsinfo[repos]\n$name\n$encpwd\nEND AUTH REQUEST\n"; @@ -62,29 +64,26 @@ $response = fgets($cvs); fclose($cvs); - return 0 == strncmp($response, 'I LOVE YOU', 10) ? true : false; + return (0 == strncmp($response, 'I LOVE YOU', 10)); } /** * Check local credential cache before sending extra queries * to cvs.php.net */ -function auth_vs_local ($user, $pass) { - $res = mysql_query ("SELECT username, password, ctime FROM users WHERE username='" . addslashes($user) . "'") or die ("db query failed"); - if (!mysql_num_rows($res)) { - return false; - } +function auth_vs_local ($idx, $user, $pass) { + + $res = sqlite_query ($idx, "SELECT * FROM auth WHERE username='" . sqlite_escape_string($user) . "'"); - $row = mysql_fetch_assoc($res); - if (!is_array($row)) { + if (!$data = sqlite_fetch_array($res, SQLITE_ASSOC)) { return false; } - if (strtotime($row['ctime']) + 60*60*24 < time()) { - return 'cache_expire'; + if ($data['time'] + 60*60*24 < time()) { + return false; } - if (crypt($pass, $row['password']) == $row['password']) { + if (sha1($pass) == $data['password']) { return true; } @@ -92,37 +91,31 @@ } function verify_password($user, $pass) { - $db = mysql_connect (ini_get('mysql.default_host'), ini_get('mysql.default_user'), ini_get('mysql.default_password')) or die ("cannot connect to db server"); - mysql_select_db ("doc_php_net", $db) or die ("select db failed."); /** * You cannot auth as our cvsread@php.net pseudo user */ - if ($user == "cvsread") { + if (!$user || !$pass || $user == 'cvsread') { return false; } - if (empty($pass)) { - return false; + if (!$idx = sqlite_open(SQLITE_DIR . 'users.sqlite')) { + die ('DB not available'); } - $_ret = auth_vs_local($user, $pass); - if ($_ret === true) { - return true; + if (auth_vs_local($idx, $user, $pass)) { + return $user; } - $_ret = auth_vs_cvs($user, $pass); + if (auth_vs_cvs($user, $pass)) { - if ($_ret === true) { - $res = mysql_query ("SELECT username FROM users WHERE username='" . addslashes($user) . "'"); - if (mysql_num_rows($res)) { - mysql_query ("UPDATE users SET password='" . crypt($pass) . "', ctime=NOW() WHERE username='" . addslashes($user) . "'") or die ("db query failed."); - } else { - mysql_query ("INSERT INTO users (username, password, date_added, ctime) VALUES ('" . addslashes($user) . "', '" . crypt($pass) . "', NOW(), NOW())") or die ("db query failed."); - } + sqlite_exec($idx, "REPLACE INTO auth VALUES ('" . sqlite_escape_string($user) . "', '" . sha1($pass) . "', '" . time() . "')"); + sqlite_close($idx); + + return $user; } - return ($_ret); + return false; } /* vim: set noet ts=4 sw=4 ft=php: : */ http://cvs.php.net/co.php/docweb/sql/users.sql?r=1.1&p=1 Index: docweb/sql/users.sql +++ docweb/sql/users.sql CREATE TABLE auth ( username TEXT PRIMARY KEY, password TEXT, time INT );

« previous php.doc.web (#615) next »