/* Do not remove the headers from this file! see /USAGE for more info. */
// Yaynu@Lima Bean 950723
// Prints out a list of IP connections.
// Arguments: <none> - Reports all players IP names+numbers.
// <ipname,ipnum> - Reports all who are from that address.
// <name> - Reports out players ip name and number.
//:COMMAND
//USAGE: whoip
// whoip <ip address>
// whoip <ip number>
// whoip <player name>
//
//This command is very similar to who, however it shows
//the ip name and number from which each player connected,
//and is only available to wizards.
//
//whoip
//
//Lima Bean: (Local Time is: Tue Sep 19 07:09:15 1995)
//-------------------------------------------------------------------------
//Name IP number IP name
//-------------------------------------------------------------------------
//Ohara 137.92.12.102 student.canberra.edu.au
//Wegster 204.57.174.131 wegster.telebyte.com
//Valodin 204.254.197.7 exinos.ms.com
//Zifnab 129.188.154.108 maniac1t.mot.com
//-------------------------------------------------------------------------
//Currently there are 4 players.
//
//
// whoip 129.188.154.108
//
//There is 1 user from maniac1t.mot.com (129.188.154.108):
//Zifnab..
#include <playerflags.h>
#define DIVIDER \
"-------------------------------------------------------------------------\n"
inherit CMD;
private void main(string arg)
{
object user;
int x;
object ob;
string *n, ip, str;
object * userlist;
if ( !arg )
{
outf("%s: (Local Time is: %s)\n%s",
mud_name(), ctime(time()), DIVIDER);
out("Name IP number IP name\n"+DIVIDER);
foreach ( user in users() )
{
string userid = user->query_userid();
if ( !userid )
userid = "(login)";
else
userid = capitalize(userid);
outf("%-12s %-25s %-25s\n",
userid, query_ip_number(user), query_ip_name(user));
}
x = sizeof(users());
outf("%sCurrently there %s %d player%s.\n",DIVIDER,
(x>1?"are":"is"),x,(x>1?"s":""));
return;
}
if (ob = find_user(arg))
{
ip = query_ip_number(ob);
userlist = filter(users(), (: query_ip_number($1) == $2 :), ip);
} else if (sscanf(implode(explode(arg,"."),""),"%d",x) == 1){
userlist = filter(users(), (: query_ip_number($1) == $2 :), arg);
} else if (sscanf(implode(explode(arg,"."),""),"%s",x) == 1){
userlist = filter(users(), (: query_ip_name($1) == $2 :), arg);
} else {
arg = lower_case(arg);
userlist = filter(users(), (: query_ip_number($1) == $2 :), arg);
}
if ( (x = sizeof(userlist)) > 0 )
{
n = map(userlist->query_userid(),
(: $1 ? capitalize($1) : "(login)" :));
str = query_ip_name(userlist[0]);
if (str != query_ip_number(userlist[0]))
str += " ("+query_ip_number(userlist[0])+")";
outf("There %s %d user%s from %s:\n",
(x>1?"are":"is"),x,(x>1?"s":""),str);
outf("%-=78s",implode(n,", ")+".\n");
}
else
out("Nobody is connected from that address.\n");
}