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())); .