root/freepbx/trunk/upgrades/2.6.0beta1/tables.php

Revision 7791, 1.8 kB (checked in by xrobau, 4 years ago)

Add proper debuggin to the sha1 upgrade

Line 
1 <?php
2
3 function encrypt_passwords()
4 {
5     global $db;
6     out("Updating passwords..");
7     $sql = "SELECT * FROM ampusers";
8     $users = $db->getAll($sql,NULL,DB_FETCHMODE_ASSOC);
9     if (DB::IsError($users)) { // Error while getting the users list to update... bad
10         die($users->getMessage());
11     } else {
12         outn("(".count($users)." accounts) ");   
13         foreach ($users as $index => $ufields) {
14             $sql = "UPDATE ampusers SET password_sha1='".sha1($ufields['password'])."' WHERE username='".$ufields['username']."'";
15             $result = $db->query($sql);
16             if (DB::IsError($result)) {
17                 outn("Error while updating account: ".$ufields['username']." (".$result->getMessage.")");
18             }   
19         }
20     }
21     out("Done.");
22 }
23
24 outn("Checking for sha1 passwords..");
25 $sql = "SELECT password_sha1 FROM ampusers";
26 $passfield = $db->getRow($sql, DB_FETCHMODE_ASSOC);
27 if (!DB::IsError($passfield)) { // no error... Already done
28     $sql = "SELECT password FROM ampusers";
29     $passfield = $db->getRow($sql, DB_FETCHMODE_ASSOC);
30     if (DB::IsError($passfield)) { //password field do not exist, done
31         out("OK.");
32     } else { //Field password still exist, update of passwords is needed.
33         encrypt_passwords();
34     }
35 } else {
36     if ($passfield->code == DB_ERROR_NOSUCHFIELD) {
37         outn("Updating database..");
38         $sql = "ALTER TABLE ampusers ADD password_sha1 VARCHAR ( 40 ) NOT NULL AFTER password";
39         $results = $db->query($sql);
40         if (DB::IsError($results)) {
41             die($sql."\n".$results->getMessage());
42         } else {
43             out("Done.");
44             encrypt_passwords();
45             outn("Removing old password column..");
46             $sql = "ALTER TABLE ampusers DROP password";
47             $results = $db->query($sql);
48             if (DB::IsError($results)) {
49                 die($results->getMessage());
50             } else {
51                 out("Done.");
52             }
53         }
54     } else { //The error was not about the field...
55         die($passfield->getMessage());
56     }
57 }
58             
59 ?>
60
Note: See TracBrowser for help on using the browser.