Allied Modders en español
Admin Vencimiento 0.1b (Actualizado 2021 dic) - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: AMX Mod X - Plugins (https://amxmodx-es.com/Forum-AMX-Mod-X-Plugins)
+--- Foro: Aportes (https://amxmodx-es.com/Forum-Aportes--40)
+--- Tema: Admin Vencimiento 0.1b (Actualizado 2021 dic) (/Thread-Admin-Vencimiento-0-1b-Actualizado-2021-dic)

Páginas: 1 2


Admin Vencimiento 0.1b (Actualizado 2021 dic) - Hinami - 02/11/2018

Después de muchos años decidí borrar este tema y su plugin y actualizarlo por una versión de admin vencimiento hecho en gRIP y su panel en PHP y JavaScript.

Requerimientos
  • Docker
  • Docker Compose
  • MySQL
  • Laravel8
  • PHP8

---

Instalación

Backend

https://github.com/Chris4589/adminpanel_laravel8/commit/af8f433d16dea16b1fdd7a0ae3e84493f20d6168
Cita:docker-compose up --build -d

**NOTA:** El archivo Dockerfile ejecuta las migraciones necesarias y los seeders de pruebas cada que arranca el servidor, usese o modifique según sus necesidades.

Frontend

https://github.com/Chris4589/dateAR_CS/commit/32023d90b608681cc305629ffd095dbc5bee2965

Código:
docker-compose up --build -d

Plugin

https://github.com/Chris4589/panel_grip/blob/master/adm-laravel.sma

>Se instala el archivo **adm-laravel.sma** que usa el include **admin_panel2.inc**, y se instala el modulo gRIP (Leer el su respectivo repositorio para saber sobre su instalación).

---

Créditos
  • r0ma
  • Josdel
  • Randro

Se que tiene algunas cosas que están XD, nada que meter mano no pueda reparar.  Whatever

PD: Yo aun lo estoy probando, ocasionalmente trato de actualizar algo ya que no siempre tengo tiempo/ganas.

Ultima actualización 2021 dic.

TEMA REEMPLAZADO PASADO A LA PÁGINA 5
Admin vencimiento MySQL
https://amxmodx-es.com/showthread.php?tid=18936&page=5


RE: Admin Vencimiento MySQL v1.0 - KevinJesus - 02/11/2018

Irgaaa que weno estaa we


RE: Admin Vencimiento MySQL v1.0 - Hinami - 02/11/2018

thnx

aunque no es necesario citar todo xd


RE: Admin Vencimiento MySQL v1.0 - KevinJesus - 02/11/2018

(02/11/2018, 05:40 PM)Hypnotize escribió: thnx

aunque no es necesario citar todo xd

e.e xd Como sea igual me gusta vere si lo Descargo y lo pruebo en el dedicado


RE: Admin Vencimiento MySQL v1.0 - kikizon2 - 02/11/2018

Porque no lo haces via web? En vez de tener que descargar un complemento extra? Es mas practico...


RE: Admin Vencimiento MySQL v1.0 - Hinami - 02/11/2018

No se php o js aun xd Whatdone ( no se nada de web aun )

voy por java ahora, luego me paso a esos man

pero gracias por la sugerencia xd


RE: Admin Vencimiento MySQL v1.0 - KevinJesus - 02/11/2018

(02/11/2018, 06:30 PM)Hypnotize escribió: No se php o js aun xd Whatdone ( no se nada de web aun )

voy por java ahora, luego me paso a esos man

pero gracias por la sugerencia xd

xd Tambien seria interesante Aprender sobre Webs xd Ami tambien gustaria aprender


RE: Admin Vencimiento MySQL v1.0 - Hinami - 02/11/2018

mejor aprende a irte a la verga pacman

deja de comentar puras totadas en todos los temas Whatever

NO RESPONDAS Y DEJA DE DESVIRTUAR


RE: Admin Vencimiento MySQL v1.0 - OsweRRR - 02/11/2018

pensé que era un cron, me gusta Fap


RE: Admin Vencimiento MySQL v1.0 - Hinami - 02/11/2018

Cron?


RE: Admin Vencimiento MySQL v1.0 - Neeeeeeeeeel.- - 03/11/2018

(02/11/2018, 06:28 PM)kikizon2 escribió: Porque no lo haces via web? En vez de tener que descargar un complemento extra? Es mas practico...
Vía web es incluso más complicado para el usuario, ya que tiene que instalar apache, php, extensiones, configurar todo y luego poner el código PHP, sumado al setup de red para los puertos. O contratar un hosting.


RE: Admin Vencimiento MySQL v1.0 - kikizon2 - 03/11/2018

Lo "complicado" esta para debatirse. En general los que tienen acceso a SQL tienen Apache, y si no, hay miles de host gratuitos para hostear un par de scripts php, sigo pensando que es mejor via web.


RE: Admin Vencimiento MySQL v1.0 - Hinami - 03/11/2018

> : v kyc


RE: Admin Vencimiento MySQL v1.0 - Neeeeeeeeeel.- - 05/11/2018

(03/11/2018, 05:35 AM)kikizon2 escribió: Lo "complicado" esta para debatirse. En general los que tienen acceso a SQL tienen Apache, y si no, hay miles de host gratuitos para hostear un par de scripts php, sigo pensando que es mejor via web.
Pero bueno en fin, el OP decidió hacerlo con .NETWhatever


RE: Admin Vencimiento MySQL v1.0 - Kane - 05/11/2018

Código PHP:
if(!mysql_num_results())
    {
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    if( 
mysql_num_results( ) )
    {
        ...
    } 
Creo que el segundo if no tiene sentido.
Teniendo hermosas funciones para el tiempo y la ventaja de poder hacer funciones pre-compiladas en mysql, siguen guardando el tiempo como string Insecure

Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja


RE: Admin Vencimiento MySQL v1.0 - Eternity - 06/11/2018

Me gusto.. le hice un par de cositas más para que quede más bonito.. sí hay algo mal, se lo dejo en mano de Hypnotize.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <mysqlt>
#include <colorchat>


#define PLUGIN    "Admin Vencimiento (MySQL)"
#define AUTHOR    "Hypnotize"
#define VERSION    "v1.0"

new const HOST[] = "";
new const 
USUARIO[] = "";
new const 
PASSWORD[] = "";
new const 
DB[] = "";

new const 
szTableP[] = "admins_vencimiento";

new 
Handle:g_isTupleHandle:g_Connection;

new 
g_password33 ][ 32 ];
new 
iNombre33 ][ 32 ];

new 
g_vencimiento[64][32];


#define PREFIX        "^4[COMUNIDAD]^1"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
    
register_concmd("amx_addadmin""cmdAddAdmin"ADMIN_RCON"<Nombre> <Password> <Access> <Flags> <Fecha [Ej: 20/12/2025]>");
    
register_clcmd("say /vencimiento""cmdVencimiento");
    
    
MySQL_Init( );
    
    
remove_user_flags(0read_flags("z"))
    
register_concmd("amx_reloadadmins""adminSql");
    
server_cmd("amx_reloadadmins");
    
}

