Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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();
 }
Exemplo n.º 5
0
 /**
  * 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}");
 }
Exemplo n.º 6
0
 /**
  *	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;
 }
Exemplo n.º 7
0
 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}'");
 }
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
0
 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;
 }
Exemplo n.º 10
0
 /**
  * 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();
 }
Exemplo n.º 11
0
 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();
 }