parent $connection_interfaces
object $finger_interface
var $root dbref 'finger_interface
var $root child_index 135
var $root fertile 1
var $root manager $finger_interface
var $root owned [$finger_interface]
var $root owners [$finger_interface]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $has_commands commands [["help", 'help_cmd], ["uptime", 'uptime_cmd], ["all", 'all_cmd], ["who", 'who_cmd], ["*", 'unknown_cmd]]
var $has_commands shortcuts []
var $root inited 1
var $connection_interfaces connection $
var $old_command_environment verb_cache #[]
var $old_command_environment command_cache [["help", 'help_cmd], ["uptime", 'uptime_cmd], ["all", 'all_cmd], ["who", 'who_cmd], ["*", 'unknown_cmd]]
var $old_command_environment shortcuts_cache []
method parse_line
arg line;
var cmd;
while (line && ((line[1]) == " "))
line = substr(line, 2);
if (!line) {
.motd();
} else if ((line[1]) == ".") {
line = substr(line, 2);
// if (!line) {
// .send("Unknown option, try \".help\".");
// } else {
cmd = .match_command(line);
if (cmd)
.(cmd[1])(@cmd[2]);
// }
} else {
.send(.finger_user(line));
}
return 'disconnect;
.
method motd
.perms(sender(), 'this);
.send($login.build('default));
.send($string.center("Email: " + ($sys.get_system_email('finger)), 79));
.send($string.center("For more information, finger .help", 79));
.
method finger_user
arg str;
var user, line, lines, idle, desc;
.perms(sender(), 'this);
user = (| $user_db.find(str) |);
if (!user)
return [("Sorry, no user found by the name of \"" + str) + "\", try \".help\"."];
line = pad(" Name: " + (user.namef()), 37);
line = (line + " In real life: ") + (user.data_on('real_name));
lines = [line];
line = " Last Login: ";
if (user.connected()) {
if ((user.idle_seconds()) > 10) {
idle = ", " + ($time.dhms(user.idle_seconds(), 'long));
idle = idle + " idle.";
} else {
idle = "";
}
line = " On since: " + ($time.ltime(user.connected_at()));
line = (line + " (Mountain)") + idle;
} else {
line = " Last Login: " + ctime(user.last_command_at());
}
lines = [@lines, line];
line = user.display_data('real_name, 'affiliation, 'position, 'location);
lines = [@lines, @line];
desc = $list.to_string(user.prose('short));
if (strlen(desc) < 60) {
lines = [@lines, " Description: " + desc];
} else {
lines = [@lines, " Description:"];
desc = $string.wrap_line(desc, 79, " ");
desc = replace(desc, 1, " " + (desc[1]));
lines = [@lines, @desc];
}
return lines;
.
method help_cmd
arg cmd;
.send("If you are trying to find a user, do not prepend \".\".");
.send(["", "Options available:", ""]);
.send(" .all Show all users connected.");
.send(" .uptime Uptime other server information");
.send(["", "If there are any problems, please email " + ($sys.email('fingerd)), ""]);
.
method uptime_cmd
arg cmd;
var line;
line = $time.elapsed($sys.server_info('up_time), 'long);
.send("Server has been up for: " + line);
.send("Currently Connected users: " + tostr(listlen($user_db.connected())));
.send("Driver: " + ($sys.server_info('driver_version, 'long)));
.send("Core: " + ($sys.server_info('core_version, 'long)));
.
method all_cmd
arg cmd;
var x, line;
(> .perms(sender(), 'this) <);
// .send($code.generate_listing($user_db.connected()));
.send(pad("USER", 40) + "TIME (IDLE) LOCATION");
for x in ($user_db.connected()) {
line = pad(x.namef('titled), 40);
line = line + pad(x.time_poll(), 17);
line = line + (x.realm_name());
.send(line);
}
.
method unknown_cmd
arg cmd;
.send(("Unknown command \"" + cmd) + "\", try \".help\".");
.
method who_cmd
arg cmd;
(> .perms(sender(), 'this) <);
.send($code.generate_listing($user_db.connected()));
.