Annotation of dgamelaunch-openbsd/examples/dgamelaunch.conf, Revision 1.2
1.1 rubenllo 1: # This is a sample dgamelaunch configuration file. Only bash-style comments
2: # are allowed, such as this. Each configuration option will be explained
3: # along with its default value.
4:
5:
6:
7: # Global config variables:
8:
9:
10: # Max amount of registered users to allow. Has no effect if dgl was
11: # compiled with SQLite
12: maxusers = 64000
13:
14: # Allow registration of new nicks? (yes or no)
15: allow_new_nicks = yes
16:
17: # Max length for newly registered nicks. Must be less than 20.
18: # By default, NetHack only stores the first 10 chars of a name into
19: # the record/logfile.
20: maxnicklen = 10
21:
22: # Set the default watching-screen sorting mode. Can be one of
23: # "username", "game", "windowsize", "starttime" or "idletime".
24: # "username" is the default.
25: #sortmode = "username"
26:
27: # Set the columns displayed in the watching-screen. Each column definition
28: # must have four elements as:
29: # [ "<display title>", "<sortname>", <Screen column>, "<printf format>" ]
30: #
31: # <sortname> may be "unsorted", "username", "game", "windowsize", "starttime",
32: # "duration", "idletime", or (if shmem is enabled) "watchers".
33: #
34: # watch_columns = [ ["", "", 1, "%s)"],
35: # ["User", "username", 4, "%-15s"],
36: # ["Game", "game", 21, "%-11s"],
37: # ["Term", "windowsize", 34, "%s"],
38: # ["Idle", "idletime", 43, "%-10s"],
39: # ["Watchers", "watchers", 55, "%5s"],
40: # ["Started", "starttime", 65, "%s"]
41: # ]
42:
43: # Path to a prepared chroot jail.
44: chroot_path = "/opt/nethack/nethack.alt.org/"
45:
46: # From inside the jail, dgamelaunch's working directory for rcfiles/ttyrec/etc
47: dglroot = "/dgldir/"
48:
49: # Strings to be replaced in every banner
50: # you can have either direct string replacements, like
51: # "$FOO" = "BAR", or you can get the server time with
52: # "$FOO" = timeformat("%F %T")
53: # for the timeformat parameter string format, see man strftime
54: bannervars = [ "$MOTDTIME" = "2011.10.08",
55: "$SERVERID" = "$ATTR(14)nethack.alt.org - http://nethack.alt.org/$ATTR()",
56: "$DATETIME" = timeformat("%F %T")
57: ]
58:
59: # From inside the jail, location of a banner file, which is
60: # shown in submenus that cannot be defined separately.
61: # Some string substitution is done for every banner file contents:
62: # - bannervars from above
63: # - $VERSION replaced with "dgamelaunch v" + dgl version number.
64: # - $USERNAME replaced with logged-in user's name, or with "[Anonymous]"
65: # - $INCLUDE(filename) the named file will be inserted here.
66: banner = "/dgl-banner"
67:
68: # The following two options are fairly insecure. They will force us to
69: # load the password/group database into memory while still having root
70: # privileges. Replace them with shed_uid/shed_gid entries as soon as
71: # possible if you decide to use them. dgamelaunch will inform you of
72: # the uids/gids corresponding to your choices when it loads.
73: #
74: # Note that shed_uid and shed_gid will always take precedence over
75: # shed_user and shed_group if they are specified.
76:
77: # shed_user: username to shed privileges to
78: #shed_user = "games"
79: # shed_group: group name to shed privileges to
80: #shed_group = "games"
81:
82: # Preferably, you may use the respective gids/uids. This is for Debian:
83: shed_uid = 5
84: shed_gid = 60
85:
86: # Locale. Leaving this out, dgamelaunch will not explicitly set locale.
87: locale = "en_US.UTF-8"
88:
89: # Default TERM, used if the user's $TERM is unknown.
90: # If undefined, dgamelaunch will just terminate in that case.
91: default_term = "xterm"
92:
93: # Should dgl send select-UTF8-charset escape code? (that is: ESC % G)
94: # default is no.
95: #utf8esc = yes
96:
97: # Should dgl allow XON/XOFF? Default is "yes", meaning "don't touch it".
98: # "no" disables XON/XOFF
99: #flowcontrol = no
100:
101: # Maximum time in seconds user can idle in the dgamelaunch menus
102: # before dgl exits. Default value is 0, which disables the idling timer.
103: # Does not apply to external programs or config editors.
104: # For setting game idle time, use max_idle_time in the game DEFINE.
105: # menu_max_idle_time = 1024
106:
107: # Passwd refers to the file that stores the user database.
1.2 ! rubenllo 108: # The default passwd file is "/dgldir/dgl-login" for flat-text database, and
! 109: # for sqlite, whatever value was defined for the sqlite database at compile
! 110: # time. This is also used for the shared memory key, if shmem is enabled at
! 111: # compile time.
! 112: #passwd = "/dgldir/dgl-login"
1.1 rubenllo 113:
114: # Lockfile is used only when dgl was compiled without sqlite.
1.2 ! rubenllo 115: #lockfile = "/dgldir/dgl-lock"
1.1 rubenllo 116:
117: #
118: # define some commands that are run when something happens. format is
119: # commands [ <time> ] = <command> ...
120: #
121: # <time> can be one of:
122: # dglstart = when someone telnets in
123: # login = when user has logged in
124: # register = right after a new user is registered
125: # gamestart = just before a game is started
126: # gameend = after a game ends (see also per-game "postcommand" define)
127: #
128: # <command> is:
129: # mkdir "foo" = create a directory "foo"
130: # chdir "foo" = change current work dir to "foo"
131: # cp "foo" "bar" = copy file "foo" to "bar", overwriting previous "bar"
132: # ifnxcp "foo" "bar" = copy file "foo" to "bar", if "bar" doesn't exist
133: # unlink "foo" = delete file "foo"
134: # setenv "foo" "bar" = set environment variable "foo" to "bar"
135: # exec "foo" "bar" = execute "foo" with "bar" as it's param
136: # rawprint "foo" = output string "foo"
137: # chpasswd = do the change password prompting, if logged in
138: # chmail = do the change email prompting, if logged in
139: # watch_menu = go to the watching menu
140: # quit = quit dgl
141: # ask_login = do the login prompting, if not logged in
142: # ask_register = do register new user prompting, if not logged in and
143: # registration of new nicks is allowed.
144: # play_game "foo" = start game which has the short name "foo"
145: # (user must be logged in)
146: # play_if_exist "foo" "file" = start game "foo", if file "file" exists.
147: # submenu "foo" = go to submenu "foo"
148: # return = return from submenu
149: #
150: # NOTE: edit_options-command was removed. use ifnxcp and exec to simulate it.
151: #
152: # The commands will be done inside the chroot and with the uid and gid
153: # defined above.
154: # Parameters to the commands are subject to variable substitution:
155: # %r = dglroot, as defined above
156: # %n = user nick, if user is logged in
157: # %N = first character of user name, if user is logged in
158: # %u = shed_uid, as defined above, but numeric
159: # %g = game name, if user has selected a game.
160: # %s = short game name, if user has selected a game.
161: # %t = ttyrec path & filename of the last game played.
162: #
163: # Also some escape codes:
164: # \\ = backslash
165: # \a = bell
166: # \b = backspace
167: # \e = escape character
168: # \f = form feed
169: # \n = newline
170: # \r = carriage return
171: # \t = tab
172: # \v = vertical tab
173: #
174: # eg. commands[login] = mkdir "foo", unlink "bar", setenv "Z" "foo"
175: #
176:
177: # Change the terminal title: (assuming terminals support the escape code)
178: #commands[dglstart] = rawprint "\e]2;nethack.alt.org\a"
179:
180: # create the user's dirs when they register
181: commands[register] = mkdir "%ruserdata/%n",
182: mkdir "%ruserdata/%n/dumplog",
183: mkdir "%ruserdata/%n/ttyrec"
184:
185: commands[login] = mkdir "%ruserdata/%n",
186: mkdir "%ruserdata/%n/dumplog",
187: mkdir "%ruserdata/%n/ttyrec"
188:
189: # file mode for when commands copy files.
190: # readable and writable by all. you could use eg. "0644" to be more secure.
191: filemode = "0666"
192:
193:
194:
195:
196: # Define the main menus.
197: # You _must_ define "mainmenu_anon" and "mainmenu_user".
198: # $VERSION and $SERVERID will be replaced, as per the bannerfile above.
199:
200: # First, the menu shown to anonymous user:
201: menu["mainmenu_anon"] {
202: bannerfile = "dgl_menu_main_anon.txt"
203: cursor = (5,18)
204: commands["l"] = ask_login
205: commands["r"] = ask_register
206: commands["w"] = watch_menu
207: commands["q"] = quit
208: }
209:
210: # Then the menu shown when the user has logged in:
211: # $USERNAME in here will be replaced with the user name.
212: menu["mainmenu_user"] {
213: # contents of this file are written to screen.
214: # the file must be inside the chroot.
215: # Some string subsitutions can be done in the file:
216: # $INCLUDE(filename) = includes the file to this file.
217: # String substitutions defined in bannervars-section above.
218: # $VERSION = dgamelaunch version
219: # $USERNAME = user name (or [Anonymous] if not logged in)
220: # $ATTR(params) = change text color and attributes.
221: # params can be either number (to set the text color),
222: # one, or any of "b" (bold), "s" (standout), "u" (underline),
223: # "r" (reverse) or "d" (dim),
224: # or both color number and attribute characters, separated by colon.
225: # Empty param resets color and attributes to default.
226: bannerfile = "dgl_menu_main_user.txt"
227: # after which cursor is moved to this location
228: # if cursor-definition is missing, the cursor is put
229: # to the end of the last line of the banner.
230: # cursor = (5,18)
231: # keys we accept. format is
232: # commands["string_of_keys"] = <commandlist>
233: # for example, you could use commands["qQ"] = quit
234: commands["c"] = chpasswd
235: commands["e"] = chmail
236: commands["w"] = watch_menu
237: commands["o"] = ifnxcp "/dgl-default-rcfile.nh343" "%ruserdata/%n/%n.nh343rc",
238: exec "/bin/virus" "%ruserdata/%n/%n.nh343rc"
239: commands["p"] = play_game "NH343"
240: commands["q"] = quit
241: }
242:
243: # this menu is shown when user presses '?' in the watching menu
244: menu["watchmenu_help"] {
245: bannerfile = "dgl_menu_watchmenu_help.txt"
246: commands["qQ "] = return
247: }
248:
249:
250:
251:
252: # Next, we'll define one game's data:
253:
254: #DEFINE {
255: # # From inside the jail, the location of the binary to be launched.
256: # game_path = "/bin/nethackstub"
257: #
258: # # Full name of the game
259: # game_name = "NetHack stub"
260: #
261: # # Short name, used in the watching menu
262: # short_name = "NHstb"
263: #
264: # # Game ID - should be unique. Defaults to game_name, if not defined.
265: # # Used to determine which game is which for "play_game" and "play_if_exists" commands
266: # game_id = "NHstb"
267: #
268: # # arguments for when we exec the binary
269: # game_args = "/bin/nethackstub",
270: # "foo",
271: # "user:%n",
272: # "shed_uid:%u",
273: # "bar"
274: #
275: # # From inside the jail, where dgamelaunch should put mail.
276: # spooldir = "/var/mail/"
277: #
278: # # From inside the jail, the default .nethackrc that is copied for new users.
279: # # rc_template = "/dgl-default-rcfile"
280: #
281: # # If player idles longer than max_idle_time seconds, the game will
282: # # receive a sighup. Default value is 0, which disables the idling timer.
283: # max_idle_time = 2000
284: #
285: # # Player-specific path to an extra information file written by the game
286: # # The game should write the extra information on one line in this format:
287: # # <numeric-weight>|extra-information
288: # # For example, the game might write: "100|Astral", "1|D:1", etc. to indicate
289: # # where the player is in the game world. The numeric weight is used when
290: # # a spectator sorts games by the extra information field: higher weights
291: # # will be sorted to appear before lower weights.
292: # #
293: # extra_info_file = "%rgamedir/%n.extrainfo"
294: #
295: # # Make sure the inprogress dir actually exists. default is "inprogress/"
296: # # Each game you define here must have it's own.
297: # inprogressdir = "%rinprogress-nethackstub/"
298: #
299: # # We can also define per-game commands, that are executed
300: # # when the game starts:
301: # # commands = chdir "/dgldir", mkdir "foo_%u_%g"
302: #
303: # # We can also define per-game commands executed after the game ends,
304: # # but before commands[gameend]
305: # postcommands = chdir "/"
306: #
307: # # If the game uses an ancient encoding, you may specify "ibm" or "dec".
308: # # If set to "ask", the game will be run with --print-charset beforehand,
309: # # expected to return one of these values.
310: # encoding = "unicode"
311: #}
312:
313:
314: #
315: # the second game
316: #
317: #
318:
319: DEFINE {
320: game_path = "/nh343/nethack"
321: game_name = "NetHack 3.4.3"
322: short_name = "NH343"
323:
324: game_args = "/nh343/nethack", "-u", "%n"
325:
326: spooldir = "/mail/"
327: rc_template = "/dgl-default-rcfile.nh343"
328:
329: rc_fmt = "%ruserdata/%n/%n.nh343rc"
330:
331: inprogressdir = "%rinprogress-nh343/"
332:
333: # The place where ttyrecs are stored for this game.
334: # If this is not defined, ttyrecs are not saved for this game.
335: # Leaving this undefined also means the games cannot be spectated.
336: ttyrecdir = "%ruserdata/%n/ttyrec/"
337:
338:
339: # back up savefile
340: commands = cp "/nh343/var/save/%u%n.gz" "/nh343/var/save/%u%n.gz.bak",
341: # set NETHACKOPTIONS to point to the rcfile
342: setenv "NETHACKOPTIONS" "@%ruserdata/%n/%n.nh343rc",
343: # set up nethack mail stuff, assuming it's compiled with it...
344: setenv "MAIL" "/mail/%n",
345: setenv "SIMPLEMAIL" "1",
346: # don't let the mail file grow
347: unlink "/mail/%n"
348: }
349:
350: #
351: # third game
352: #
353: #
354:
355: #DEFINE {
356: # game_path = "/bin/crawlss017"
357: # game_name = "Crawl Stone Soup 0.1.7"
358: # short_name = "Cr017"
359: #
360: # game_args = "/bin/crawlss017",
361: # "-name", "%n",
362: # "-dir", "/crawlss017/",
363: # "-rc", "%rrcfiles/%n.crawlrc",
364: # "-morgue", "/crawlss017/morgues/",
365: # "-macro", "/crawlss017/macros/%n.macro"
366: #
367: # rc_template = "/dgl-default-rcfile.crawl"
368: # rc_fmt = "%rrcfiles/%n.crawlrc"
369: # inprogressdir = "%rinprogress-crawlss017/"
370: # encoding = ask
371: #}
372:
373: #
374: # fourth game
375: #
376: #
377:
378: #DEFINE {
379: # game_path = "/bin/crawlss020"
380: # game_name = "Crawl Stone Soup 0.2.0"
381: # short_name = "Cr020"
382: #
383: # game_args = "/bin/crawlss020",
384: # "-name", "%n",
385: # "-dir", "/crawlss020/",
386: # "-rc", "/crawlss020/plr/%n/%n.crawlrc",
387: # "-morgue", "/crawlss020/plr/%n/",
388: # "-macro", "/crawlss020/plr/%n/"
389: #
390: # rc_template = "/dgl-default-rcfile.crawl"
391: # rc_fmt = "/crawlss020/plr/%n/%n.crawlrc"
392: # inprogressdir = "%rinprogress-crawlss020/"
393: #}
CVSweb