summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/packet_table_en.txt3
-rw-r--r--src/map/Makefile2
-rw-r--r--src/map/battle.c10
-rw-r--r--src/map/battle.h3
-rw-r--r--src/map/chrif.c5
-rw-r--r--src/map/chrif.h2
-rw-r--r--src/map/clif.c19
7 files changed, 39 insertions, 5 deletions
diff --git a/doc/packet_table_en.txt b/doc/packet_table_en.txt
index 5a44a66..52dcd0e 100644
--- a/doc/packet_table_en.txt
+++ b/doc/packet_table_en.txt
@@ -1315,7 +1315,8 @@ S 0204 <?>.16B
ログイン要求に付加されるパケット。16バイトは固定?
S 020B <?>.17B
キャラクタサーバ接続要求0065に付加されるパケット。1+0204の16バイトで17バイト?
-
+S 020C <account id>.L, <ip address>.L
+ IP address in network byte order for a player account in response to a charname request [MadCamel]
パケット長の追加。019e〜01aaが増えてるので、0190〜を切り抜き
added packet lenth. 019e-01aa is a new, so here is a packet length table from 0190.
diff --git a/src/map/Makefile b/src/map/Makefile
index eb2f5fd..a1a4381 100644
--- a/src/map/Makefile
+++ b/src/map/Makefile
@@ -7,7 +7,7 @@ txt: obj map-server
obj:
mkdir obj
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o ../common/mt_rand.o
+COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o ../common/mt_rand.o ../common/md5calc.o
LIBS = -lz -lm
map-server: obj/tmw.o obj/magic-interpreter-lexer.o obj/magic-interpreter-parser.o obj/magic-interpreter-base.o obj/magic-expr.o obj/magic-stmt.o obj/magic.o obj/map.o obj/chrif.o obj/clif.o obj/pc.o obj/npc.o obj/chat.o obj/path.o obj/itemdb.o obj/mob.o obj/script.o obj/storage.o obj/skill.o obj/skill-pools.o obj/atcommand.o obj/battle.o obj/intif.o obj/trade.o obj/party.o obj/guild.o $(COMMON_OBJ)
diff --git a/src/map/battle.c b/src/map/battle.c
index ea284a5..9d868c7 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -5657,6 +5657,7 @@ int battle_config_read (const char *cfgName)
battle_config.packet_spam_flood = 30;
battle_config.packet_spam_kick = 1;
+ battle_config.mask_ip_gms = 1;
}
fp = fopen_ (cfgName, "r");
@@ -6107,7 +6108,9 @@ int battle_config_read (const char *cfgName)
{
"packet_spam_flood", &battle_config.packet_spam_flood},
{
- "packet_spam_kick", &battle_config.packet_spam_kick}
+ "packet_spam_kick", &battle_config.packet_spam_kick},
+ {
+ "mask_ip_gms", &battle_config.mask_ip_gms}
};
if (line[0] == '/' && line[1] == '/')
@@ -6264,6 +6267,11 @@ int battle_config_read (const char *cfgName)
else if (battle_config.packet_spam_kick > 1)
battle_config.packet_spam_kick = 1;
+ if (battle_config.mask_ip_gms < 0)
+ battle_config.mask_ip_gms = 0;
+ else if (battle_config.mask_ip_gms > 1)
+ battle_config.mask_ip_gms = 1;
+
// at least 1 client must be accepted
if ((battle_config.packet_ver_flag & 63) == 0) // added by [Yor]
battle_config.packet_ver_flag = 63; // accept all clients
diff --git a/src/map/battle.h b/src/map/battle.h
index b155109..44016a5 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -344,8 +344,9 @@ extern struct Battle_Config
int packet_spam_flood;
int packet_spam_kick;
- int drop_pickup_safety_zone; // [Fate] Max. distance to an object dropped by a kill by self in which dropsteal protection works
+ int mask_ip_gms;
+ int drop_pickup_safety_zone; // [Fate] Max. distance to an object dropped by a kill by self in which dropsteal protection works
int itemheal_regeneration_factor; // [Fate] itemheal speed factor
} battle_config;
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 1f5673a..fd2398b 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -65,6 +65,11 @@ void chrif_setpasswd (char *pwd)
passwd[sizeof(passwd)-1] = '\0';
}
+char *chrif_getpasswd ()
+{
+ return passwd;
+}
+
/*==========================================
*
*------------------------------------------
diff --git a/src/map/chrif.h b/src/map/chrif.h
index c3ae80d..3515463 100644
--- a/src/map/chrif.h
+++ b/src/map/chrif.h
@@ -4,6 +4,8 @@
void chrif_setuserid (char *);
void chrif_setpasswd (char *);
+char *chrif_getpasswd ();
+
void chrif_setip (char *);
void chrif_setport (int);
diff --git a/src/map/clif.c b/src/map/clif.c
index 3cd01ee..1a1acf9 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -23,6 +23,7 @@
#include "malloc.h"
#include "version.h"
#include "nullpo.h"
+#include "md5calc.h"
#include "atcommand.h"
#include "battle.h"
@@ -93,7 +94,7 @@ static const int packet_len_table[0x220] = {
30, 8, 34, 14, 2, 6, 26, 2, 28, 81, 6, 10, 26, 2, -1, -1,
-1, -1, 20, 10, 32, 9, 34, 14, 2, 6, 48, 56, -1, 4, 5, 10,
//#0x200
- 26, -1, 26, 10, 18, 26, 11, 34, 14, 36, 10, 19, 0, -1, 24, 0,
+ 26, -1, 26, 10, 18, 26, 11, 34, 14, 36, 10, 19, 10, -1, 24, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
@@ -7107,6 +7108,22 @@ void clif_parse_GetCharNameRequest (int fd, struct map_session_data *sd)
}
+#if 0
+ if (pc_isGM(sd) > battle_config.hack_info_GM_level)
+ {
+ in_addr_t ip = ssd->ip;
+ WFIFOW (fd, 0) = 0x20C;
+
+ // Mask the IP using the char-server password
+ if (battle_config.mask_ip_gms)
+ ip = MD5_ip(chrif_getpasswd (), ssd->ip);
+
+ WFIFOL (fd, 2) = account_id;
+ WFIFOL (fd, 6) = ip;
+ WFIFOSET (fd, packet_len_table[0x20C]);
+ }
+#endif
+
}
break;
case BL_NPC: