/* /cmds/adm/mfinger.c * from the Dead Souls LPC Library * a tool for fingering the site of a player * created by Descartes of Borg 950429 */ #include <lib.h> inherit LIB_DAEMON; private static mapping Waiting; void ReadSocket(string str); static void create() { daemon::create(); Waiting = ([]); } mixed cmd(string args) { object ob; string ip; if( !args || args == "" ) return "Mfinger whom?"; if( !(ob = find_player(args)) ) return "No one around " + mud_name() + " by that name."; ip = query_ip_number(ob); args = (string)ob->GetCapName(); ob = new(LIB_CLIENT); Waiting[ob] = ([ "who" : this_player(), "player" : args, "ip" : ip ]); if( (int)ob->eventCreateSocket(ip, 79) < 0 ) { message("error", "Unable to create socket.", this_player()); ob->eventDestruct(); return 1; } ob->SetDestructOnClose(1); ob->SetRead( (: ReadSocket :) ); ob->eventWrite("\n"); message("system", "Finger sent to " + possessive_noun(args) + " site " + ip + ".", this_player()); return 1; } void ReadSocket(string str) { object ob; if( !Waiting[ob = previous_object()] ) return; if( !Waiting[ob]["who"] ) return; message("system", "Information from " + Waiting[ob]["ip"] + " for " + Waiting[ob]["player"] + ":", Waiting[ob]["who"]); message("system", str, Waiting[ob]["who"]); } void help() { message("help", "Syntax: <mfinger [player]>\n\n" "Allows you to get finger information from a player's site.\n\n" "Note: In 1995, you could reliably expect a UNIX machine to cheerfully " "respond to a finger request. Now, more than 10 years later, everything " "is blocked, firewalled, and hardened. This command is all but useless, " "and is kept as a historical curiosity. Any \"bugs\" it contains will " "not be fixed.", this_player()); }