From 2239ad20a1420686bd58349ae4e364ecbc30d871 Mon Sep 17 00:00:00 2001 From: MadCamel Date: Fri, 8 Oct 2010 06:11:42 -0400 Subject: map-server now stores IP address in session_data when player connects This is to be used for @ipcheck, sending GMs IP identifiers, and clone blocking. --- src/map/map.h | 3 +++ src/map/pc.c | 6 ++++++ 2 files changed, 9 insertions(+) (limited to 'src/map') diff --git a/src/map/map.h b/src/map/map.h index 9934fdf..dde7d7f 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -6,6 +6,7 @@ #include #include #include +#include #include "mmo.h" #ifndef MAX @@ -400,6 +401,8 @@ struct map_session_data unsigned int flood_rates[0x220]; time_t packet_flood_reset_due; int packet_flood_in; + + in_addr_t ip; }; struct npc_timerevent_list diff --git a/src/map/pc.c b/src/map/pc.c index 869d479..2b5dc3e 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -761,6 +761,8 @@ int pc_authok (int id, int login_id2, time_t connect_until_time, struct guild *g; int i; unsigned long tick = gettick (); + struct sockaddr_in sai; + socklen_t sa_len = sizeof(struct sockaddr); sd = map_id2sd (id); if (sd == NULL) @@ -963,6 +965,10 @@ int pc_authok (int id, int login_id2, time_t connect_until_time, memset(sd->flood_rates, 0, sizeof(sd->flood_rates)); sd->packet_flood_reset_due = sd->packet_flood_in = 0; + // Obtain IP address (if they are still connected) + if (!getpeername(sd->fd, (struct sockaddr *)&sai, &sa_len)) + sd->ip = sai.sin_addr.s_addr; + // message of the limited time of the account if (connect_until_time != 0) { // don't display if it's unlimited or unknow value -- cgit v1.2.3-70-g09d2