!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_autenticacion_openid.php (7.71 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * @package Centrales
 */
class toba_autenticacion_openid  extends toba_autenticacion implements toba_autenticable
{
    protected 
$campos = array();
    protected 
$providers = array();
    protected 
$permite_login_toba false;
    protected 
$crear_usuario false;
    protected 
$crear_usuario_proyecto null;
    protected 
$crear_usuario_perfil_funcional null;
    protected 
$campo_usuario;
    protected 
$campo_nombre;
    
    function 
__construct($campos null$providers null$permite_login_toba false
    {
        
$this->campos $campos;
        
$this->providers $providers;
        
$this->permite_login_toba false;
        
        
//--- Levanto la CONFIGURACION de ldap.ini
        
$archivo_ini_instalacion toba::nucleo()->toba_instalacion_dir().'/openid.ini';
        if (
is_file$archivo_ini_instalacion ) ) {
            
$parametros parse_ini_file$archivo_ini_instalacion,true);
            
$sufijo 'provider_';
            foreach (
$parametros as $campo => $valor) {
                if (
substr($campo0strlen($sufijo)) == $sufijo) {
                    
$valor['id'] = substr($campostrlen($sufijo));                
                    
$this->providers[$valor['id']] = $valor;
                }
            }            
            
$sufijo 'campo_';
            foreach (
$parametros as $campo => $valor) {
                if (
substr($campo0strlen($sufijo)) == $sufijo) {
                    
$this->campos[substr($campostrlen($sufijo))] = $valor;
                }
            }        
            if (isset(
$parametros['basicos']['permite_login_toba'])) {
                
$this->permite_login_toba $parametros['basicos']['permite_login_toba'];
            }
            if (isset(
$parametros['basicos']['crear_usuario'])) {
                
$this->crear_usuario $parametros['basicos']['crear_usuario'];
                if (isset(
$parametros['basicos']['crear_usuario_proyecto'])) {
                    
$this->crear_usuario_proyecto =  $parametros['basicos']['crear_usuario_proyecto'];
                } 
                
$this->crear_usuario_perfil_funcional $parametros['basicos']['crear_usuario_perfil_funcional'];
            }
            
$this->campo_usuario $parametros['basicos']['campo_usuario'];
            if (isset(
$parametros['basicos']['campo_nombre'])) {
                
$this->campo_nombre explode(' 'trim($parametros['basicos']['campo_nombre']));
            } else {
                
$this->campo_nombre = array($this->campo_usuario);
            }            
                    
        }
    }
    
    function 
autenticar($id_usuario$clave$datos_iniciales=null)
    {
        if (isset(
$_SESSION['openid'])) {
            if (!isset(
$_SESSION['openid']['validated'])
                || !
$_SESSION['openid']['validated']) {
                unset(
$_SESSION['openid']);
                throw new 
toba_error_autenticacion("Acceso a la cuenta no autorizado. Por favor intente nuevamente");
            }            
            
//Vuelta del servicio, existe el usuario?
            
$datos_usuario toba::instancia()->get_info_autenticacion($id_usuario);
            if (!isset(
$datos_usuario
                    && 
$this->crear_usuario
                    
&& (! isset($this->crear_usuario_proyecto) || $this->crear_usuario_proyecto == toba::proyecto()->get_id())) {
                
//Dar de alta el usuario en el proyecto actual
                
$this->alta_usuario($id_usuario$clave$this->crear_usuario_perfil_funcional);
            }
            
//Validar el login usando el identity como clave
            
return toba::manejador_sesiones()->invocar_autenticar($id_usuario$clave$datos_iniciales);
        }
                
        if (! isset(
$_SESSION['openid_url_actual'])) {
            
//Login normal
            
return toba::manejador_sesiones()->invocar_autenticar($id_usuario$clave$datos_iniciales);
        } else {
            
//Inicio login openid
            
$this->iniciar_pedido($_SESSION['openid_url_actual']);
        }
    }    
    
    function 
logout()
    {
        
//Definicion para completar API. Se podria implementar el dia que OpenID estandarice el logout, hoy cada provider lo hace en url distinta o no lo hace.
        
if ($this->uso_login_basico() && $this->permite_login_toba()) {                //Si es login toba no redirecciono al servidor CAS
            
$this->eliminar_marca_login(self::$marca_login_basico);
        } else {
            unset(
$_SESSION['openid_url_actual']);
        }
    }
    
    protected function 
alta_usuario($id_usuario$clave$perfil)
    {
        
$nombre "";
        foreach (
$this->campo_nombre as $campo) {
            
$valor $this->get_valor($campo);
            if (isset(
$valor)) {
                
$nombre .= $valor' ';
            } 
        }
        
$nombre trim($nombre);
        if (
$nombre == '') {
            
$nombre $id_usuario//Fallback en caso que el nombre no venga en el AX
        
}
        
toba::instancia()->agregar_usuario($id_usuario$nombre$clave);
        
toba::instancia()->vincular_usuario(toba::proyecto()->get_id(), $id_usuario$perfil, array(), false);
    } 
    
    function 
set_provider($datos)
    {
        
$providers $this->get_providers();
        
$personalizable false;
        foreach (
$providers as $id => $provider) {
            if (
$id == $datos['provider'] && isset($provider['personalizable']) && $provider['personalizable']) {
                
$personalizable true;
            }
        }
        if (
$personalizable) {
            
$_SESSION['openid_url_actual'] = $datos['provider_url'];
        } else {
            
$_SESSION['openid_url_actual'] = $providers[$datos['provider']]['url'];
        }
    }
    
    function 
permite_login_toba() 
    {
        return 
$this->permite_login_toba;
    }
    
    function 
get_providers() 
    {
        return 
$this->providers;
    }    
    
    function 
get_valor($campo)
    {
        if (isset(
$_SESSION['openid']['ax']['data'][$campo])) {
            
$valor $_SESSION['openid']['ax']['data'][$campo];
            
$enc mb_detect_encoding($valor);
            if (
strtolower(substr($enc08)) != 'iso-8859') {
                
$valor iconv($enc'iso-8859-1'$_SESSION['openid']['ax']['data'][$campo]);
            }            
            return 
$valor;
        } else {
            return 
null;
        }    
    }
    
    function 
verificar_acceso() 
    {
        if(isset(
$_REQUEST['openid_mode'])) {
            
$this->iniciar_pedido();
        }
        if(isset(
$_SESSION['openid']) && isset($_SESSION['openid_url_actual'])) {
            if(isset(
$_SESSION['openid']['error'])) {
                
$error $_SESSION['openid']['error'];
                unset(
$_SESSION['openid']);
                throw new 
toba_error_autenticacion($error);
            }
            
$usuario $this->get_valor($this->campo_usuario);
            
$clave = isset($_SESSION['openid']['identity']) ? $_SESSION['openid']['identity'] : null;
            
$clave .= $_SESSION['openid_url_actual'];
            
$this->iniciar_sesion($usuario$clave);
        }        
    }
    
    function 
iniciar_sesion($usuario$clave)
    {
        
toba::manejador_sesiones()->login($usuario$clave);
    }
    
    function 
verificar_clave_vencida($id_usuario)
    {
        return 
false;
    }
    
    function 
verificar_logout()
    {
        
    }
    
    protected function 
iniciar_pedido($url=null
    {
        global 
$_POIDSY;
        
$opcionales = array();
        
$requeridos = array();
        foreach (
$this->campos as $nombre => $opciones) {
            if (
$opciones['requerido']) {
                
$requeridos[] = $nombre;
            } else {
                
$opcionales[] = $nombre;
            }
        }
        if (! empty(
$opcionales)) {
            
// Request some information from the identity provider. Note that providers
            // don't have to implement the extension that provides this, so you can't
            // rely on getting results back.            
            
define('OPENID_SREG_OPTIONAL'implode(','$opcionales));
        }
        if (isset(
$url)) {
            
define('OPENID_URL'$url);
        }
        require(
toba_dir().'/php/3ros/poidsy/sreg.ext.php');
        require(
toba_dir().'/php/3ros/poidsy/ax.ext.php');
         
        foreach (
$requeridos as $campo) {
            
$atributo $this->campos[$campo]['atributo'];
            
AttributeExchange::addRequiredType($campoconstant("AttributeExchange::$atributo"));
        }
        foreach (
$opcionales as $campo) {
            
$atributo $this->campos[$campo]['atributo'];
            
AttributeExchange::addOptionalType($campoconstant("AttributeExchange::$atributo"));
        }        
        
$res 'http';
        if (isset(
$_SERVER['HTTPS'])) {
            
$res 'https';
        }
        
$res .= '://' $_SERVER['SERVER_NAME'];
        if (
$_SERVER['SERVER_PORT'] != (isset($_SERVER['HTTPS']) ? 443 80)) {
            
$res .= ':' $_SERVER['SERVER_PORT'];
        }
        
$p toba::proyecto()->get_www();
        if (isset(
$p['url']) && trim($p['url']) != '') {
            
$res .= '/' $p['url'];
        }
        
define('OPENID_RETURN_URL'$res.'/');
        require(
toba_dir().'/php/3ros/poidsy/processor.php');
    }
    
    
}
?>

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