Ogen Dogen 2 814 Właściciel Last activity: 14 hours ago Posted September 30, 2015 Właściciel Share Posted September 30, 2015 Posted September 30, 2015 Krótki plugin nasłuchujący dany port i wpisujący na konsole wszystko co dostanie Wymagany zewnętrzny moduł sockets_hz -> https://forums.alliedmods.net/showthread.php?s=f1b0c7d8d73d1cc10f624b93162619ef&t=60026 /* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <sockets_hz> new listening_socket, error; new ip[32]; new data[256]; new port = 1234; // dowolny port, który nie jest zajęty już public plugin_init() { register_plugin("Remote Console", "1.0", "Ogen Dogen"); get_user_ip(0,ip,31,1); listening_socket = socket_listen(ip, port, SOCKET_UDP, error); if (listening_socket < 1) set_fail_state("Blad socketa!"); socket_unblock(listening_socket); set_task(3.0,"listener",port,"",0,"b"); } public plugin_end() { socket_close(listening_socket); } public listener() { if (socket_change(listening_socket, 1)) { socket_recv(listening_socket, data, 255); server_cmd(data,255); } } Takie rozwiązanie jest ogólnie bezpieczniejsze od rcona, jednak warto tutaj dobudować white listę adresów które będą miały dostęp do tego. Przyda się tu funkcja socket_getpeername. Do takiego pluginu możemy wysłać dane w dowolny sposób z poziomu programu, aplikacji mobilnej czy strony. Przykład w PHP: (przeładowanie adminów) $port = 1234; $ip = "ip serwera"; $sock = socket_create(AF_INET, SOCK_DGRAM, 0); if (!$sock) die("Błąd"); else { $check = socket_sendto($sock, "amx_reloadadmins", 1, 0, $ip, $port); if (!$check) die("Błąd"); } socket_close($sock); Link to comment Share on other sites More sharing options...
Recommended Posts