/* Do not remove the headers from this file! see /USAGE for more info. */
#include <daemons.h>
#include <ports.h>
inherit M_GRAMMAR;
inherit CLASS_FINGER;
// Strip colour codes
string stripped(string info)
{
return terminal_colour(info, ANSI_D->query_translations()[1]);
}
private nomask string get_idle(int i)
{
if ( i > 3600 )
return " (idle " + (i/3600) + "h)";
if ( i > 60 )
return " (idle " + (i/60) + "m)";
return "";
}
string main(mixed data)
{
class finger info;
string s;
string mailstring;
string idle;
string first_line;
string userid;
if(stringp(data))
userid=data;
if(mapp(data))
userid=data["name"];
if(strlen(userid) && userid[0] == '=')
userid = userid[1..];
userid = lower_case(trim_spaces(userid));
if ( userid == "" )
return FINGER_D->show_big_html_finger();
info = FINGER_D->get_finger_data(userid);
if ( !info )
return sprintf("<h2><em>%s</em>: No such player.\n</h2>", userid);
if ( !info->real_name )
info->real_name = "(private or none given)";
if ( !info->email )
info->email = "(private or none given)";
else
info->email = sprintf("<a href=\"mailto:%s\">%s</a>",
info->email, info->email);
if ( !info->nickname )
info->nickname = "(none)";
#ifdef USE_WIZ_POSITION
if ( !info->position )
info->position = "(none)";
info->position = " Position: " + info->position;
#else
info->position = "";
#endif
if ( !info->home_page && is_directory(sprintf(WIZ_DIR "/%s/WWW", userid)) )
info->home_page = sprintf("http://%s:%d/~%s",
__HOST__, PORT_HTTP, userid);
if ( info->home_page )
info->home_page = sprintf("Homepage: <a href=\"%s\">%s</a>\n",
info->home_page, info->home_page);
else
info->home_page = "";
// if ( info->connect_from )
// info->connect_from = " from " + info->connect_from;
// else
info->connect_from = "";
if ( info->idle == -1 )
idle = "";
else if ( info->idle == -2 )
idle = " (linkdead)";
else
idle = get_idle(info->idle);
if ( info->mail_count == 0 )
mailstring = info->visname + " has no mail.";
else
{
mailstring = sprintf("%s has %s.",
info->visname,
number_of(info->mail_count, "message"));
if ( info->mail_unread )
mailstring[<1..] = sprintf(", %d of which %s unread.",
info->mail_unread,
info->mail_unread > 1 ? "are" : "is");
}
first_line = info->title ? info->title : info->visname;
s = sprintf(
"<title>Finger info for %s@%s</title>\n"
"<h2>Finger info for %s@%s</h2>\n"
"<em><font size=+2>%s</font></em>\n"
"Nickname: %-29s\n"
"Level: %s\n"
"In real life: %-25s\n"
"%s\n"
"%s %s%s%s\n"
"%s\n"
"Email Address: %s\n"
"%s",
info->visname, MUD_NAME,
info->visname, MUD_NAME,
stripped(first_line),
info->nickname,
info->level,
info->real_name,
info->position,
info->idle == -1 ? "Left at" : "On since",
info->last_login ? ctime(info->last_login) : "<unknown>",
idle,
info->connect_from,
mailstring,
info->email,
info->home_page);
if ( info->plan )
s += "Plan:\n" + info->plan + "\n";
#ifdef EVERYONE_HAS_A_PLAN
else
s += "No plan.\n";
#endif
return replace_string(s, "\n", "<br>\n");
}