r2624 - fixed a typo in README
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 9 Apr 2009 09:45:51 +0000 (09:45 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 9 Apr 2009 09:45:51 +0000 (09:45 +0000)
 - switched to builtin sha1() function, so we don't depend on HASH extension any more
 - fixed query in installer to send admin password hash instead of password

ChangeLog
README
inc/auth.php
inc/config.php
inc/database.php
inc/ophandlers.php
install.php
upgrade.php

index 922311c..e2e72a4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,7 @@
        update: switchvlans gateway has been changed
        update: RackTables installation is now done only through install.php
        update: records for F5 hardware
+       update: don't require HASH extension any more
        bugfix: show error message if snmp module isn't loaded.  closes ticket 43 (by Aaron)
        bugfix: show error message for duplicate IPv4 network record
        bugfix: it was possible to access the system as any existing
diff --git a/README b/README
index c4f12ee..14d9b2b 100644 (file)
--- a/README
+++ b/README
@@ -38,7 +38,7 @@ extensions:
 php5-pdo_mysql php5-pdo apache2-mod_php5 php5-mbstring
 
 * openSUSE 11.0: use YaST to apache2-mod_php5, php5-gd, php5-mbstring, php5-mysql,
-php2-snmp and php5-ldap
+php5-snmp and php5-ldap
 
 
 II. Prepare the files and database.
index dc13b66..c884270 100644 (file)
@@ -248,19 +248,14 @@ function authenticated_via_ldap ($username, $password)
 function authenticated_via_database ($username, $password)
 {
        global $accounts;
-       if (!defined ('HASH_HMAC'))
+       if (!function_exists ('sha1'))
        {
-               showError ('Fatal error: PHP hash extension is missing', __FUNCTION__);
-               die();
-       }
-       if (array_search (PASSWORD_HASH, hash_algos()) === FALSE)
-       {
-               showError ('Password hash not supported, authentication impossible.', __FUNCTION__);
+               showError ('Fatal error: PHP sha1() function is missing', __FUNCTION__);
                die();
        }
        if (!isset ($accounts[$username]['user_password_hash']))
                return FALSE;
-       if ($accounts[$username]['user_password_hash'] == hash (PASSWORD_HASH, $password))
+       if ($accounts[$username]['user_password_hash'] == sha1 ($password))
                return TRUE;
        return FALSE;
 }
index 29799a8..8dd0c96 100644 (file)
 define ('CODE_VERSION', '0.17.0');
 define ('MAX_DICT_KEY', 953);
 
-// The name of hash used to store account password hashes
-// in the database. I think, we are happy with this one forever.
-define ('PASSWORD_HASH', 'sha1');
-
 define ('TAGNAME_REGEXP', '^[[:alnum:]]([\. _~-]?[[:alnum:]])*$');
 define ('AUTOTAGNAME_REGEXP', '^\$[[:alnum:]]([\. _~-]?[[:alnum:]])*$');
 // The latter matches both SunOS and Linux-styled formats.
index 24aaf5f..ee061f4 100644 (file)
@@ -3171,7 +3171,7 @@ function saveScript ($name, $text)
 
 function saveUserPassword ($user_id, $newp)
 {
-       $newhash = hash (PASSWORD_HASH, $newp);
+       $newhash = sha1 ($newp);
        $query = "update UserAccount set user_password_hash = ${newhash} where user_id = ${user_id} limit 1";
 }
 
index 26d55d5..b7fdb69 100644 (file)
@@ -456,7 +456,7 @@ function createUser ()
        assertStringArg ('realname', __FUNCTION__, TRUE);
        assertStringArg ('password', __FUNCTION__);
        $username = $_REQUEST['username'];
-       $password = hash (PASSWORD_HASH, $_REQUEST['password']);
+       $password = sha1 ($_REQUEST['password']);
        $result = commitCreateUserAccount ($username, $_REQUEST['realname'], $password);
        if ($result == TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK', array ($username));
@@ -477,7 +477,7 @@ function updateUser ()
                return buildRedirectURL (__FUNCTION__, 'ERR1');
        // Update user password only if provided password is not the same as current password hash.
        if ($new_password != $old_hash)
-               $new_password = hash (PASSWORD_HASH, $new_password);
+               $new_password = sha1 ($new_password);
        $result = commitUpdateUserAccount ($_REQUEST['user_id'], $username, $_REQUEST['realname'], $new_password);
        if ($result == TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK', array ($username));
@@ -1382,11 +1382,11 @@ function changeMyPassword ()
        assertStringArg ('oldpassword', __FUNCTION__);
        assertStringArg ('newpassword1', __FUNCTION__);
        assertStringArg ('newpassword2', __FUNCTION__);
-       if ($accounts[$remote_username]['user_password_hash'] != hash (PASSWORD_HASH, $_REQUEST['oldpassword']))
+       if ($accounts[$remote_username]['user_password_hash'] != sha1 ($_REQUEST['oldpassword']))
                return buildRedirectURL (__FUNCTION__, 'ERR2');
        if ($_REQUEST['newpassword1'] != $_REQUEST['newpassword2'])
                return buildRedirectURL (__FUNCTION__, 'ERR3');
-       if (commitUpdateUserAccount ($accounts[$remote_username]['user_id'], $accounts[$remote_username]['user_name'], $accounts[$remote_username]['user_realname'], hash (PASSWORD_HASH, $_REQUEST['newpassword1'])))
+       if (commitUpdateUserAccount ($accounts[$remote_username]['user_id'], $accounts[$remote_username]['user_name'], $accounts[$remote_username]['user_realname'], sha1 ($_REQUEST['newpassword1'])))
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
                return buildRedirectURL (__FUNCTION__, 'ERR4');
index 0bd6796..4602899 100644 (file)
@@ -100,8 +100,8 @@ function platform_is_ok ()
        }
        echo '</td></tr>';
 
-       echo '<tr><td>hash functions</td>';
-       if (function_exists ('hash_algos'))
+       echo '<tr><td>hash function</td>';
+       if (function_exists ('sha1'))
                echo '<td class=msg_success>Ok';
        else
        {
@@ -349,8 +349,10 @@ function init_database_dynamic ()
        }
        else
        {
+               // Never send cleartext password over the wire.
+               $hash = sha1 ($_REQUEST['password']);
                $query = "INSERT INTO `UserAccount` (`user_id`, `user_name`, `user_password_hash`, `user_realname`) " .
-                       "VALUES (1,'admin',sha1('${_REQUEST['password']}'),'RackTables Administrator')";
+                       "VALUES (1,'admin','${hash}','RackTables Administrator')";
                $result = $dbxlink->exec ($query);
                echo "Administrator password has been set successfully.<br>";
                return TRUE;
index c37eca8..f768dad 100644 (file)
@@ -279,7 +279,7 @@ catch (PDOException $e)
 function authenticate_admin ($username, $password)
 {
        global $dbxlink;
-       $hash = hash (PASSWORD_HASH, $password);
+       $hash = sha1 ($password);
        $query = "select count(*) from UserAccount where user_id = 1 and user_name = '${username}' and user_password_hash = '${hash}'";
        if (($result = $dbxlink->query ($query)) == NULL)
                die ('SQL query failed in ' . __FUNCTION__);