Add restricted debug mode
[mudpy.git] / doc / source / configuration.rst
1 ===============
2  configuration
3 ===============
4
5 .. Copyright (c) 2004-2020 mudpy authors. Permission to use, copy,
6    modify, and distribute this software is granted under terms
7    provided in the LICENSE file distributed with this software.
8
9 .mudpy.filing
10 -------------
11
12 .mudpy.filing.groups
13 ~~~~~~~~~~~~~~~~~~~~
14
15 dict, optional
16
17 Each item in the dict identifies options for the default backing
18 file of the group named in its key. The value is itself a dict with
19 its keys and values corresponding to those options (for now, only
20 ``flags`` is implemented, with a value of ``private`` indicating it
21 should be readable only by the system user under which the mudpy
22 process is running).
23
24 Example::
25
26   .mudpy.filing.groups:
27       account:
28           flags:
29               - private
30
31 .mudpy.filing.prefix
32 ~~~~~~~~~~~~~~~~~~~~
33
34 string, optional
35
36 This is the root path beneath which all relative file references,
37 including directories comprising the search path, are assumed to be
38 found. The default value of ``.`` indicates the current working
39 directory at the time the service was initially started.
40
41 Example::
42
43   .mudpy.filing.prefix: .
44
45 .mudpy.filing.search
46 ~~~~~~~~~~~~~~~~~~~~
47
48 list, required
49
50 Directories to search for expected data files. If not a fully
51 canonical path, this is assumed to be relative to the ``prefix``.
52
53 Example::
54
55   .mudpy.filing.search:
56       - ""
57       - etc
58       - share
59       - data
60
61 .mudpy.filing.stash
62 ~~~~~~~~~~~~~~~~~~~
63
64 string, required
65
66 This is the default directory where new data files will be written
67 if their full paths are not specified and they aren't already found
68 in the ``search`` list. If not a fully canonical path, this is
69 assumed to be relative to the ``prefix``.
70
71 Example::
72
73   .mudpy.filing.stash: data
74
75 .mudpy.linguistic
76 -----------------
77
78 .mudpy.linguistic.actions
79 ~~~~~~~~~~~~~~~~~~~~~~~~~
80
81 dict, optional
82
83 This is used to tailor the appearance of output generated by the
84 ``say`` command and its relatives, so as to add some readability and
85 flavor. It matches a visible action to punctuation (ask, exclaim, et
86 cetera).
87
88 Example::
89
90   .mudpy.linguistic.actions:
91       ?: ask
92       ",": begin
93       -: begin
94       :: begin
95       ;: begin
96       "!": exclaim
97       ...: muse
98       .: say
99
100 .mudpy.linguistic.default_punctuation
101 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102
103 string, optional
104
105 Unpunctuated statements made by actors should be assumed to
106 terminate with this value.
107
108 Example::
109
110   .mudpy.linguistic.default_punctuation: .
111
112 .mudpy.linguistic.typos
113 ~~~~~~~~~~~~~~~~~~~~~~~
114
115 dict, optional
116
117 Replacements for common typographical and capitalization errors.
118
119 Example::
120
121   .mudpy.linguistic.typos:
122       i: I
123       i'd: I'd
124       i'll: I'll
125       i'm: I'm
126       teh: the
127       theyre: they're
128       youre: you're
129
130 .mudpy.limit
131 ------------
132
133 .mudpy.limit.admins
134 ~~~~~~~~~~~~~~~~~~~
135
136 list, optional
137
138 The first users to create accounts with names in this list will
139 automatically be given full administrative privileges.
140
141 Example::
142
143   .mudpy.limit.admins:
144       - admin
145
146 .mudpy.limit.avatars
147 ~~~~~~~~~~~~~~~~~~~~
148
149 int, required
150
151 This is the maximum number of avatars allowed for each account.
152
153 Example::
154
155   .mudpy.limit.avatars: 7
156
157 .mudpy.limit.backups
158 ~~~~~~~~~~~~~~~~~~~~
159
160 int, optional
161
162 This is the number of backups to keep and rotate when overwriting
163 data files. If unspecified or set to 0, no backup copies will be
164 made.
165
166 Example::
167
168   .mudpy.limit.backups: 10
169
170 .mudpy.limit.debug
171 ~~~~~~~~~~~~~~~~~~
172
173 bool, optional
174
175 Whether unsafe debugging functionality is enabled. If unspecified or
176 set to false, unsafe debugging functions will be disabled.
177
178 Example::
179
180   .mudpy.limit.debug: true
181
182 .mudpy.limit.password_tries
183 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
184
185 int, required
186
187 This is the maximum number of password failures allowed during the
188 login process. Once exceeded, the user will be disconnected.
189
190 Example::
191
192   .mudpy.limit.password_tries: 3
193
194 .mudpy.log
195 ----------
196
197 .mudpy.log.file
198 ~~~~~~~~~~~~~~~
199
200 string, optional
201
202 If set, log messages will be recorded to this file.
203
204 Example::
205
206   .mudpy.log.file: var/mudpy.log
207
208 .mudpy.log.lines
209 ~~~~~~~~~~~~~~~~
210
211 int, optional
212
213 Number of log entries to keep in memory (the oldest are
214 discarded)... If unset or 0, none will be written to mudpy's
215 internal memory.
216
217 Example::
218
219   .mudpy.log.lines: 1000
220
221 .mudpy.log.stdout
222 ~~~~~~~~~~~~~~~~~
223
224 bool, optional
225
226 If set to ``yes``, messages will be logged to the standard output of
227 the mudpy process. If unspecified, the default is ``no``.
228
229 Example::
230
231   .mudpy.log.stdout: true
232
233 .mudpy.log.syslog
234 ~~~~~~~~~~~~~~~~~
235
236 string, optional
237
238 If set, mudpy will send messages to the system log, and under the
239 name specified by this value (Unix derivatives only).
240
241 Example::
242
243   .mudpy.log.syslog: mudpy
244
245 .mudpy.movement
246 ---------------
247
248 .mudpy.movement.*.enter_term
249 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
250
251 string, multiple
252
253 Word or words describing the direction from where you are seen to
254 enter the next room when moving.
255
256 Example::
257
258   .mudpy.movement.down.enter_term: above
259   .mudpy.movement.east.enter_term: the west
260   .mudpy.movement.north.enter_term: the south
261   .mudpy.movement.south.enter_term: the north
262   .mudpy.movement.up.enter_term: below
263   .mudpy.movement.west.enter_term: the east
264
265 .mudpy.movement.*.exit_term
266 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
267
268 string, multiple
269
270 Word or words describing the direction where you are seen to exit
271 the current room when moving.
272
273 Example::
274
275   .mudpy.movement.down.exit_term: downward
276   .mudpy.movement.east.exit_term: to the east
277   .mudpy.movement.north.exit_term: to the north
278   .mudpy.movement.south.exit_term: to the south
279   .mudpy.movement.up.exit_term: upward
280   .mudpy.movement.west.exit_term: to the west
281
282 .mudpy.movement.*.vector
283 ~~~~~~~~~~~~~~~~~~~~~~~~
284
285 triplet, multiple
286
287 Vector of signed integer units for use in vector addition to derive
288 the destination coordinates from the current coordinates when moving
289 through a gridlink exit. The example coordinate system used is left
290 handed (east, north and up are positive, west, south and down are
291 negative) and three-dimensional with a tuple component order of
292 (longitude, latitude, altitude).
293
294 Example::
295
296   .mudpy.movement.down.vector: [0, 0, -1]
297   .mudpy.movement.east.vector: [1, 0, 0]
298   .mudpy.movement.north.vector: [0, 1, 0]
299   .mudpy.movement.south.vector: [0, -1, 0]
300   .mudpy.movement.up.vector: [0, 0, 1]
301   .mudpy.movement.west.vector: [-1, 0, 0]
302
303 .mudpy.network
304 --------------
305
306 .mudpy.network.host
307 ~~~~~~~~~~~~~~~~~~~
308
309 string, optional
310
311 The IP address on which to listen. If unspecified, the default is
312 all available addresses.
313
314 Example::
315
316   .mudpy.network.host: ::1
317
318 .mudpy.network.port
319 ~~~~~~~~~~~~~~~~~~~
320
321 int, required
322
323 The TCP port on which to listen.
324
325 Example::
326
327   .mudpy.network.port: 4000
328
329 .mudpy.process
330 --------------
331
332 .mudpy.process.daemon
333 ~~~~~~~~~~~~~~~~~~~~~
334
335 bool, optional
336
337 If set to ``yes``, mudpy will immediately fork and detach a child to
338 become a daemon process, then close all open file descriptors and
339 terminate the parent process (Unix derivatives only). The default
340 value is ``no``.
341
342 Example::
343
344   .mudpy.process.daemon: true
345
346 .mudpy.process.pidfile
347 ~~~~~~~~~~~~~~~~~~~~~~
348
349 string, optional
350
351 If set, this filename will contain the daemon's process ID (Unix
352 derivatives only).
353
354 Example::
355
356   .mudpy.process.pidfile: var/mudpy.pid
357
358 .mudpy.timing
359 -------------
360
361 .mudpy.timing.idle.disconnect.*
362 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363
364 int, multiple
365
366 This value indicates the number of increments allowed to pass
367 without input on a socket connection before it is terminated. This
368 avoids accumulation of dead sockets which could otherwise max out
369 allowed file descriptors. The differentiators are either ``default``
370 or a state name used to override the default value for that specific
371 state (``active``, ``entering_account_name``, et cetera).
372
373 Example::
374
375   .mudpy.timing.idle.disconnect.active: 6048000
376   .mudpy.timing.idle.disconnect.default: 6000
377   .mudpy.timing.idle.disconnect.entering_account_name: 600
378
379 .mudpy.timing.idle.warn.*
380 ~~~~~~~~~~~~~~~~~~~~~~~~~
381
382 int, multiple
383
384 This value indicates the number of increments allowed to pass
385 without input on a socket connection before it is warned that
386 termination is imminent. The differentiators are either
387 ``default`` or a state name used to override the default value
388 for that specific state. It is recommended that this be less than
389 the corresponding ``.mudpy.timing.idle.disconnect.*`` value.
390
391 Example::
392
393   .mudpy.timing.idle.warn.active: 5040000
394   .mudpy.timing.idle.warn.default: 5000
395   .mudpy.timing.idle.warn.entering_account_name: 500
396
397 .mudpy.timing.increment
398 ~~~~~~~~~~~~~~~~~~~~~~~
399
400 float, required
401
402 This value indicates the number of real system clock seconds (or
403 more commonly, fraction thereof) each pass through the main loop is
404 intended to take. This roughly sets the frequency with which queued
405 socket I/O operations are performed, pending events are triggered,
406 and directly impacts the speed at which virtual time passes within
407 the simulation.
408
409 Example::
410
411   .mudpy.timing.increment: 0.1
412
413 .mudpy.timing.save
414 ~~~~~~~~~~~~~~~~~~
415
416 int, required
417
418 Number of increments between updates of changed persistent data
419 storage.
420
421 Example::
422
423   .mudpy.timing.save: 600
424
425 .mudpy.timing.status
426 ~~~~~~~~~~~~~~~~~~~~
427
428 int, optional
429
430 Number of increments to wait between logging mudpy status messages.
431 If unspecified or set to 0, no mudpy status messages will be
432 written.
433
434 Example::
435
436   .mudpy.timing.status: 6000
437
438 .mudpy.user
439 -----------
440
441 .mudpy.user.pref_admin
442 ~~~~~~~~~~~~~~~~~~~~~~
443
444 list, optional
445
446 This can be used to list facets an administrative user is allowed to
447 set or override on their own ``account`` element, in addition to any
448 in the `.mudpy.user.pref_allow`_ list. Note that this is merely a
449 convenience, as an administrator is already able to call the ``set``
450 command to set values for facets of any element.
451
452 Example::
453
454   .mudpy.user.pref_admin:
455       - loglevel
456
457 .mudpy.user.pref_allow
458 ~~~~~~~~~~~~~~~~~~~~~~
459
460 list, optional
461
462 This can be used to list facets any user is allowed to set or
463 override on their own ``account`` element with the ``preference``
464 command.
465
466 Example::
467
468   .mudpy.user.pref_allow:
469       - prompt