!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/instalacion/   drwxr-xr-x
Free 14.91 GB of 61.93 GB (24.08%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_instalador.php (10.88 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require_once('modelo/lib/toba_proceso_gui.php');
require_once(
'nucleo/toba_nucleo.php');

class 
toba_instalador
{
    static protected 
$indice_archivos;    
    protected 
$progreso;

    function 
__construct($progreso=null)
    {
        if (! isset(
$progreso)) {
            
$progreso = new toba_mock_proceso_gui();
        }
        
self::$indice_archivos toba_nucleo::get_indice_archivos();
        unset(
self::$indice_archivos['toba']);    //Para que el logger se de cuenta de que esta en la consola
        
spl_autoload_register(array('toba_instalador''cargador_clases'));
        
self::cargar_includes_basicos();
        
$this->set_progreso($progreso);
    }
    
    function 
set_conexion($base)
    {
        
toba_modelo_instalacion::set_conexion_externa($base);
    }
    
    
    function 
set_progreso($progreso)
    {
        if (isset(
$progreso)) {
            
$this->progreso $progreso;
        }
    }
    
    function 
grabar_logs()
    {
        
$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');        
    }
    
    
//--------------------------------------------------------------
    // Carga de clases
    //--------------------------------------------------------------
    
    
static function cargador_clases($clase)
    {
        if(isset(
self::$indice_archivos[$clase])) {
            require_once( 
toba_nucleo::toba_dir() .'/php/'self::$indice_archivos[$clase]);
        }
    }
    
    function 
cargar_includes_basicos()
    {
        foreach(
toba_nucleo::get_includes_funciones_globales() as $archivo ) {
            require_once( 
toba_nucleo::toba_dir() . $archivo);
        }
    }

    
    
//--------------------------------------------------------------
    // Acceso al catalogo del modelo
    //--------------------------------------------------------------

    /**
     * @return toba_modelo_instalacion
     */
    
function get_instalacion()
    {
        return 
toba_modelo_catalogo::instanciacion()->get_instalacion($this->progreso);
    }
    
    
/**
     * @return toba_modelo_instancia
     */
    
function get_instancia($id)
    {
        return 
toba_modelo_catalogo::instanciacion()->get_instancia($id$this->progreso);
    }

    
    
//--------------------------------------------------------------
    // Métodos comprometidos con GTK
    //--------------------------------------------------------------
    
    
function get_comp_administracion($id_proyecto=null)
    {
        require_once(
'instalacion/toba_gtk_admin.php');
        
$gtk_admin = new toba_gtk_admin($this$this->progreso);
        return 
$gtk_admin->construir_dialogo($id_proyecto);
    }
    
    
//--------------------------------------------------------------
    // Métodos de acceso
    //--------------------------------------------------------------
    
    /**
     * Exporta los proyectos-no-propios de todas las instancias de la instalacion
     */
    
function instalacion_exportar($excluir_internos=true)
    {
        
$instalacion $this->get_instalacion();
        if (
$excluir_internos) {
            
$excluir = array('toba_editor''toba_referencia''toba_testing''toba_usuarios');
        } else {
            
$excluir = array();
        }
        foreach (
$instalacion->get_lista_instancias() as $id_inst) {
            
$instancia $instalacion->get_instancia($id_inst);
            
$instancia->exportar($excluir);
        }
    }

    
/**
     * Regenera todas las instancias de la instalacion
     */
    
function instalacion_regenerar()
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_inst) {
            
$instancia $instalacion->get_instancia($id_inst);
            
$instancia->cargar(true);
        }        
    }
    
    
/**
     * Elimina todas las instancias de la instalacion
     */
    
function instalacion_eliminar_instancias()
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_inst) {
            
$instancia $instalacion->get_instancia($id_inst);
            
//-- Aprovecha a desinstalar los proyectos propios de toba de las instancias
            
$instancia $this->get_instancia($id_inst);
            foreach (
$instancia->get_lista_proyectos_vinculados() as $id_proy) {
                
$proy_propios = array('toba_editor''toba_referencia''toba_testing''toba_instancia');
                if (
in_array($id_proy$proy_propios)) {
                    
$instancia->get_proyecto($id_proy)->desinstalar();
                }
            }
            
$instancia->eliminar();
        }        
    }    
    
    function 
instalacion_migrar($version)
    {
        
$version = new toba_version($version);
        
$instalacion $this->get_instalacion();
        
$instalacion->migrar_version($versiontrue);
    }
    
    
