/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
#include "udp.h"
/*
 * Finger a wiz on another mud.
 */
void    send_gfinger_q( string mud, string wiz )
{
    mapping minfo;

    if( mud == MUD_NAME )
	return;
    minfo = NAMESERVER_CD->query_mud_info( mud );
    if( !minfo )
	return;
    NAMESERVER_CD->send_udp( minfo[ "HOSTADDRESS" ], minfo[ "PORTUDP" ],
			     "@@@" + UDP_GFINGER_Q +
			     "||NAME:" + MUD_NAME +
			     "||PORTUDP:" + NAMESERVER_CD->query_my_port() +
			     "||PLAYER:" + wiz +
			     "||ASKWIZ:" + this_player()->query_name() +
			     "@@@\n" );
}				/* send_gtell() */

void    incoming_request( mapping info )
{
    string  finger, *bits;
    int     i;

    if( info[ "NAME" ] && info[ "PORTUDP" ] )
    {
	if( info[ "NAME" ] == MUD_NAME )
	    return;

	if( !NAMESERVER_CD->query_mud_info( info[ "NAME" ] ) )
	    PING_Q->send_ping_q( info[ "HOSTADDRESS" ], info[ "PORTUDP" ] );

	finger = "/secure/finger"->finger_info( lower_case( info[ "PLAYER" ] ) );
	if( !finger )
	    finger = "I am most dreadfully sorry, but " + info[ "PLAYER" ] +
		"has not visited here yet.  Try again later :)\n";
	bits = explode( finger, "\n" );
	finger = "";
	for( i = 0; i < sizeof( bits ); i++ )
	{
	    if( strlen( finger ) + strlen( bits[ i ] ) > 256 )
	    {
		NAMESERVER_CD->send_udp( info[ "HOSTADDRESS" ], info[ "PORTUDP" ],
					 "@@@" + UDP_GFINGER_A +
					 "||NAME:" + MUD_NAME +
					 "||PORTUDP:" + NAMESERVER_CD->query_my_port() +
					 "||ASKWIZ:" + info[ "ASKWIZ" ] +
					 "||MSG:" + finger +
					 "@@@\n" );
		finger = "";
	    }
	    finger += bits[ i ] + "\n";
	}
	if( strlen( finger ) )
	    NAMESERVER_CD->send_udp( info[ "HOSTADDRESS" ], info[ "PORTUDP" ],
				     "@@@" + UDP_GFINGER_A +
				     "||NAME:" + MUD_NAME +
				     "||PORTUDP:" + NAMESERVER_CD->query_my_port() +
				     "||ASKWIZ:" + info[ "ASKWIZ" ] +
				     "||MSG:" + finger +
				     "@@@\n" );
    }
}				/* incoming_request() */

void    create()
{
    seteuid( getuid() );
}
void    dest_me()
{
    destruct( this_object() );
}