From b0d0e25720191d6971636760442d58d9f15aa875 Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 24 Jul 2006 23:32:02 +0000 Subject: - Modified the loginlog setting on the login-sql server to store the ips using the htonl conversion function before storing/retrieving them from sql. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7866 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/login_sql/login.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/login_sql') diff --git a/src/login_sql/login.c b/src/login_sql/login.c index 45cd4284d..d8e5f3394 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -1429,14 +1429,14 @@ int parse_fromchar(int fd){ // Test to know if an IP come from LAN or WAN. // Rewrote: Adnvanced subnet check [LuzZza] //-------------------------------------------- -int lan_subnetcheck(long *p) { +int lan_subnetcheck(long p) { int i; - unsigned char *sbn, *msk, *src = (unsigned char *)p; + unsigned char *sbn, *msk, *src = (unsigned char *)&p; for(i=0; iclient_addr.sin_addr; + //Since we can't cast a structure to a long, we take the base address as + //a pointer and cast it (somehow... this seems so wrong to do) + unsigned long ipl = *((unsigned long *) &session[fd]->client_addr.sin_addr); char ip[16]; sprintf(ip, "%d.%d.%d.%d", p[0], p[1], p[2], p[3]); @@ -1524,7 +1527,7 @@ int parse_login(int fd) { } while(RFIFOREST(fd)>=2 && !session[fd]->eof){ - ShowDebug("parse_login : %d %d packet case=%x\n", fd, RFIFOREST(fd), RFIFOW(fd,0)); +// ShowDebug("parse_login : %d %d packet case=%x\n", fd, RFIFOREST(fd), RFIFOW(fd,0)); switch(RFIFOW(fd,0)){ case 0x200: // New alive packet: structure: 0x200 .24B. used to verify if client is always alive. @@ -1596,7 +1599,7 @@ int parse_login(int fd) { } else { if (p[0] != 127 && log_login) { - sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%lu', '%s','100', 'login ok')", loginlog_db, *((ulong *)p), t_uid); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%u', '%s','100', 'login ok')", loginlog_db, ntohl(ipl), t_uid); //query if(mysql_query(&mysql_handle, tmpsql)) { ShowSQL("DB error - %s\n",mysql_error(&mysql_handle)); @@ -1611,7 +1614,7 @@ int parse_login(int fd) { for(i = 0; i < MAX_SERVERS; i++) { if (server_fd[i] >= 0) { // Advanced subnet check [LuzZza] - if((subnet_char_ip = lan_subnetcheck((long *)p))) + if((subnet_char_ip = lan_subnetcheck(ipl))) WFIFOL(fd,47+server_num*32) = subnet_char_ip; else WFIFOL(fd,47+server_num*32) = server[i].ip; @@ -1654,7 +1657,7 @@ int parse_login(int fd) { char error[64]; if (log_login) { - sprintf(tmp_sql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%lu', '%s', '%d','login failed : %%s')", loginlog_db, *((ulong *)p), t_uid, result); + sprintf(tmp_sql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%u', '%s', '%d','login failed : %%s')", loginlog_db, ntohl(ipl), t_uid, result); switch((result + 1)) { case -2: //-3 = Account Banned sprintf(tmpsql,tmp_sql,"Account banned."); @@ -1843,7 +1846,7 @@ int parse_login(int fd) { unsigned char* server_name; if (log_login) { - sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%lu', '%s@%s','100', 'charserver - %s@%d.%d.%d.%d:%d')", loginlog_db, *((ulong *)p), RFIFOP(fd, 2),RFIFOP(fd, 60),RFIFOP(fd, 60), RFIFOB(fd, 54), RFIFOB(fd, 55), RFIFOB(fd, 56), RFIFOB(fd, 57), RFIFOW(fd, 58)); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%u', '%s@%s','100', 'charserver - %s@%d.%d.%d.%d:%d')", loginlog_db, ntohl(ipl), RFIFOP(fd, 2),RFIFOP(fd, 60),RFIFOP(fd, 60), RFIFOB(fd, 54), RFIFOB(fd, 55), RFIFOB(fd, 56), RFIFOB(fd, 57), RFIFOW(fd, 58)); //query if(mysql_query(&mysql_handle, tmpsql)) { -- cgit v1.2.3-70-g09d2