Admins Vencimiento Web 0.1b [ gRIP ]
#1
Que tal, voy al grano.


Es un plugin que depende de una web (en desarrollo pero más o menos funcional), te creas un usuario, registras tus servers y luego tus admins y este se conecta a un plugin (modulo gRIP), y cada que se conecta un user este chequea a la web si el user es ADMIN o no, en caso de ser admin si esta vencido su admin no lo cargara y si esta activo le dará su admin.

Aclaro;

El plugin actualmente envía el STEAMID del user y se basa en eso, pero de igual manera podrían registrar un nombre en la web y editar el plugin en caso de ser nosteam enviar el nombre y si es steam el steamid. - soporte steam/nosteam (steamid/nick + setinfo)

Es un plugin/web aun en desarrollo el cual posteo para saber si sirve correctamente, de ser así voy a seguir el proyecto cuando tenga tiempo libre, por eso notaran a veces la falta de mensajes para servir errores o avisar que algo se ejecuto, o bien cosas aun sin funcionabilidad, con el tiempo dejare todas las fuentes.

La web es sencilla, y lo hice lo más sencilla posible así que no salgan con enviar cosas al mail o registros por fb, gmail, etc.

---------------------

web provisional: https://admin.svlmexico.com/login
aca se crea un user, server's y admins.

Plugin:
https://github.com/Chris4589/panel_grip/..._alter.sma
Modulo + Inc:
https://github.com/Chris4589/panel_grip

Dentro del plugin deben editar 2 lineas, el cual les pide un usuario y una contraseña para poder hacer peticiones al server, que contraseña & que usuario? el que debieron crear en el url provisional mencionado anteriormente.

Según yo y lo dicho por metita usando el modulo grip debería andar sin problemas, en la parte web como mencione aun me faltan las alertas pero deje un clg para los que presionan f12 y les gusta saber que rollo.

El plugin esta escrito así por querer, el diseño no es el mejor porque no es mi área, solo dios sabe como se ve en una pantalla grande la mía es chika, fin.

- NO SE QUE TAN RAPIDO TRAIGA LA DATA, YA QUE EL SERVER ESTA NY -
- el plugin no va a servir si no instalan el modulo, una alternativa a gRIP es CURL pero no voy a hacer el plugin con esa versión -
- El plugin depende del modulo, en caso se descubran errores con el no se podría seguir adelante con esto -

Creditos:
Mía - Recomendación en la paleta de colores, recomendacion del ssl y tsl
Totopizza - Recomendación en la paleta de colores
metita - modulo gRIP, opinión e información sobre el modulo
Flys - Ayuda a comprender el modulo
In-line - Creador del modulo
ArisH - Un detallito en angular
svlmexico - VPS para la instalación de docker y despliegue e idea del plugin
Roccoxx y r0ma - por guapos
Luzbe - testeo y pruebas
Jonas (MXS) - cloud ssl
Sinaloense - cert y key

de acá saque los includes
https://c-s.net.ua/forum/topic90058.html
Responder
#2
Buen aporte Proud
futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
Responder
#3
Estaba esperándolo... ahora lo pongo pa probarlo rei...
www.GameHost.com.ar
Discord: Luzbe#6650 
[Imagen: kviwEnk.jpg]

Responder
#4
Buen aporte Nothingdohere

Responder
#5
cabe mencionar que creo que rompe los plugins que carguen cosas para admin en client_putinserver(id)

para eso cree esta

fw_LoginPost(id)

solo crean una funcion con ese name y cargan adentro lo que haya en putinserver y ya (y/o mover el mio a authorized en X casos).
Responder
#6
aporte kk
(03/08/2018, 03:13 PM)Skylar escribió: Está bien que pidas ayudas, pero no para que crees 20 post todos los días mogolico de mierda, me tenes re podrido ya, contraté 10000 sicarios para que te busquen y te maten toda la familia, y a vos que te revienten con una bazooka.
Responder
#7
[Imagen: 31484495.jpg]


--

agregue avisos porque nadie entendia sin ellos Xd
Responder
#8
buen aporte -1
Responder
#9
Se agrego soporte a STEAM/NS (steamid/nick+setinfo, cual sea va en el campo "authid", el campo nick es una referencia para saber quien es...), aparte de esto ahora ya no rompe plugins que se carguen en client_putinserver. (versión alterna del plugin vía admin push+ gRIP);

La versión 1 la cual te carga el admin al entrar al server aun sigue siendo unicamente para steamid.

