Exemplo n.º 1
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.º 2
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.º 3
0
 /**
  * Crea el archivo con la lista de bases disponibles
  */
 static function crear_info_bases($lista_bases = array())
 {
     $ini = new toba_ini();
     $ini->agregar_titulo(self::info_bases_titulo);
     foreach ($lista_bases as $id => $base) {
         //Valido que la definicion sea correcta
         if (isset($base['motor']) && isset($base['profile']) && isset($base['usuario']) && isset($base['clave']) && isset($base['base'])) {
             $ini->agregar_entrada($id, $base);
         } else {
             throw new toba_error("La definicion de la BASE '{$id}' es INCORRECTA.");
         }
     }
     $ini->guardar(self::archivo_info_bases());
     toba_logger::instancia()->debug("Creado archivo " . self::archivo_info_bases());
 }
Exemplo n.º 4
0
 /**
  * Genera y copia los archivos necesarios para el instalador
  */
 function empaquetar($tipo_paquete)
 {
     $nombre_ini = 'proyecto.ini';
     $path_ini = $this->get_dir() . '/' . $nombre_ini;
     if (!file_exists($path_ini)) {
         throw new toba_error("Para crear el paquete de instalación debe existir el archivo '{$nombre_ini}' en la raiz del proyecto");
     }
     $ini = new toba_ini($path_ini);
     //--- Crea la carpeta destino
     $crear_carpeta = false;
     $empaquetado = $ini->get_datos_entrada('empaquetado');
     if (!isset($empaquetado['path_destino'])) {
         throw new toba_error("'{$nombre_ini}': Debe indicar 'path_destino' en seccion [empaquetado]");
     }
     $empaquetado['path_destino'] .= '/' . $this->get_version_proyecto()->__toString();
     if ($tipo_paquete === self::tipo_paquete_desarrollo) {
         //Segun el tipo de paquete, agrego un sufijo al nombre de carpeta y determino el tipo de instalacion
         $empaquetado['path_destino'] .= '_desarrollo';
         $es_produccion = 0;
     } else {
         $es_produccion = 1;
     }
     if (file_exists($empaquetado['path_destino'])) {
         if (!is_dir($empaquetado['path_destino'])) {
             throw new toba_error("'{$nombre_ini}': La ruta '{$empaquetado['path_destino']}' no es un directorio valido");
         }
         if (!toba_manejador_archivos::es_directorio_vacio($empaquetado['path_destino'])) {
             //-- Existe la carpeta y no está vacia, se borra?
             if ($this->manejador_interface->dialogo_simple("La carpeta destino '{$empaquetado['path_destino']}' no esta vacia. Desea borrarla?", 's')) {
                 toba_manejador_archivos::eliminar_directorio($empaquetado['path_destino']);
                 $crear_carpeta = true;
             }
         }
     } else {
         $crear_carpeta = true;
     }
     if ($crear_carpeta) {
         toba_manejador_archivos::crear_arbol_directorios($empaquetado['path_destino']);
     }
     $empaquetado['path_destino'] = realpath($empaquetado['path_destino']);
     //--- Compila metadatos del proyecto
     $this->compilar();
     //--- Incluye el instalador base
     $this->manejador_interface->titulo("Copiando archivos");
     if (!isset($empaquetado['path_instalador'])) {
         $empaquetado['path_instalador'] = toba_dir() . '/instalador';
     }
     $path_relativo = $empaquetado['path_instalador'];
     $empaquetado['path_instalador'] = realpath($empaquetado['path_instalador']);
     if (!file_exists($empaquetado['path_instalador']) || !is_dir($empaquetado['path_instalador'])) {
         throw new toba_error("'{$nombre_ini}': La ruta '{$path_relativo}' no es un directorio valido");
     }
     $this->manejador_interface->mensaje("Copiando instalador..", false);
     $excepciones = array($empaquetado['path_instalador'] . '/ejemplo.proyecto.ini');
     toba_manejador_archivos::copiar_directorio($empaquetado['path_instalador'], $empaquetado['path_destino'], $excepciones, $this->manejador_interface, false);
     // --------- Genero el archivo instalador.ini con la revision del codigo del instalador -------
     $svn = new toba_svn();
     $rev = $svn->get_revision($empaquetado['path_instalador']);
     if (trim($rev) == '') {
         $rev = 'ND';
     }
     $inst_ini = new toba_ini($empaquetado['path_destino'] . '/instalador.ini');
     $inst_ini->agregar_entrada('revision', $rev);
     $inst_ini->agregar_entrada('instalacion_produccion', $es_produccion);
     $inst_ini->guardar();
     $this->manejador_interface->progreso_fin();
     //-----Creo un autoload con las clases del instalador + las que se redefinieron del mismo
     $this->manejador_interface->mensaje('Generando autoload instalador...', false);
     $destino_relativo = 'proyectos/' . $this->get_id() . '/aplicacion';
     $extras = array();
     $redefinidos = $ini->get('instalador_clases_redefinidas', null, null, false);
     if (!is_null($redefinidos)) {
         foreach ($redefinidos as $clase) {
             $nombre = basename($clase, '.php');
             $extras[$nombre] = $destino_relativo . '/' . $clase;
         }
     }
     $pm = array($empaquetado['path_destino'] => array('archivo_salida' => "instalador_autoload.php", 'dirs_excluidos' => array(), 'extras' => $extras));
     $generador_autoload = new toba_extractor_clases($pm);
     $generador_autoload->generar();
     $this->manejador_interface->progreso_fin();
     //--- Empaqueta el núcleo de toba y lo deja en destino
     if ($tipo_paquete === self::tipo_paquete_desarrollo) {
         $this->empaquetar_desarrollo($empaquetado);
     } else {
         $this->empaquetar_produccion($empaquetado);
     }
     $this->manejador_interface->progreso_fin();
     $this->manejador_interface->mensaje("", true);
     $this->manejador_interface->mensaje("Proyecto empaquetado en: {$empaquetado['path_destino']}", true);
 }
Exemplo n.º 5
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();
 }