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