@@ -788,6 +788,31 @@ static int l_get_player_privs(lua_State *L)
788
788
return 1 ;
789
789
}
790
790
791
+ // get_player_ip()
792
+ static int l_get_player_ip (lua_State *L)
793
+ {
794
+ const char * name = luaL_checkstring (L, 1 );
795
+ Player *player = get_env (L)->getPlayer (name);
796
+ if (player == NULL )
797
+ {
798
+ lua_pushnil (L); // no such player
799
+ return 1 ;
800
+ }
801
+ try
802
+ {
803
+ Address addr = get_server (L)->getPeerAddress (get_env (L)->getPlayer (name)->peer_id );
804
+ std::string ip_str = addr.serializeString ();
805
+ lua_pushstring (L, ip_str.c_str ());
806
+ return 1 ;
807
+ }
808
+ catch (con::PeerNotFoundException) // unlikely
809
+ {
810
+ dstream << __FUNCTION_NAME << " : peer was not found" << std::endl;
811
+ lua_pushnil (L); // error
812
+ return 1 ;
813
+ }
814
+ }
815
+
791
816
// get_ban_list()
792
817
static int l_get_ban_list (lua_State *L)
793
818
{
@@ -1084,6 +1109,7 @@ static const struct luaL_Reg minetest_f [] = {
1084
1109
{" chat_send_all" , l_chat_send_all},
1085
1110
{" chat_send_player" , l_chat_send_player},
1086
1111
{" get_player_privs" , l_get_player_privs},
1112
+ {" get_player_ip" , l_get_player_ip},
1087
1113
{" get_ban_list" , l_get_ban_list},
1088
1114
{" get_ban_description" , l_get_ban_description},
1089
1115
{" ban_player" , l_ban_player},
0 commit comments