/** * 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; }
static function get_personalizacion_iniciada($proyecto) { $path_proyecto = toba::instancia()->get_path_proyecto($proyecto); $path_pers = $path_proyecto . '/' . toba_personalizacion::dir_personalizacion; $ini_path = $path_pers . '/personalizacion.ini'; if (is_file($ini_path)) { $ini = new toba_ini($ini_path); return $ini->get_datos_entrada('iniciada') == 'si'; } else { return false; } }
function get_path() { if (empty($this->path)) { $path_instancia_ini = toba::instancia()->get_path_ini(); $instancia_ini = new toba_ini($path_instancia_ini); $datos = $instancia_ini->get($this->get_proyecto()); $nombre = toba_modelo_pms::prefijo_ini . $this->get_etiqueta(); if (!isset($datos[$nombre])) { throw new toba_error("Punto de montaje: el punto de montaje\n\t\t\t\t\t'{$this->get_etiqueta()}' no existe en {$path_instancia_ini}.\n\t\t\t\t\tDebe agregar en instancia.ini la entrada\n\t\t\t\t\t'pm_{$this->get_etiqueta()} = path' donde path es la ubicación\n\t\t\t\t\tabsoluta en el sistema de archivos. Esta entrada debe ir en\n\t\t\t\t\tla sección [{$this->get_proyecto()}]"); } $this->path = $datos[$nombre]; } return $this->path; }
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(); }
/** * Agrega una instancia */ static function crear_instancia($nombre, $base, $lista_proyectos, $tipo = 'normal') { //Creo la carpeta if (!self::existe_carpeta_instancia($nombre)) { $dir = self::dir_instancia($nombre); mkdir($dir); toba_logger::instancia()->debug("Creado directorio {$dir}"); } //Creo la clase que proporciona informacion sobre la instancia $ini = new toba_ini(); $ini->agregar_titulo(self::toba_instancia_titulo); $ini->agregar_entrada('base', $base); $str_proyectos = !empty($lista_proyectos) ? implode(',', array_keys($lista_proyectos)) : ''; $ini->agregar_entrada('proyectos', $str_proyectos); $ini->agregar_entrada('tipo', $tipo); //--- Se revisa la lista de proyectos para ver si algun id_proyecto != dir_proyecto foreach ($lista_proyectos as $id_pro => $path_pro) { //$datos_ini = array('url' => '/'.$id_pro); $datos_ini = array(); if ($path_pro != $id_pro) { //--- Se agrega una seccion para el proyecto $datos_ini['path'] = toba_dir() . '/proyectos/' . $path_pro; } $ini->agregar_entrada($id_pro, $datos_ini); } $archivo = self::dir_instancia($nombre) . '/' . toba_modelo_instancia::toba_instancia; $ini->guardar($archivo); toba_logger::instancia()->debug("Creado archivo {$archivo}"); }
/** * Devuelve la lista de proyectos existentes en la carpeta por defecto de la instalación * Es posible que existan proyectos en otros lugares del sistema de archivos y no se listen con este método * @return array Arreglo asociativo path relativo => id proyecto */ static function get_lista($usar_cache = true) { if (!isset(self::$lista_proyectos) || !$usar_cache) { $proyectos = array(); $directorio_proyectos = toba_dir() . '/proyectos'; if (is_dir($directorio_proyectos)) { if ($dir = opendir($directorio_proyectos)) { while (false !== ($archivo = readdir($dir))) { if (is_dir($directorio_proyectos . '/' . $archivo) && $archivo != '.' && $archivo != '..' && $archivo != '.svn') { $arch_nombre = $directorio_proyectos . '/' . $archivo . '/proyecto.ini'; $id = $archivo; //--- Si no se encuentra el archivo PROYECTO, se asume que dir=id if (file_exists($arch_nombre)) { $ini = new toba_ini($arch_nombre); $id = $ini->get('proyecto', 'id', null, true); } $proyectos[$archivo] = $id; } } closedir($dir); } } self::$lista_proyectos = $proyectos; } return self::$lista_proyectos; }
static function eliminar_db($id_base) { $ini = new toba_ini(self::archivo_info_bases()); $ini->agregar_titulo(self::info_bases_titulo); $ini->eliminar_entrada($id_base); $ini->guardar(); toba_logger::instancia()->debug("Eliminada definicion base '{$id_base}'"); }
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(); }