- Creditos
Luzbe

Plugin versión alterna

Código PHP:
#include <admin_panel>

/*
    native get_roleUser(id, dest[], len);
*/

var const authUser[] = "user";
var const 
authPassword[] = "pw";

var const 
urlBase[] = "https://admin.svlmexico.com";

var const 
kickReason[] = "Contraseña Invalida!";

var 
authToken[400], idServer;

var 
bool:authLoged;

var 
Trie:trieVencimientoTrie:trieRole;

var 
fechaVencimiento[33][32], roleUser[33][32];

function 
plugin_end() {
    
TrieDestroy(trieVencimiento);
    
TrieDestroy(trieRole);
}

function 
accessUser(id)
{
    
remove_user_flags(id);

    var 
userAuthid[32], userName[32], userPassword[50], index = -1;

    
get_user_authid(iduserAuthidcharsmax(userAuthid));
    
get_user_name(iduserNamecharsmax(userName));
    
get_user_info(id"_pw"userPasswordcharsmax(userPassword));

    static 
flags;
    static 
authid[44];
    static 
access;
    static 
password[32];
    static 
role[32];
    static 
vencimiento[32];

    for(var 
0admins_num(); i++)
    {
        
flags admins_lookup(iAdminProp_Flags);

         
admins_lookup(iAdminProp_Authauthidcharsmax(authid));

         if (
flags FLAG_AUTHID) {
             if (
equal(authiduserAuthid)) {

                 if (
TrieGetString(trieRoleuserAuthidrolecharsmax(role))) {
                     
copy(roleUser[id], charsmax(roleUser[]), role);
                }

                if (
TrieGetString(trieVencimientouserAuthidvencimientocharsmax(vencimiento))) {
                     
copy(fechaVencimiento[id], charsmax(fechaVencimiento[]), vencimiento);
                }

                 
index i;
                 break;
             }
         }
         else if (
flags FLAG_TAG) {
             if (
equal(authiduserName)) {

                 if (
TrieGetString(trieRoleuserNamerolecharsmax(role))) {
                     
copy(roleUser[id], charsmax(roleUser[]), role);
                }

                if (
TrieGetString(trieVencimientouserNamevencimientocharsmax(vencimiento))) {
                     
copy(fechaVencimiento[id], charsmax(fechaVencimiento[]), vencimiento);
                }

                 
index i;
                 break;
             }
         }
    }

    if (
index != -1) {
        
access admins_lookup(indexAdminProp_Access);

        var 
userFlags[32];
         
get_flags(accessuserFlagscharsmax(userFlags));

        
server_print("[gRIP] flags: %s"userFlags);
        
server_print("[gRIP] role: %s"roleUser[id]);
        
server_print("[gRIP] vencimiento: %s"fechaVencimiento[id]);

         if (
flags FLAG_NOPASS) {
            
set_user_flags(idread_flags(userFlags));

            
server_print("[gRIP] Admin: %s"userName);
        } else {
            
admins_lookup(indexAdminProp_Passwordpasswordcharsmax(password));

            if (
equal(passworduserPassword)) {
                
set_user_flags(idread_flags(userFlags));
                
server_print("[gRIP] Admin Pass: %s"userName);
            } else {
                if (
flags FLAG_KICK) {
                    
server_print("[gRIP] Kick: %s"userName);
                    
server_cmd("kick #%i ^"(%s)^""get_user_userid(id), kickReason);
                    return 
PLUGIN_HANDLED;
                }
            }
        }
        
    } else {
        
server_print("[gRIP] User: %s"userName);
        
set_user_flags(idread_flags("z"));
    }

    return 
PLUGIN_CONTINUE;


/*
function client_authorized(id) {
    return accessUser(id);
}
*/
function give_admins() {
    var 
GripResponseState:responseState grip_get_response_state();
    if (
responseState != GripResponseStateSuccessful) {
        
server_print("Response Status Failed: [ %d ]"responseState);
        return;
    }

    var 
GripHTTPStatus:status grip_get_response_status_code();

    if (!(
GripHTTPStatusOk <= status <= GripHTTPStatusPartialContent)) {
        
server_print("Code Status [ %d ]"status);
        return;
    }

    var 
responses[1024];
    var 
GripJSONValue:body grip_json_parse_response_body(responsescharsmax(responses));

    if (
body == Invalid_GripJSONValue) {
        
server_print("La respuesta esperada no es un JSON: %s"responses);
        return;
    }

    if (
isError(body)) {
        
server_print("Hubo un error en la peticion a node.");
        return;
    }

    var 
GripJSONValue:msg grip_json_object_get_value(body"msg");

    if (!
isArrayValid(msg)) {
        
server_print("No hay admins creados");
        return;
    }

    var 
role[32], authid[32], flags[32], createdAt[50], password[50], vencimiento[50], bool:is_steam;

    for(var 
0grip_json_array_get_count(msg); i++)
    {
        var 
GripJSONValue:value grip_json_array_get_value(msgi);
        
grip_json_object_get_string(value"role"rolecharsmax(role));
        
grip_json_object_get_string(value"authid"authidcharsmax(authid));
        
grip_json_object_get_string(value"password"passwordcharsmax(password));
        
grip_json_object_get_string(value"flags"flagscharsmax(flags));
        
grip_json_object_get_string(value"createdAt"createdAtcharsmax(createdAt));
        
grip_json_object_get_string(value"vencimiento"vencimientocharsmax(vencimiento));

        
is_steam grip_json_object_get_bool(value"steam");

        
admins_push(authidpasswordread_flags(flags), read_flagsis_steam "ce" "ab"));

        
TrieSetString(trieVencimientoauthidvencimiento);
        
TrieSetString(trieRoleauthidrole);

        
server_print("/*******************************************/");
        
server_print("Admin cargado.");
        
server_print("role: [ %s ]"role);
        
server_print("authid: [ %s ]"authid);
        
server_print("flags: [ %s ]"flags);
        
server_print("type: [ %s ]"is_steam "ce" "ab");
        
server_print("createdAt: [ %s ]"createdAt);
        
server_print("/*******************************************/");
        
        
grip_destroy_json_value(value);
    }

    
grip_destroy_json_value(msg);
    
grip_destroy_json_value(body);
}

