Example #1
0
 /**
  * Iniciar instalación.
  *
  * @return array resultado del proceso
  */
 public static function install()
 {
     $error = array();
     if (!self::$_username) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar nombre de usuario admin'), 'hint' => _('Usuario admin para acceso a la aplicación'));
     } elseif (!self::$_password) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar la clave de admin'), 'hint' => _('Clave del usuario admin de la aplicación'));
     } elseif (!self::$_masterPassword) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar la clave maestra'), 'hint' => _('Clave maestra para encriptar las claves'));
     } elseif (strlen(self::$_masterPassword) < 11) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Clave maestra muy corta'), 'hint' => _('La longitud de la clave maestra ha de ser mayor de 11 caracteres'));
     } elseif (!self::$_dbuser) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar el usuario de la BBDD'), 'hint' => _('Usuario con permisos de administrador de la Base de Datos'));
     } elseif (!self::$_dbpass) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar la clave de la BBDD'), 'hint' => _('Clave del usuario administrador de la Base de Datos'));
     } elseif (!self::$_dbname) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar el nombre de la BBDD'), 'hint' => _('Nombre para la BBDD de la aplicación pej. syspass'));
     } elseif (substr_count(self::$_dbname, '.') >= 1) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('El nombre de la BBDD no puede contener "."'), 'hint' => _('Elimine los puntos del nombre de la Base de Datos'));
     } elseif (!self::$_dbhost) {
         $error[] = array('type' => SPException::SP_CRITICAL, 'description' => _('Indicar el servidor de la BBDD'), 'hint' => _('Servidor donde se instalará la Base de Datos'));
     }
     if (count($error) === 0) {
         //no errors, good
         // Generate a random salt that is used to salt the local user passwords
         Config::setValue('passwordsalt', Util::generate_random_bytes(30));
         Config::setValue('version', implode(Util::getVersion(true)));
         if (preg_match('/(.*):(\\d{1,5})/', self::$_dbhost, $match)) {
             self::setDbhost($match[1]);
             $dbport = $match[2];
         } else {
             $dbport = 3306;
         }
         // Save DB connection info
         Config::setValue('dbhost', self::$_dbhost);
         Config::setValue('dbname', self::$_dbname);
         // Set some basic configuration options
         Config::setDefaultValues();
         try {
             self::checkDatabaseAdmin(self::$_dbhost, self::$_dbuser, self::$_dbpass, $dbport);
             self::setupMySQLDatabase();
             self::createAdminAccount();
         } catch (SPException $e) {
             $error[] = array('type' => $e->getType(), 'description' => $e->getMessage(), 'hint' => $e->getHint());
             return $error;
         }
         ConfigDB::setValue('version', implode(Util::getVersion(true)));
         Config::setValue('installed', 1);
     }
     return $error;
 }