Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <sockets_hz>
- #define DEBUG
- #pragma tabsize 0
- #define PREFIX "[WAMod]"
- #define WAMOD_FILESIZE 4000
- new g_ListeningSocket // Наш шпион сокет.
- new HTML_PATH[255] // Путь до файла
- public plugin_init() {
- register_plugin("WAMod", "0.1-indev", "Fedcomp")
- // Записываем путь к шаблону
- get_configsdir(HTML_PATH, charsmax(HTML_PATH))
- format(HTML_PATH, charsmax(HTML_PATH), "%s/wamod/wamod.html", HTML_PATH)
- init_my_socket()
- }
- public plugin_end ()
- {
- socket_close(g_ListeningSocket)
- }
- // ======== UTILS ============ //
- // Получаем порт
- get_port(){
- return get_cvar_num("port")
- }
- // ======= </UTILS> ========== //
- // Создаем сокет на прослушку. Отсылаем телефонные переговоры в США
- init_my_socket() {
- new error //you're the error
- g_ListeningSocket = socket_listen("0.0.0.0", get_port(),SOCKET_TCP,error)
- socket_unblock(g_ListeningSocket)
- server_print("%s LISTENNING ANY IP ON PORT %d", PREFIX, get_port())
- // Делаем таймер на прослушку телефонных переговоров. Т.е таймер который раз в заданное время будет проверять на новые соединения
- set_task(0.1,"incoming_connection",0,"",0,"b")
- }
- send_formatted(connection){
- // Если файла с шаблоном нет то плагин отказывается работать
- if (!file_exists(HTML_PATH))
- set_fail_state("wamod.html is not found!!")
- // Открываем шаблон на чтение
- new i_filehandle = fopen(HTML_PATH,"rb")
- new szBuffer[2048]
- while(!feof(i_filehandle))
- {
- fgets(i_filehandle, szBuffer, charsmax(szBuffer));
- trim(szBuffer);
- // Если нет подставляемых значений {{HOSTNAME}} и проч
- if(contain(szBuffer, "{{") == -1){
- socket_send(connection, szBuffer, strlen(szBuffer))
- }
- }
- fclose(i_filehandle)
- }
- public incoming_connection() {
- new connection;
- if((connection = socket_accept(g_ListeningSocket)) > 0)
- {
- #if defined DEBUG
- server_print("%s New Connection", PREFIX)
- server_print("%s Sending connection handling to child function. Socket:%i", PREFIX, connection)
- #endif
- set_task(0.2, "reply_to_connection", connection)
- }
- }
- public reply_to_connection(connection){
- #if defined DEBUG
- server_print("%s Child Got the control. Socket:%i", PREFIX, connection)
- #endif
- new http_response[1024]
- format(http_response, charsmax(http_response),
- "%s%s%s%s%s" ,
- "HTTP/1.1 200 OK^r^n" ,
- "Server: WAMod barely working server^r^n" ,
- "Accept-Ranges: bytes^r^n" ,
- "Content-Length: 2858^r^n" ,
- "Content-Type: text/html^r^n^r^n"
- )
- socket_send(connection, http_response, strlen(http_response))
- send_formatted(connection)
- //socket_send(connection, html_reply, strlen(html_reply))
- socket_close(connection)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement