[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] cvs: php-src /ext/fbsql php_fbsql.c php_fbsql.h
From:       "Frank M. Kromann" <fmk () php ! net>
Date:       2004-02-26 20:31:15
Message-ID: cvsfmk1077827475 () cvsserver
[Download RAW message or body]

fmk		Thu Feb 26 15:31:15 2004 EDT

  Modified files:              
    /php-src/ext/fbsql	php_fbsql.c php_fbsql.h 
  Log:
  Adding function to change user passwords
  
http://cvs.php.net/diff.php/php-src/ext/fbsql/php_fbsql.c?r1=1.103&r2=1.104&ty=u
Index: php-src/ext/fbsql/php_fbsql.c
diff -u php-src/ext/fbsql/php_fbsql.c:1.103 php-src/ext/fbsql/php_fbsql.c:1.104
--- php-src/ext/fbsql/php_fbsql.c:1.103	Mon Feb  9 12:58:04 2004
+++ php-src/ext/fbsql/php_fbsql.c	Thu Feb 26 15:31:14 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_fbsql.c,v 1.103 2004/02/09 17:58:04 fmk Exp $ */
+/* $Id: php_fbsql.c,v 1.104 2004/02/26 20:31:14 fmk Exp $ */
 
 /* TODO:
  *
@@ -163,6 +163,21 @@
 #define FBSQL_LOB_DIRECT 0				/* default */
 #define FBSQL_LOB_HANDLE 1				/* default */
 
+int mdOk(PHPFBLink* link, FBCMetaData* md, char* sql);
+char *DigestPassword(char *user, char *password)
+{
+	char *digest = NULL;
+
+	if (user && strlen(user) && password && strlen(password)) {
+		char *user_upper = estrdup(user);
+		digest = emalloc(17);
+		digest[0] = '\0';
+		(void)fbcDigestPassword(php_strtoupper(user_upper, strlen(user_upper)), password, \
digest); +		efree(user_upper);
+	}
+
+	return digest;
+}
 
 /* {{{ fbsql_functions[]
  */
@@ -225,6 +240,7 @@
 	PHP_FE(fbsql_username,		NULL)
 	PHP_FE(fbsql_password,		NULL)
 	PHP_FE(fbsql_warnings,		NULL)
+	PHP_FE(fbsql_set_password,		NULL)
 
 	PHP_FE(fbsql_get_autostart_info,	NULL)
 /*	PHP_FE(fbsql_set_autostart_info,	NULL) */
@@ -1319,6 +1335,48 @@
 }
 /* }}} */
 
+/* {{{ proto bool fbsql_set_password(resource link_identifier, string user, string \
password, string old_password) +   Change the password for a given user */
+PHP_FUNCTION(fbsql_set_password)
+{
+	PHPFBLink* phpLink = NULL;
+	zval **fbsql_link_index = NULL, **user, **password, **old_password;
+	char *digest_password, *digest_old_password;
+	FBCMetaData *md;
+	
+	switch (ZEND_NUM_ARGS()) {
+		case 4:
+			if (zend_get_parameters_ex(4, &fbsql_link_index, &user, &password, \
&old_password)==FAILURE) { +				RETURN_FALSE;
+			}
+			break;
+		default:
+			WRONG_PARAM_COUNT;
+			break;
+	}
+	ZEND_FETCH_RESOURCE2(phpLink, PHPFBLink *, fbsql_link_index, -1, "FrontBase-Link", \
le_link, le_plink); +
+	convert_to_string_ex(user);
+	convert_to_string_ex(password);
+	convert_to_string_ex(old_password);
+
+	digest_password = DigestPassword(Z_STRVAL_PP(user), Z_STRVAL_PP(password));
+	digest_old_password = DigestPassword(Z_STRVAL_PP(user), Z_STRVAL_PP(old_password));
+
+	md = fbcdcSetPasswordForUser(phpLink->connection, Z_STRVAL_PP(user), \
digest_password, digest_old_password); +	if (mdOk(phpLink, md, "Change password")) {
+		ZVAL_BOOL(return_value, 1);
+	}
+	else {
+		ZVAL_BOOL(return_value, 0);
+	}	
+	fbcmdRelease(md);
+	if (digest_old_password) efree(digest_old_password);
+	if (digest_password) efree(digest_password);
+}
+/* }}} */
+
+
 /* {{{ proto bool fbsql_select_db([string database_name [, resource \
link_identifier]])  Select the database to open */
 PHP_FUNCTION(fbsql_select_db)
http://cvs.php.net/diff.php/php-src/ext/fbsql/php_fbsql.h?r1=1.27&r2=1.28&ty=u
Index: php-src/ext/fbsql/php_fbsql.h
diff -u php-src/ext/fbsql/php_fbsql.h:1.27 php-src/ext/fbsql/php_fbsql.h:1.28
--- php-src/ext/fbsql/php_fbsql.h:1.27	Thu Jan  8 12:32:05 2004
+++ php-src/ext/fbsql/php_fbsql.h	Thu Feb 26 15:31:14 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_fbsql.h,v 1.27 2004/01/08 17:32:05 sniper Exp $ */
+/* $Id: php_fbsql.h,v 1.28 2004/02/26 20:31:14 fmk Exp $ */
 
 #define HAVE_FBSQL 1
 
@@ -97,6 +97,7 @@
 PHP_FUNCTION(fbsql_username);
 PHP_FUNCTION(fbsql_password);
 PHP_FUNCTION(fbsql_warnings);
+PHP_FUNCTION(fbsql_set_password);
 
 PHP_FUNCTION(fbsql_get_autostart_info);
 /* PHP_FUNCTION(fbsql_set_autostart_info); */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic