/** * Instancia el cliente RDI * @return \RDICliente * @throws toba_error * @ignore */ protected function instanciar_cliente() { $id_proyecto = $this->proyecto->get_id(); $ini = new toba_ini($this->instalacion->get_path_carpeta_instalacion() . self::nombre_archivo); if (!$ini->existe_entrada($id_proyecto)) { throw new toba_error('Falta el archivo de configuración rdi.ini'); } $parametros = $ini->get($id_proyecto); $nombre = $this->instalacion->get_nombre(); if (trim($nombre) == '' && !isset($parametros['instalacion'])) { throw new toba_error('Falta especificar el nombre de la instalacion en el archivo instalacion.ini'); } $nombre_inst = trim($nombre) != '' ? $nombre : $parametros['instalacion']; $rdi = new RDICliente($parametros['conector'], $parametros['repositorio'], $parametros['usuario'], $parametros['clave'], $id_proyecto, $nombre_inst); //Agrego un log para desarrollo if (!$this->instalacion->es_produccion()) { $log = new toba_logger_rdi($id_proyecto); $rdi->asociarLog($log); } //Reviso si existen servicios redefinidos y los asigno $serv_personalizados = toba::proyecto()->get_parametro('servicios_rdi', null, false); if (!is_null($serv_personalizados)) { foreach ($serv_personalizados as $servicio => $clase) { $rdi->mapeoServicios()->redefinir($servicio, $clase); } } return $rdi; }
protected function eliminar_punto_indefinido(toba_punto_montaje $punto) { $path_instancia_ini = toba::instancia()->get_path_ini(); $instancia_ini = new toba_ini($path_instancia_ini); $id_proyecto = $punto->get_proyecto(); $nombre = self::prefijo_ini . $punto->get_etiqueta(); if ($instancia_ini->existe_entrada($id_proyecto, $nombre)) { $datos = $instancia_ini->get_datos_entrada($id_proyecto); unset($datos[$nombre]); } $instancia_ini->agregar_entrada($id_proyecto, $datos); $instancia_ini->guardar(); }
/** * Retorna el número de versión propio del proyecto * @return toba_version */ function get_version_proyecto() { $modelo = $this->get_aplicacion_modelo(); if (!isset($modelo)) { $path_ini = $this->get_dir() . '/proyecto.ini'; if (file_exists($path_ini)) { $ini = new toba_ini($path_ini); if ($ini->existe_entrada('proyecto', 'version')) { $version = $ini->get('proyecto', 'version', null, true); return new toba_version($version); } } return toba_modelo_instalacion::get_version_actual(); } else { return $modelo->get_version_actual(); } }
/** * Cambia o agrega algunos parametros al archivo de información de la instalación * @param array $datos clave => valor */ function cambiar_info_basica($datos) { $ini = new toba_ini(self::archivo_info_basica()); foreach ($datos as $entrada => $valor) { if ($ini->existe_entrada($entrada)) { $ini->set_datos_entrada($entrada, $valor); } else { $ini->agregar_entrada($entrada, $valor); } } $ini->guardar(); }
function get_datos_smtp($nombre_config = null) { if (!isset($this->memoria['smtp']) && is_null($nombre_config)) { throw new toba_error('Debe definir la entrada "smtp" el archivo instalacion/instalacion.ini'); } $path_ini_smtp = toba::nucleo()->toba_instalacion_dir() . '/smtp.ini'; if (!file_exists($path_ini_smtp)) { throw new toba_error("No existe el archivo '{$path_ini_smtp}'"); } $ini = new toba_ini($path_ini_smtp); $conf = is_null($nombre_config) ? $this->memoria['smtp'] : $nombre_config; if (!$ini->existe_entrada($conf)) { throw new toba_error("No existe la entrada '{$conf}' el archivo '{$path_ini_smtp}'"); } return $ini->get_datos_entrada($conf); }
protected function get_ini_proyecto() { $resultado = array(); $path_ini = toba_proyecto::get_path() . '/proyecto.ini'; if (file_exists($path_ini)) { $ini = new toba_ini($path_ini); if ($ini->existe_entrada('proyecto')) { $resultado = $ini->get_datos_entrada('proyecto'); } } return $resultado; }
/** * Retorna la versión a la cual se debe migrar la aplicación (si ya esta migrada debería ser igual a la 'version_actual') * @return toba_version */ function get_version_nueva() { if (file_exists($this->proyecto->get_dir() . '/proyecto.ini')) { $ini = new toba_ini($this->proyecto->get_dir() . '/proyecto.ini'); if ($ini->existe_entrada('proyecto', 'version')) { return new toba_version($ini->get('proyecto', 'version', null, true)); } } return $this->instalacion->get_version_actual(); }
protected function postConsumeSamlIdp(Consumption $feature) { $providers = $feature->getProviders(); if (empty($providers)) { return; } //Nada para configurar /** @var Provision */ $provider = current($providers); //Asume primer IDP que encuentra! $options = $provider->getOptions(); $endpoint = $provider->getEndpoint(); if ($endpoint == '') { return; } //Nada para configurar $iniInstalacion = new \toba_ini($this->instalacion->archivo_info_basica()); $iniInstalacion->agregar_entrada("autenticacion", "saml_onelogin"); $iniInstalacion->guardar(); $iniSaml = new \toba_ini($this->instalacion->dir_base() . '/saml_onelogin.ini'); $basicos = $iniSaml->existe_entrada("basicos") ? $iniSaml->get_datos_entrada("basicos") : array(); if (!isset($basicos['permite_login_toba'])) { $basicos['permite_login_toba'] = 0; } if (isset($options['attributes']['uid'])) { $basicos['atributo_usuario'] = $options['attributes']['uid']; } $iniSaml->agregar_entrada("basicos", $basicos); $sp = $iniSaml->existe_entrada("sp") ? $iniSaml->get_datos_entrada("sp") : array(); if (!isset($sp['auth_source'])) { $sp['auth_source'] = 'default-sp'; } if (!isset($sp['session.phpsession.cookiename'])) { $sp['session.phpsession.cookiename'] = 'TOBA_SESSID'; } $sp['idp'] = $endpoint; if (!isset($sp['proyecto_login'])) { $sp['proyecto_login'] = $this->getProyectoId(); } $iniSaml->agregar_entrada("sp", $sp); $idp = $iniSaml->existe_entrada("idp:" . $endpoint) ? $iniSaml->get_datos_entrada("idp:" . $endpoint) : array(); if (isset($options['name'])) { $idp['name'] = $options['name']; } if (isset($options['singleSignOnService'])) { $idp['SingleSignOnService'] = $options['singleSignOnService']; } if (isset($options['singleLogoutService'])) { $idp['SingleLogoutService'] = $options['singleLogoutService']; } if (isset($options['certificate'])) { $certFile = $this->instalacion->dir_base() . '/idp.crt'; if (false === file_put_contents($certFile, $options['certificate'])) { throw new \Exception("No se pudo escribir el archivo {$certFile}. ¿Problemas de permisos?"); } $idp['certFile'] = $certFile; } $iniSaml->agregar_entrada("idp:" . $endpoint, $idp); $iniSaml->guardar(); }