Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
02/11/2018, 02:20 PM
(Última modificación: 02/01/2022, 02:48 AM por Hinami. Edited 9 times in total.)
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_...93f20d6168
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/c...bc5bee2965
Código: docker-compose up --build -d
Plugin
https://github.com/Chris4589/panel_grip/...aravel.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
Se que tiene algunas cosas que están XD, nada que meter mano no pueda reparar.
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
Mensajes: 160
Temas: 17
Registro en: Apr 2018
Reputación:
1
02/11/2018, 04:09 PM
(Última modificación: 15/11/2018, 06:43 PM por KevinJesus. Edited 1 time in total.)
Irgaaa que weno estaa we
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
thnx
aunque no es necesario citar todo xd
Mensajes: 160
Temas: 17
Registro en: Apr 2018
Reputación:
1
(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
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
Porque no lo haces via web? En vez de tener que descargar un complemento extra? Es mas practico...
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
No se php o js aun xd ( no se nada de web aun )
voy por java ahora, luego me paso a esos man
pero gracias por la sugerencia xd
Mensajes: 160
Temas: 17
Registro en: Apr 2018
Reputación:
1
(02/11/2018, 06:30 PM)Hypnotize escribió: No se php o js aun xd ( 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
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
02/11/2018, 07:16 PM
(Última modificación: 02/11/2018, 07:16 PM por Hinami.)
mejor aprende a irte a la verga
deja de comentar puras totadas en todos los temas
NO RESPONDAS Y DEJA DE DESVIRTUAR
Mensajes: 2,094
Temas: 59
Registro en: Feb 2015
Reputación:
15
pensé que era un cron, me gusta
(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.
(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
(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.
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
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.
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
(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 .NET
Mensajes: 642
Temas: 25
Registro en: Feb 2014
Reputación:
17
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
Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)
(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Mensajes: 5
Temas: 0
Registro en: Nov 2018
06/11/2018, 06:11 PM
(Última modificación: 06/11/2018, 07:50 PM por Eternity.)
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_isTuple, Handle:g_Connection;
new g_password[ 33 ][ 32 ]; new iNombre[ 33 ][ 32 ];
new g_vencimiento[64][32];
#define PREFIX "^4[COMUNIDAD]^1"
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); 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(0, read_flags("z")) register_concmd("amx_reloadadmins", "adminSql"); server_cmd("amx_reloadadmins"); }
public cmdAddAdmin(id, level, cid){ if(!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED; new Nombre[32], Password[64], Access[35], Flags[5], Fecha[64]; read_argv(1, Nombre, charsmax(Nombre)); read_argv(2, Password, charsmax(Password)); read_argv(3, Access, charsmax(Access)); read_argv(4, Flags, charsmax(Flags)); read_argv(5, Fecha, charsmax(Fecha)); if(strlen(Nombre) <= 0 || strlen(Password) <= 0 || strlen(Access) <= 0 || strlen(Flags) <= 0 || strlen(Fecha) <= 0){ console_print(id, "[AMXX] Fallo los textos!"); return PLUGIN_HANDLED; } AddAdmin(Nombre, Password, Access, Flags, Fecha); console_print(id, "[AMXX] Se agrego el admin: <%s> <%s> <%s> <%s> <%s>", Nombre, Password, Access, Flags, Fecha); adminSql(); return PLUGIN_HANDLED; }
public cmdVencimiento(id){ if(is_user_admin(id)){ ColorChat(id, GREEN, "%s Tu admin vence en la fecha: ^4%s", PREFIX, g_vencimiento[id]); }else{ ColorChat(id, GREEN, "%s No eres admin", PREFIX); } }
public client_putinserver( id ) { get_user_name( id, iNombre[ id ], charsmax( iNombre ) ); new Query[ 300 ], iData[ 2 ]; iData[ 0 ] = id; iData[ 1 ] = 1; formatex( Query , charsmax( Query ) , "SELECT fecha FROM %s WHERE authid = ^"%s^"", szTableP, iNombre[ id ] ); mysql_query(g_Connection, "fnCargar", Query, iData, 2 ); } public adminSql( ) { new Query[ 300 ]; formatex( Query , charsmax( Query ) , "SELECT authid, password, access, flags FROM %s", szTableP ); mysql_query(g_Connection, "fnAdmins", Query ); } public MySQL_Init( ) { g_isTuple = mysql_makehost(HOST, USUARIO, PASSWORD, DB); new error[ 32 ], errnum; g_Connection = mysql_connect(g_isTuple, errnum, error, 31); if(errnum) { log_to_file("mysqlt.log", "ERROR1: [%d]- [%s]", errnum, error) return pause( "a" ); } new szTable[ 1000 ]; formatex(szTable, charsmax(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(failstate, error[], error2, data[], size, Float:queuetime) { switch ( failstate ) { case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", error2, error) case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error on query for creating table [%i]: %s", error2, error) } return PLUGIN_HANDLED; } public fnCargar(failstate, error[], error2, data[], size, Float:queuetime) { static id; id = data[ 0 ]; if( !is_user_connected( id ) ) return; switch( failstate ) { case TQUERY_CONNECT_FAILED: { log_to_file( "SQL_LOG_TQ.txt", "Error en la conexion al MySQL [%i]: %s", error2, error ); return; } case TQUERY_QUERY_FAILED: log_to_file( "SQL_LOG_TQ.txt", "Error en la consulta al MySQL [%i]: %s", error2, error ); } switch( data[ 1 ] ) { case 1: { if( mysql_num_results( ) ) { mysql_read_result(0, g_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", Dia, charsmax(Dia)) new szDay[10], szMonth[10], szYear[10]; parse(g_vencimiento[id], szDay, charsmax(szDay), szMonth, charsmax(szMonth), szYear, charsmax(szYear)); new szDay2[10], szMonth2[10], szYear2[10]; replace_all(Dia, charsmax(Dia), "/", " "); replace_all(Dia, charsmax(Dia), "-", " "); parse(Dia, szDay2, charsmax(szDay2), szMonth2, charsmax(szMonth2), szYear2, charsmax(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 Query[ 300 ]; formatex( Query , charsmax( Query ) , "DELETE FROM %s WHERE authid = ^"%s^"", szTableP, iNombre[ id ] ); 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(failstate, error[], errnum, data[], size, Float:queuetime) { if(failstate != TQUERY_SUCCESS) { log_to_file("mysqlt.log", "ERROR1: [%d]- [%s]", errnum, error) return PLUGIN_HANDLED; } if( mysql_affected_rows() ) { adminSql( ); } return PLUGIN_CONTINUE; } public fnAdmins(failstate, error[], errnum, data[], size, Float:queuetime) { if(failstate != TQUERY_SUCCESS) { log_to_file("mysqlt.log", "ERROR2: [%d]- [%s]", errnum, error) 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(0, Authid, sizeof(Authid)); mysql_read_result(1, Password, sizeof(Password)); mysql_read_result(2, Access, sizeof(Access)); mysql_read_result(3, Flags, sizeof(Flags)); admins_push(Authid, Password, read_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(Query, charsmax(Query), "INSERT INTO %s (authid, password, access, flags, fecha) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^")", szTableP, authid, password, access, flags, vencimiento); mysql_query(g_Connection, "fnAdmins", Query); log_to_file("Admins_Vencimiento.log", "Agregado de admin: <%s> <%s> <%s> <%s> <%s>", authid, password, access, flags, vencimiento); }
stock users_access(){ new players[32]; new iNum; get_players(players, iNum); for(--iNum; iNum >= 0; iNum--){ SetFlags(players[iNum]); } }
stock SetFlags(id, name[] = ""){ remove_user_flags(id); new szName[32]; get_user_info(id, "_pw", g_password[id], sizeof(g_password[])); if(name[0]) copy(szName, sizeof(szName), name); else get_user_name(id, szName, 31); new result = lookup_access(id, szName, g_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(id, username[], password[]) { new index = -1, result = 0; new i, adminname[32], adminpassword[32], count = admins_num()-1; for(i = count; i >= 0; i--) { admins_lookup(i, AdminProp_Auth, adminname, charsmax(adminname)); if(equali(username, adminname)) { index = i; break; } } if(index != -1) { new access = admins_lookup(index, AdminProp_Access), ip[32], steamid[32]; admins_lookup(index, AdminProp_Password, adminpassword, charsmax(adminpassword)); get_user_ip(id, ip, charsmax(ip), 1); get_user_authid(id, steamid, charsmax(steamid)); if(equal(password, adminpassword)) { result |= 12; set_user_flags(id, access); new sflags[32]; get_flags(access, sflags, charsmax(sflags)); log_amx("[AMXX] Login: ^"%s<%d><%s><>^" became an admin (access ^"%s^") (address ^"%s^")", username, get_user_userid(id), steamid, sflags, ip); } else { result |= 1; if(admins_lookup(index, AdminProp_Flags) & FLAG_KICK) { result |= 2; log_amx("[AMXX] Login: ^"%s<%d><%s><>^" kicked due to invalid password (address ^"%s^")", username, get_user_userid(id), steamid, ip); } } } else { new access = read_flags("z"); if(access) { result |= 8; set_user_flags(id, access); } } return result; }
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
06/11/2018, 08:08 PM
(Última modificación: 06/11/2018, 08:21 PM por Hinami.)
new const szTableP[] = "admins_vencimiento";
tienes que editar el del programa si no no sirve
ya vi un error mío gracias luego lo corrijo
pd; no daré soporte a el del wey de arriba
Mensajes: 410
Temas: 9
Registro en: Apr 2015
Reputación:
5
Lindo aporte, muy lindo
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
14/11/2018, 11:01 PM
(Última modificación: 14/11/2018, 11:02 PM por Hinami. Edited 1 time in total.)
(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 lindo
gracias
ya corregí un error de dedo xd
neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
(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 lindo
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.
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
(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 lindo
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
Mensajes: 4,247
Temas: 94
Registro en: Mar 2014
Reputación:
58
Muy bonita interfaz, sug: castigos.
Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando. (08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck
Mis aportes
PLUGINSMAPAS
Menú LANG
[SF] Sistema de Frags
Say System (Admin Prefix)
Mensajes: 54
Temas: 5
Registro en: May 2017
Reputación:
1
Una vez más, buen aporte
"El día que seas capaz de llorar de impotencia ante una injusticia, ese día seremos compañeros"
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
(23/11/2018, 01:37 AM)Fury. escribió: Una vez más, buen aporte
gracias!
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
25/11/2018, 01:03 AM
(Última modificación: 25/11/2018, 01:14 AM por Hinami.)
|