#include <udp.h>
/*
* locate_q. Handles our locate requests, and sends a message to a locating
* Mud. Modified to be used with DW lib by Turrican@Discworld.
* 30-1-95
*/
void send_locate_q(string who) {
mapping info;
string *muds;
int i;
info = NAMESERVER_CD->query_known_muds();
muds = keys(info);
for (i=0;i<sizeof(muds);i++) {
if (!mapp(info[muds[i]]))
continue;
if( muds[i] == mud_name() ) continue;
NAMESERVER_CD->send_udp(info[muds[i]]["HOSTADDRESS"],
info[muds[i]]["PORTUDP"], "@@@"+UDP_LOCATE_Q+
"||NAME:"+mud_name()+
"||PORTUDP:" + NAMESERVER_CD->query_my_port()+
"||TARGET:"+lower_case(who)+
"||ASKWIZ:"+(string)this_player()->query_name()+
"@@@\n");
}
return;
}
void incoming_request(mapping info) {
string field;
if(!info["NAME"] || !info["PORTUDP"]) return;
if(!NAMESERVER_CD->query_mud_info(info["NAME"]))
PING_Q->send_ping_q(info["HOSTADDRESS"], info["PORTUDP"]);
if(!info["TARGET"]) field = "NO";
else field = (find_player(lower_case(info["TARGET"])) ? "YES" : "NO");
NAMESERVER_CD->send_udp(info["HOSTADDRESS"], info["PORTUDP"],
"@@@"+UDP_LOCATE_A+"||NAME:"+mud_name()+
"||PORTUDP:"+(int)NAMESERVER_CD->query_my_port()+
"||LOCATE:"+field+
"||TARGET:"+info["TARGET"]+
"||ASKWIZ:"+info["ASKWIZ"]+"@@@\n");
}
void create() { seteuid(getuid()); }
void dest_me() { destruct(this_object()); }