!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_led/proyectos/ledback/php/login/   drwxrwxr-x
Free 11.74 GB of 61.93 GB (18.96%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ci_login.php (13.36 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class ci_login extends toba_ci
{
    protected 
$s__datos;
    protected 
$s__datos_openid;
    protected 
$en_popup false;
    protected 
$s__item_inicio;
    private 
$es_cambio_contrasenia false;
    
    
/**
     * Guarda el id de la operación original así se hace una redirección una vez logueado
     */
    
function ini__operacion()
    {
        
//--- Si el usuario pidio originalmente algún item distinto al de login, se fuerza como item de inicio de sesión
        
$item_original toba::memoria()->get_item_solicitado_original();
        
$item_actual toba::memoria()->get_item_solicitado();
        if (isset(
$item_original) && isset($item_actual) &&
                
$item_actual[1] != $item_original[1]) {
            
toba::proyecto()->set_parametro('item_inicio_sesion'$item_original[1]);
        }
        
$this->s__item_inicio null;
        if (isset(
$this->s__datos_openid)) {
            unset(
$this->s__datos_openid);
        }
    }

    function 
ini()
    {
        
toba_ci::set_navegacion_ajax(false);
        
$this->en_popup toba::proyecto()->get_parametro('item_pre_sesion_popup');
        if (
toba::instalacion()->get_tipo_autenticacion() == 'openid') {
            try {
                
toba::manejador_sesiones()->get_autenticacion()->verificar_acceso();
            } catch (
toba_error_autenticacion $e) {
                
//-- Caso error de validación
                
toba::notificacion()->agregar($e->getMessage());
            }
        }
        
$tipo_auth toba::instalacion()->get_tipo_autenticacion();
        if (
toba_autenticacion::es_autenticacion_centralizada($tipo_auth)) {
            if (! 
toba::manejador_sesiones()->get_autenticacion()->permite_login_toba()) {
                
$this->evt__cas__ingresar();
            }
        }        
    }
    
    function 
conf__login()
    {
        if ( ! 
toba::proyecto()->get_parametro('validacion_debug') ) {
            
$this->pantalla()->eliminar_dep('seleccion_usuario');
        }        
        
$this->eliminar_dependencias_no_usadas();                                        //Quito los forms que no uso dependiendo del tipo de autenticacion
        
if ($this->en_popup && toba::manejador_sesiones()->existe_usuario_activo()) {
            
//Si ya esta logueado y se abre el sistema en popup, ocultar componentes visuales
            
$this->pantalla()->set_titulo('');            
            if (
$this->pantalla()->existe_dependencia('seleccion_usuario')) {
                
$this->pantalla()->eliminar_dep('seleccion_usuario');
            }
            if (
$this->pantalla()->existe_dependencia('datos')) {
                
$this->pantalla()->eliminar_dep('datos');
            }            
            if (
$this->pantalla()->existe_evento('Ingresar')) {
                
$this->pantalla()->eliminar_evento('Ingresar');
            }
        }        
    }    
    
    
/**
     * Elimina los formularios que no se usan segun el tipo de autenticacion indicado en instalacion.ini
     */
    
function eliminar_dependencias_no_usadas()
    {
        
$tipo_auth toba::instalacion()->get_tipo_autenticacion();    
        switch(
$tipo_auth) {
        case 
'openid':
            if (! 
toba::manejador_sesiones()->get_autenticacion()->permite_login_toba() && $this->pantalla()->existe_dependencia('datos')) {
                
$this->pantalla()->eliminar_dep('datos');
            }
            if (
$this->pantalla()->existe_dependencia('cas')) {
                
$this    ->pantalla()->eliminar_dep('cas');
            }
            break;
        case 
'cas':
        case 
'saml':
        case 
'saml_onelogin':
            if (! 
toba::manejador_sesiones()->get_autenticacion()->permite_login_toba() && $this->pantalla()->existe_dependencia('datos')) {
                
$this->pantalla()->eliminar_dep('datos');
            }
            if (
$this->pantalla()->existe_dependencia('openid')) {
                
$this->pantalla()->eliminar_dep('openid');
            }
            break;                
        default:
            if (
$this->pantalla()->existe_dependencia('openid')) {
                
$this->pantalla()->eliminar_dep('openid');
            }
            if (
$this->pantalla()->existe_dependencia('cas')) {
                
$this->pantalla()->eliminar_dep('cas');
            }
        }    
    }
    
    
/**
     * 
     * @throws toba_reset_nucleo
     * @ignore
     */
    
function post_eventos()
    {
        if (
$this->es_cambio_contrasenia) {
            return;                        
//Fuerza a que no intente loguear, sino que redirija a la pantalla de login
        
}
        try {        
            
$this->invocar_autenticacion_por_tipo();
        } catch (
toba_error_autenticacion $e) {
            
//-- Caso error de validación
            
$this->resetear_marca_login();
            
toba::notificacion()->agregar($e->getMessage());
        } catch (
toba_error_autenticacion_intentos $e) {
            
//-- Caso varios intentos fallidos con captcha
            
$this->resetear_marca_login();
            list(
$msg$intentos) = explode('|'$e->getMessage());
            
toba::notificacion()->agregar($msg);
            
toba::memoria()->set_dato_instancia('toba_intentos_fallidos_login'$intentos);
        } catch (
toba_error_login_contrasenia_vencida $e) {
            
$this->resetear_marca_login();
            
$this->set_pantalla('cambiar_contrasenia');
        } catch (
toba_reset_nucleo $reset) {
            
//-- Caso validacion exitosa, elimino la marca de intentos fallidos
            
if (toba::memoria()->get_dato_instancia('toba_intentos_fallidos_login') !== null) {
                
toba::memoria()->eliminar_dato_instancia('toba_intentos_fallidos_login');
            }
            
//-- Se redirige solo si no es popup
            /*if (! $this->en_popup) {
                throw $reset;
            }*/
            
$this->s__item_inicio $reset->get_item();    //Se guarda el item de inicio al que queria derivar el nucleo
        
}
        return;
    }

    
/**
     * Hace el llamado a toba_manejador_sesiones segun el metodo indicado en instalacion.ini 
     * y que ingreso el usuario.
     */
    
function invocar_autenticacion_por_tipo()
    {
        
$tipo_auth toba::instalacion()->get_tipo_autenticacion();
        if (isset(
$this->s__datos['usuario']) || isset($this->s__datos_openid['provider'])) {            //Para el caso de autenticacion basica y OpenId
            
if ($tipo_auth == 'openid' && isset($this->s__datos_openid)) {
                
toba::manejador_sesiones()->get_autenticacion()->set_provider($this->s__datos_openid);
            }
            
$usuario = (isset($this->s__datos['usuario'])) ? $this->s__datos['usuario'] : '';
            
$clave = (isset($this->s__datos['clave'])) ? $this->s__datos['clave'] : '';

            if (
toba_autenticacion::es_autenticacion_centralizada($tipo_auth)) {
                
toba::manejador_sesiones()->get_autenticacion()->usar_login_basico();
            }            
            
toba::manejador_sesiones()->login($usuario$clave);

        } elseif (
toba_autenticacion::es_autenticacion_centralizada($tipo_auth) && toba::manejador_sesiones()->get_autenticacion()->uso_login_centralizado()) {    //El control por session es para que no redireccione automaticamente
            
toba::manejador_sesiones()->get_autenticacion()->verificar_acceso();
        }    
    }    
    
    
/**
     * Elimina  la marca del login basico ante un fallido, de manera que si luego loguea centralizado desloguee correctamente
     * @ignore
     */
    
protected function resetear_marca_login()
    {
        if (
toba::manejador_sesiones()->get_autenticacion()->uso_login_basico()) {
            
toba::manejador_sesiones()->get_autenticacion()->eliminar_login_basico();
        }
    }
    
    
//-------------------------------------------------------------------
    //--- DEPENDENCIAS
    //-------------------------------------------------------------------

    //---- datos -------------------------------------------------------

    
function evt__datos__ingresar($datos)
    {
        if (isset(
$this->s__datos_openid)) {
            unset(
$this->s__datos_openid);
        }        
        
toba::logger()->desactivar();
        if (isset(
$datos['test_error_repetido']) && !$datos['test_error_repetido']) {
            throw new 
toba_error_autenticacion('El valor ingresado de confirmación no es correcto');
        } else {
            
$this->s__datos $datos;

            
//---- recordar -------
            
setcookie("led_user"$datos['usuario'], time()+60*60*24*30,"/","");
            if(isset(
$datos['recordar']) and $datos['recordar'] == 1){
                
setcookie("led_clave"$datos['clave'], time()+60*60*24*30,"/","");

            }elseif(isset(
$_COOKIE['led_clave'])){
                
                
setcookie($_COOKIE['led_clave'],'',time()-1,"/","");
                unset(
$_COOKIE['led_clave']);
            }
            
//---------------------    
        
}
    }
    
    function 
conf__datos(toba_ei_formulario $form)
    {
        if (
toba::memoria()->get_dato_instancia('toba_intentos_fallidos_login') === null) {
            
$form->desactivar_efs(array('test_error_repetido'));
        }
        if (
toba::instalacion()->get_tipo_autenticacion() != 'openid') {
            
$form->set_titulo('');
        }
        if (isset(
$this->s__datos)) {
            if (isset(
$this->s__datos['clave'])) {
                unset(
$this->s__datos['clave']);
            }
            
$form->set_datos($this->s__datos);
        
        }elseif(isset(
$_COOKIE['led_user'])){        
            
$datos['usuario']  = $_COOKIE['led_user'];
            
            if(isset(
$_COOKIE['led_clave'])){
                
$datos['clave']  = $_COOKIE['led_clave'];
            }    
            
$form->set_datos($datos);    
        }
    }    
    
    
    
//---- open_id -------------------------------------------------------
    
    
function evt__openid__ingresar($datos)
    {
        if (isset(
$this->s__datos)) {
            unset(
$this->s__datos);
        } 
        
$this->s__datos_openid $datos;
    }    

    function 
conf__openid(toba_ei_formulario $form)
    {
        
$providers $this->get_openid_providers();
        if (! empty(
$providers)) {
            
$provider current($providers);
            
$form->set_datos_defecto(array('provider' => $provider['id']));
        }
        if (isset(
$this->s__datos_openid)) {
            
$form->set_datos($this->s__datos_openid);
        }
    }    
    
    
    function 
get_openid_providers() 
    {
        return 
toba::manejador_sesiones()->get_autenticacion()->get_providers();
    }

    
//---- cas -----------------------------------------------------------------------
    
function evt__cas__ingresar()
    {
        
toba::manejador_sesiones()->get_autenticacion()->usar_login_centralizado();
        try {
            
toba::manejador_sesiones()->get_autenticacion()->verificar_acceso();
        } catch (
toba_error_autenticacion $e) {
            
//-- Caso error de validación                
            
toba::notificacion()->agregar($e->getMessage());    
        }
    }

    
//---- seleccion_usuario -------------------------------------------------------

    
function evt__seleccion_usuario__seleccion($seleccion)
    {
        
$this->s__datos['usuario'] = $seleccion['usuario'];
        
$this->s__datos['clave'] = null;
    }

    function 
conf__seleccion_usuario()
    {
        return 
toba::instancia()->get_lista_usuarios();
    }
    
    
//-----------------------------------------------------------------------------------
    //---- form_passwd_vencido ----------------------------------------------------------
    //-----------------------------------------------------------------------------------

    
function conf__form_passwd_vencido($form)
    {
        
$largo_clave =  toba_parametros::get_largo_pwd(toba::proyecto()->get_id());
        
$form->ef('clave_nueva')->set_expreg(toba_usuario::get_exp_reg_pwd($largo_clave));
        
$form->ef('clave_nueva')->set_descripcion("La clave debe tener al menos $largo_clave caracteres, entre letras mayúsculas, minúsculas, números y símbolos, no pudiendo repetir caracteres adyacentes");
        
$form->set_datos(array());
    }
    
    function 
evt__form_passwd_vencido__modificacion($datos)
    {
        
$usuario $this->s__datos['usuario'];        
        if (
toba::manejador_sesiones()->invocar_autenticar($usuario$datos['clave_anterior'], null)) {        //Si la clave anterior coincide    
             
$proyecto toba::proyecto()->get_id();
            
//Verifico que no intenta volver a cambiarla antes del periodo permitido
            
$dias_minimos toba_parametros::get_clave_validez_minima($proyecto);
            if (! 
is_null($dias_minimos)) {
                if (! 
toba_usuario::verificar_periodo_minimo_cambio($usuario$dias_minimos)) {
                    
toba::notificacion()->agregar('No transcurrio el período minimo para poder volver a cambiar su contraseña. Intentelo en otra ocasión');
                    return;
                }
            }        
            
//Obtengo el largo minimo de la clave            
            
$largo_clave toba_parametros::get_largo_pwd($proyecto);
            try {
                
toba_usuario::verificar_composicion_clave($datos['clave_nueva'], $largo_clave);
            
                
//Obtengo los dias de validez de la nueva clave
                
$dias toba_parametros::get_clave_validez_maxima($proyecto);
                
$ultimas_claves toba_parametros::get_nro_claves_no_repetidas($proyecto);
                
toba_usuario::verificar_clave_no_utilizada($datos['clave_nueva'], $usuario$ultimas_claves);
                
toba_usuario::reemplazar_clave_vencida($datos['clave_nueva'], $usuario$dias);
                
$this->es_cambio_contrasenia true;                //Bandera para el post_eventos
            
} catch(toba_error_pwd_conformacion_invalida $e) {
                
toba::logger()->info($e->getMessage());
                
toba::notificacion()->agregar($e->getMessage(), 'error');
                return;
            }
        } else {
            throw new 
toba_error_usuario('La clave ingresada no es correcta');
        }
        
$this->set_pantalla('login');
    }

    function 
evt__form_passwd_vencido__cancelar()
    {
        
$this->set_pantalla('login');
    }
    
    
//-------------------------------------------------------------------
    
    
function extender_objeto_js()
    {
        if (
toba::instalacion()->get_tipo_autenticacion() == 'openid') {
            
$personalizable '';
            foreach (
$this->get_openid_providers() as $id => $provider) {
                if (isset(
$provider['personalizable']) && $provider['personalizable']) {
                    
$personalizable $id;
                }
            }
            echo 
"
                
{$this->dep('openid')->objeto_js}.evt__provider__procesar = function(inicial) {
                    if (this.ef('provider').get_estado() == '
$personalizable') {
                        this.ef('provider_url').mostrar();
                    } else {
                        this.ef('provider_url').ocultar();
                    }
                }
            "
;
        }
                
        
$finalizar toba::memoria()->get_parametro(apex_sesion_qs_finalizar);
        if (
is_null($finalizar)) {                                            //Sesion activa
            
if (toba::manejador_sesiones()->existe_usuario_activo()) {
                
//Si ya esta logueado y se abre el sistema en popup, abrirlo
                
if (isset($this->s__item_inicio)) {
                    list(
$proyecto$item) = explode($this->s__item_inicio);
                } else {
                    
$proyecto toba::proyecto()->get_id();
                    
$item toba::proyecto()->get_parametro('item_inicio_sesion');
                }
                
$url toba::vinculador()->get_url($proyecto$item);
                
                if (
$this->en_popup) {
                    echo 
" abrir_popup('sistema', '$url', {resizable: 1});    ";
                } else {
                    echo 
" window.location.href = '$url';";
                }
            }
        } elseif (
$this->en_popup) {                                    //Se finaliza la sesion
                
echo '
                    if (window.opener &&  window.opener.location) {
                        window.opener.location.href = window.opener.location.href; 
                    }
                    window.close();
                '
;
        }        
    }
}
?>

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