示例#1
0
文件: gtell.c 项目: mudchina/nitan3
int send_gtell(string mud, string wiz_to, object source, string msg)
{
	mapping minfo;

	if (! ACCESS_CHECK(previous_object()) &&
	    is_root(previous_object())) return 0;

	mud = htonn(mud);
	if (mud == mud_nname() || ! source) return 0;

	minfo = (mapping)DNS_MASTER->query_mud_info(mud);
	if (! minfo)
        {
                write(LOCAL_MUD_NAME() + "并没有和 " + mud + " 联系上。\n");
                return 0;
        }


	msg = replace_string(msg, "|", "");
	msg = replace_string(msg, "@@@", "");
	DNS_MASTER->send_udp(minfo["HOSTADDRESS"], minfo["PORTUDP"],
		"@@@" + DNS_GTELL +
		"||NAME:" + Mud_name() +
		"||PORTUDP:" + udp_port() +
		"||WIZTO:" + wiz_to +
		"||WIZFROM:" + capitalize(source->query("id")) +
		"||CNAME:" + source->name(1) +
                "||WIZ_LEVEL:" + wiz_level(source) +
		"||MSG:" + msg + "@@@\n");
        return 1;
}
示例#2
0
// This is the interface to the intermud channels
void send_remote_q(string mud,string channel,string me,string who,string msg)
{
	mapping rhost;

	if( !this_player() || !ACCESS_CHECK(previous_object())) return;

	mud = htonn( mud );
	if (mud == mud_nname()) return;

	rhost = (mapping)DNS_MASTER->query_mud_info(mud);
	if (!rhost) return ;

	msg = replace_string(msg, "|", "");
	msg = replace_string(msg, "@@@", "");

#ifdef DEBUG
	CHANNEL_D->do_channel(this_object(), DEBUG,
		sprintf("send remote to host %s channel %s\n message (%s %s %s).", mud, channel, me, msg, who));
#endif

	DNS_MASTER->send_udp(rhost["HOSTADDRESS"], rhost["PORTUDP"],
			"@@@" + "remote_q" +
			"||NAME:" + Mud_name() +
			"||PORTUDP:" + udp_port() +
			"||CHANNEL:" + channel +
			"||SOURCE_ID:" + lower_case(me) +
			"||TARGET_ID:" + lower_case(who) +
			"||MSG:"     + msg+"@@@\n");
}
示例#3
0
文件: gtell.c 项目: cosin/XYJ
void send_gtell(string mud, string wiz_to, object source, string msg)
{
	mapping minfo;

	if(!ACCESS_CHECK(previous_object())
	&&	base_name(previous_object()) != TELL_CMD) return;

	mud = htonn( mud );

	if(mud == mud_nname() || !geteuid(source)) return;

	minfo = (mapping)DNS_MASTER->query_mud_info(mud);
	if (!minfo) return ;

	msg = replace_string(msg, "|", "");
	msg = replace_string(msg, "@@@", "");
	DNS_MASTER->send_udp(minfo["HOSTADDRESS"], minfo["PORTUDP"],
		"@@@" + DNS_GTELL +
		"||NAME:" + Mud_name() +
		"||PORTUDP:" + udp_port() +
		"||WIZTO:" + wiz_to +
		"||WIZFROM:" + capitalize(geteuid(source)) +
		"||CNAME:" + source->name(1) +
		"||MSG:"+msg+"@@@\n");
}
示例#4
0
// Someone has answered our ping of them.
void incoming_request(mapping info)
{
    if(!ACCESS_CHECK(previous_object())) return;
 
    // set the name in the network master
    if (info["NAME"] && info["NAME"] != Mud_name()) {
		DNS_MASTER->set_mud_info( htonn(info["NAME"]), info);
		// If there's mail to send out, do it now!
		MAIL_Q -> check_for_mail( info["NAME"], 3 );
    }
}
示例#5
0
文件: ping_a.c 项目: mudchina/nitan3
// Someone has answered our ping of them.
void incoming_request(mapping info)
{
        mapping mud;

        if (! ACCESS_CHECK(previous_object())) return;
 
        if (VERSION_D->is_release_server() &&
            info["MUDLIB"] == MUDLIB_NAME)
        {
                // 本地服务器接受到了自称为同LIB的MUD信息
                if (! CONFIG_D->query(info["HOSTADDRESS"] + " " + info["PORT"]))
                        // 这个不是经过总站授权的MUD,丢弃
                        return 0;
        }

        if (! undefinedp(info["USER"]) && info["USER"] == 0)
                map_delete(info, "USER");

        // set the name in the network master
        if (info["NAME"] && info["NAME"] != Mud_name())
		DNS_MASTER->set_mud_info(htonn(info["NAME"]), info);
}