PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: sql_audit.h Size: 13.83 KB
//usr/include/mysql/server/private/sql_audit.h

#ifndef SQL_AUDIT_INCLUDED
#define SQL_AUDIT_INCLUDED

/* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
   Copyright (c) 2017, MariaDB Corporation.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */


#include <mysql/plugin_audit.h>
#include "sql_class.h"

extern unsigned long mysql_global_audit_mask[];


extern void mysql_audit_initialize();
extern void mysql_audit_finalize();


extern void mysql_audit_init_thd(THD *thd);
extern void mysql_audit_free_thd(THD *thd);
extern void mysql_audit_acquire_plugins(THD *thd, ulong *event_class_mask);


#ifndef EMBEDDED_LIBRARY
extern void mysql_audit_notify(THD *thd, uint event_class, const void *event);

static inline bool mysql_audit_general_enabled()
{
  return mysql_global_audit_mask[0] & MYSQL_AUDIT_GENERAL_CLASSMASK;
}

static inline bool mysql_audit_connection_enabled()
{
  return mysql_global_audit_mask[0] & MYSQL_AUDIT_CONNECTION_CLASSMASK;
}

static inline bool mysql_audit_table_enabled()
{
  return mysql_global_audit_mask[0] & MYSQL_AUDIT_TABLE_CLASSMASK;
}

#else
static inline void mysql_audit_notify(THD *thd, uint event_class,
                                      const void *event) {}
#define mysql_audit_general_enabled() 0
#define mysql_audit_connection_enabled() 0
#define mysql_audit_table_enabled() 0
#endif
extern my_bool mysql_audit_release_required(THD *thd);
extern void mysql_audit_release(THD *thd);

static inline unsigned int strlen_uint(const char *s)
{
  return (uint)strlen(s);
}

static inline unsigned int safe_strlen_uint(const char *s)
{
  return (uint)safe_strlen(s);
}

#define MAX_USER_HOST_SIZE 512
static inline uint make_user_name(THD *thd, char *buf)
{
  const Security_context *sctx= thd->security_ctx;
  char *end= strxnmov(buf, MAX_USER_HOST_SIZE,
                  sctx->priv_user[0] ? sctx->priv_user : "", "[",
                  sctx->user ? sctx->user : "", "] @ ",
                  sctx->host ? sctx->host : "", " [",
                  sctx->ip ? sctx->ip : "", "]", NullS);
  return (uint)(end-buf);
}

/**
  Call audit plugins of GENERAL audit class, MYSQL_AUDIT_GENERAL_LOG subtype.
  
  @param[in] thd
  @param[in] time             time that event occurred
  @param[in] user             User name
  @param[in] userlen          User name length
  @param[in] cmd              Command name
  @param[in] cmdlen           Command name length
  @param[in] query            Query string
  @param[in] querylen         Query string length
*/
 
static inline
void mysql_audit_general_log(THD *thd, time_t time,
                             const char *user, uint userlen,
                             const char *cmd, uint cmdlen,
                             const char *query, uint querylen)
{
  if (mysql_audit_general_enabled())
  {
    mysql_event_general event;

    event.event_subclass= MYSQL_AUDIT_GENERAL_LOG;
    event.general_error_code= 0;
    event.general_time= time;
    event.general_user= user;
    event.general_user_length= userlen;
    event.general_command= cmd;
    event.general_command_length= cmdlen;
    event.general_query= query;
    event.general_query_length= querylen;
    event.general_rows= 0;

    if (thd)
    {
      event.general_thread_id= (unsigned long)thd->thread_id;
      event.general_charset= thd->variables.character_set_client;
      event.database= thd->db;
      event.query_id= thd->query_id;
    }
    else
    {
      event.general_thread_id= 0;
      event.general_charset= global_system_variables.character_set_client;
      event.database= null_clex_str;
      event.query_id= 0;
    }

    mysql_audit_notify(thd, MYSQL_AUDIT_GENERAL_CLASS, &event);
  }
}

/**
  Call audit plugins of GENERAL audit class.
  event_subtype should be set to one of:
    MYSQL_AUDIT_GENERAL_ERROR
    MYSQL_AUDIT_GENERAL_RESULT
    MYSQL_AUDIT_GENERAL_STATUS
  
  @param[in] thd
  @param[in] event_subtype    Type of general audit event.
  @param[in] error_code       Error code
  @param[in] msg              Message
*/
static inline
void mysql_audit_general(THD *thd, uint event_subtype,
                         int error_code, const char *msg)
{
  DBUG_ENTER("mysql_audit_general");
  if (mysql_audit_general_enabled())
  {
    char user_buff[MAX_USER_HOST_SIZE+1];
    mysql_event_general event;

    event.event_subclass= event_subtype;
    event.general_error_code= error_code;
    event.general_time= my_time(0);
    event.general_command= msg;
    event.general_command_length= safe_strlen_uint(msg);

    if (thd)
    {
      event.general_user= user_buff;
      event.general_user_length= make_user_name(thd, user_buff);
      event.general_thread_id= (unsigned long)thd->thread_id;
      event.general_query= thd->query_string.str();
      event.general_query_length= (unsigned) thd->query_string.length();
      event.general_charset= thd->query_string.charset();
      event.general_rows= thd->get_stmt_da()->current_row_for_warning();
      event.database= thd->db;
      event.query_id= thd->query_id;
      DBUG_PRINT("info", ("mysql_audit_general: query_id=%lld, query=%.*s, subtype=%d, error_code=%d, msg=%s",
                        thd->query_id, thd->query_length(), thd->query(), event_subtype, error_code, msg));
    }
    else
    {
      event.general_user= NULL;
      event.general_user_length= 0;
      event.general_thread_id= 0;
      event.general_query= NULL;
      event.general_query_length= 0;
      event.general_charset= &my_charset_bin;
      event.general_rows= 0;
      event.database= null_clex_str;
      event.query_id= 0;
    }

    mysql_audit_notify(thd, MYSQL_AUDIT_GENERAL_CLASS, &event);
  }
  DBUG_VOID_RETURN;
}

static inline
void mysql_audit_notify_connection_connect(THD *thd)
{
  if (mysql_audit_connection_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_connection event;

    event.event_subclass= MYSQL_AUDIT_CONNECTION_CONNECT;
    event.status= thd->get_stmt_da()->is_error() ?
                  thd->get_stmt_da()->sql_errno() : 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.user_length= safe_strlen_uint(sctx->user);
    event.priv_user= sctx->priv_user;
    event.priv_user_length= strlen_uint(sctx->priv_user);
    event.external_user= sctx->external_user;
    event.external_user_length= safe_strlen_uint(sctx->external_user);
    event.proxy_user= sctx->proxy_user;
    event.proxy_user_length= strlen_uint(sctx->proxy_user);
    event.host= sctx->host;
    event.host_length= safe_strlen_uint(sctx->host);
    event.ip= sctx->ip;
    event.ip_length= safe_strlen_uint(sctx->ip);
    event.database= thd->db;

    mysql_audit_notify(thd, MYSQL_AUDIT_CONNECTION_CLASS, &event);
  }
}

static inline
void mysql_audit_notify_connection_disconnect(THD *thd, int errcode)
{
  if (mysql_audit_connection_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_connection event;

    event.event_subclass= MYSQL_AUDIT_CONNECTION_DISCONNECT;
    event.status= errcode;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.user_length= safe_strlen_uint(sctx->user);
    event.priv_user= sctx->priv_user;
    event.priv_user_length= strlen_uint(sctx->priv_user);
    event.external_user= sctx->external_user;
    event.external_user_length= safe_strlen_uint(sctx->external_user);
    event.proxy_user= sctx->proxy_user;
    event.proxy_user_length= strlen_uint(sctx->proxy_user);
    event.host= sctx->host;
    event.host_length= safe_strlen_uint(sctx->host);
    event.ip= sctx->ip;
    event.ip_length= safe_strlen_uint(sctx->ip) ;
    event.database= thd->db;

    mysql_audit_notify(thd, MYSQL_AUDIT_CONNECTION_CLASS, &event);
  }
}

static inline
void mysql_audit_notify_connection_change_user(THD *thd,
                                               const Security_context *old_ctx)
{
  if (mysql_audit_connection_enabled())
  {
    mysql_event_connection event;

    event.event_subclass= MYSQL_AUDIT_CONNECTION_CHANGE_USER;
    event.status= thd->get_stmt_da()->is_error() ?
                  thd->get_stmt_da()->sql_errno() : 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= old_ctx->user;
    event.user_length= safe_strlen_uint(old_ctx->user);
    event.priv_user= old_ctx->priv_user;
    event.priv_user_length= strlen_uint(old_ctx->priv_user);
    event.external_user= old_ctx->external_user;
    event.external_user_length= safe_strlen_uint(old_ctx->external_user);
    event.proxy_user= old_ctx->proxy_user;
    event.proxy_user_length= strlen_uint(old_ctx->proxy_user);
    event.host= old_ctx->host;
    event.host_length= safe_strlen_uint(old_ctx->host);
    event.ip= old_ctx->ip;
    event.ip_length= safe_strlen_uint(old_ctx->ip);
    event.database= thd->db;

    mysql_audit_notify(thd, MYSQL_AUDIT_CONNECTION_CLASS, &event);
  }
}