/**
     * 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;
        
        
//--- 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 );
        
        
//--- Crea la instancia
        
$this->crear_instancia($nombre_instancia$datos_motor);
        
        
$toba_conf toba_modelo_instalacion::dir_base()."/toba.conf";
        return 
$toba_conf;
    }

    function 
crear_instancia($nombre_instancia$datos_motor)
    {
        
$nombre_toba 'toba_'.toba_modelo_instalacion::get_version_actual()->get_string_partes();
                
        
//--- Agrega la fuente de datos de la instancia
        
$datos_motor['base'] = $nombre_toba.'_'.$nombre_instancia;
        
$confirmado false;
        do {
            
$this->get_instalacion()->agregar_db$nombre_instancia$datos_motor );
            
//--- Si la base existe, pregunta por un nombre alternativo, por si no quiere pisarla
            
if ($this->get_instalacion()->existe_base_datos($nombre_instancia)) {
                
$mensaje "La base <b>{$datos_motor['base']}</b> ya está siendo utiliza en este servidor.";
                
$confirmado inst_fact::gtk()->confirmar_pisar_base($mensaje);
                if (
$confirmado !== true) {                                                                
                    
$datos_motor['base'] = $confirmado;
                    
$confirmado false;
                }
            } else {
                
$confirmado true;
            }
        } while (
$confirmado === false);    
        
            
//--- Crea la instancia
        
$proyectos toba_modelo_proyecto::get_lista();
        if (isset(
$proyectos['toba_testing'])) {
            
//--- Elimina el proyecto toba_testing 
            
unset($proyectos['toba_testing']);
        }
        
toba_modelo_instancia::crear_instancia$nombre_instancia$nombre_instancia$proyectos);
        
$instancia $this->get_instancia($nombre_instancia);
        
$instancia->cargartrue );
        
        
//--- Vincula un usuario a todos los proyectos
        
$instancia->agregar_usuario'toba''Usuario Toba''toba');
        foreach( 
$instancia->get_lista_proyectos_vinculados() as $id_proyecto ) {
            
$proyecto $instancia->get_proyecto($id_proyecto);
            
$grupo_acceso $proyecto->get_grupo_acceso_admin();
            
$proyecto->vincular_usuario'toba'$grupo_acceso );
        }
        
$instancia->exportar_local();
        
        
//--- Crea los nuevos alias
        
$instancia->crear_alias_proyectos();

        
//--- Ejecuta instalaciones particulares de cada proyecto
        
foreach( $instancia->get_lista_proyectos_vinculados() as $id_proyecto ) {
            
$instancia->get_proyecto($id_proyecto)->instalar();
        }            
    }
    
    
/**
     * Carga el proyecto en una instancia y ejecuta el proceso de instalacion y creación de 
     * la instancia de negocio de ese proyecto
     */
    
function proyecto_cargar_e_instalar($proy_id$proy_path$nombre_instancia$datos_motor$url=null)
    {
        
$instalacion $this->get_instalacion();
        if (! 
$this->get_instalacion()->existe_instancia($nombre_instancia)) {
            
$this->crear_instancia($nombre_instancia$datos_motor);
        }
        
$instancia $this->get_instancia($nombre_instancia);

        
$existe false;
        if (
$instancia->existe_proyecto_vinculado($proy_id)) {
            if (! 
$this->progreso->dialogo_simple("Ya existe el proyecto $proy_id en la instancia $nombre_instancia. ¿Desea reemplazarlo?")) {
                return;
            } else {
                
$instancia->eliminar_proyecto($proy_id);
            }
        }
        
//--- Vincula el proyecto y lo carga a la instancia
        
$this->progreso->mensaje("Cargando el proyecto en la instancia $nombre_instancia...");
        
$instancia->vincular_proyecto($proy_id$proy_path$url);
        
$proyecto $instancia->get_proyecto($proy_id);
        
$proyecto->cargar_autonomo();

        
//--- Vincula los usuarios existententes a un grupo de acceso administrador
        
$this->progreso->mensaje("Vinculando usuarios...");
        
$grupo_acceso $proyecto->get_grupo_acceso_admin();        
        foreach ( 
$instancia->get_lista_usuarios() as $usuario ) {
            
$proyecto->vincular_usuario$usuario['usuario'], $grupo_acceso );
            
$this->progreso->progreso_avanzar();
        }
        
$instancia->exportar_local();
        
$proyecto->publicar();            
        
//--- Ventana de instalacion propia del proyecto
        
$proyecto->instalar();
    }

    
/**
     * Recorre todas las instancias donde se encuentra el proyecto y exporta sus metadatos
     * @param string $proy_id
     */
    
function proyecto_exportar_local($proy_id)
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_instancia) {
            
$instancia $this->get_instancia($id_instancia);
            if (
$instancia->existe_proyecto_vinculado($proy_id)) {
                
$instancia->exportar_local();
            }
        }
    }
    
    
    
    
/**
     * Recorre todas las instancias donde se encuentra el proyecto y exporta sus metadatos
     * @param string $proy_id
     */
    
function proyecto_exportar($proy_id)
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_instancia) {
            
$instancia $this->get_instancia($id_instancia);
            if (
$instancia->existe_proyecto_vinculado($proy_id)) {
                
$instancia->get_proyecto($proy_id)->exportar();
                
$instancia->exportar_local();
            }
        }
    }    
    
    
/**
     * Recorre todas las instancias donde se encuentra el proyecto y elimina sus metadatos y datos de negocio opcionalmente
     * @param string $proy_id
     */
    
function proyecto_eliminar($proy_id$desinstalar)
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_instancia) {
            
$instancia $this->get_instancia($id_instancia);
            if (
$instancia->existe_proyecto_vinculado($proy_id)) {
                
$instancia->get_proyecto($proy_id)->despublicar();
                
$instancia->eliminar_proyecto($proy_id$desinstalar);
            }
        }
    }    

    
    
/**
     * Recorre todas las instancias donde se encuentra el proyecto y regenera sus metadatos
     * @param string $proy_id
     */    
    
function proyecto_regenerar($proy_id)
    {
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_instancia) {
            
$instancia $this->get_instancia($id_instancia);
            if (
$instancia->existe_proyecto_vinculado($proy_id)) {
                
$instancia->get_proyecto($proy_id)->regenerar();
            }
        }
    }

    
/**
     * Recorre todas las instancias donde se encuentra el proyecto y migra sus datos de negocio
     * @param string $proy_id
     */        
    
function proyecto_migrar($proy_id$version_numero)
    {
        
$version_desde = new toba_version($version_numero);
        
$instalacion $this->get_instalacion();
        foreach (
$instalacion->get_lista_instancias() as $id_instancia) {
            
$instancia $this->get_instancia($id_instancia);
            if (
$instancia->existe_proyecto_vinculado($proy_id)) {
                
$proyecto $instancia->get_proyecto($proy_id);
                
$proyecto->migrar_datos_negocio($version_desde$proyecto->get_version_proyecto());
            }
        }        
    }

}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.8054 ]--