New method detectServerAddress() added which should rewrite your code ito.
[core.git] / inc / classes / main / rng / class_RandomNumberGenerator.php
index 93ba3988ed0ae28fa27f7aca7beec7b64a592724..857478fb61069df8fc1ac2fd0064940820f60a2d 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, this is free software
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -35,12 +35,12 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
        /**
         * Extra salt for secured hashing
         */
-       private $extraSalt = "";
+       private $extraSalt = '';
 
        /**
         * Fixed salt for secured hashing
         */
-       private $fixedSalt = "";
+       private $fixedSalt = '';
 
        /**
         * Maximum length for random string
@@ -88,7 +88,7 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
         */
        protected function initRng ($extraInstance) {
                // Get the prime number from config
-               $this->prime = $this->getConfigInstance()->readConfig('math_prime');
+               $this->prime = $this->getConfigInstance()->getConfigEntry('math_prime');
 
                // Calculate the extra number which is always the same unless you give
                // a better prime number
@@ -98,28 +98,28 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
                mt_srand((double) sqrt(microtime() * 100000000 * $this->extraNumber));
 
                // Set the server IP to cluster
-               $serverIp = "cluster";
+               $serverIp = 'cluster';
 
                // Do we have a single server?
-               if ($this->getConfigInstance()->readConfig('is_single_server') === "Y") {
+               if ($this->getConfigInstance()->getConfigEntry('is_single_server') == 'Y') {
                        // Then use that IP for extra security
-                       $serverIp = getenv('SERVER_ADDR');
+                       $serverIp = $this->getConfigInstance()->detectServerAddress();
                } // END - if
 
                // Yet-another fixed salt. This is not dependend on server software or date
                if ($extraInstance instanceof FrameworkInterface) {
                        // With extra instance information
-                       $this->fixedSalt = sha1($serverIp . ":" . $extraInstance->__toString() . ":" . serialize($this->getDatabaseInstance()->getConnectionData()));
+                       $this->fixedSalt = sha1($serverIp . ':' . $extraInstance->__toString() . ':' . serialize($this->getDatabaseInstance()->getConnectionData()));
                } else {
                        // Without extra information
-                       $this->fixedSalt = sha1($serverIp . ":" . serialize($this->getDatabaseInstance()->getConnectionData()));
+                       $this->fixedSalt = sha1($serverIp . ':' . serialize($this->getDatabaseInstance()->getConnectionData()));
                }
 
                // One-way data we need for "extra-salting" the random number
-               $this->extraSalt = sha1($this->fixedSalt . ":" . getenv('SERVER_SOFTWARE') . ":" . $this->getConfigInstance()->readConfig('date_key') . $this->getConfigInstance()->readConfig('base_url'));
+               $this->extraSalt = sha1($this->fixedSalt . ':' . getenv('SERVER_SOFTWARE') . ':' . $this->getConfigInstance()->getConfigEntry('date_key') . $this->getConfigInstance()->getConfigEntry('base_url'));
 
                // Get config entry for max salt length
-               $this->rndStrLen = $this->getConfigInstance()->readConfig('rnd_str_length');
+               $this->rndStrLen = $this->getConfigInstance()->getConfigEntry('rnd_str_length');
        }
 
        /**
@@ -133,7 +133,7 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
                if ($length < 1) $length = $this->rndStrLen;
 
                // Initialize the string
-               $randomString = "";
+               $randomString = '';
 
                // And generate it
                for ($idx = 0; $idx < $length; $idx++) {
@@ -174,6 +174,24 @@ class RandomNumberGenerator extends BaseFrameworkSystem {
        public final function getFixedSalt () {
                return $this->fixedSalt;
        }
+
+       /**
+        * Generates a key based on if we have extra (default) or fixed salt enabled
+        *
+        * @return      $key    The generated key for encrypion
+        */
+       public function generateKey () {
+               // Default is extra salt
+               $key = md5($this->getExtraSalt());
+
+               // Get key
+               if ($this->getConfigInstance()->getConfigEntry('crypt_fixed_salt') == 'Y') {
+                       $key = md5($this->getFixedSalt());
+               } // END - if
+
+               // Return it
+               return $key;
+       }
 }
 
 // [EOF]