public 
cmdAddAdmin(idlevelcid){
    if(!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
        
    
    new 
Nombre[32], Password[64], Access[35], Flags[5], Fecha[64];
    
    
read_argv(1Nombrecharsmax(Nombre));
    
read_argv(2Passwordcharsmax(Password));
    
read_argv(3Accesscharsmax(Access));
    
read_argv(4Flagscharsmax(Flags));
    
read_argv(5Fechacharsmax(Fecha));
    
    if(
strlen(Nombre) <= || strlen(Password) <= || strlen(Access) <= || strlen(Flags) <= || strlen(Fecha) <= 0){
        
console_print(id"[AMXX] Fallo los textos!");
        return 
PLUGIN_HANDLED;
    }
    
    
AddAdmin(NombrePasswordAccessFlagsFecha);
    
    
console_print(id"[AMXX] Se agrego el admin: <%s> <%s> <%s> <%s> <%s>"NombrePasswordAccessFlagsFecha);
    
    
adminSql();
        
    return 
PLUGIN_HANDLED;
}

public 
cmdVencimiento(id){
    if(
is_user_admin(id)){
        
ColorChat(idGREEN"%s Tu admin vence en la fecha: ^4%s"PREFIXg_vencimiento[id]);
    }else{
        
ColorChat(idGREEN"%s No eres admin"PREFIX);
    }
}

public 
client_putinserverid )
{
    
get_user_nameidiNombreid ], charsmaxiNombre ) );
    
    new 
Query300 ], iData];
    
iData] = id;
    
iData] = 1;
    
    
formatexQuery charsmaxQuery ) , "SELECT fecha FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
    
mysql_query(g_Connection"fnCargar"QueryiData);
    
}
public 
adminSql( )
{
    new 
Query300 ];
    
formatexQuery charsmaxQuery ) , "SELECT authid, password, access, flags FROM %s"szTableP );
    
