]> git.mxchange.org Git - mailer.git/blob - 0.2.1/inc/gen_sql_patches.php
- obsolete templates/scripts removed
[mailer.git] / 0.2.1 / inc / gen_sql_patches.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 10/08/2005 *\r
4  * ===============                              Last change: 01/01/2006 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : gen_sql_patches.php                              *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Patch password system after upgrading            *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Patcht das Passwort-System nach DB-Update        *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *\r
16  * For more information visit: http://www.mxchange.org                  *\r
17  *                                                                      *\r
18  * This program is free software; you can redistribute it and/or modify *\r
19  * it under the terms of the GNU General Public License as published by *\r
20  * the Free Software Foundation; either version 2 of the License, or    *\r
21  * (at your option) any later version.                                  *\r
22  *                                                                      *\r
23  * This program is distributed in the hope that it will be useful,      *\r
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
26  * GNU General Public License for more details.                         *\r
27  *                                                                      *\r
28  * You should have received a copy of the GNU General Public License    *\r
29  * along with this program; if not, write to the Free Software          *\r
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
31  * MA  02110-1301  USA                                                  *\r
32  ************************************************************************/\r
33 \r
34 // Some security stuff...\r
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";\r
38         require($INC);\r
39 }\r
40 \r
41 // Check for version of sql_patches\r
42 if (GET_EXT_VERSION("sql_patches") < "0.3.6") return false;\r
43 \r
44 // Check if there is no scrambling string\r
45 if (empty($CONFIG['pass_scramble']))\r
46 {\r
47         // Generate 40 chars long scramble string\r
48         $scrambleString = genScrambleString(40);\r
49 \r
50         // ... and store it there for future usage\r
51         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_config SET pass_scramble='%s' WHERE config='0' LIMIT 1",\r
52          array($scrambleString), __FILE__, __LINE__);\r
53 \r
54         // Also remember it in config\r
55         $CONFIG['pass_scramble'] = $scrambleString;\r
56         unset($scrambleString);\r
57 }\r
58 \r
59 // Check if there is no master salt string\r
60 if (empty($CONFIG['master_salt']))\r
61 {\r
62         // Generate the master salt which is the first chars minus 40 chars of this random hash\r
63         // We do an extra scrambling here...\r
64         $masterSalt = scrambleString(substr(generateHash(GEN_PASS(rand(128, 256))), 0, -40));\r
65 \r
66         // ... and store it there for future usage\r
67         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_config SET master_salt='%s' WHERE config='0' LIMIT 1",\r
68          array($masterSalt), __FILE__, __LINE__);\r
69 \r
70         // Also remember it in config\r
71         $CONFIG['master_salt'] = $masterSalt;\r
72         unset($masterSalt);\r
73 }\r
74 \r
75 if (empty($CONFIG['file_hash']))\r
76 {\r
77         // Create filename from hashed random string\r
78         $file_hash = generateHash(GEN_PASS(rand(128, 256)));\r
79         $file = PATH."inc/.secret/.".$file_hash;\r
80 \r
81         // File hash was never created\r
82         $fp = @fopen($file, 'w') or mxchange_die("Cannot write secret key file!");\r
83         if ($fp != false)\r
84         {\r
85                 // Could write to secret file! So let's generate the secret key...\r
86                 // 1. Count of chars to be taken from back of the string\r
87                 $nums = rand(40, 45);\r
88                 // 2. Generate secret key from a randomized string\r
89                 $secretKey = substr(generateHash(GEN_PASS(rand(128, 256))), -$nums);\r
90                 // 3. Write the key to the file\r
91                 fwrite($fp, $secretKey);\r
92                 // 4. Close file\r
93                 fclose($fp);\r
94 \r
95                 // Change access rights for more security\r
96                 @chmod($file, 0644);\r
97 \r
98                 //* DEBUG: */ unlink($file);\r
99                 //* DEBUG: */ $test = hexdec($_COOKIE['u_hash']) / hexdec($secretKey);\r
100                 //* DEBUG: */ $test = generateHash(str_replace('.', '', $test));\r
101                 //* DEBUG: */ die("Secret-Key: ".$secretKey."<br>Cookie: ".$_COOKIE['u_hash']."<br>Test: ".$test);\r
102 \r
103                 // Write $file_hash to database\r
104                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_config SET file_hash='%s' WHERE config='0' LIMIT 1",\r
105                  array($file_hash), __FILE__, __LINE__);\r
106 \r
107                 // Also create .htaccess file\r
108                 $fp = @fopen(PATH."inc/.secret/.htaccess", 'w') or mxchange_die("Cannot write to .htaccess file!");\r
109                 if ($fp != false)\r
110                 {\r
111                         // Add deny line to file\r
112                         fwrite($fp, "Deny from all");\r
113 \r
114                         // Close the file\r
115                         fclose($fp);\r
116                 }\r
117 \r
118                 // Also update configuration\r
119                 $CONFIG['secret_key'] = $secretKey; unset($secretKey);\r
120                 $CONFIG['file_hash']  = $file_hash; unset($file_hash);\r
121         }\r
122 }\r
123 \r
124 //\r
125 ?>