The System Object (#0)(an instance of Root Class made by The_Mayor)     The known universe. VERB SOURCE CODE: do_login_command:
"...This code should only be run as a server task...";
if (callers())
return E_PERM;
endif
if (typeof(h = $network:incoming_connection(player)) == OBJ)
"connected to an object";
return h;
elseif (h)
return 0;
endif
host = $string_utils:connection_hostname(connection_name(player));
if ($login:redlisted(host))
boot_player(player);
server_log(tostr("REDLISTED: ", player, " from ", host));
return 0;
endif
args = $login:parse_command(@args);
return $login:(args[1])(@listdelete(args, 1));
.
server_started:
if (callers())
"This code should only be run as a server task.";
return E_PERM;
endif
$network:server_started();
$last_restart_time = time();
"... suitable prefix for server log messages...";
preamble = "STARTUP: [#0:server_started] ";
if ($dump_interval > 3600)
"...Setting dump time to 3am:";
"...10 or 11 hours offset from GMT midnight plus now until GMT midnight.";
dumptime = (((ctime()[27] == "D") ? 10 | 11) * 60) * 60;
desired_interval = (24 * 60) * 60;
$dump_interval = (dumptime - time()) % desired_interval;
if ($dump_interval <= 0)
$dump_interval = $dump_interval + desired_interval;
endif
server_log(tostr(preamble, "Checkpoint scheduled for ", ctime(time() + $dump_interval),
"."));
"...Now, the system starts up, and schedules the first checkpoint.";
"...The second one will be scheduled at some random time if we don't reset it";
"...to 24 hours. Any time between now and the first checkpoint time will do.";
fork (1)
$dump_interval = desired_interval;
endfork
else
server_log(tostr(preamble, "Checkpoint scheduled every ", $dump_interval / 60,
" minutes."));
endif
"...do some basic sanity checks for $maxint and $minint...";
if (((($maxint + 1) != $minint) || ($minint >= 0)) || ($maxint <= 0))
server_log(preamble + "Warning: $maxint and $minint look incorrect.");
endif
.
core_objects:
saved = {#0};
for p in (properties(#0))
v = #0.(p);
if ((typeof(v) == OBJ) && valid(v))
saved = setadd(saved, v);
endif
endfor
for o in (saved)
p = parent(o);
while (valid(p))
saved = setadd(saved, p);
p = parent(p);
endwhile
endfor
return $list_utils:sort(saved);
.
init_for_core:
if (caller_perms().wizard)
pass();
if ("server_started" in verbs(this))
code = {"callers() || ($last_restart_time = time());"};
set_verb_code(this, "server_started", code);
endif
$shutdown_message = "";
$shutdown_time = 0;
$dump_interval = 3600;
$gripe_recipients = {player};
$class_registry = {{"generics", "Generic objects intended for use as the parents
of new objects", {$room, $exit, $thing, $note, $letter, $container, $root_class,
$player, $prog, $wiz, $generic_editor, $mail_recipient, $mail_agent}}, {"utilities",
"Objects holding useful general-purpose verbs", {$string_utils, $gender_utils, $trig_utils,
$time_utils, $match_utils, $object_utils, $lock_utils, $list_utils, $command_utils,
$code_utils, $perm_utils, $building_utils}}};
endif
.
user_created user_connected:
"Added callers() security and login watcher Dredful 1/24/94";
if (callers())
return E_PERM;
endif
user = args[1];
set_task_perms(user);
fork (0)
user:confunc();
endfork
user.location:confunc(user);
$local.watcher:tell_connect(user);
.
user_disconnected user_client_disconnected:
"Added callers() security and login watcher functionality. Dredful 1/24/94";
if (callers())
return E_PERM;
endif
user = args[1];
user.last_disconnect_time = time();
set_task_perms(user);
fork (0)
user.location:disfunc(user);
endfork
user:disfunc();
if (valid(user))
$local.watcher:tell_disconnect(user, verb == "user_disconnected");
endif
.
checkpoint_started:
if (callers())
return E_PERM;
else
"for debugging until decide proper system of notification";
for dude in ($set_utils:intersection($wiz_utils:all_wizards(), connected_players()))
dude:notify("Message from server: checkpoint starting...");
endfor
endif
.
checkpoint_finished:
if (callers())
return E_PERM;
else
"For debugging until decide on proper notification";
for dude in ($set_utils:intersection($wiz_utils:all_wizards(), connected_players()))
if (!args[1])
dude:notify("Message from server: checkpoint failed!");
else
dude:notify("Message from server: checkpoint completed successfully.");
endif
endfor
endif
.
PROPERTY DATA:       builder       login       last_huh       guest_log       last_restart_time       biglist       big_mail_recipient       limbo       registration_db       new_player_log       verb_help       core_help       prog_help       wiz_help       shutdown_task       wiz_utils       site_db       math_utils       set_utils       builtin_function_help       new_prog_log       generic_help       guest       seq_utils       quota_log       you       free_list       max_seconds       max_ticks       hacker       generic_db       shutdown_message       shutdown_time       no_one       player_db       class_registry       player_class       gender_utils       trig_utils       time_utils       editor_help       mail_recipient       mail_agent       mail_editor       note_editor       verb_editor       generic_editor       match_utils       object_utils       lock_utils       gripe_recipients       letter       dump_interval       list_utils       command_utils       player       wiz       prog       code_utils       help       nothing       failed_match       ambiguous_match       perm_utils       building_utils       string_utils       news       note       container       thing       exit       room       player_start       root_class       recycler       garbage       mail_options       edit_options       display_options       generic_options       maxint       minint       error       newt_log       toad_log       site_log       housekeeper       network       generic_biglist_home       feature       local       gopher       nntp       build_options       prog_options       mail_name_db       generic_utils       quota_utils       alt_quota_utils       quota       paranoid_db |