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 (EJEMPLO)
aca se crea un user, server's y admins.

Plugin:
https://github.com/Chris4589/panel_grip/..._alter.sma (Versión oficial donde se ve cada cambio)
Código PHP:
#include <admin_panel>

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

var const authUser[] = "user"//cambiar
var const authPassword[] = "pass"//cambiar

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;

Modulo + Inc:
https://github.com/Chris4589/panel_grip
Fuente Backend:
https://github.com/Chris4589/admin-panel...el-backend
Fuente Frontend:
https://github.com/Chris4589/admin-panel...l-frontend

LEEME ANTES DE USAR: https://github.com/Chris4589/admin-panel.../README.md

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 -

[Imagen: 122859335-18c17580-d2d9-11eb-8a3d-d89b27035da3.png]
[Imagen: 122859406-3989cb00-d2d9-11eb-847d-3cc80322193e.png]
[Imagen: 122859426-3ee71580-d2d9-11eb-966b-8ae2b044e485.png]
[Imagen: 122859434-43133300-d2d9-11eb-82cb-0e1ad342f5e2.png]
[Imagen: 122859447-47d7e700-d2d9-11eb-8ab8-007b5d06df3a.png]
[Imagen: 122859455-4c040480-d2d9-11eb-9d10-50251d65560a.png]
[Imagen: 122859467-50302200-d2d9-11eb-9b05-47ee5425628f.png]
[Imagen: 122859488-57efc680-d2d9-11eb-90bc-c2feafd1a089.png]
[Imagen: 122859521-65a54c00-d2d9-11eb-9ae2-02d4161d6fd8.png]
[Imagen: 122859542-6a6a0000-d2d9-11eb-90d7-72895d8951cd.png]
[Imagen: 122859566-75bd2b80-d2d9-11eb-9c0f-0fa07b080de9.png]
[Imagen: 122859590-7d7cd000-d2d9-11eb-9f4f-dbadc06f5f05.png]
[Imagen: 122859599-81105700-d2d9-11eb-8b19-87978dac1b35.png]
[Imagen: 122859610-840b4780-d2d9-11eb-8cb2-db11b186847f.png]
[Imagen: 122859626-8a012880-d2d9-11eb-9a5c-2e0a303d8166.png]
[Imagen: 122859654-92f1fa00-d2d9-11eb-976f-428432fed5bc.png]

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

SON LIBRES DE PODER USAR EL PANEL, PERO EVITEN SER RATAS Y PONER QUE LO HICIERON USTEDES (DIRIGIDO A VENEZOLANOS EN GENERAL).
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#2
Buen aporte Proud
Ingeniero agrónomo y desarrollador de Software.

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"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#3
Estaba esperándolo... ahora lo pongo pa probarlo rei...
www.GameHost.com.ar
Discord: Luzbe#6650 

(05/06/2021, 01:07 AM)Hinami escribió: SON LIBRES DE PODER USAR EL PANEL, PERO EVITEN SER RATAS Y PONER QUE LO HICIERON USTEDES (DIRIGIDO A VENEZOLANOS EN GENERAL).

(09/02/2020, 06:08 PM)Skylar escribió: Capo, tu vida no nos interesa para que nos estemos informando, asi que cerra la cola

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).
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#6
aporte kk
[Imagen: EvoLogo.png.fbcccbc49fb32e6a4bf8f5e72d80c317.png]
nalgas

(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
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
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
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
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?
Responder
#11
Quizá le agregue esos certificados, solo estoy esperando que me envíen unos datos.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
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




Endpoints para desarrolladores:
https://admin.svlmexico.com/api-docs/#/
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#13
- Fuentes añadidas (Pawn, NodeJS, Angular)


Momentáneamente lo dejaré hasta donde llegue no tengo ganas de seguirlo, pero hasta donde lo probé funciono todo bien.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#14
le di de baja a las demos, si usaban el plugin ya no les traerá ningún dato.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#15
no funciona la web rey
(13/05/2017, 02:11 PM)DiCHANHO escribió: off: pobre este ya quedo traumado con lo del autor y robo de plugins
(26/07/2020, 08:32 PM)Hinami escribió: & si soy un gordo cagon, virgen, con posters de anime en todas partes
✅✅Aportes✅✅
Datear Automáticamente CincoYA
Efecto Trueno y Rayo

Responder
#16
(20/04/2022, 05:44 PM)Hinami escribió: le di de baja a las demos, si usaban el plugin ya no les traerá ningún dato.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)