]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/classes/main/rng/class_RandomNumberGenerator.php
Results are now searchable and iterateable, insertDataSet renamed to queryInsertDataS...
[shipsimu.git] / inc / classes / main / rng / class_RandomNumberGenerator.php
index a8063c6fc234e22b00a037a2daf1e8aae9a8e9ff..8875a4ca06ba2b8d4076973cf39558c8351ff9ed 100644 (file)
@@ -3,10 +3,10 @@
  * A standard random number generator
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.3.0
+ * @version            0.0.0
  * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
  * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.mxchange.org
+ * @link               http://www.ship-simu.org
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
        private $rndStrLen = 0;
 
        /**
-        * Private constructor
+        * Protected constructor
         *
         * @param       $className      Name of this class
         * @return      void
@@ -56,7 +56,7 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
                $this->setObjectDescription("Standard random number generator");
 
                // Create unique ID number
-               $this->createUniqueID();
+               $this->generateUniqueId();
 
                // Clean up a little
                $this->removeNumberFormaters();
@@ -85,6 +85,9 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
         * @return      void
         */
        protected function initRng () {
+               // Seed mt_rand()
+               mt_srand((double) microtime() * 1000000);
+
                // Get the prime number from config
                $this->prime = $this->getConfigInstance()->readConfig('math_prime');
 
@@ -92,9 +95,17 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
                // a better prime number
                $this->extraNumber = ($this->prime * $this->prime / (pi() ^ 2));
 
+               // Set the server IP to cluster
+               $serverIp = "cluster";
+               // Do we have a single server?
+               if ($this->getConfigInstance()->readConfig('is_single_server') == "Y") {
+                       // Then use that IP for extra security
+                       $serverIp = getenv('SERVER_ADDR');
+               }
+
                // One-way data we need for "extra-salting" the random number
                // @TODO Add site for stronger salt!
-               $this->extraSalt = sha1(getenv('SERVER_ADDR') . ":" . getenv('SERVER_SOFTWARE') . ":" . $this->getConfigInstance()->readConfig('date_key') . ":" . serialize($this->getDatabaseInstance()->getConnectionData()));
+               $this->extraSalt = sha1($serverIp . ":" . getenv('SERVER_SOFTWARE') . ":" . $this->getConfigInstance()->readConfig('date_key') . ":" . serialize($this->getDatabaseInstance()->getConnectionData()));
 
                // Get config entry for max salt length
                $this->rndStrLen = $this->getConfigInstance()->readConfig('rnd_str_length');
@@ -134,6 +145,15 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
                // @TODO I had a better random number generator here
                return mt_rand($min, $max);
        }
+
+       /**
+        * Getter for extra salt
+        *
+        * @return      $extraSalt
+        */
+       public final function getExtraSalt () {
+               return $this->extraSalt;
+       }
 }
 
 // [EOF]