mysql_query(g_Connection"fnAdmins"Query );
}
public 
MySQL_Init( )
{
    
g_isTuple mysql_makehost(HOSTUSUARIOPASSWORDDB);
    
    new 
error32 ], errnum;
    
g_Connection mysql_connect(g_isTupleerrnumerror31);
    
    if(
errnum)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
pause"a" );
    }
    new 
szTable1000 ];
    
    
formatex(szTablecharsmax(szTable),
    
"CREATE TABLE IF NOT EXISTS %s (authid VARCHAR(64) UNIQUE, password VARCHAR(64), access VARCHAR(64), flags VARCHAR(11), fecha VARCHAR(64))"szTableP);
    
    
mysql_query(g_Connection"QueryCreateTable"szTable);
    
    return 
PLUGIN_CONTINUE;
}

public 
QueryCreateTable(failstateerror[], error2data[], sizeFloat:queuetime)
{
    switch ( 
failstate )
    {
        case 
TQUERY_CONNECT_FAILEDlog_to_file("SQL_LOG_TQ.txt""Failed to connect to database [%i]: %s"error2error)
        case 
TQUERY_QUERY_FAILEDlog_to_file("SQL_LOG_TQ.txt""Error on query for creating table [%i]: %s"error2error)
    }
    
    return 
PLUGIN_HANDLED;
}
public 
fnCargar(failstateerror[], error2data[], sizeFloat:queuetime)
{
    static 
idid data];
    
    if( !
is_user_connectedid ) ) return;
    
    switch( 
failstate ) {
        case 
TQUERY_CONNECT_FAILED: {
            
log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case 
TQUERY_QUERY_FAILED:
            
log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
    }
    
    switch( 
data] ) 
    {
        case 
1:
        {
            if( 
mysql_num_results( ) )
            {
                
mysql_read_result(0g_vencimiento[id], sizeof(g_vencimiento[]));
                
replace_all(g_vencimiento[id], charsmax(g_vencimiento[]), "/"" ");
                
replace_all(g_vencimiento[id], charsmax(g_vencimiento[]), "-"" ");
                new 
Dia[100]; get_time("%d/%m/%Y"Diacharsmax(Dia)) 
                
                new 
szDay[10], szMonth[10], szYear[10];
                
parse(g_vencimiento[id], szDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear));
                
                new 
szDay2[10], szMonth2[10], szYear2[10];
                
replace_all(Diacharsmax(Dia), "/"" ");
                
replace_all(Diacharsmax(Dia), "-"" ");
                
parse(DiaszDay2charsmax(szDay2), szMonth2charsmax(szMonth2), szYear2charsmax(szYear2));
                
                if( 
str_to_num(szDay2) >= str_to_num(szDay) && str_to_num(szMonth2) >= str_to_num(szMonth)  && str_to_num(szYear2) >= str_to_num(szYear) )
                {
                    new 
Query300 ];
                    
formatexQuery charsmaxQuery ) , "DELETE FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
                    
mysql_query(g_Connection"fnCargarAdmin"Query );
                    
log_to_file("Admins_Vencimiento.log""Vencio el administrador [%s] - [%s]"g_vencimiento[id], iNombre[id]);
                }
                else
                {
                    
adminSql( );
                }
            }
        }
    }

