Jaidyn Lev authored on 2018-10-18 04:56:20
Showing 56 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,81 @@
1
+Enhanced Connection Logging
2
+===========================
3
+
4
+Overview
5
+--------
6
+
7
+When the `use_connlog` option is turned on, the MUSH will log
8
+connection information not just to the normal connection log, but also
9
+to a Sqlite database (Named with the `connlog_db` option). This
10
+database is persistant and is not reset between mush shutdowns and
11
+startups, unless the format changes at some point in the future in
12
+such a way it can't be upgraded without data loss.
13
+
14
+The intent is that this is more easily parsed and queried than the
15
+unstructured text of the normal connection log, making it easier to
16
+use with monitoring tools. Said tools might eventually be written and
17
+made available.
18
+
19
+The wizard-only softcode `connlog()` and `connrecord()` functions let
20
+you access the database from within a game and serve as an example of
21
+usage of the tables in the database. They're defined in
22
+*src/connlog.c*.
23
+
24
+Internals
25
+---------
26
+
27
+There are four tables in the database:
28
+
29
+* *checkpoint*, which only holds a single row - the time, which the
30
+  mush updates every few minutes. This time is used when recovering
31
+  from a crash or other unexpected shutdown. Connections that were
32
+  established when the database was last updated are updated to
33
+  disconnect at this timestamp.
34
+* *timestamps*, which holds the connection and disconnection times of
35
+  a connection. This is a virtual table using the Sqlite3 RTree
36
+  extension, which allows for efficent queries of time intervals.
37
+* *addrs* which holds unique IP addresses and the hostnames they
38
+  resolve to.
39
+* *connections*, which holds all other information about a
40
+  connection - where it came from, who was logged in, and why they
41
+  disconnected. Its **id** column pairs up with *timestamps.id*, and
42
+  **addrid** with *addrs.id*. Most queries will join the tables on
43
+  these keys, or just use...
44
+* *connlog*, a view that joins all related connections, timestamps and
45
+  addrs together into one comprehensive record.
46
+
47
+plus assorted indexes to speed up queries. The *application_id* of the
48
+database is `0x42010FF2`.
49
+
50
+Examples
51
+--------
52
+
53
+To generate a table of the most common IP address each player
54
+connects from:
55
+
56
+    WITH addrcounts(name, ipaddr, c) AS
57
+      (SELECT name, ipaddr, count(addrid) FROM
58
+          connections AS conn JOIN addrs ON conn.addrid = addrs.id
59
+         WHERE name NOT NULL
60
+         GROUP BY conn.addrid)
61
+    SELECT name, ipaddr, max(c) AS count FROM addrcounts
62
+      GROUP BY name ORDER BY name COLLATE NOCASE;
63
+
64
+To show all information about connections made in the last 24 hours:
65
+
66
+    SELECT * from connlog WHERE conn >= strftime('%s', 'now', '-1 day');
67
+
68
+To count the number of times a particular player has connected:
69
+
70
+    SELECT count(*) FROM connections WHERE dbref=1234;
71
+    
72
+To show connections that never logged in:
73
+
74
+    SELECT * from connlog WHERE dbref = -1;
75
+
76
+Caveats
77
+-------
78
+
79
+One current known issue is that if a player logs out and logs back
80
+into a different account without quitting, only the identity of the
81
+last logged in player object is saved.
0 82
new file mode 100644
... ...
@@ -0,0 +1,144 @@
1
+             Run-time Installation and Configuration of PennMUSH
2
+
3
+This document assumes that you've successfully compiled and installed
4
+PennMUSH as described in the main PennMUSH README file.
5
+
6
+The next step is to create your configuration file. In the game
7
+directory is a file called "mush.cnf". If you don't have mush.cnf, but
8
+you have mushcnf.dst, you can copy mushcnf.dst to mush.cnf.  This file
9
+is a list of all runtime configuration options with their default
10
+settting. Change them as you see fit.  IMPORTANT: do not _delete_ any
11
+parameters. If you do, the defaults will still be used. Some options can
12
+be set to empty values to effectively clear them, though.
13
+
14
+WIN32 WITH MSVC++:
15
+  Under win32 using the Microsoft compiler, ignore the restart script.
16
+  In the configuration file, turn off disk database compression; it is
17
+  not supported.  Then go to the game directory and run PennMUSH.exe.
18
+  Poof, you're done.
19
+
20
+UNIX or WIN32 VIA CYGWIN/MINGW:
21
+  You may need to edit the restart script to change GAMEDIR to the path to 
22
+  the directory containing mush.cnf. Read about the optional settings in 
23
+  that file. The restart script is written for sh, and assumes a fairly 
24
+  standard Berkeley UNIX setup. If you're on a HP-UX or SysV machine, 
25
+  for example, you may need to change the restart script a bit. Then run
26
+  it, with 'sh restart' or './restart'.
27
+
28
+You should now be able to log into the game.  This distribution can
29
+generate a minimal database - a God character, starting room, and
30
+master room.  The server will generate this database if it doesn't
31
+find another database to load.
32
+
33
+If you're starting with the minimal database, the god character "One"
34
+has no password, so you can log in without one. Of course, you should
35
+immediately set one (via @newpassword).  mush.cnf has the Master Room
36
+as #2 by default; in the minimal database, this room is created for
37
+you.
38
+
39
+Now you should be set -- all you have to do now is customize the .txt
40
+files in the game directory.
41
+
42
+The logfiles in the "log" directory generally contain useful
43
+information. You will probably want to read your error logfile
44
+(defined in mush.cnf) every time, since errors and other important
45
+messages get printed to that logfile.
46
+
47
+After your first startup, it's a good idea to make some small change
48
+to the database (e.g., @create an object) and then do an
49
+@shutdown. Restart the game again and ensure that your object is still
50
+present - this verifies that the server is successfully dumping.
51
+
52
+============================================================================
53
+
54
+                            Game Trouble-shooting
55
+
56
+If you ever run into trouble, the your first reaction should ALWAYS be
57
+to back up your database. indb.Z.old is the file that the MUSH saves
58
+indb.Z to when the game is restarted, indb.Z is the file that the MUSH
59
+loaded at startup, and outdb.Z is the file to which the MUSH is
60
+currently dumping the database.
61
+
62
+You can tell if a dump is (theoretically) complete by doing a
63
+"zcat <database file name> | tail -10".  The last line should read
64
+"***END OF DUMP***". If it doesn't, your database has been truncated
65
+for some reason. Check the logfile. Possible causes include a full
66
+process table, a full disk partition, or running out of disk quota.
67
+
68
+Occasionally the dump process may dump core. This is caused by some
69
+sort of corruption in an attribute, normally. You can tell if the dump
70
+process has died by looking in your data directory; you will see
71
+something like "outdb.Z.#5#". Wait a few moments and check on the file
72
+again. If it has grown, then the game is in the process of a normal
73
+dump. If it hasn't, and there's a core file, then something has gone
74
+wrong. You should definitely shout a warning that building is not being
75
+saved.
76
+
77
+To attempt to fix the problem, do a @dbck to take care of any possible
78
+minor weirdness in the database, then try doing a "@dump/paranoid",
79
+and reading the checkpoint logfile (default is log/checkpt.log). This
80
+is slow, but it will write out an uncorrupted database, and tell you
81
+what it fixed. Back up that database and indb.Z, then figure out what
82
+you're going to do next: you can take the game down with a kill -9, or
83
+attempt to manually fix the problem by either @destroying the
84
+offending object, or attempting to reset the attributes on the object
85
+that are causing a problem.  If "@dump/paranoid" dies, you are more or
86
+less out of luck.
87
+
88
+The game may crash from time to time. It will generate a core file,
89
+usually; if you don't limit the coredumpsize or strip the executable,
90
+you should be able to get some useful information out of it, using a
91
+debugger. The developers are interested in stack traces. You can do a
92
+stack trace in the following manner: Go into the directory where you
93
+keep your source code, and type
94
+	<name of debugger> netmud ../game/core
95
+If you don't call your executable "netmud", substitute in whatever you
96
+do call it.
97
+
98
+You are looking for variables set to bizarre values - attempts to
99
+access objects that aren't there, attempts to use pointers which point
100
+to nothing, and the like.
101
+
102
+If you are using the "adb" debugger (don't do this unless you really
103
+have absolutely nothing else available), you will see nothing. It's
104
+loaded and ready, though. Type "$c". This will print out a list of the
105
+functions it called. Type "$q" to quit. You can't really get much more
106
+useful information out of adb.
107
+
108
+If you are using the "dbx" debugger, type "where" to see the stack
109
+trace. You can move through it using "up" and "down", and see exactly
110
+what the sequence of calls was. You can also use "print <variable
111
+name>" to see the value of a variable at the time the game crashed.
112
+The "gdb" debugger is similar to "dbx"; with that, you can abbreviate
113
+"print" as "p". It is the reccomended debugger to use; when gdb is
114
+present on your system and you're using gcc as the compiler, gcc is
115
+told to use a gdb-specific debugging format.
116
+
117
+If you want to start PennMUSH running under a debugger, instead of
118
+attaching to an already-running process, it'll need two arguments:
119
+--no-session, and the name of your config file if it is different than
120
+mush.cnf. Without --no-session, the server will immediately fork off a
121
+detatched child process, and the debugger will tell you that the
122
+process exited normally..
123
+
124
+The PennMUSH developers appreciate news of any bugs found, and any
125
+patches that have been written to deal with them. We are also
126
+interested in any extensions that people make to the code, and
127
+requests that ones that are of more than just local interest be sent
128
+to us for inclusion in the next release of this code. See
129
+https://github.com/pennmush/pennmush/.
130
+
131
+One important thing to remember is, if the MUSH refuses to start,
132
+there is probably a good reason. Check the MUSH log, and the core
133
+file, if there is one. Make sure to back up your database before
134
+attempting to restart -- remember that every time it restarts, it
135
+overwrites indb.Z.old. If you restart three times and somehow manage
136
+to trash your database each time (for example, a full process table
137
+zero'ing out your files), you won't have a backup to restart from,
138
+unless you've backed up your database before trying!
139
+
140
+You can also find helpful tips in Javelin's Guide for Gods,
141
+which is available on the WWW as
142
+	http://download.pennmush.org/Guide/guide-single.html
143
+
144
+
0 145
new file mode 100644
... ...
@@ -0,0 +1,189 @@
1
+      Everything you ever wanted to know about access.cnf and more
2
+
3
+
4
+The file "access.cnf" in the game/ subdirectory controls access to the
5
+MUSH. It's used to restrict which sites can conect to players or guests,
6
+create players, or register players by email. It can also flag a site
7
+as suspect; all players who connect from suspect sites have their
8
+SUSPECT flag set.
9
+
10
+This file replaces the older lockout.cnf and sites.cnf file; 
11
+typing 'make access' will create a new access.cnf file from your
12
+lockout.cnf and sites.cnf files.
13
+
14
+FILE SYNTAX
15
+
16
+The syntax of the file is simple. Each line gives information about
17
+a host or host-pattern:
18
+
19
+host [dbref] [options] [# comment]
20
+
21
+host - the only required file, this is a hostname or a wildcard pattern
22
+       to match. Examples: 
23
+         berkeley.edu	- matches hostname berkeley.edu
24
+	 *.berkeley.edu - matches hostname <anystring>.berkeley.edu
25
+         *berkeley.edu  - matches either of the above
26
+         *              - matches all hosts
27
+    
28
+       user@host also works, but since Penn no longer attempts to
29
+       resolve a user name, existing rules that use this will always
30
+       fail to match.
31
+dbref   - The dbref of a character to restrict the rule too.
32
+          (Only makes sense for connect rules). Leave it out
33
+          or use '-2' to match all characters. Leave out the '#'
34
+          in the dbref.
35
+options - A space-separated list of options which apply to connections
36
+          from the host. Described in detail below.
37
+comment - an optional comment
38
+
39
+Everything in the file is separate by a single space - don't use tabs.
40
+
41
+The file is read line-by-line, and the first match is used. This
42
+means that the order in which hosts are listed is very important.
43
+
44
+Also, since both hostnames and IPs are checked, some rules must take
45
+both into account.
46
+
47
+There is one special line in the file, which looks like this:
48
+
49
+@sitelock
50
+
51
+This line indicates where @sitelock'd sites will be inserted in
52
+the file. Hosts listed after this line can have their access
53
+options superseded by using @sitelock on-line. Hosts listed before
54
+this line can not have their access options overriden by @sitelock.
55
+If the line doesn't appear in the file, it will be added to the end
56
+of the file at startup.
57
+
58
+
59
+READING AND WRITING THE FILE
60
+
61
+The access.cnf file is read and cached at startup, and whenever the MUSH 
62
+receives a HUP signal.
63
+
64
+The access.cnf file is written back to disk whenever @sitelock is used.
65
+
66
+
67
+OPTIONS
68
+
69
+The following options are available for each host in the file:
70
+
71
+create	- People connecting from this host may 'create' players.
72
+!create	- People connecting from this host may NOT 'create' players.
73
+connect - People may connect to their existing non-guest players.
74
+!connect - People may NOT connect to their existing non-guest players.
75
+guest	- People may connect to guest players from this host.
76
+!guest	- People may NOT connect to guest players from this host.
77
+none    - shorthand for: !create !connect !guest
78
+default - shorthand for: create connect guest
79
+!god    - God cannot connect from this host.
80
+!wizard - Wizards cannot connect from this host.
81
+!admin  - Wizards and Royalty cannot connect from this host.
82
+register - People may use the 'register' command from this host.
83
+suspect	- All players connected to from this host will be set SUSPECT
84
+deny_silent - Don't log failed create/connect/guest/register attempts
85
+regexp - Use regexp match rather than glob matching for the pattern
86
+
87
+If no options are given, the host is treated as if option "none"
88
+were used. If at least one option is listed, it's assumed that
89
+hosts can do anything (create, connect, guest) that they are
90
+not prohibited from.
91
+
92
+
93
+EXAMPLE SCENARIOS
94
+
95
+Here are some typical ways you might want to set up your file:
96
+
97
+1. Totally ban specific sites, allow all others
98
+
99
+*badsite.com -2 none
100
+*.twink.edu -2 none
101
+
102
+This will totally lock out those sites (like lockout.cnf)
103
+
104
+
105
+2. Allow specific sites and no others. Note that you must list both
106
+   hostname-matching patterns and ip address-matching patterns, because
107
+   if either fails to match a rule that allows connection, the connection
108
+   will be refused. This is true in general when writing positive rules.
109
+
110
+*.berkeley.edu -2 default
111
+128.32.* -2 default
112
+* -2 none
113
+
114
+People may connect from .berkeley.edu (128.32.) sites only.
115
+
116
+
117
+3. Allow connection but not creation from some sites
118
+
119
+*.twink.edu -2 !create
120
+
121
+This is equivalent to the former function of sites.cnf
122
+
123
+
124
+4. Allow connection but not creation or guest-connection from some sites
125
+
126
+*.twink.edu -2 !guest !create
127
+
128
+
129
+5. Require that a given site use the 'register' command to register
130
+   players by email. 
131
+
132
+*.twink.edu -2 !create register
133
+
134
+Using !create prevents people from using the usual create command.
135
+Adding register allows them to use the register command.
136
+
137
+
138
+6. Disable creation from twink.edu sites, and don't let Wizards 
139
+   override this rule with @sitelock
140
+
141
+*.twink.edu -2 !create
142
+@sitelock
143
+
144
+Because the rule appears above "@sitelock", and @sitelock rules appear
145
+below "@sitelock", the rule will always be checked before any 
146
+@sitelock rules.
147
+
148
+
149
+7. Disable creation from twink.edu sites, but allow Wizards to
150
+   later override this rule with @sitelock
151
+
152
+@sitelock
153
+*.twink.edu -2 !create
154
+
155
+Because the rule appears below "@sitelock", new @sitelock rules
156
+(which will be added immediately following "@sitelock") will precede
157
+it, and will be checked first.
158
+
159
+8. God can only be connected to from one specific account on the
160
+   server, and nowhere else. Wizards cannot override it. This requires
161
+   you to connect to 'localhost <port>' from a given account on the
162
+   same server the mush runs on. If the server doesn't support ident,
163
+   remove 'username@' so that anyone on the server can connect. 
164
+
165
+username@localhost 1 connect 
166
+username@127.0.0.1 1 connect
167
+* -2 !god
168
+@sitelock
169
+
170
+9. A complex example:
171
+
172
+  a) Allow anybody from localhost.berkeley.edu complete access
173
+  b) Force people from *.twink.edu to use registration, and set their
174
+     players SUSPECT
175
+  c) Completely ban *badsite.com, and don't log attempts to connect
176
+  d) Don't allow jerk@netcom.com to connect to Guests
177
+  e) Allow people from somesite.org to connect to Guests only.
178
+  f) Allow @sitelock to override c-e above
179
+
180
+localhost.berkeley.edu -2 default
181
+127.0.0.1 -2 default
182
+*.twink.edu -2 !create register suspect
183
+@sitelock
184
+*badsite.com -2 none deny_silent
185
+jerk@netcom.com -2 !guest
186
+somesite.org -2 !connect !create guest
187
+
188
+
189
+
0 190
new file mode 100644
... ...
@@ -0,0 +1,91 @@
1
+# Command aliases that you'd like reserved.
2
+# Normally, commands are autoaliased to their unique prefixes,
3
+# so n -> news
4
+# However, you might prefer to have n not treated as a command alias
5
+# because you think of it as short for 'north' and want to use a 
6
+# master room exit to catch it. In that case, you'd uncomment
7
+# lines like this:
8
+#reserve_alias e
9
+#reserve_alias w
10
+#reserve_alias s
11
+#reserve_alias n
12
+#reserve_alias nw
13
+#reserve_alias ne
14
+#reserve_alias sw
15
+#reserve_alias se
16
+#reserve_alias u
17
+#reserve_alias d
18
+
19
+# We add a dummy here to make updating easier
20
+reserve_alias dummy_exit_alias
21
+
22
+# You can also add new commands, with
23
+# command_add <command> [<options>], where <options> is a space-separated
24
+# list of 0 or more of "noparse", "eqsplit", "lsargs", "rsargs" and "rsnoparse".
25
+# Equiv of @command/add[/<options>] <command>. See 'help @command'.
26
+# OPTIONAL
27
+# add_command @foo eqsplit rsargs
28
+
29
+# And hook commands, with
30
+# hook_command <cmd> <hook> [<obj>[/<attr>]]
31
+# as per @hook/<hook> <cmd>=[<obj>[/<attr>]]. See 'help @hook'.
32
+# inplace override hooks have use inplace/override as the hook.
33
+# OPTIONAL
34
+# hook_command say override #123/cmd.say
35
+# hook_command say override/inplace #123/cmd.say
36
+
37
+# You can also add new functions, with
38
+# add_function <function> <obj>/<attr> [<minargs> [<maxargs>]]
39
+# as per @function <function>=<obj>, <attr>[, <minargs>[, <maxargs>]]
40
+# If <function> is the name of a built-in function, it will be disabled
41
+# and replaced with the user function (like @function/delete).
42
+# OPTIONAL
43
+# add_function foo #123/fun.foo 1 5
44
+
45
+# You can also alias commands to other names.
46
+# command_alias EXISTING_COMMAND ALIAS
47
+# For example, a french-language game do the following:
48
+# command_alias think pensent
49
+# Some standard aliases:
50
+command_alias @edit @gedit
51
+# Alias read to look?
52
+#command_alias look read 
53
+
54
+command_alias look l
55
+command_alias inventory i
56
+command_alias @switch @sw
57
+command_alias page p
58
+command_alias whisper w
59
+command_alias goto move
60
+command_alias @atrlock @attrlock
61
+command_alias @atrchown @attrchown
62
+command_alias get take
63
+command_alias @ifelse @if
64
+
65
+# As well as commands, functions can be aliased. Same syntax,
66
+# just function_alias instead of command_alias. 
67
+# Some standard aliases:
68
+function_alias lsearch search
69
+function_alias soundslike soundlike
70
+function_alias lstats stats
71
+function_alias trunc val
72
+function_alias nattr attrcnt
73
+function_alias nattrp attrpcnt
74
+function_alias iter parse
75
+function_alias modulo mod
76
+function_alias modulo modulus
77
+function_alias randword pickrand
78
+function_alias lthings lobjects
79
+function_alias lvthings lvobjects
80
+function_alias nthings nobjects
81
+function_alias nvthings nvobjects
82
+function_alias xthings xobjects
83
+function_alias xvthings xvobjects
84
+function_alias atrlock attrlock
85
+
86
+# For rhost compatibility
87
+function_alias textfile dynhelp
88
+
89
+# But there's no point in aliasing attributes here, because they're stored
90
+# in the db now.
91
+
0 92
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+The getdate.template file is used by the extended CONVTIME() (See
2
+@config compile for it's status) to match many date and time
3
+templates.
4
+
5
+The format is one template per line, using the same codes as
6
+TIMEFMT(), except with %-signs instead of $-signs. Plain text is
7
+matched exactly. The MUSH does not need to be rebooted after editing
8
+getdate.template.
9
+
10
+DO NOT use '%c', '%x' or '%X', as they might crash the mush on a linux
11
+box, and possibly others.
12
+
13
+For more details on the format of the file, see your system
14
+documentation on the getdate() and strptime() C functions.
0 15
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+%a %b %d %H:%M:%S %Y
2
+%a %b %d %H:%M:%S
3
+%b %d %H:%M:%S %Y
4
+%a %b %d %H:%M %Y
5
+%a %b %d %H:%M
6
+%b %d %H:%M %Y
7
+%b %d %H:%M
8
+%B %d %H:%M
9
+%B %d %H:%M %Y
10
+%b %d %H:%M:%S
11
+%B %d %H:%M:%S
12
+%B %d %H:%M:%S %Y
13
+%b %d %Y
14
+%b %d
15
+%B %d %Y
16
+%B %d
17
+%Y-%m-%d %H:%M:%S
0 18
new file mode 100644
... ...
@@ -0,0 +1,1002 @@
1
+# configuration file for PennMUSH
2
+#
3
+# The directives in this file control the behavior of your MUSH
4
+# If you change any of them while your MUSH is running, you can
5
+# cause the MUSH to re-read this file by sending it a SIGHUP
6
+# signal. Typically, one does this by using 'ps' to determine the
7
+# MUSH's process id#, and then issuing a: kill -1 pid#
8
+# command.
9
+
10
+####
11
+#### ESSENTIALS
12
+####
13
+
14
+# Name of your MUSH. Please change this.
15
+mud_name Uncommon Era
16
+
17
+# The web address of your MUSH. If this is nonempty, people attemping to
18
+# connect to your MUSH with a web browser will be redirected to this
19
+# URL. Set to the address of a web client, or your MUSH's website.
20
+# mud_url http://www.pennmush.org
21
+mud_url https://libregamenight.xyz
22
+
23
+# If you want GET/POST/etc support for your MUSH, set http_handler to the
24
+# dbref of a Player object.
25
+#
26
+# When the MUSH receives an HTTP request, it checks the player object for
27
+# an HTTP`<METHODNAME>, and if it exists, runs it as an inline command.
28
+# Be warned - if HTTP`?? queues anything, it will NOT be sent to the client -
29
+# everything should be run via /inline
30
+#
31
+# See also, "help http_handler" and "help @respond".
32
+http_handler
33
+
34
+# How many HTTP requests do you want to handle every second?
35
+# Setting this to 0 (or negative) disables HTTP. Defaults to 3,
36
+# as HTTP is also disabled unless http_handler is set.
37
+http_per_second 3
38
+
39
+# The port it's running on. See also ssl_port, later.
40
+port 4201
41
+
42
+# Should we listen only on a specific IP address? If your host has
43
+# multiple IP addresses, put the ip address to listen on here.
44
+# Example:
45
+# ip_addr 128.32.243.78
46
+# If you want to force only IPv4 addresses but  don't want to limit to
47
+# just one, use '0.0.0.0'. Similiarly, to force IPv6, use '::'.
48
+# Otherwise, just leave it blank.
49
+ip_addr
50
+
51
+# Should the MUSH attempt to resolve IP numbers to hostnames?
52
+# If yes, you'll see hostnames on the wizard WHO. If no, IP numbers.
53
+# No makes sense if you're running PennMUSH at home and don't have
54
+# a DNS server you can access. MacOS 7/8/9 should use 'no'
55
+# Changing this while using info_slave requires a @shutdown/reboot
56
+# to make it take effect.
57
+use_dns yes
58
+
59
+# Databases
60
+# These are, respectively, where to read a database, where to
61
+# write a database, where to put a panic dump (performed if
62
+# the MUSH determines it's going to crash, where to put MUSH mail,
63
+# and where to keep information about the chat system.
64
+# Filenames are relative to the game/ directory.
65
+#
66
+# Do NOT put compression suffixes at the end of the files.
67
+# That's handled below
68
+#
69
+input_database data/indb
70
+output_database data/outdb
71
+crash_database data/PANIC.db
72
+mail_database data/maildb
73
+chat_database data/chatdb
74
+
75
+# Database compression
76
+# When your databases are dumped, they can be dumped in a compressed
77
+# format to save disk space, or uncompressed for speed.
78
+# To use a compression program, you must know the name of the
79
+# program that compresses, the name of the program that uncompresses,
80
+# and the suffix that the compression program adds.
81
+#
82
+# Most people can just use one of the following:
83
+#
84
+# Use these 3 lines for no compression. Required on win32 and MacOS 7/8/9.
85
+#compress_program
86
+#uncompress_program
87
+#compress_suffix
88
+#
89
+# Use these 3 lines for gzip compression
90
+# Note: If the mush is built with zlib and you use plain 'gzip' and
91
+# 'gunzip', the library will be used instead of external programs. If
92
+# you want to force using the programs, just specify the full path to
93
+# them; e.g. /usr/bin/gzip
94
+#compress_program gzip
95
+#uncompress_program gunzip
96
+#compress_suffix .gz
97
+#
98
+# Use these 3 lines for Unix compress compression
99
+#compress_program compress
100
+#uncompress_program uncompress
101
+#compress_suffix .Z
102
+#
103
+# Use these 3 lines for bzip2 compression
104
+#compress_program bzip2
105
+#uncompress_program bunzip2
106
+#compress_suffix .bz2
107
+#
108
+compress_program gzip
109
+uncompress_program gunzip
110
+compress_suffix .gz
111
+
112
+# Room where new players are created.
113
+player_start 0
114
+
115
+# The master room. Exits here are global, as are commands on
116
+# objects here.
117
+master_room 2
118
+
119
+# The base room. Any room that can be reached from this room
120
+# through exits is considered a 'connected room'.
121
+# See also: exits_connect_rooms
122
+base_room 0
123
+
124
+# Event handler. This dbref receives all events generated by
125
+# PennMUSH. See 'help events' for this.
126
+event_handler -1
127
+
128
+# The ancestor room. This dbref serves as an 'ultimate parent' to
129
+# all rooms that aren't set ORPHAN. Set to -1 to disable.
130
+ancestor_room -1
131
+
132
+# The ancestor exit. This dbref serves as an 'ultimate parent' to
133
+# all exits that aren't set ORPHAN. Set to -1 to disable.
134
+ancestor_exit -1
135
+
136
+# The ancestor thing. This dbref serves as an 'ultimate parent' to
137
+# all things that aren't set ORPHAN. Set to -1 to disable.
138
+ancestor_thing -1
139
+
140
+# The ancestor player. This dbref serves as an 'ultimate parent' to
141
+# all players that aren't set ORPHAN. Set to -1 to disable.
142
+ancestor_player -1
143
+
144
+# The default home.  This is the room used when an object becomes
145
+# homeless (usually due to its home getting destroyed).  It's also
146
+# the place where things get moved to if their location gets
147
+# unsalvageably corrupted.
148
+default_home 0
149
+
150
+# What's the filename of the @sitelock file, that controls
151
+# who can connect and who can't
152
+access_file access.cnf    
153
+
154
+# Where are the names you want to ban players from
155
+# creation/rename? A good idea to start with are swear words,
156
+# and featured names like 'Luke', 'Merlin', 'Gandalf', 'Picard',
157
+# 'Lessa', 'Dracula', 'Hercules', 'Scooby', 'Nancy Drew', etc,
158
+# depending on what type of MUSH you are running
159
+names_file names.cnf
160
+
161
+###
162
+### Attribute (chunk) cache
163
+###
164
+### PennMUSH can swap rarely-referenced attribute text out to a disk
165
+### file, and cache often-used attribute text in memory. This 
166
+### can result in substantial (typically 30-50%) savings
167
+### in process memory use, at the cost of a very small performance hit.
168
+### You can control the size of memory cache (or set it so large
169
+### that nothing is ever swapped to disk), as well as several less
170
+### important parameters here. 
171
+###
172
+
173
+# True to use the attribute cache
174
+use_chunk_system yes
175
+
176
+# The file to store the attribute data in, when not in memory.
177
+# This is relative to the game/ directory.
178
+chunk_swap_file data/chunkswap
179
+
180
+# The amount of memory allowed for the attribute cache, in bytes.
181
+# The actual amount used will be a multiple of 64K slightly less
182
+# the specified amount.  You must give it at least 132000 bytes.
183
+# If you want to use an 'infinite' cache, try setting this
184
+# to 2000000000; you'll lose the memory benefits, but you'll still
185
+# gain some locality benefits and overhead savings.
186
+chunk_cache_memory 1000000
187
+
188
+# The amount of space, in kibibytes, to initially allocate for the
189
+# swap file. The swap file may grow bigger than this figure, but won't
190
+# shrink to less. Only works on some OSes; ignored on those that don't
191
+# support the posix_fallocate() system call. 
192
+# For best results, set it to a larger value than the size of your
193
+# swap file is after the game has been running for a while. How much
194
+# larger depends on how fast the database is growing.
195
+chunk_swap_initial_size 2048
196
+
197
+# The number of attributes that may be moved at one time, once per
198
+# second.  The higher the value, the faster memory gets defragmented,
199
+# but at a greater CPU cost.
200
+chunk_migrate 150
201
+
202
+###
203
+### In-memory attribute compression
204
+###
205
+
206
+# The compression method used on attribute text.
207
+# Options: None, for no compression (But most memory use)
208
+# huffman (Balance between space and compression speed)
209
+# word (Faster decompression, more memory)
210
+attr_compression none
211
+
212
+###
213
+### SSL support
214
+###
215
+
216
+# The port to listen on for SSL connections. This must be an unused
217
+# port other than the standard connection port. To disable SSL
218
+# connections, leave this set to 0.
219
+ssl_port 0
220
+
221
+# The ip address to bind to for the SSL port, if one is specified. 
222
+# If your host has multiple IP addresses, put the ip address to 
223
+# listen on here. Otherwise, leave it blank to listen on all
224
+# addresses if SSL is in use.
225
+ssl_ip_addr
226
+
227
+# The file containing the MUSH server's certificate and private key,
228
+# concatenated together, and with no password on the private key.
229
+# Obviously, this file should only be readable by the MUSH account
230
+# owner. If this is commented out, the server will not present a
231
+# certificate, so clients that attempt to authenticate the server
232
+# will fail.
233
+ssl_private_key_file  server-key.crt
234
+
235
+# A file containing one or more certificates of certifying authorities
236
+# that the server should trust to certify clients who connect and
237
+# present certificates.
238
+ssl_ca_file /etc/ssl/certs/ca-certificates.crt
239
+
240
+# A directory containing one or more certificates of certifying
241
+# authorities that the server should trust to certify clients who
242
+# connect and present certificates. If both this and ssl_ca_file are
243
+# commented out or blank, the server will not attempt client
244
+# authentication.
245
+ssl_ca_dir /etc/ssl/certs
246
+
247
+
248
+# Are clients *required* to present a valid certificate in order to
249
+# make an SSL connection? If true, ssl_ca_file needs to be set too.
250
+ssl_require_client_cert no
251
+
252
+# Filename to use as a unix-domain socket for talking to the ssl
253
+# slave
254
+socket_file data/netmush.sock
255
+
256
+###
257
+### Websocket support
258
+###
259
+
260
+# Enable websockets
261
+use_ws true
262
+
263
+# path used in HTTP requests for a websocket connection to the game.
264
+ws_url /wsclient
265
+
266
+###
267
+### Limits, costs, and other constants
268
+###
269
+
270
+# name of the monetary units. Uncomment before changing. By leaving it
271
+# commented, the translated value will be used.
272
+# OPTIONAL
273
+# money_singular Penny
274
+# money_plural Pennies
275
+
276
+# How many times in a 10 minute period should a given IP address be
277
+# allowed to attempt to log in before being rejected?
278
+# If you want this to really be successful, you should probably also
279
+# block Tor exit nodes at the firewall level:
280
+# http://doc.norang.ca/iptables.html#sec-3
281
+# Set to 0 for unlimited.
282
+connect_fail_limit 10
283
+
284
+# Should there be a limit on how long players can be idle?
285
+# If you want one, set idle_timeout to the # number of MINUTES 
286
+# a player may idle before getting disconnected.
287
+# If you don't want a timeout, set it to 0.
288
+idle_timeout 0m
289
+
290
+# Should there be a limit on how long connections at the connect screen
291
+# (without an associated player) can be idle?
292
+# If you want one, set unconnected_idle_timeout to the # number of MINUTES 
293
+# a connection may idle before getting disconnected.
294
+# If you don't want a timeout, set it to 0.
295
+unconnected_idle_timeout 5m
296
+
297
+# Many common home network routers will drop a connection if there's
298
+# been no activity for a few minutes; they tend to assume the web is
299
+# the internet, and don't deal well with persistant connections like
300
+# mushes use. This option will make the server automatically send a
301
+# TCP-level 'Are you still there?' query every few minutes to keep the
302
+# connection active.
303
+# NOTE: This doesn't work on all OSes, but does on the most popular
304
+# ones for mush hosting such as linux. Other options include the KEEPALIVE
305
+# flag and the IDLE command.
306
+keepalive_timeout 30m
307
+
308
+# Should there be a limit on the number of logins the MUSH
309
+# can accept? If your operating system has a limited number of
310
+# file descriptors per process, you should set this to 
311
+# that number - 8. If not, or if you like to live dangerously,
312
+# set this to 0.
313
+max_logins 120
314
+
315
+# Should there be a limit on the number of concurrent guest logins the MUSH
316
+# will allow? This option can take 3 values:
317
+# 0 = no limit, any number of guests. Logins beyond the number of established
318
+#     guest characters will result in multiple players being logged into the
319
+#     same guest character.
320
+# -1 = limited to the number of guests in the database. To allow more guests
321
+#      to log in, create more guest characters.
322
+# Any other number = the number of guest connections allowed at once.
323
+max_guests -1
324
+
325
+# How much MUSH money do players get when they're created?
326
+starting_money 150
327
+
328
+# How much MUSH money do non-guest players get each day they log in?
329
+paycheck 50
330
+
331
+# How much MUSH money do guests get each day they log in?
332
+guest_paycheck 0
333
+
334
+# What's the most money anyone but guests can have?
335
+max_pennies 100000
336
+
337
+# What's the most money guests can have?
338
+max_guest_pennies 1000
339
+
340
+# If quotas are enforced, how much players get by default
341
+starting_quota 20
342
+
343
+# number of commands a player can have queued. Prevents runaway machines
344
+# from getting out of hand.
345
+player_queue_limit 100
346
+
347
+# the number of commands run from the queue when there is no net activity
348
+queue_chunk 3
349
+
350
+# the maximum level of recursion allowed in functions
351
+function_recursion_limit 50
352
+
353
+# the maximum number of functions that can be invoked
354
+function_invocation_limit 25000
355
+
356
+# the maximum depth we're allowed to recursively call the parser
357
+# for a single expression. This limits how much the stack size can increase,
358
+# which could be useful if your host limits your stack (it will prevent
359
+# a crash). The higher your allowed stack size limit, the larger the
360
+# mush process can grow, and the higher this can be set. Generally
361
+# speaking, you won't ever see more than 8192 recursions, so that's
362
+# probably an upper limit, but most sane code shouldn't need more
363
+# than a couple hundred. Setting it to '0' means unlimited.
364
+call_limit 100
365
+
366
+# The maximum number of milliseconds of CPU time that a single queue entry
367
+# is allowed to use before aborting. Setting this to a low number will
368
+# help prevent many malicious attacks, as well as accidently bad code,
369
+# from lagging the game. Setting it to 0 means unlimited, and is a bad 
370
+# idea. Remember there are 1000 milliseconds in a second.
371
+queue_entry_cpu_time 1500
372
+
373
+# The maximum number of Q registers one level of qregs can have. That is:
374
+# each localize(), ulocal(), etc will allow <max_named_qregs> to be set.
375
+# This is in addition to the default 36 of a-z and 0-9. For old behavior,
376
+# use 0. A very high limit will let an abusive player suck up quite a lot
377
+# of RAM.
378
+max_named_qregs 50
379
+
380
+# How many channels total can be created?
381
+# This doesn't allocate memory, it just sets a maximum.
382
+max_channels 200
383
+
384
+# What's the maximum length a player's @channel/title can be?
385
+# This does not include ansi/markup.
386
+chan_title_len 80
387
+
388
+# How many channels can each non-admin create? Set this to some number
389
+# higher than zero to allow mortals to create channels.
390
+max_player_chans 0
391
+
392
+# What's the maximum number of levels of parenting allowed
393
+max_parents 10
394
+
395
+# What's the max chain length of indirect locks allowed?
396
+max_depth 10
397
+
398
+# How much does it cost a mortal to create a channel?
399
+chan_cost 1000
400
+
401
+# How likely should it be that noisy whispers are noticed by other
402
+# players in the room? (Others see: John whispers to Mary.)
403
+# Use a number from 0 to 100
404
+whisper_loudness	100
405
+
406
+# the highest allowable dbref -- you can't build more than this
407
+# many objects. if you don't want such a limit, leave this set
408
+# to 0.
409
+max_dbref 0
410
+
411
+# The maximum number of attributes per object. This prevents
412
+# denial-of-service attacks involving creating an infinite number
413
+# of attributes on an object. This value is probably enough.
414
+max_attrs_per_obj 2048
415
+
416
+# The maximum number of mail messages in each player's inbox.
417
+# Encourages people to clean up their inbox, discourages 
418
+# mailspammers.
419
+mail_limit 300
420
+
421
+# How much @search costs
422
+find_cost 100
423
+
424
+# How many objects are equal to 1 quota, if quotas are used
425
+quota_cost 1
426
+
427
+# How much deposit is required to queue a command?
428
+queue_cost 10
429
+
430
+# One out of how many commands that are queued will cost the
431
+# player a coin? Setting this to 1 causes a coin to be lost with
432
+# every command. Setting it to 0 disables coin loss for queued
433
+# commands (and is a very bad idea).
434
+queue_loss 63
435
+
436
+# What does it cost to build various things?
437
+room_cost 10
438
+object_cost 10
439
+link_cost 1
440
+exit_cost 1
441
+
442
+# How often should we run a purge to remove destroyed objects? (seconds)
443
+purge_interval 10m1s
444
+
445
+# How often should we run a dbck to check db consistency? (seconds)
446
+dbck_interval  9m59s
447
+
448
+# How often should we perform topology warning checks?
449
+# Default is 1 hour. If you set this to 0, timed MUSH-wide checks 
450
+# will be disabled, but players can still use @wcheck.
451
+warn_interval 1h
452
+
453
+# If compiled with FLOATING_POINTS support, this controls the
454
+# decimal precision of numbers. Default is 6 digits after the
455
+# decimal point.
456
+float_precision 6
457
+
458
+# The maximum length of player names. Lowering this won't change
459
+# current player names.
460
+player_name_len 15
461
+
462
+# The maximum number of aliases a player may have simultaneously.
463
+# Setting this to 0 disables aliases. To allow an unlimited number
464
+# of aliases, set this to 4000 or so.
465
+max_aliases	3
466
+
467
+# Limit the number of objects players can own.
468
+use_quota yes
469
+
470
+###
471
+### Dump stuff
472
+###
473
+
474
+# How often should the database be dumped, in seconds?
475
+# 3600 is once an hour, and probably the most frequent you'd ever want.
476
+# On a large MUSH, consider at most once every 3-6 hours.
477
+# This cannot be a multiple of any of the timer.c parameters
478
+# (so keep it an even number of hours).
479
+dump_interval 1800
480
+
481
+# should I fork a concurrent process to do database dumps?
482
+# If I do, your memory requirements will double during the dump.
483
+# If I don't, the MUSH will pause while it dumps.
484
+# If you're low on memory, don't do this.
485
+# If you're on Win32, don't do this; fork() is not defined.
486
+forking_dump yes
487
+
488
+# If you're not forking, you get a bunch of messages that you
489
+# can set to warn players when the dump is 5 minutes away,
490
+# 1 minute away, in progress, and finished. You can 
491
+# leave messages you don't want blank, but don't comment
492
+# them out or remove them from the file or you'll get the
493
+# default messages.
494
+# Leaving these undefined lets the game use the default, translated
495
+# messages.
496
+# OPTIONAL
497
+# dump_warning_5min GAME: Database save in 5 minutes.
498
+# dump_warning_1min GAME: Database save in 1 minute.
499
+# dump_message GAME: Saving database. Game may freeze for a few moments.
500
+# dump_complete GAME: Save complete. 
501
+
502
+
503
+### 
504
+### Filenames
505
+###
506
+
507
+# Text files shown on connection, as message of the day, as wizard
508
+# message of the day, on quit, to newly created players, when logins
509
+# are disabled, when player creation is disabled, and when a guest
510
+# logs in. These must either be the path to a text file, or a
511
+# #dbref/attrname to be evaluated and shown.  dbref/attrs are passed
512
+# the port/descriptor as %0. If it's a message shown to a connected
513
+# player, their dbref is also passed as %1.
514
+connect_file txt/connect.txt
515
+motd_file txt/motd.txt
516
+wizmotd_file txt/wizmotd.txt
517
+quit_file txt/quit.txt
518
+newuser_file txt/newuser.txt
519
+down_file txt/down.txt
520
+register_create_file txt/register.txt
521
+guest_file txt/guest.txt
522
+full_file txt/full.txt
523
+
524
+# Text file shown when someone uses WHO/DOING/SESSION at the login
525
+# screen. If empty, the default WHO output is shown. If an obj/attr
526
+# is given, you can use a softcoded WHO at the login screen. %2 will
527
+# be the arg given (for 'WHO foo').
528
+# OPTIONAL
529
+# who_file
530
+
531
+# The equivalent files in html, shown to Pueblo clients.
532
+connect_html_file txt/connect.html
533
+motd_html_file txt/motd.html
534
+wizmotd_html_file txt/wizmotd.html
535
+quit_html_file txt/quit.html
536
+newuser_html_file txt/newuser.html
537
+down_html_file txt/down.html
538
+register_create_html_file txt/register.html
539
+guest_html_file txt/guest.html
540
+full_html_file txt/full.html
541
+# OPTIONAL
542
+# who_html_file
543
+
544
+# The big text files. New ones can be added by setting up
545
+# a new subdirectory of game/txt as described in game/txt/README,
546
+# and adding a new help_command line below, or uncommenting one of
547
+# the normal file entries.
548
+
549
+#help_command index txt/index.txt
550
+#help_command rules txt/rules.txt
551
+#help_command +help txt/plushelp.txt
552
+
553
+help_command help txt/help.txt
554
+help_command news txt/news.txt
555
+ahelp_command ahelp txt/help.txt
556
+restrict_command ahelp admin
557
+ahelp_command anews txt/news.txt
558
+restrict_command anews admin
559
+
560
+# Name of a Sqlite3 file to use to store help data.
561
+help_db data/help.db
562
+
563
+# If you're using the email registration feature, but want to use a
564
+# mailer other than sendmail, put the full path to the mailer program
565
+# here. The mailer must accept the -t command-line argument ("get the
566
+# recipient address from the message header To:").  If it doesn't, you
567
+# could probably write a wrapper for it.
568
+# Example: #define MAILER "/full/path/to/other/mailer"
569
+sendmail_prog sendmail
570
+
571
+# A UTF-8 encoded file of words, one word per line, used with
572
+# suggest(words, X). Leave empty to disable.
573
+#dict_file /usr/dict/words
574
+dict_file /usr/share/dict/words
575
+
576
+# Name of a JSON file holding the database for named colors.
577
+colors_file txt/colors.json
578
+
579
+###
580
+### Logging
581
+###
582
+### When selecting log files, you may assign multiple logs to the
583
+### same filename. If you don't assign a filename to a log,
584
+### messages are written on stderr instead (usually redirected to
585
+### log/netmush.log). Probably unwise to change these in a running
586
+### MUSH.
587
+###
588
+
589
+# Filename to log important messages (startups, errors, shutdowns)
590
+error_log  log/netmush.log
591
+
592
+# Filename to log connections to
593
+connect_log log/connect.log
594
+
595
+# Also log connections in a sqlite3 database. See CONNLOG.md for details.
596
+use_connlog yes
597
+
598
+# The database file to use for the connlog.
599
+connlog_db log/connlog.db
600
+
601
+# Filename to log wizard commands to
602
+wizard_log log/wizard.log
603
+
604
+# Filename to log dump checkpoint messages to
605
+checkpt_log log/checkpt.log
606
+
607
+# Filename to log debugging trace messages to
608
+trace_log log/trace.log
609
+
610
+# Filename to log commands by SUSPECT players to
611
+command_log log/command.log
612
+
613
+# log all commands. Makes big, big command.log files. Use only for
614
+# debugging, generally.
615
+log_commands no
616
+
617
+# log forces done by wizards
618
+log_forces no
619
+
620
+# The password that must be given to do an @logwipe. You must also
621
+# be God, of course. CHANGE THIS.
622
+log_wipe_passwd zap!
623
+
624
+# The maximum size of a log file, in kilobytes
625
+log_max_size 100
626
+
627
+# What to do when a log file hits its max size.
628
+#  wipe: Erases the file completely, like @logwipe
629
+#  rotate: Backup existing log file to a new one.
630
+#  trim: Delete all but the most recent approximately 10% of the
631
+#        contents.
632
+# Defaults to trim.
633
+# This can be on a per-log basis, or global.
634
+# Logfile names: error, command, wizard, connection, trace, checkpoint
635
+# Example:
636
+# log_size_policy error:rotate checkpoint:wipe default:trim
637
+log_size_policy trim
638
+
639
+# perform memory allocation tracking (logged on @dump) to help find
640
+# memory leaks. This really shouldn't be changed while the server
641
+# is running - it's only useful if you do a full shutdown, turn
642
+# this on, and then start up. Generally, you want this off.
643
+mem_check no
644
+
645
+###
646
+### Logins
647
+###
648
+
649
+# Support the pueblo MUSH client and allow html to be sent to it
650
+pueblo no
651
+
652
+# allow non-wizard/royalty logins
653
+logins yes
654
+
655
+# allow guest logins
656
+guests yes
657
+
658
+# allow players to create/register characters at the login screen
659
+# If you turn this off, neither "create" nor "register" will work.
660
+# Use access.cnf if you want to disable creation for specific sites
661
+# or disable creation but enable registration for everyone.
662
+player_creation yes
663
+
664
+# For 1.8.3p9 and later, this option is used to indicate the endianess
665
+# of the host system for password upgrades. If people aren't able to
666
+# log in with it set to yes, try changing to no. If that doesn't work,
667
+# just use @newpassword.
668
+reverse_shs yes
669
+
670
+# trigger @aconnect/@adisconnect in a connecting player's location
671
+# if the location is a room or thing?
672
+room_connects yes
673
+
674
+###
675
+### SQL connectivity
676
+###
677
+
678
+# What SQL server platform should we use? Options include:
679
+# mysql, postgresql, sqlite3, disabled (the default)
680
+sql_platform disabled
681
+
682
+# What's the SQL hostname? Use '127.0.0.1' for a TCP connection
683
+# to the local host on port 3306, '<hostip>:<port#>' for a TCP
684
+# connection on another port (e.g. 127.0.0.1:3307), and 
685
+# the word 'localhost' for a domain socket connection.
686
+sql_host 127.0.0.1
687
+
688
+# What's the SQL database? You have to set this to a database that
689
+# you create, or the filename of a sqlite3 database.
690
+sql_database mush
691
+
692
+# What username to access the database?
693
+sql_username mush
694
+
695
+# What password for that user? Change this!
696
+sql_password mush
697
+
698
+###
699
+### Options affecting commands and functions
700
+### (See also restrict_command to restrict command use)
701
+###
702
+
703
+# The old daytime directive is better suited to restrict_command
704
+# or @command/disable.
705
+
706
+# prevent objects from evaluating ufuns on more privileged objects. [++]
707
+safer_ufun yes
708
+
709
+# allow functions that have side effects? (e.g. dig(), etc.)
710
+function_side_effects yes
711
+
712
+# default whisper to whisper/noisy instead of whisper/silent
713
+noisy_whisper no
714
+
715
+# default @cemit to @cemit/noisy instead of @cemit/silent
716
+noisy_cemit no
717
+
718
+# is possessive get (get players's object) allowed?
719
+possessive_get yes
720
+
721
+# what if the player is disconnected?
722
+possessive_get_d no
723
+
724
+# SAFE absolutely prevents destruction, even with @nuke
725
+really_safe yes
726
+
727
+# With this turned on, ZMRs and ZMOs are not included in control
728
+# checking. Only Zone Master Players are. The other zone types are
729
+# still used for command-matching, just not for control purposes.
730
+# Highly recomended.
731
+zone_control_zmp_only yes
732
+
733
+# When a player is nuked, his SAFE objects are @chowned to a player
734
+# dbref controlled by the probate_judge option.  If this is set to
735
+# "yes", his non-safe objects are destroyed If this is set to "no",
736
+# they are chowned to probate_judge
737
+destroy_possessions yes
738
+
739
+# This is the dbref of the player that objects and channels belonging
740
+# to a nuked player are chowned to. If this is an invalid or
741
+# non-player dbref, GOD is used. See destroy_posessions.
742
+probate_judge 1
743
+
744
+# Can we @link to an object?
745
+link_to_object yes
746
+
747
+# Keep queue limits on a per-owner rather than per-object basis?
748
+# That is, is an object runaway when its owner's total queue is too
749
+# high, rather than when the object's queue is too high?
750
+owner_queues no
751
+
752
+# If this is yes, DARK wizards do not trigger AENTER/ALEAVE when they move.
753
+# If it's no, they are just like anybody else.
754
+wiz_noaenter no
755
+
756
+# should say/pose by a DARK wizard be anonymous ('Someone says...')?
757
+full_invis no
758
+
759
+# Are empty attributes preserved? If this is yes, you can do
760
+# &ATTR obj= and obj will have an attribute ATTR set, with an empty value.
761
+# If this is no, that same command would clear the attribute instead.
762
+empty_attrs yes
763
+
764
+###
765
+### TinyMUSH compatibility
766
+###
767
+
768
+# Should we treat a missing number as 0 in things like add(3,)?
769
+# For MUX compatibility, the answer is 'yes'.
770
+null_eq_zero no
771
+
772
+# In PennMUSH, strings and db#s larger than #0 have traditionally
773
+# been considered true (1) in boolean functions like and(), or(), etc.
774
+# In TinyMUSH, strings and db#s evaluate as false (0)
775
+# Should we emulate TinyMUSH?
776
+tiny_booleans no
777
+
778
+# TinyMUSH's trim function is: 
779
+#   trim(<string> [,<trim style> [,<trim character>]])
780
+# PennMUSH's trim function has been:
781
+#    trim(<string>[,<character to trim>[,<trim style>]])
782
+# Should we emulate TinyMUSH? [+ for new MUSHes]
783
+tiny_trim_fun no
784
+
785
+# In Tiny, strings used in math expressions evaluate to 0,
786
+# so eq(asdfa,0) = 1, gt(asdf,0) = 0, etc.
787
+# In Penn, using strings where numbers should be is traditionally an
788
+# error (returning #-1 ARGUMENT MUST BE NUMBER or similar)
789
+# Do you want the TinyMUSH behavior?
790
+tiny_math no
791
+
792
+# should @pemit default to @pemit/silent, like TinyMUSH?
793
+silent_pemit no
794
+
795
+###
796
+### Attributes
797
+###
798
+
799
+# enable the adestroy attribute, triggered when an object is nuked?
800
+adestroy no
801
+
802
+# enable the amail attribute for admin, triggered when they receive
803
+# @mail? This does no mail loop checking. [-]
804
+amail no
805
+
806
+# does @listen work on players?
807
+player_listen yes
808
+
809
+# does @ahear work on players? If player_listen is yes, and
810
+# player_ahear is no, sound outside the player can be heard by her
811
+# inventory, but her @ahear isn't executed.
812
+player_ahear yes
813
+
814
+# Should we trigger the @startup attribute on startup?
815
+# You always want to, unless you need to disable some
816
+# malicious code on an @startup. This does not affect the
817
+# @restart command, which will work even if this is "no".
818
+startups yes
819
+
820
+# Can @desc attributes be accessed remotely by everyone?
821
+# Historically, this was allowed, but it makes it difficult to
822
+# have hidden objects with secrets in their @desc if players
823
+# can remotely get the @desc. If set to "no", you must be
824
+# able to look at something to retrieve its @desc.
825
+read_remote_desc no
826
+
827
+###
828
+### Cosmetic stuff
829
+###
830
+
831
+# show room/object/player names in bold for ansi players?
832
+ansi_names yes
833
+
834
+# show exit lists with commas (a, b, and c)?
835
+comma_exit_list yes
836
+
837
+# count hidden players when WHO reports total connected?
838
+count_all no
839
+
840
+# are rooms with any exits considered connected, and thus not required
841
+# to have the FLOATING flag set on them?
842
+exits_connect_rooms no