diff options
author | MadCamel <madcamel@gmail.com> | 2010-10-08 06:11:42 -0400 |
---|---|---|
committer | MadCamel <madcamel@gmail.com> | 2010-10-08 06:11:42 -0400 |
commit | 2239ad20a1420686bd58349ae4e364ecbc30d871 (patch) | |
tree | 61d81acdecf7a1a92a9dc398d4873d9a9b6a9f89 /src | |
parent | 0a719c5441ddc14fad483e679edea900cd1e3789 (diff) | |
download | tmwa-2239ad20a1420686bd58349ae4e364ecbc30d871.tar.gz tmwa-2239ad20a1420686bd58349ae4e364ecbc30d871.tar.bz2 tmwa-2239ad20a1420686bd58349ae4e364ecbc30d871.tar.xz tmwa-2239ad20a1420686bd58349ae4e364ecbc30d871.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/map/map.h | 3 | ||||
-rw-r--r-- | src/map/pc.c | 6 |
2 files changed, 9 insertions, 0 deletions
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 <stdarg.h> #include <time.h> #include <sys/time.h> +#include <netinet/in.h> #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 |