function 
getAllAdmins() {
    if (!
authLoged) {
        
server_print("No te haz logueado a tu cuenta en %s."urlBase);
        return;
    }

    var 
url[200];
    
formatex(urlcharsmax(url), "%s/admins/?fk_ServerId=%d"urlBaseidServer);

    var 
GripRequestOptions:options grip_create_default_options();
    
grip_options_add_header(options"Content-Type""application/json");
    
grip_options_add_header(options"token"authToken);

    
grip_request(urlEmpty_GripBodyGripRequestTypeGet"give_admins"options);

    
grip_destroy_options(options);
}

function 
handlerAuth() {
    var 
GripHTTPStatus:status grip_get_response_status_code();

    if (!(
GripHTTPStatusOk <= status <= GripHTTPStatusPartialContent)) {
        
server_print("Code Status [ %d ]"status);
        return;
    }

    var 
responses[1024];
    var 
GripJSONValue:body grip_json_parse_response_body(responsescharsmax(responses));

    if (
body == Invalid_GripJSONValue) {
        
server_print("La respuesta esperada no es un JSON: %s"responses);
        return;
    }

    if (
isError(body)) {
        
server_print("Hubo un error en la peticion a node.");
        return;
    }

    var 
GripJSONValue:msg grip_json_object_get_value(body"msg");

    if (
msg == Invalid_GripJSONValue) {
        
server_print("La respuesta de msg no es un JSON");
        return;
    }

    
grip_json_object_get_string(msg"token"authTokencharsmax(authToken));
    
server_print("your server token is [ %s ]"authToken);

    if (!
authLoged) {
        
getServer();
    }
    
authLoged true;

    
grip_destroy_json_value(msg);
    
grip_destroy_json_value(body);
}

function 
renew_token() {

    if (!
authLoged) {
        
server_print("No te haz logueado a tu cuenta en %s."urlBase);
        return;
    }
    
    var 
url[200];
    
formatex(urlcharsmax(url), "%s/auth/renew/"urlBase);

    var 
GripRequestOptions:options grip_create_default_options();
    
grip_options_add_header(options"Content-Type""application/json");
    
grip_options_add_header(options"token"authToken);

    
grip_request(urlEmpty_GripBodyGripRequestTypeGet"handlerAuth"options);

    
grip_destroy_options(options);
}

