Changeset 116 in Main for trunk/Server/server.c


Ignore:
Timestamp:
Sep 21, 2024, 5:40:13 PM (8 weeks ago)
Author:
Nishi
Message:

add access log

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/server.c

    r105 r116  
    3131
    3232#ifdef __MINGW32__
     33#include <ws2tcpip.h>
     34#include <wspiapi.h>
    3335#include <winsock2.h>
    3436#include <process.h>
     
    4244#include <netinet/in.h>
    4345#include <netinet/tcp.h>
     46#include <netdb.h>
    4447#endif
    4548
     
    433436                void* s = NULL;
    434437#endif
     438
     439        char address[513];
     440        address[0] = 0;
     441        struct sockaddr* sa = (struct sockaddr*)&addr;
     442        getnameinfo(sa, sizeof(addr), address, 512, NULL, 0, NI_NUMERICHOST);
     443
    435444        struct tw_http_request req;
    436445        struct tw_http_response res;
     
    440449        int ret = tw_http_parse(s, sock, &req);
    441450        if(ret == 0) {
     451                char date[513];
     452                time_t t = time(NULL);
     453                struct tm* tm = localtime(&t);
     454                strftime(date, 512, "%a, %d %b %Y %H:%M:%S %Z", tm);
     455
     456                char* useragent = cm_strdup("");
     457
     458                int i;
     459                for(i = 0; req.headers[i] != NULL; i += 2){
     460                        if(cm_strcaseequ(req.headers[i], "User-Agent")){
     461                                free(useragent);
     462                                useragent = cm_strdup(req.headers[i + 1]);
     463                        }
     464                }
     465
     466                char* tmp = cm_strcat3(address, " - [", date);
     467                char* tmp2 = cm_strcat3(tmp, "] \"", req.method);
     468                char* tmp3 = cm_strcat3(tmp2, " ", req.path);
     469                char* tmp4 = cm_strcat3(tmp3, " ", req.version);
     470                char* tmp5 = cm_strcat3(tmp4, "\" \"", useragent);
     471                char* log = cm_strcat(tmp5, "\"");
     472                free(tmp);
     473                free(tmp2);
     474                free(tmp3);
     475                free(tmp4);
     476                free(tmp5);
     477                free(useragent);
     478                cm_force_log(log);
     479                free(log);
     480
    442481                char* vhost = cm_strdup(config.hostname);
    443                 int i;
    444482                time_t cmtime = 0;
    445483                if(req.headers != NULL) {
Note: See TracChangeset for help on using the changeset viewer.