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

[email protected] ("Nuno Lopes")
Newsgroups php.doc.web
Message-ID <cvsnlopess1108750069@cvsserver>
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 <[email protected]>                         |
  * +----------------------------------------------------------------------+
  *
- * $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 [email protected] 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
);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.