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(); }
/** * Crea una instalación básica. * @gtk_icono nucleo/agregar.gif */ function opcion__crear() { if (!toba_modelo_instalacion::existe_info_basica()) { $this->consola->titulo("Configurando INSTALACION en: " . toba_modelo_instalacion::dir_base()); $id_grupo_desarrollo = self::definir_id_grupo_desarrollo(); $alias = self::definir_alias_nucleo(); $tipo_instalacion = $this->definir_tipo_instalacion_produccion(); $nombre = $this->definir_nombre_instalacion(); toba_modelo_instalacion::crear($id_grupo_desarrollo, $alias, $nombre, $tipo_instalacion); $this->consola->enter(); $this->consola->mensaje("La instalacion ha sido inicializada"); $this->consola->mensaje("Para definir bases de datos, utilize el comando 'toba base registrar -d [nombre_base]'"); } else { $this->consola->enter(); $this->consola->mensaje('Ya existe una INSTALACION.'); $this->consola->enter(); } }
/** * Devuelve la lista de las INSTANCIAS */ static function get_lista($instalacion = null) { if (!isset($instalacion)) { $instalacion = toba_modelo_instalacion::dir_base(); } $dirs = array(); try { $temp = toba_manejador_archivos::get_subdirectorios($instalacion, '|^' . self::dir_prefijo . '|'); foreach ($temp as $dir) { $temp_dir = explode(self::dir_prefijo, $dir); if (count($temp_dir) > 1) { $dirs[] = $temp_dir[1]; } } } catch (toba_error $e) { // No existe la instalacion } return $dirs; }
/** * Ejecuta una instalacion completa del framework para desarrollar un nuevo proyecto * @consola_parametros Opcionales: [-d 'iddesarrollo'] [-t 0| 1] [-n 'nombre inst'] [-h 'ubicacion bd'] [-p 'puerto'] [-u 'usuario bd'] [-b nombre bd] [-c 'archivo clave bd'] [-k 'archivo clave usuario admin'] [--usuario-admin 'usuario admin'] * @gtk_icono instalacion.png */ function opcion__instalar() { $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release('_'); $alias = '/' . 'toba_' . toba_modelo_instalacion::get_version_actual()->get_release(); //--- Verificar instalacion $param = $this->get_parametros(); //--- Borra la instalacion anterior?? if (toba_modelo_instalacion::existe_info_basica()) { toba_modelo_instalacion::borrar_directorio(); } //--- Crea la INSTALACION $id_desarrollo = $this->definir_id_grupo_desarrollo($param); $tipo_instalacion = $this->definir_tipo_instalacion_produccion($param); $nombre = $this->definir_nombre_instalacion($param); toba_modelo_instalacion::crear($id_desarrollo, $alias, $nombre, $tipo_instalacion); $id_instancia = $tipo_instalacion == '1' ? 'produccion' : $this->get_entorno_id_instancia(true); //--- Crea la definicion de bases $base = $nombre_toba; if (!$this->get_instalacion()->existe_base_datos_definida($base)) { $datos = array('motor' => 'postgres7', 'profile' => $this->definir_profile_motor($param), 'usuario' => $this->definir_usuario_motor($param), 'clave' => $this->definir_clave_motor($param), 'base' => $this->definir_base_motor($param), 'puerto' => $this->definir_puerto_motor($param), 'encoding' => 'LATIN1', 'schema' => $id_instancia); $this->get_instalacion()->agregar_db($base, $datos); } //--- Crea la instancia $proyectos = array(); toba_modelo_instancia::crear_instancia($id_instancia, $base, $proyectos); //-- Carga la instancia $instancia = $this->get_instancia($id_instancia); $instancia->cargar(true); //Si no es interactivo, crea siempre la BD //--- Pido el password para el usuario por defecto $pwd = $this->definir_clave_usuario_admin($param); $usr = $this->definir_usuario_admin($param); //--- Vincula un usuario a todos los proyectos y se instala el proyecto $instancia->agregar_usuario($usr, 'Usuario Administrador', $pwd); $instancia->exportar_local(); //--- Crea los nuevos alias $instancia->crear_alias_proyectos(); $release = toba_modelo_instalacion::get_version_actual()->get_release(); $instal_dir = toba_modelo_instalacion::dir_base(); if (toba_manejador_archivos::es_windows()) { if (isset($_SERVER['USERPROFILE'])) { $path = $_SERVER['USERPROFILE']; } else { $path = $instal_dir; } $path .= "\\entorno_toba_{$release}.bat"; $bat = "@echo off\n"; $bat .= "set TOBA_DIR=" . toba_dir() . "\n"; $bat .= "set TOBA_INSTANCIA={$id_instancia}\n"; $bat .= "set TOBA_INSTALACION_DIR={$instal_dir}\n"; $bat .= "set PATH=%PATH%;%TOBA_DIR%/bin\n"; $bat .= "echo Entorno cargado.\n"; $bat .= "echo Ejecute 'toba' para ver la lista de comandos disponibles.\n"; file_put_contents($path, $bat); } else { $path = $instal_dir; $path .= "/entorno_toba.env"; $bat = "export TOBA_DIR=" . toba_dir() . "\n"; $bat .= "export TOBA_INSTANCIA={$id_instancia}\n"; $bat .= "export TOBA_INSTALACION_DIR={$instal_dir}\n"; $bat .= 'export PATH="$TOBA_DIR/bin:$PATH"' . "\n"; $bat .= "echo \"Entorno cargado.\"\n"; $bat .= "echo \"Ejecute 'toba' para ver la lista de comandos disponibles.\"\n"; file_put_contents($path, $bat); chmod($path, 0755); } }
/** * Punto de entrada desde la consola al nucleo */ function acceso_consola($instancia, $proyecto, $item) { $estado_proceso = null; $this->iniciar_contexto_desde_consola($instancia, $proyecto); try { $this->solicitud = toba_constructor::get_runtime(array('proyecto' => $proyecto, 'componente' => $item), 'toba_item'); $this->solicitud->procesar(); //Se llama a la ACTIVIDAD del ITEM $this->solicitud->registrar(); $this->solicitud->finalizar_objetos(); $estado_proceso = $this->solicitud->get_estado_proceso(); } catch (toba_error $e) { toba::logger()->crit($e, 'toba'); echo $e; } $this->finalizar_contexto_ejecucion(); toba::logger()->debug('Estado Proceso: ' . $estado_proceso, 'toba'); //toba::logger()->debug('Tiempo utilizado: ' . toba::cronometro()->tiempo_acumulado() . ' seg.'); $dir_logs = toba_modelo_instalacion::dir_base() . '/logs_comandos'; toba::logger()->set_directorio_logs($dir_logs); toba::logger()->guardar_en_archivo('comandos.log'); exit($estado_proceso); }
/** * Retorna el path del archivo de configuración de apache resultante */ function crear_instalacion_e_instancia($nombre_instancia, $datos_motor, $grupo) { $instalacion = $this->get_instalacion(); $nombre_toba = 'toba_' . toba_modelo_instalacion::get_version_actual()->get_string_partes(); $alias = '/' . $nombre_toba; $nombre = $instalacion->get_nombre(); //--- Borra todo rastro anterior if (toba_modelo_instalacion::existe_info_basica()) { toba_modelo_instalacion::borrar_directorio(); } //--- Crea el dir instalacion toba_modelo_instalacion::crear($grupo, $alias, $nombre); //--- Crea la instancia $this->crear_instancia($nombre_instancia, $datos_motor); $toba_conf = toba_modelo_instalacion::dir_base() . "/toba.conf"; return $toba_conf; }
protected function empaquetar_produccion($empaquetado) { $this->manejador_interface->mensaje("Copiando framework", false); $librerias = array(); $proyectos = array(); if (isset($empaquetado['librerias'])) { $librerias = explode(',', $empaquetado['librerias']); $librerias = array_map('trim', $librerias); } if (isset($empaquetado['proyectos_extra'])) { $proyectos = explode(',', $empaquetado['proyectos_extra']); $proyectos = array_map('trim', $proyectos); $proyectos = array_diff($proyectos, array('toba_editor')); } $instalacion = $this->instancia->get_instalacion(); $destino_instalacion = $empaquetado['path_destino'] . '/proyectos/' . $this->get_id() . '/toba'; $instalacion->empaquetar_en_carpeta($destino_instalacion, $librerias, $proyectos); $this->manejador_interface->progreso_fin(); //--- Empaqueta el proyecto actual $this->manejador_interface->mensaje("Copiando aplicacion", false); $destino_aplicacion = $empaquetado['path_destino'] . '/proyectos/' . $this->get_id() . '/aplicacion'; $excepciones = array(toba_dir(), $this->get_instancia()->get_path_proyecto('toba_editor'), toba_modelo_instalacion::dir_base()); //Se excluye el editor if (isset($empaquetado['excepciones_proyecto'])) { $excepciones_extra = explode(',', $empaquetado['excepciones_proyecto']); $origen = $this->get_dir(); foreach (array_keys($excepciones_extra) as $i) { if (trim($excepciones_extra[$i]) != '') { $excepciones[] = $origen . '/' . trim($excepciones_extra[$i]); } } } $this->empaquetar_proyecto($destino_aplicacion, $excepciones); $this->actualizar_punto_acceso($destino_aplicacion); }
/* Este script abre una consola del SIU-TOBA */ if (!isset($_SERVER['TOBA_DIR']) && isset($_SERVER['toba_dir'])) { $_SERVER['TOBA_DIR'] = $_SERVER['toba_dir']; } if (!isset($_SERVER['TOBA_INSTANCIA']) && isset($_SERVER['toba_instancia'])) { $_SERVER['TOBA_INSTANCIA'] = $_SERVER['toba_instancia']; } if (isset($_SERVER['TOBA_DIR'])) { //---------------------------------------------- // Defino el 'include_path' //---------------------------------------------- $dir = $_SERVER['TOBA_DIR'] . "/php"; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); //---------------------------------------------- // Invoco la consola //---------------------------------------------- require_once 'consola/consola.php'; $directorio_comandos = $dir . "/consola/comandos"; $clase_menu = 'menu_toba'; array_shift($argv); $consola = new consola($directorio_comandos, $clase_menu); $consola->run($argv); $dir_logs = toba_modelo_instalacion::dir_base() . "/logs_comandos"; toba_logger::instancia()->set_directorio_logs($dir_logs); toba_logger::instancia()->guardar_en_archivo('comandos.log'); } else { echo " ATENCION: La variable de entorno 'toba_dir' no esta definida!"; }