Surfbar now has admin menu (dummy extension!), menu system rebuilded for unique key...
[mailer.git] / inc / functions.php
index 7462021a9d7bae989751a6eaee7f8b8ec45c0d61..25ae3c78fcf6b8b0d8802f7b8e76672512ffb727 100644 (file)
@@ -1187,15 +1187,21 @@ function TRANSLATE_YESNO($yn)
 // Deprecated : $length
 // Optional   : $DATA
 //
-function GEN_RANDOM_CODE($length, $code, $uid, $DATA="")
-{
+function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") {
        global $_CONFIG;
 
+       // Fix missing _MAX constant
+       if (!defined('_MAX')) define('_MAX', 15235);
+
        // Build server string
        $server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
 
        // Build key string
-       $keys   = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']).":".$_CONFIG['master_salt'];
+       $keys   = SITE_KEY.":".DATE_KEY;
+       if (isset($_CONFIG['secret_key']))  $keys .= ":".$_CONFIG['secret_key'];
+       if (isset($_CONFIG['file_hash']))   $keys .= ":".$_CONFIG['file_hash'];
+       $keys .= ":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']);
+       if (isset($_CONFIG['master_salt'])) $keys .= ":".$_CONFIG['master_salt'];
 
        // Build string from misc data
        $data   = $code.":".$uid.":".$DATA;
@@ -1211,11 +1217,19 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="")
        // Calculate number for generating the code
        $a = $code + _ADD - 1;
 
-       // Generate hash with master salt from modula of number with the prime number and other data
-       $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, $_CONFIG['master_salt']);
+       if (isset($_CONFIG['master_hash'])) {
+               // Generate hash with master salt from modula of number with the prime number and other data
+               $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, $_CONFIG['master_salt']);
 
-       // Create number from hash
-       $rcode = hexdec(substr($saltedHash, strlen($_CONFIG['master_salt']), 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi();
+               // Create number from hash
+               $rcode = hexdec(substr($saltedHash, strlen($_CONFIG['master_salt']), 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi();
+       } else {
+               // Generate hash with "hash of site key" from modula of number with the prime number and other data
+               $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, substr(sha1(SITE_KEY), 0, 8));
+
+               // Create number from hash
+               $rcode = hexdec(substr($saltedHash, 8, 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi();
+       }
 
        // At least 10 numbers shall be secure enought!
        $len = $_CONFIG['code_length'];