function 
auth() {
    var 
url[200];
    
formatex(urlcharsmax(url), "%s/auth/"urlBase);
    
server_print("%s"url);

    var 
GripJSONValue:object grip_json_init_object();
    
grip_json_object_set_string(object"user"authUser);
    
grip_json_object_set_string(object"password"authPassword);

    var 
GripBody:body object != Invalid_GripJSONValue grip_body_from_json(object) : Empty_GripBody;

    var 
GripRequestOptions:options grip_create_default_options();
    
grip_options_add_header(options"Content-Type""application/json");
    
grip_options_add_header(options"User-Agent""Grip");

    
grip_request(urlbodyGripRequestTypePost"handlerAuth"options);

    
grip_destroy_body(body);
    
grip_destroy_options(options);
    
grip_destroy_json_value(object);
}


function 
client_putinserver(id) {
    
roleUser[id][0] = EOS;

    return 
accessUser(id);
}

function 
handlerServer() {
    var 
GripHTTPStatus:status grip_get_response_status_code();

    if (!(
GripHTTPStatusOk <= status <= GripHTTPStatusPartialContent)) {
        
server_print("Code Status [ %d ]"status);
        return;
    }

    var 
responses[1024];
    var 
GripJSONValue:body grip_json_parse_response_body(responsescharsmax(responses));

    if (
body == Invalid_GripJSONValue) {
        
server_print("La respuesta esperada no es un JSON: %s"responses);
        return;
    }

    if (
isError(body)) {
        
server_print("Hubo un error en la peticion a node.");
        return;
    }

    var 
GripJSONValue:msg grip_json_object_get_value(body"msg");

    if (
msg == Invalid_GripJSONValue) {
        
server_print("La respuesta de msg no es un JSON");
        return;
    }

    
idServer grip_json_object_get_number(msg"id");
    
server_print("your server id is [ %d ]"idServer);

    
grip_destroy_json_value(msg);
    
grip_destroy_json_value(body);

    
getAllAdmins();
}

function 
getServer() {
    var 
url[200], address[50];
    
get_cvar_string("net_address"addresscharsmax(address));
    
formatex(urlcharsmax(url), "%s/servers/Ip?ipServer=%s"urlBaseaddress);
    
server_print("%s"url);

    var 
GripRequestOptions:options grip_create_default_options();
    
grip_options_add_header(options"Content-Type""application/json");
    
grip_options_add_header(options"token"authToken);

    
grip_request(urlEmpty_GripBodyGripRequestTypeGet"handlerServer"options);

    
grip_destroy_options(options);
}

function 
OnStart() {
    
admin_init(param1param2param3);

    
trieVencimiento TrieCreate( );
    
trieRole TrieCreate( );

    
authLoged false;

    
auth();
    
set_task(120.0"renew_token"___"d");
}


function 
CreateNatives() {
    
register_native("get_roleUser""handler_roleUser"0);// get_roleUser(id, dest[], len);
}

