!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/nucleo/lib/   drwxr-xr-x
Free 14.92 GB of 61.93 GB (24.09%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_fuente_datos.php (5.13 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * La fuente de datos encapsula un mecanismo de entrada/salida de datos, típicamente una base relacional
 * Esta clase contiene ventanas antes y despues de la conexión de la fuente y permite acceder al objeto db 
 * que es el que tiene el API de consultas/comandos
 * 
 * @package Fuentes
 */
class toba_fuente_datos
{
    protected 
$definicion;
    protected 
$db;
    
    function 
__construct($definicion)
    {
        
$this->definicion $definicion;
    }
    
    
/**
     * Accede al objeto db que tiene el API para consultas/comandos sobre la fuente
     * @return toba_db
     */
    
function get_db($reusar true)
    {
        if (
$reusar) {
            if (!isset(
$this->db)) {
                
$this->pre_conectar();
                
$this->db toba_dba::get_db_de_fuente(toba::instancia()->get_id(),
                                                            
$this->definicion['proyecto'],
                                                            
$this->definicion['fuente_datos'],
                                                            
$reusar);
                
$this->crear_usuario_para_auditoria($this->db);
                
$this->post_conectar();
                if (isset(
$this->definicion['schema']) && $this->db->get_schema() == null) {
                    
$this->db->set_schema($this->get_conf_schemas());
                }
                
$this->configurar_parseo_errores($this->db);
            }
            return 
$this->db;
        } else {
            
//-- Se pide una conexión aislada, que no la reutilize ninguna otra parte de la aplicación
            // Esta el codigo anterior repetido porque si se unifica, el post_conectar asume la presencia de $this->db y no habria forma de pedir una conexion aislada
            
$db toba_dba::get_db_de_fuente(toba::instancia()->get_id(),
                                                            
$this->definicion['proyecto'],
                                                            
$this->definicion['fuente_datos'],
                                                            
$reusar);
            
$this->crear_usuario_para_auditoria($db);
            if (isset(
$this->definicion['schema'])  && $this->db->get_schema() == null) {
                
$db->set_schema($this->get_conf_schemas());
            }
            
$this->configurar_parseo_errores($db);
            return 
$db;                                                
        }
    }
    
    
/**
     * Dado el nombre de una tabla de la fuente, retorna el id de su datos_tabla asociado
     * @param string $tabla
     * @return int
     */
    
function get_id_datos_tabla($tabla)
    {
        if (! isset(
$this->definicion['mapeo_tablas_dt'])) {
            
//-- Lazyload de la relacion entre tabla y dt por un tema de eficiencia
            
$this->definicion['mapeo_tablas_dt'] = toba_proyecto_db::get_mapeo_tabla_dt($this->definicion['proyecto'], $this->definicion['fuente_datos']);
        }
        if (isset(
$this->definicion['mapeo_tablas_dt'][$tabla])) {
            return 
$this->definicion['mapeo_tablas_dt'][$tabla];
        } else {
            throw new 
toba_error("No se encuentra el datos_tabla asociado a la tabla $tabla en la fuente {$this->definicion['fuente_datos']}");
        }
    }
    
    
/**
    *    Ventana para personalizar las acciones previas a la conexión
    * @ventana
    */
    
function pre_conectar() {}
    
    
/**
    * Ventana para personalizar las acciones posteriores a la conexión
    * @ventana
    */
    
function post_conectar() {}

    function 
crear_usuario_para_auditoria($db)
    {
        if (
$this->definicion['tiene_auditoria'] == '1') {
            
$usuario toba::usuario()->get_id();            
            if (! isset(
$usuario)) {
                
$usuario 'publico';
            }
            
            
$id_solicitud $db->quote(toba::instancia()->get_id_solicitud());
            
$usuario $db->quote($usuario);
            
$sql 'CREATE TEMP TABLE tt_usuario ( usuario VARCHAR(60), id_solicitud INTEGER);';
            if (isset(
$this->definicion['permisos_por_tabla']) && $this->definicion['permisos_por_tabla'] == '1') {
                
$id_operacion toba::memoria()->get_item_solicitado();
                
$rol_runtime =  toba_modelo_proyecto::get_rol_prueba_db_basico($this->definicion['fuente_datos']);                                    //Obtengo el rol basico de prueba
                
$rol_operacion toba_modelo_proyecto::get_rol_prueba_db($this->definicion['fuente_datos'], $id_operacion['1']);            //Obtengo el particular para la operacion
                
if ($db->existe_rol($rol_operacion)) {                            //Si existe el rol para la operacion entonces lo seteo como el apropiado
                    
$rol_runtime $rol_operacion;
                }

                
$sql .= "GRANT SELECT, INSERT ON tt_usuario TO $rol_runtime ;";
            }            
            
$sql .= "INSERT INTO tt_usuario (usuario, id_solicitud) VALUES ($usuario$id_solicitud)";
            
$db->ejecutar($sql);
        }
    }

    function 
configurar_parseo_errores($db)
    {
        if (
$this->definicion['parsea_errores'] == '1'){
            
$parseador 'toba_parser_error_db_'$this->definicion['motor'];
            
$db->set_parser_errores(new $parseador);
        }
    }

    function 
set_fuente_posee_auditoria($tiene false)
    {
        
$this->definicion['tiene_auditoria'] = ($tiene) ? '1' '0';
        
$sql 'UPDATE apex_fuente_datos 
                SET tiene_auditoria = ' 
$this->definicion['tiene_auditoria'] . 
              
' WHERE 
                proyecto = '
quote($this->definicion['proyecto']) .
             
' AND fuente_datos = 'quote($this->definicion['fuente_datos']);
        
        
$this->get_db()->ejecutar($sql);        
    }

    function 
set_fuente_parsea_errores($parsea false)
    {
        
$this->definicion['parsea_errores'] = ($parsea) ? '1' '0';
    }
    
    function 
usa_permisos_por_tabla()
    {
        return (isset(
$this->definicion['permisos_por_tabla']) && ($this->definicion['permisos_por_tabla'] == '1'));
    }
    
    private function 
get_conf_schemas()
    {
        return 
" '{$this->definicion['schema']}', 'public' ";
    }
    
    
/**
     * @ignore
     */
    
function resetear_mapeo_tablas()
    {
        if (isset(
$this->definicion['mapeo_tablas_dt'])) {
            unset(
$this->definicion['mapeo_tablas_dt']);
        }
    }
}
?>

:: 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.6885 ]--