static inline
void mysql_audit_external_lock_ex(THD *thd, my_thread_id thread_id,
    const char *user, const char *host, const char *ip, query_id_t query_id,
    TABLE_SHARE *share, int lock)
{
  if (lock != F_UNLCK && mysql_audit_table_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_table event;

    event.event_subclass= MYSQL_AUDIT_TABLE_LOCK;
    event.read_only= lock == F_RDLCK;
    event.thread_id= (unsigned long)thread_id;
    event.user= user;
    event.priv_user= sctx->priv_user;
    event.priv_host= sctx->priv_host;
    event.external_user= sctx->external_user;
    event.proxy_user= sctx->proxy_user;
    event.host= host;
    event.ip= ip;
    event.database= share->db;
    event.table= share->table_name;
    event.new_database= null_clex_str;
    event.new_table= null_clex_str;
    event.query_id= query_id;

    mysql_audit_notify(thd, MYSQL_AUDIT_TABLE_CLASS, &event);
  }
}

static inline
void mysql_audit_external_lock(THD *thd, TABLE_SHARE *share, int lock)
{
  mysql_audit_external_lock_ex(thd, thd->thread_id, thd->security_ctx->user,
      thd->security_ctx->host, thd->security_ctx->ip, thd->query_id,
      share, lock);
}

static inline
void mysql_audit_create_table(TABLE *table)
{
  if (mysql_audit_table_enabled())
  {
    THD *thd= table->in_use;
    const TABLE_SHARE *share= table->s;
    const Security_context *sctx= thd->security_ctx;
    mysql_event_table event;

    event.event_subclass= MYSQL_AUDIT_TABLE_CREATE;
    event.read_only= 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.priv_user= sctx->priv_user;
    event.priv_host= sctx->priv_host;
    event.external_user= sctx->external_user;
    event.proxy_user= sctx->proxy_user;
    event.host= sctx->host;
    event.ip= sctx->ip;
    event.database=     share->db;
    event.table=        share->table_name;
    event.new_database= null_clex_str;
    event.new_table=    null_clex_str;
    event.query_id=     thd->query_id;

    mysql_audit_notify(thd, MYSQL_AUDIT_TABLE_CLASS, &event);
  }
}

static inline
void mysql_audit_drop_table(THD *thd, TABLE_LIST *table)
{
  if (mysql_audit_table_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_table event;

    event.event_subclass= MYSQL_AUDIT_TABLE_DROP;
    event.read_only= 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.priv_user= sctx->priv_user;
    event.priv_host= sctx->priv_host;
    event.external_user= sctx->external_user;
    event.proxy_user= sctx->proxy_user;
    event.host= sctx->host;
    event.ip= sctx->ip;
    event.database=     table->db;
    event.table=        table->table_name;
    event.new_database= null_clex_str;
    event.new_table=    null_clex_str;
    event.query_id=     thd->query_id;

    mysql_audit_notify(thd, MYSQL_AUDIT_TABLE_CLASS, &event);
  }
}

static inline
void mysql_audit_rename_table(THD *thd, const LEX_CSTRING *old_db,
                              const LEX_CSTRING *old_tb,
                              const LEX_CSTRING *new_db, const LEX_CSTRING *new_tb)
{
  if (mysql_audit_table_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_table event;

    event.event_subclass= MYSQL_AUDIT_TABLE_RENAME;
    event.read_only= 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.priv_user= sctx->priv_user;
    event.priv_host= sctx->priv_host;
    event.external_user= sctx->external_user;
    event.proxy_user= sctx->proxy_user;
    event.host= sctx->host;
    event.ip= sctx->ip;
    event.database=  *old_db;
    event.table=     *old_tb;
    event.new_database= *new_db;
    event.new_table= *new_tb;
    event.query_id= thd->query_id;

    mysql_audit_notify(thd, MYSQL_AUDIT_TABLE_CLASS, &event);
  }
}

static inline
void mysql_audit_alter_table(THD *thd, TABLE_LIST *table)
{
  if (mysql_audit_table_enabled())
  {
    const Security_context *sctx= thd->security_ctx;
    mysql_event_table event;

    event.event_subclass= MYSQL_AUDIT_TABLE_ALTER;
    event.read_only= 0;
    event.thread_id= (unsigned long)thd->thread_id;
    event.user= sctx->user;
    event.priv_user= sctx->priv_user;
    event.priv_host= sctx->priv_host;
    event.external_user= sctx->external_user;
    event.proxy_user= sctx->proxy_user;
    event.host= sctx->host;
    event.ip= sctx->ip;
    event.database= table->db;
    event.table= table->table_name;
    event.new_database= null_clex_str;
    event.new_table= null_clex_str;
    event.query_id= thd->query_id;

    mysql_audit_notify(thd, MYSQL_AUDIT_TABLE_CLASS, &event);
  }
}

