Mercurial > hg > rlgallery-misc
changeset 14:9945b472aac2
Add dgamelaunch configuration to the project.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Sat, 15 Sep 2012 08:46:06 -0700 |
parents | d34f2e40e67d |
children | f501c8dd6884 |
files | dgl/dgamelaunch.conf dgl/dgl-banner dgl/dgl-common.c.patch dgl/dgl_menu_main_anon.txt dgl/dgl_menu_main_user.txt dgl/dgl_menu_watchmenu_help.txt |
diffstat | 6 files changed, 396 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgamelaunch.conf Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,308 @@ +# rlgallery.org configuration file for dgamelaunch + + +# Global config variables: + + +# Max amount of registered users to allow. Has no effect if dgl was +# compiled with SQLite +maxusers = 4096 + +# Allow registration of new nicks? (yes or no) +allow_new_nicks = yes + +# Max length for newly registered nicks. Must be less than 20. +# By default, NetHack only stores the first 10 chars of a name into +# the record/logfile. +maxnicklen = 10 + +# Set the default watching-screen sorting mode. Can be one of +# "unsorted", "username" or "idletime". Unsorted is the default. +sortmode = "username" + +# Path to a prepared chroot jail. +chroot_path = "/var/dgl/" + +# From inside the jail, dgamelaunch's working directory for rcfiles/ttyrec/etc +dglroot = "/dgldir/" + +# Server ID string +server_id = "Roguelike Gallery - rlgallery.org" + +# From inside the jail, location of a banner file, the topmost line will be +# shown in submenus that cannot be defined separately. +# Some string substitution is done for the file: +# $VERSION replaced with "dgamelaunch v" + dgl version number. +# $SERVERID replaced with the server_id string, as defined above. +banner = "/dgldir/dgl-banner" + +# The following two options are fairly insecure. They will force us to +# load the password/group database into memory while still having root +# privileges. Replace them with shed_uid/shed_gid entries as soon as +# possible if you decide to use them. dgamelaunch will inform you of +# the uids/gids corresponding to your choices when it loads. +# +# Note that shed_uid and shed_gid will always take precedence over +# shed_user and shed_group if they are specified. + +# shed_user: username to shed privileges to +#shed_user = "games" +# shed_group: group name to shed privileges to +#shed_group = "games" + +# Preferably, you may use the respective gids/uids. This is for Debian: +# Use the rodney account instead of games:games +shed_uid = 501 +shed_gid = 501 + +# The defaults are usually just fine for this. passwd refers to the file +# that stores the user database, and lockfile is only used internally by +# dgamelaunch. +# passwd doesn't matter if dgl was compiled with SQLite, as the name of +# the sqlite database will be defined at compile time. +passwd = "/dgldir/dgl-login" +lockfile = "/dgldir/dgl-lock" + +# +# define some commands that are run when something happens. format is +# commands [ <time> ] = <command> ... +# +# <time> can be one of: +# dglstart = when someone telnets in +# login = when user has logged in +# register = right after a new user is registered +# gamestart = just before a game is started +# +# <command> is: +# mkdir "foo" = create a directory "foo" +# chdir "foo" = change current work dir to "foo" +# cp "foo" "bar" = copy file "foo" to "bar", overwriting previous "bar" +# ifnxcp "foo" "bar" = copy file "foo" to "bar", if "bar" doesn't exist +# unlink "foo" = delete file "foo" +# setenv "foo" "bar" = set environment variable "foo" to "bar" +# exec "foo" "bar" = execute "foo" with "bar" as it's param +# chpasswd = do the change password prompting, if logged in +# chmail = do the change email prompting, if logged in +# watch_menu = go to the watching menu +# quit = quit dgl +# ask_login = do the login prompting, if not logged in +# ask_register = do register new user prompting, if not logged in and +# registration of new nicks is allowed. +# edit_options "foo" = edit options for game which has the short name "foo" +# (user must be logged in) +# play_game "foo" = start game which has the short name "foo" +# (user must be logged in) +# submenu "foo" = go to submenu "foo" +# return = return from submenu +# +# The commands will be done inside the chroot and with the uid and gid +# defined above. +# Parameters to the commands are subject to variable substitution: +# %r = dglroot, as defined above +# %n = user nick, if user is logged in +# %u = shed_uid, as defined above, but numeric +# %g = game name, if user has selected a game. +# +# eg. commands[login] = mkdir "foo", unlink "bar", setenv "Z" "foo" +# + +# create the user's dirs when they register +commands[register] = mkdir "%ruserdata/%n", + mkdir "%rttyrec/%n", + mkdir "%rttyrec/%n/rogue3", + mkdir "%rttyrec/%n/rogue4", + mkdir "%rttyrec/%n/rogue5", + mkdir "%rttyrec/%n/srogue", + mkdir "%rttyrec/%n/arogue5" + +commands[login] = mkdir "%ruserdata/%n", + mkdir "%rttyrec/%n", + mkdir "%rttyrec/%n/rogue3", + mkdir "%rttyrec/%n/rogue4", + mkdir "%rttyrec/%n/rogue5", + mkdir "%rttyrec/%n/srogue", + mkdir "%rttyrec/%n/arogue5" + + + + + +# Define the main menus. +# You _must_ define "mainmenu_anon" and "mainmenu_user". +# $VERSION and $SERVERID will be replaced, as per the bannerfile above. + +# First, the menu shown to anonymous user: +menu["mainmenu_anon"] { + bannerfile = "/dgldir/dgl_menu_main_anon.txt" + cursor = (5,18) + commands["l"] = ask_login + commands["r"] = ask_register + commands["w"] = watch_menu + commands["q"] = quit +} + +# Then the menu shown when the user has logged in: +# $USERNAME in here will be replaced with the user name. +menu["mainmenu_user"] { +# contents of this file are written to screen. +# the file must be inside the chroot. + bannerfile = "/dgldir/dgl_menu_main_user.txt" +# after which cursor is moved to this location +# if cursor-definition is missing, the cursor is put +# to the end of the last line of the banner. +# cursor = (5,18) +# keys we accept. format is +# commands["string_of_keys"] = <commandlist> +# for example, you could use commands["qQ"] = quit + commands["c"] = chpasswd + commands["e"] = chmail + commands["w"] = watch_menu + commands["3"] = play_game "RogV3" + commands["4"] = play_game "RogV4" + commands["5"] = play_game "RogV5" + commands["Ss"] = play_game "SRog" + commands["Aa"] = play_game "ARog5" + commands["q"] = quit +} + +# this menu is shown when user presses '?' in the watching menu +menu["watchmenu_help"] { + bannerfile = "/dgldir/dgl_menu_watchmenu_help.txt" + commands["qQ "] = return +} + + +# Next, we'll define one game's data: + +#DEFINE { +# # From inside the jail, the location of the binary to be launched. +# game_path = "/bin/nethackstub" +# +# # Full name of the game +# game_name = "NetHack stub" +# +# # Short name, used in the watching menu +# short_name = "NHstb" +# +# # arguments for when we exec the binary +# game_args = "/bin/nethackstub", +# "foo", +# "user:%n", +# "shed_uid:%u", +# "bar" +# +# # From inside the jail, where dgamelaunch should put mail. +# spooldir = "/var/mail/" +# +# # From inside the jail, the default .nethackrc that is copied for new users. +# # rc_template = "/dgl-default-rcfile" +# +# # Make sure the inprogress dir actually exists. default is "inprogress/" +# # Each game you define here must have it's own. +# inprogressdir = "%rinprogress-nethackstub/" +# +# # We can also define per-game commands, that are executed +# # when the game starts: +# # commands = chdir "/dgldir", mkdir "foo_%u_%g" +#} + + +#DEFINE { +# game_path = "/nh343/nethack" +# game_name = "NetHack 3.4.3" +# short_name = "NH343" +# +# game_args = "/nh343/nethack", "-u", "%n" +# +# spooldir = "/mail/" +# rc_template = "/dgl-default-rcfile.nh343" +# +# rc_fmt = "%ruserdata/%n/%n.nh343rc" +# +# inprogressdir = "%rinprogress-nh343/" +# +## The place where ttyrecs are stored for this game. +## If this is not defined, ttyrecs are not saved for this game. +## Leaving this undefined also means the games cannot be spectated. +# ttyrecdir = "%ruserdata/%n/ttyrec/" +# +# +# # back up savefile +# commands = cp "/nh343/var/save/%u%n.gz" "/nh343/var/save/%u%n.gz.bak", +# # set NETHACKOPTIONS to point to the rcfile +# setenv "NETHACKOPTIONS" "@%ruserdata/%n/%n.nh343rc", +# # set up nethack mail stuff, assuming it's compiled with it... +# setenv "MAIL" "/mail/%n", +# setenv "SIMPLEMAIL" "1", +# # don't let the mail file grow +# unlink "/mail/%n" +#} + +# Rogue V3: short and simple, like the game +DEFINE { + game_path = "/bin/rogue3" + game_name = "Rogue V3 (3.6)" + short_name = "RogV3" + + game_args = "/bin/rogue3", "-n", "%n" + + inprogressdir = "%rinprogress-rogue3/" + ttyrecdir = "%rttyrec/%n/rogue3/" + + # Don't do anything with rcfiles. Rogue has none. + + # Back up the savefile, just in case + commands = cp "/var/games/roguelike/rogue3save/%u-%n.r3sav" "%rbackup/%u-%n.r3sav.bak" +} + +# Rogue V4: just like it, but a little different +DEFINE { + game_path = "/bin/rogue4" + game_name = "Rogue V4 (5.2)" + short_name = "RogV4" + + game_args = "/bin/rogue4", "-n", "%n" + inprogressdir = "%rinprogress-rogue4/" + ttyrecdir = "%rttyrec/%n/rogue4/" + + commands = cp "/var/games/roguelike/rogue4save/%u-%n.r4sav" "%rbackup/%u-%n.r4sav.bak" +} + +# Rogue V5: a little more different from both +DEFINE { + game_path = "/bin/rogue5" + game_name = "Rogue V5 (5.4)" + short_name = "RogV5" + + game_args = "/bin/rogue5", "-n", "%n" + inprogressdir = "%rinprogress-rogue5/" + ttyrecdir = "%rttyrec/%n/rogue5/" + + commands = cp "/var/games/roguelike/rogue5save/%u-%n.r5sav" "%rbackup/%u-%n.r5sav.bak" +} + +# Super-Rogue: different? +DEFINE { + game_path = "/bin/srogue" + game_name = "Super-Rogue" + short_name = "SRog" + + game_args = "/bin/srogue", "-n", "%n" + inprogressdir = "%rinprogress-srogue/" + ttyrecdir = "%rttyrec/%n/srogue/" + + commands = cp "/var/games/roguelike/sroguesave/%u-%n.srsav" "%rbackup/%u-%n.srsav.bak" +} + +# Advanced Rogue 5: not different? +DEFINE { + game_path = "/bin/arogue5" + game_name = "Advanced Rogue 5" + short_name = "ARog5" + + game_args = "/bin/arogue5", "-n", "%n" + inprogressdir = "%rinprogress-arogue5/" + ttyrecdir = "%rttyrec/%n/arogue5/" + + commands = cp "/var/games/roguelike/arogue5save/%u-%n.ar5sav" "%rbackup/%u-%n.ar5sav.bak" +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgl-banner Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,1 @@ +## $SERVERID
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgl-common.c.patch Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,24 @@ +504c504 +< int fd, len, n, is_nhext, pid; +--- +> int fd, len, n, is_nhext, is_node, pid; +538a539 +> is_node = strchr(pdirent->d_name, ':') && !strncmp(strchr(pdirent->d_name, ':'), ":node:", 6); +550c551 +< if (fd >= 0 && (is_nhext || fcntl (fd, F_SETLK, &fl) == -1)) +--- +> if (fd >= 0 && (is_nhext || is_node || fcntl (fd, F_SETLK, &fl) == -1)) +567a569,576 +> if (is_node) { +> replacestr = strchr(replacestr, ':'); +> if (!replacestr) { +> debug_write("inprogress-filename does not have ':', 1a"); +> graceful_exit(145); +> } +> replacestr++; +> } +589a599,602 +> if (is_node) { +> replacestr++; +> replacestr = strchr(replacestr, ':'); +> }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgl_menu_main_anon.txt Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,19 @@ + ## $SERVERID + ## + ## $VERSION - network console game launcher + ## Copyright (c) 2000-2009 The Dgamelaunch Team + ## See http://nethack.wikia.com/wiki/dgamelaunch for more info + ## + ## Games on this server are recorded for in-progress viewing and playback! + ## Contact: elwin@sdf.org + + Not logged in. + + l) Login + r) Register new user + w) Watch games in progress + q) Quit + + + + =>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgl_menu_main_user.txt Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,22 @@ + ## $SERVERID + ## + ## $VERSION - network console game launcher + ## Copyright (c) 2000-2009 The Dgamelaunch Team + ## See http://nethack.wikia.com/wiki/dgamelaunch for more info + ## + ## Games on this server are recorded for in-progress viewing and playback! + ## Contact: elwin@sdf.org + + Logged in as: $USERNAME + + c) Change password + e) Change email address + w) Watch games in progress + 3) Play Rogue V3 (3.6) + 4) Play Rogue V4 (5.2) + 5) Play Rogue V5 (5.4) + S) Play Super-Rogue + A) Play Advanced Rogue 5 + q) Quit + + =>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dgl/dgl_menu_watchmenu_help.txt Sat Sep 15 08:46:06 2012 -0700 @@ -0,0 +1,22 @@ +## $SERVERID + + Help for watching-menu + ---------------------- + ? show this help. + > < next/previous page. + . change sorting method. + q Q return to main menu. + a-zA-Z select a game to watch. + * start showing a randomly selected game. + enter start watching already selected game. + + + While watching a game + --------------------- + q return back to the watching menu. + m send mail to the player (requires login). + s toggle charset stripping between DEC/IBM/none. + r resize your terminal to match the player's terminal. + + + Press 'q' or space to return to the watching menu.