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();
 }
Example #2
0
 /**
  * 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();
     }
 }
Example #3
0
 /**
  * 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);
     }
 }
Example #5
0
 /**
  * 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);
 }
Example #6
0
 /**
  * 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;
 }
Example #7
0
 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);
 }
Example #8
0
/*
	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!";
}