/** * 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; }