#endif /* SQL_AUDIT_INCLUDED */

Directory Contents

Dirs: 3 × Files: 331

Name Size Perms Modified Actions
atomic DIR
- drwxr-xr-x 2026-02-05 23:02:33
Edit Download
data DIR
- drwxr-xr-x 2026-01-31 17:44:55
Edit Download
providers DIR
- drwxr-xr-x 2026-02-05 23:02:33
Edit Download
1.11 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.75 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.29 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
9.90 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.66 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.95 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.89 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.23 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
14.20 KB lrw-r--r-- 2026-01-31 17:15:45
Edit Download
4.76 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.09 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.74 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.88 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.06 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.66 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
12.51 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.00 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.32 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
980 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.53 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.06 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.69 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.59 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.09 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.56 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.83 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.36 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
217.13 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.15 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.00 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.04 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
16.87 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.62 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.69 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.45 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.38 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
195.05 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
884 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.35 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.28 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
63.18 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.10 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.26 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.29 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.07 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
852 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.29 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
276.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
131.91 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.24 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
135.39 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
38.68 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
24.67 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
73.24 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
57.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
70.99 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
64.35 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.31 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
33.75 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.54 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.44 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.08 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.95 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
29.14 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
23.74 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
139.75 KB lrw-r--r-- 2026-01-31 17:21:16
Edit Download
2.07 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.98 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.29 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
41.64 KB lrw-r--r-- 2026-01-31 17:21:16
Edit Download
6.31 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
45.28 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
184.67 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.85 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
19.37 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.38 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.73 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.25 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
37.60 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.94 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
22.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
17.10 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.62 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.78 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
14.58 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
40.10 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
204 B lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.95 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.37 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.11 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.98 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
27.01 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
6.05 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.37 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.56 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
10.93 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.68 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.74 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
904 B lrw-r--r-- 2026-01-31 10:47:54
Edit Download
14.15 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.84 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.77 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
18.14 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.16 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.45 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
848 B lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.40 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
9.88 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1014 B lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.04 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
3.14 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
6.34 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
10.17 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
3.90 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
67.90 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.10 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.10 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.53 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
64.36 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
14.20 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.29 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.28 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.30 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
19.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.14 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
3.08 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.35 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.59 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.85 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.21 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.52 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.25 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.56 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.43 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.78 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
28.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
973 B lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.94 KB lrw-r--r-- 2026-01-31 17:14:08
Edit Download
6.66 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
12.24 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
548 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.40 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
3.07 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
15.75 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.67 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
15.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.28 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.66 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
29.24 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
16.25 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
17.80 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.37 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.63 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
35.22 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.10 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.12 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.29 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.18 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.23 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
25.16 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.50 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.65 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.23 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
13.94 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
16.16 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.99 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
842 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
67 B lrw-r--r-- 2026-01-31 10:47:58
Edit Download
22.06 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.84 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
22.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.99 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
63.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
24.31 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
14.10 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
13.83 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.85 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.69 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
15.03 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
10.86 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
12.39 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.70 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
13.83 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
25.43 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.30 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
895 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.66 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
21.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.51 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
264.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.82 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.69 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.99 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.15 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
16.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.14 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.38 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.51 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.31 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.26 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.73 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.53 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
954 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
38.91 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
29.61 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.26 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.70 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.84 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
995 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.32 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.05 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.29 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
47.52 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
170.60 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.45 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
21.87 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.25 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
960 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.58 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.76 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
12.38 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.80 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.53 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.40 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.18 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.14 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
18.04 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.63 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.01 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
982 B lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.97 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.23 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
87.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.06 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.74 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.60 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.28 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
21.45 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
16.11 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
38.09 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.52 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
8.18 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
12.04 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.03 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.36 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
289.13 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
64.04 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.34 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
18.59 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.01 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.23 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.59 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.74 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.04 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.88 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.41 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.65 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.30 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
2.22 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
28.84 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.67 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
115.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.13 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.70 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.88 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.24 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.86 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
7.18 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.17 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.53 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.43 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.90 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.32 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.51 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.12 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
7.54 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.48 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.85 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
4.43 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.19 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
5.88 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
6.35 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.53 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
3.23 KB lrw-r--r-- 2026-01-31 10:47:54
Edit Download
1.01 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.64 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.47 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.50 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.53 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.45 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.80 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.21 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
21.02 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.20 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.68 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.60 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
5.48 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.55 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
2.47 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
3.86 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.77 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
11.22 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
17.75 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.08 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
9.58 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
4.39 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.51 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download
1.80 KB lrw-r--r-- 2026-01-31 10:47:55
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI