Mensajes: 818
Temas: 71
Registro en: Sep 2014
Reputación:
12
Todo bien hasta la hora de obtener los datos,
Cita:HTTP/1.1 200 OK
Date: Mon, 22 Apr 2019 03:27:50 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.27
Vary: Accept-Encoding
Content-Length: 164
Content-Type: text/html
Los datos
Solo quiero "Los datos y omitir lo de arriba"
Código PHP: public fw_sockConnected(SOCKET:socket, customID) { server_print("*[%s]: Connection successful.", sockets_name[customID])
switch(customID) { case SOCK_DOWNLOAD: { new data[256] formatex(data, charsmax(data), "GET %s HTTP/1.1^r^nHost: %s^r^n^r^n", download_script, download_host)
new len = socket_send(socket, data) server_print("*[%s]: Send Packet: %d/%d", sockets_name[customID], len, strlen(data))
g_write_download = fopen(download_savefile, "wb") } } }
public fw_sockReadable(SOCKET:socket, customID, type) { server_print("*[%s]: Ready to read data - type:(%d)", sockets_name[customID], type) new data[1024], len if(type == SOCK_TYPE_TCP) { do { len = socket_recv(socket, data, charsmax(data))
if(len <= 0) { if(len == -1) server_print("*ERROR [%s]: Recv: error", sockets_name[customID]) else { server_print("*ERROR [%s]: Recv: No data: Close socket", sockets_name[customID]) socket_close(socket) } break }
if(customID == SOCK_DOWNLOAD) { server_print("*[%s]: Recv: size:(%d) - strlen(%d)", sockets_name[customID], len, strlen(data))
fwrite_blocks(g_write_download, data, len, BLOCK_BYTE) } else { server_print("*[%s]: Recv: size:(%d) - strlen(%d) - packet:[%s]", sockets_name[customID], len, strlen(data), data) }
} while(len == charsmax(data)) } }
Mensajes: 4,247
Temas: 94
Registro en: Mar 2014
Reputación:
58
22/04/2019, 01:42 AM
(Última modificación: 29/04/2019, 01:44 AM por totopizza. Edited 1 time in total.)
Añade un separador, y lo utilizas con un explode
ejemplo: (no sirve el codigo de redirección por la actualizacion del 20 de marzo 2019)
Código PHP: #include <amxmodx> #include <amxmisc> #include <sockets_async> #include <chatcolor>
#pragma semicolon 1
new const PluginInfo[][] = { "[MXS] Servidores", "v1.0", "totopizza" };
//Datos del Socket new SOCKET:iSocket; enum { SOCKET:SOCK_GET_SERVERS, SOCK_CLIENT } new const SOCK_HOSTNAME[] = "www.mexicanservers.com"; const SOCK_PORT = 443;
//Datos de la lista de servers; #define MAX_SERVER 32 new bool:is_load_server;
new const filename[] = "extra/cs/servers.txt";
new TempList[] = "addons/amxmodx/data/servers.txt"; new TempListDebug[] = "addons/amxmodx/data/servers_debug.txt";
new const szServers[MAX_SERVER][64]; new const szServersIP[MAX_SERVER][40];
enum ServerStatus { Off=0, On, Closed };
new ServerStatus:iServersStatus[MAX_SERVER]; new total_servers;
//Datos del server new szIP[40]; new serverid=-1;
#define TAG "[MXS]" #define PREFIX "^4[MXS]^3"
new const szServerCommand[][] = { "say /servers", "say /server", "say /servidores", "say_team /servers", "say_team /server", "say_team /servidores" };
new Float:g_timewait; public plugin_init() { register_plugin(PluginInfo[0], PluginInfo[1], PluginInfo[2]); total_servers = 0; get_user_ip(0, szIP, charsmax(szIP)); set_task(2.0, "create_sokets"); for(new i=0; i < sizeof szServerCommand; i++) register_clcmd(szServerCommand[i], "clcmdServer"); set_task(300.0, "task_message", .flags="b"); register_clcmd("mxs_reload_servers", "clcmdReloadServers"); }
public clcmdReloadServers(id) { if(!(get_user_flags(id) & ADMIN_CVAR)) { console_print(id, "[MXS] No tienes acceso a este comando."); return PLUGIN_HANDLED; } if(g_timewait > get_gametime()) { console_print(id, "[MXS] Este comando ya se ha usado anteriormente."); console_print(id, "[MXS] Debes esperar %d segundo%s", floatround(g_timewait-get_gametime()), floatround(g_timewait-get_gametime()) == 1 ? "":"s"); return PLUGIN_HANDLED; } g_timewait = get_gametime()+180; total_servers = 0; szServers[0][0] = '^0'; console_print(id, "[MXS] Tiempo estimado: 5 segundos..."); set_task(2.0, "create_sokets"); set_task(5.0, "show_msg", id); new name[32]; get_user_name(id, name, 31); log_amx("[MXS] %s ejecuto el comando para volver a cargar la lista de servidores.", name); return PLUGIN_HANDLED; }
public show_msg(id) { console_print(id, "[MXS] El comando se ha ejecutado correctamente.."); console_print(id, "[MXS] Verifica que se haya cargado la nueva lista.."); } public clcmdServer(id) { if(equal(szServers[0], "")) client_print_color(id, id, "%s No hay servidores en la lista...", PREFIX); else if(is_load_server) { new szText[128]; formatex(szText, charsmax(szText), "\r%s \yLista de Servidores", TAG); new menu = menu_create(szText, "menu_servers_mxs"); for(new i=0; i < total_servers; i++) { if(i == serverid) formatex(szText, charsmax(szText), "\r%s \d%s \y| Mexican Servers | \dACTUAL", TAG, szServers[i]); else { switch(iServersStatus[i]) { case Off: formatex(szText, charsmax(szText), "\r%s \d%s | Mexican Servers | \rSERVIDOR OFF", TAG, szServers[i]); case On: formatex(szText, charsmax(szText), "\r%s \y%s | Mexican Servers |", TAG, szServers[i]); case Closed: formatex(szText, charsmax(szText), "\r%s \d%s | Mexican Servers |\r EN MANTENIMIENTO", TAG, szServers[i]); } } menu_additem(menu, szText, ""); } menu_setprop(menu, MPROP_EXITNAME, "\rSalir"); menu_setprop(menu, MPROP_NUMBER_COLOR, "\w"); menu_display(id, menu, 0); } else client_print_color(id, id, "%s Ocurrio un error al obtener la lista de servidores."); }
public menu_servers_mxs(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } menu_destroy(menu); if(item == serverid) { client_print_color(id, id, "%s Ya estas en el servidor:^1 %s", PREFIX, szServers[item]); clcmdServer(id); } else { if(iServersStatus[item] == Off) { client_print_color(id, id, "%s Este servidor esta APAGADO:^1 %s", PREFIX, szServers[item]); return; } else if(iServersStatus[item] == Closed) { client_print_color(id, id, "%s Este servidor esta en MANTENIMIENTO:^1 %s", PREFIX, szServers[item]); return; } new szNick[32]; get_user_name(id, szNick, 31); client_cmd(id, "setinfo ^"ysv^" ^"%d^"", serverid); client_print_color(0, 0, "%s^1 %s^3 ha sido enviado al servidor:^1 %s", PREFIX, szNick, szServers[item]); client_cmd(id, "echo ^"Enviando al Servidor %s | Mexican Servers |.^";^"connect^"%s", szServers[item], szServersIP[item]); } return; } public client_putinserver(id) { static redirect_info[2]; get_user_info(id, "ysv", redirect_info, 1); if (equal(redirect_info, "")) // Si esta vacio no continuamos return; // Obtener nick new szNick[32]; get_user_name(id, szNick, charsmax(szNick)); new bool:server_registered=false; if(str_to_num(redirect_info) > 0 && str_to_num(redirect_info) <= (total_servers-1)) server_registered = true; client_print_color(0, 0, "%s^1 %s^3 ha sido redirigido aqui desde el servidor:^1 %s", PREFIX, szNick, (server_registered ? szServers[str_to_num(redirect_info)]: "(Desconocido)")); set_task(1.0, "TaskResetInfo", id); }
public TaskResetInfo(id) { if(is_user_connected(id)) client_cmd(id, "setinfo ^"ysv^" ^"^""); // Lo vaciamos } public task_message() { if(total_servers) client_print_color(0, 0, "%s Escribe^4 /servers^3 para visitar cualquiera de nuestros^4 %d ^3servidores.", PREFIX, total_servers); else client_print_color(0, 0, "%s Contacta a un miembro del ^x04 Staff^x01 para cargar la lista de servers.", PREFIX); } public create_sokets() { new result; iSocket = socket_create(SOCK_TYPE_TCP, SOCK_GET_SERVERS); if(!iSocket) { log_to_file("socket.txt", "*ERROR: Failed to create socket (SERVERS)."); return; } result = socket_connect(iSocket, SOCK_HOSTNAME, SOCK_PORT); check_connect_error(result); }
check_connect_error(result) { if(result > 0) return; if(result == 0) log_to_file("socket.txt", "*ERROR: Failed to connect (SERVERS)."); else log_to_file("socket.txt", "*ERROR: Invalid Hostname/IP (SERVERS)."); }
public fw_sockConnected(SOCKET:socket, customID) { //log_to_file("socket.txt", "*SERVERS: Connection successful."); new szQuery[1000]; formatex(szQuery, charsmax(szQuery), "GET /%s HTTP/1.1^r^n\ Host: https://%s^r^n\ Connection: close^r^n^r^n", filename, SOCK_HOSTNAME ); socket_send(iSocket, szQuery); //log_to_file("socket.txt", "*SERVERS: Send Packet: %d/%d", len, strlen(szQuery)); }
public fw_sockClosed(SOCKET:socket, customID, error) { //log_to_file("socket.txt", "*SERVERS: Connection closed, error num(%d)", error); }
public fw_sockReadable(SOCKET:socket, customID, type) { if(type == SOCK_TYPE_TCP) { new szData[1024], len; len = socket_recv(socket, szData, charsmax(szData)); if(len <= 0) { if(len == -1) log_to_file("socket.txt", "*ERROR: Recv: error (SERVERS)."); else { log_to_file("socket.txt", "*ERROR: Recv: No Data: Close socket (SERVERS)."); socket_close(socket); } return; } if(customID == SOCK_GET_SERVERS) { CreateTempList(szData); socket_close(socket); } } }
CreateTempList(szData[]) { if(file_exists(TempList)) delete_file(TempList); new explode[2+1][500]; new total=1; total += ExplodeString(explode, 2, charsmax(explode[]), szData, '|'); write_file(TempList, explode[1]); write_file(TempListDebug, szData); CreateListServer(); }
CreateListServer() { new file = fopen(TempList, "r"); new line[120]; new servername[64], serverip[35], serverstatus[10]; while(file && !feof(file)) { fgets(file, line, charsmax(line)); if(line[0] == ';' || line[0] == '/' && line[1] == '/' || trim2(line)) continue; parse(line, servername, charsmax(servername), serverip, charsmax(serverip), serverstatus, 9); copy(szServers[total_servers], charsmax(szServers[]), servername); copy(szServersIP[total_servers], charsmax(szServersIP[]), serverip); if(equali(serverstatus, "Off")) iServersStatus[total_servers] = Off; else if(equali(serverstatus, "On")) iServersStatus[total_servers] = On; else if(equali(serverstatus, "Closed")) iServersStatus[total_servers] = Closed; else iServersStatus[total_servers] = Off; if(equal(serverip, szIP)) serverid = total_servers; total_servers++; } fclose(file); delete_file(TempList); if(total_servers) { if(equal(szServers[0], "")) { set_task(5.0, "create_sokets"); log_amx("No se encontro ningun servidor, re-intentando en 5 segundos...", total_servers); total_servers = 0; } else { log_amx("Servidores cargados correctamente: TOTAL CARGADOS: %d", total_servers); is_load_server = true; } } } /*Explode String*/ stock ExplodeString(p_szOutput[][], p_nMax, p_nSize, p_szInput[], p_szDelimiter) { new nIdx = 0; new l = strlen(p_szInput); new nLen = (1 + copyc(p_szOutput[nIdx], p_nSize, p_szInput, p_szDelimiter)); while ((nLen < l) && (++nIdx < p_nMax)) nLen += (1 + copyc(p_szOutput[nIdx], p_nSize, p_szInput[nLen], p_szDelimiter)); return nIdx; } stock trim2(data[]) { trim(data); if(equali(data, "")) return true; else return false; return false; }
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: 818
Temas: 71
Registro en: Sep 2014
Reputación:
12
Mensajes: 818
Temas: 71
Registro en: Sep 2014
Reputación:
12
|