#include "udp.h" #define CHAR "/net/daemon/chars/" void create() { seteuid(getuid()); } /* create() */ /* * 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"; else { info["PLAYER"] = lower_case(info["PLAYER"]); if (find_player(info["PLAYER"])) { object ob; ob = clone_object(CHAR+"in_finger_demon"); ob->setup_finger(info["PLAYER"]); } } 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 dest_me() { destruct(this_object()); }