/* Do not remove the headers from this file! see /USAGE for more info. */
inherit "/obj/admtool/internal/base.c";
inherit M_ANSI;
nomask string module_name() {
return "I3 channels";
}
nomask string module_key() {
return "i";
}
nomask string module_user() {
return "[Mudlib:daemons]";
}
nomask string module_priv() {
return "Mudlib:daemons";
}
private nomask void detail_list_channels()
{
mapping chanlist = IMUD_D->query_chanlist();
write("All Channels:\n");
if ( sizeof(chanlist) == 0 )
{
write(" <none>\n");
return;
}
write(implode(({ "" }) + sort_array(keys(chanlist),1),
(: $1 + sprintf(" %-20s %-20s %s\n", $2,
$(chanlist)[$2][0],
$(({"unrestricted", "restricted", "filtered"}))[$(chanlist)[$2][1]],
)
:)));
}
private nomask void list_channels()
{
mapping chanlist = IMUD_D->query_chanlist();
chanlist = filter_mapping(chanlist,
(: $(chanlist)[$1][0] == mud_name() :));
write("Owned Channels:");
if ( sizeof(chanlist) == 0 )
{
write(" <none>\n");
return;
}
write(implode(({ "" }) + sort_array(keys(chanlist),1),
(: $1 + sprintf(" %s/%s\n", $2,
$(({"unrestricted",
"restricted",
"filtered"}))[$(chanlist)[$2][1]])
:)));
}
private nomask void rcv_add_channel(string channel_name, int type)
{
channel_name = lower_case(trim_spaces(channel_name));
if ( channel_name == "" )
return;
if ( IMUD_D->query_chanlist()[channel_name] )
{
write("** That channel already exists.\n");
return;
}
IMUD_D->add_channel(channel_name, to_int(type));
}
private nomask void rcv_remove_channel(string channel_name)
{
mapping chanlist = IMUD_D->query_chanlist();
channel_name = lower_case(channel_name);
if ( undefinedp(chanlist[channel_name]) )
{
write("** That channel does not exist.\n");
return;
}
IMUD_D->remove_channel(channel_name);
}
private nomask void rcv_listen_channel(string channel_name)
{
mapping chanlist = IMUD_D->query_chanlist();
channel_name = lower_case(channel_name);
if (undefinedp(chanlist[channel_name]))
{
write("** That channel does not exist.\n");
return;
}
IMUD_D->listen_to_channel(channel_name);
write("Receiving channel: "+channel_name+"\n");
}
private nomask void rcv_ignore_channel(string channel_name)
{
mapping chanlist = IMUD_D->query_chanlist();
channel_name = lower_case(channel_name);
if (undefinedp(chanlist[channel_name]))
{
write("** That channel does not exist.\n");
return;
}
IMUD_D->ignore_channel(channel_name);
write("Ignoring channel: "+channel_name+"\n");
}
private nomask void list_all_channels()
{
mapping chanlist = IMUD_D->query_chanlist();
write(colour_table(sort_array(keys(chanlist),1), this_user()->query_screen_width(), 4)+"\n");
}
private nomask void listened_channels()
{
string *chanlist = sort_array(IMUD_D->query_listened_channels(),1);
write(colour_table(chanlist, this_user()->query_screen_width(), 4)+"\n");
}
private nomask void allow_mud_on_our_channel(string channel_name, string allowed_mud_name)
{
mapping chanlist = IMUD_D->query_chanlist();
channel_name = lower_case(channel_name);
if (undefinedp(chanlist[channel_name]))
{
write("** That channel does not exist.\n");
return;
}
IMUD_D->allow_mud_on_our_channel(channel_name, allowed_mud_name);
}
private nomask void disallow_mud_on_our_channel(string channel_name, string disallowed_mud_name)
{
mapping chanlist = IMUD_D->query_chanlist();
channel_name = lower_case(channel_name);
if (undefinedp(chanlist[channel_name]))
{
write("** That channel does not exist.\n");
return;
}
IMUD_D->disallow_mud_on_our_channel(channel_name, disallowed_mud_name);
}
private nomask void rcv_block_mud(string mudname)
{
string array muds = IMUD_D->query_barred();
mudname = IMUD_D->canon_mudname(mudname);
if ( !mudname )
{
write("** That mud does not appear to exist.\n");
return;
}
IMUD_D->add_barred(mudname);
}
private nomask void rcv_unblock_mud(string mudname)
{
string array muds = IMUD_D->query_barred();
mudname = IMUD_D->canon_mudname(mudname);
if ( !mudname )
{
write("** That mud does not appear to exist.\n");
return;
}
if (member_array(mudname, IMUD_D->query_barred())<0 )
{
write("** That mud does not appear to be barred.\n");
return;
}
IMUD_D->remove_barred(mudname);
}
private nomask void list_blocked_muds()
{
string array muds = IMUD_D->query_barred();
write(colour_table(sort_array(muds,1), this_user()->query_screen_width(), 4)+"\n");
}
nomask class command_info array module_commands()
{
return ({
new(class command_info,
key : "O",
desc : "list owned channels",
action : (: list_channels :)),
new(class command_info,
key : "l",
desc : "list channels which are being listened to",
action : (: listened_channels :)),
new(class command_info,
key : "C",
desc : "list all channels",
action : (: list_all_channels :)),
new(class command_info,
key : "D",
desc : "Detailed list of channels",
action : (: detail_list_channels :)),
new(class command_info,
key : "a",
proto : "[name] [type 0-2]",
desc : "add owned channel",
args : ({ "New channel name? ", "Add type (0 = unrestricted, 1 = restricted, 2 = filtered)" }),
action : (: rcv_add_channel :)),
new(class command_info,
key : "r",
proto : "[name]",
desc : "remove owned channel",
args : ({ "Channel name to remove? " }),
action : (: rcv_remove_channel :)),
new(class command_info,
key : "A",
proto : "[name]",
desc : "allow mud to our owned channel",
args : ({ "Channel name? ", "Allowed mud? " }),
priv : "Mudlib:daemons",
action : (: allow_mud_on_our_channel :)),
new(class command_info,
key : "D",
proto : "[name]",
desc : "disallow mud from our owned channel",
args : ({ "Channel name? ", "Disallowed mud name? " }),
priv : "Mudlib:daemons",
action : (: disallow_mud_on_our_channel :)),
new(class command_info,
key: "L",
proto : "[name]",
desc : "listen to an intermud channel",
args : ({ "Channel name to listen to? " }),
action : (: rcv_listen_channel :)),
new(class command_info,
key: "I",
proto : "[name]",
desc : "ignore an intermud channel",
args : ({ "Channel name to ignore? " }),
action : (: rcv_ignore_channel :)),
new(class command_info,
key: "b",
proto : "[name]",
desc : "block a mud from intermud queries",
args : ({ "Mud name to block? " }),
priv : "Mudlib:daemons",
action : (: rcv_block_mud :)),
new(class command_info,
key: "u",
proto : "[name]",
desc : "unblock a mud from intermud queries",
args : ({ "Mud name to unblock? " }),
priv : "Mudlib:daemons",
action : (: rcv_unblock_mud :)),
new(class command_info,
key: "B",
desc : "list muds blocked from intermud queries",
priv : "Mudlib:daemons",
action : (: list_blocked_muds :)),
});
}