public 
handler_roleUser(pluginparams)
{
    
set_string(2roleUser[get_param(1)], get_param(3));
    return -
1;

cualquier cambio sale directamente en mi enlace de github.




(05/06/2021, 01:22 AM)roccoxx escribió: Buen aporte  Proud

(05/06/2021, 01:32 AM)Luzbe28 escribió: Estaba esperándolo... ahora lo pongo pa probarlo rei...

(05/06/2021, 03:14 PM)Skylar escribió: Buen aporte Nothingdohere

(06/06/2021, 11:10 PM)LeanPPP escribió: buen aporte -1

thnx
Responder
#10
Muy lindo aporte!

Estuve viendo el código y vi esto:
Código PHP:
grip_json_object_set_string(object"password"authPassword); 
Además vi que no tienes SSL/TLS en el panel.
¿Tal vez sería buena idea hashear la pw antes de enviarla?
(05/06/2021, 01:07 AM)Hinami escribió: Creditos:
Roccoxx y r0ma - por guapos

(10/05/2021, 12:42 AM)meTaLiCroSS escribió: Mírate, seguí programando weas mulas después de años, tení que ser harto penca para esta wea, das pura pena

(26/07/2020, 08:32 PM)Hinami escribió: soy un gordo cagon, virgen, con posters de anime en todas partes

(16/05/2020, 06:31 PM)Ipolito escribió: Ahre que solo estafe a 1

(12/05/2020, 06:37 PM)Neeeeeeeeeel.- escribió: El puto compilador de AM está más bugueado que la concha de la lora

(09/05/2020, 02:29 PM)Nube. escribió: que concha le hicieron al foro?

(13/05/2019, 08:27 PM)Niper.-. escribió: Yo siempre quise ser un hacker hackero profesional del 1.6 conter strike 1.6 no steam y counter strike 1.6 steam version 1.2.65. El problema es que no sabía como hackear entonces aprendi a hackear mediante hackeos como hackee mi primera vez hackeando un sistema de hackers para yo despues hackear a ese hacker que me queria hackear pero yo lo hackee primero por ende el hacker quedo re hackeado por mi que seria un hacker. Entonces así fui como me hice hacker. Gracias por leer.

(27/04/2020, 02:13 PM)Neeeeeeeeeel.- escribió: El foro será actualizado tan pronto encuentren la cura para el coronavirus

(07/04/2020, 11:22 PM)Hinami escribió: aparte kikizon es marica

(26/03/2020, 04:23 AM)Chema escribió: +REP de que pendejo? ni tienes 100 posts.

(20/11/2018, 09:32 AM)Neeeeeeeeeel.- escribió: yo porque soy muy enfermo del styling

(13/02/2017, 07:41 PM)Heber[$]ource escribió: es nuvpawn, nos esta ddoseando con su sega genesis

(10/05/2019, 08:23 PM)Niper.-. escribió: Trap no son tus putas trap es mi equipo tumbando el foro de amxmodx hey tumbando el foro hey tumbando el foroooo ya saben todos nos llevamos todos los pluginsss..

(18/02/2019, 03:08 PM)Neeeeeeeeeel.- escribió: Shit

(28/02/2015, 03:27 AM)sasske escribió: Vete al diablo detallista de mierda :ohgodwhy;

(26/12/2018, 02:45 PM)[R]ak escribió: yo solo te veo en whatsapp agarrando culos.. nose..

(09/06/2017, 12:59 AM)kikizon2 escribió: Quiero que leas las reglas, y si fuese posible que saltaras de un 10mo piso, pls.

(21/04/2017, 01:27 AM)Chamo. escribió: Cuanto hay que pagar para estar en tu firma TrolleyesThats what she said?

(20/04/2017, 11:56 PM)matrix123 escribió: Patrocinas rehlds? Es de lo único que hablas, mañana seguro te llegan remeras de rehlds, mandame una Whatever

(26/04/2017, 08:47 PM)Dieguito escribió: al que me salga con latinservers le meto un sugisaki por el c***

(26/02/2017, 08:02 PM)meTaLiCroSS escribió: La misma aritmetica se aplica con los Strings falsos que inventé ("trivago" y "pajarussel").

(06/01/2015, 10:47 PM)meTaLiCroSS escribió:
(06/01/2015, 10:40 PM)wiD escribió: este chileno culiau :whatever;
¿Que?

(29/04/2016, 11:44 PM)wiD escribió: Te juro que si te tengo enfrente primero te piso con el auto y despues te meo en la boca.

(16/07/2014, 06:38 PM)wiD escribió: Mongito dame su name que quiero un chip para pegar todo cocow

(18/03/2015, 02:04 PM)ErikMav94 escribió:
(18/03/2015, 02:03 PM)mongito100 escribió: Son todos putos
escribís como el orto :trolleyes;

[Anti] escribió:Olle tranquilo cerebrito

(03/04/2015, 12:16 AM)Treki escribió:
(03/04/2015, 12:11 AM)Sugisaki escribió: cual plug?, el arkshine o el de arkshine?

Fixed*

(09/03/2015, 09:49 PM)Moroha escribió: Suspendieron al abaricioso platero de kikizon :trolleyes;

(26/05/2014, 08:31 PM)ivan escribió: hola quiero hacer combo para el party uso el de rank

(22/08/2014, 11:41 PM)Store.gh escribió: Join team de jeropito? A vos t hace falta un pito..

(26/02/2015, 01:01 AM)meTaLiCroSS escribió:
(26/02/2015, 12:54 AM)sasske escribió: Salida del horno nueva versión, que obsesionado estoy :3
PD: Me olvide de darle los créditos a metal xD, pobre metal xd
Da igual, dejalo como una enseñanza jejej no te llorare por unos creditos ehhmm hud...

(18/01/2015, 12:31 AM)[R]ak escribió: no me critican.. solo dicen boludeces

(05/01/2015, 12:43 AM)roccoxx escribió: Sentado en dust pensando como fui tan gil ♪
[Imagen: attachment.php?thumbnail=1750]
Responder
#11
Quizá le agregue esos certificados, solo estoy esperando que me envíen unos datos.
Responder
#12
le agregue los certificados que mia menciono

nueva URL: https://admin.svlmexico.com

- creditos

Jonas (MexicanServers) - cloud
Sinaloense (MexicanServers) - certificados
Mia - recomendacion de certs
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)