public 
fnCargarAdmin(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    
    if( 
mysql_affected_rows() )
    {
        
adminSql( );
    }
    return 
PLUGIN_CONTINUE;

public 
fnAdmins(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR2: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    static 
id;
    
id data[0];
    

    
    if( 
mysql_num_results( ) )
    {
        new 
Authid[33], Password[33], Access[33], Flags[33];
        
        while( 
mysql_more_results( ) )
        {
            
mysql_read_result(0Authidsizeof(Authid));
            
mysql_read_result(1Passwordsizeof(Password));
            
mysql_read_result(2Accesssizeof(Access));
            
mysql_read_result(3Flagssizeof(Flags));
            
            
admins_push(AuthidPasswordread_flags(Access), read_flags(Flags));
            
            
mysql_next_row();
        }
    }else{
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    
users_access();
    return 
PLUGIN_CONTINUE;


stock AddAdmin(authid[], password[], access[], flags[], vencimiento[]){
    
    new 
Query[512];
    
formatex(Querycharsmax(Query), "INSERT INTO %s (authid, password, access, flags, fecha) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^")",
    
szTablePauthidpasswordaccessflagsvencimiento);
    
    
mysql_query(g_Connection"fnAdmins"Query);
    
    
log_to_file("Admins_Vencimiento.log""Agregado de admin: <%s> <%s> <%s> <%s> <%s>"authidpasswordaccessflagsvencimiento);
}

stock users_access(){
    new 
players[32];
    new 
iNum;
    
get_players(playersiNum);
    for(--
iNumiNum >= 0iNum--){
        
SetFlags(players[iNum]);
    }
}

stock SetFlags(idname[] = ""){
    
remove_user_flags(id);
    
    new 
szName[32];
    
get_user_info(id"_pw"g_password[id], sizeof(g_password[]));
    if(
name[0])
        
copy(szNamesizeof(szName), name);
    else
        
get_user_name(idszName31);
    
    new 
result lookup_access(idszNameg_password[id])
    
    if(
result 1)
    {
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 2){
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 4)
        
client_cmd(id"echo ^"*Password validated!^"");
    if(
result 8)
        
client_cmd(id"echo ^"Privilegios establecidos!^"");
    
    return 
PLUGIN_CONTINUE;
}
stock lookup_access(idusername[], password[]) {
    new 
index = -1result 0;
    new 
iadminname[32], adminpassword[32], count admins_num()-1;
    
    for(
count>= 0i--) {
        
admins_lookup(iAdminProp_Authadminnamecharsmax(adminname));
        if(
equali(usernameadminname)) {
            
index i;
            break;
        }
    }
    
    if(
index != -1) {
        new 
access admins_lookup(indexAdminProp_Access), ip[32], steamid[32];
        
admins_lookup(indexAdminProp_Passwordadminpasswordcharsmax(adminpassword));
        
get_user_ip(idipcharsmax(ip), 1);
        
get_user_authid(idsteamidcharsmax(steamid));
        
        if(
equal(passwordadminpassword)) {
            
            
result |= 12;
            
set_user_flags(idaccess);
            
            new 
sflags[32];
            
get_flags(accesssflagscharsmax(sflags));
            
            
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" became an admin (access ^"%s^") (address ^"%s^")"usernameget_user_userid(id), steamidsflagsip);
        }
        else {
            
result |= 1;
            
            if(
admins_lookup(indexAdminProp_Flags) & FLAG_KICK) {
                
result |= 2;
                
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" kicked due to invalid password (address ^"%s^")"usernameget_user_userid(id), steamidip);
            }
        }
    }
    else {
        new 
access read_flags("z");
        
        if(
access) {
            
result |= 8;
            
set_user_flags(idaccess);
        }
    }
    
    return 
result;




RE: Admin Vencimiento MySQL v1.0 - Hinami - 06/11/2018

new const szTableP[] = "admins_vencimiento";

tienes que editar el del programa si no no sirve Whatever


ya vi un error mío gracias luego lo corrijo



pd; no daré soporte a el del wey de arriba


RE: Admin Vencimiento MySQL v1.0 - SthoNy' - 06/11/2018

Lindo aporte, muy lindoCorazón


RE: Admin Vencimiento MySQL v1.0 - Hinami - 14/11/2018

(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd


RE: Admin Vencimiento MySQL v1.0 - kikizon2 - 14/11/2018

(14/11/2018, 11:01 PM)Hypnotize escribió:
(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd

No se puede mover por el sistema de plugins, debes crear el thread en la seccion y mandarle mp para eliminar este.


RE: Admin Vencimiento MySQL v1.0 - Hinami - 15/11/2018

(14/11/2018, 11:04 PM)kikizon2 escribió:
(14/11/2018, 11:01 PM)Hypnotize escribió:
(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd

No se puede mover por el sistema de plugins, debes crear el thread en la seccion y mandarle mp para eliminar este.

a bueno, con el otro me conformo.


----


ACT
- no pueden cambiarse nick


RE: Admin Vencimiento MySQL v1.0 - totopizza - 15/11/2018

Muy bonita interfaz, sug: castigos. Whatever


RE: Admin Vencimiento MySQL v1.0 - Fury. - 23/11/2018

Una vez más, buen aporteWhatever


RE: Admin Vencimiento MySQL v1.0 - Hinami - 23/11/2018

(23/11/2018, 01:37 AM)Fury. escribió: Una vez más, buen aporteWhatever

gracias!


RE: Admin Vencimiento MySQL v1.0 - Hinami - 25/11/2018

PROYECTO COMPILADO

no, no tiene virus.

http://prntscr.com/lmmnv0
https://www.virustotal.com/es/url/71216ea7e98991af2c7f6226d581d2ba513e14cc585f8e8d0f6cf04bf112f755/analysis/