Mercurial > hg > rlgallery-misc
view dgl/dgamelaunch.conf @ 97:fb292a0184d9
Add a page about UltraRogue.
author | John "Elwin" Edwards |
---|---|
date | Mon, 05 Apr 2021 21:57:20 -0400 |
parents | 5f1b4d3151bb |
children |
line wrap: on
line source
# rlgallery.org dgamelaunch configuration file # Global config variables: # Max amount of registered users to allow. Has no effect if dgl was # compiled with SQLite maxusers = 64000 # 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 = 20 # Set the default watching-screen sorting mode. Can be one of # "username", "game", "windowsize", "starttime" or "idletime". # "username" is the default. sortmode = "username" # Set the columns displayed in the watching-screen. Each column definition # must have four elements as: # [ "<display title>", "<sortname>", <Screen column>, "<printf format>" ] # # <sortname> may be "unsorted", "username", "game", "windowsize", "starttime", # "duration", "idletime", or (if shmem is enabled) "watchers". # watch_columns = [ ["", "", 1, "%s)"], ["User", "username", 4, "%-20s"], ["Game", "game", 26, "%-11s"], ["Term", "windowsize", 39, "%s"], ["Idle", "idletime", 48, "%-10s"], ["Started", "starttime", 60, "%s"] ] # Path to a prepared chroot jail. chroot_path = "/var/dgl" # From inside the jail, dgamelaunch's working directory for rcfiles/ttyrec/etc dglroot = "/dgldir/" # Strings to be replaced in every banner # you can have either direct string replacements, like # "$FOO" = "BAR", or you can get the server time with # "$FOO" = timeformat("%F %T") # for the timeformat parameter string format, see man strftime bannervars = [ "$MOTDTIME" = "2011.10.08", "$SERVERID" = "$ATTR(14)Roguelike Gallery - rlgallery.org$ATTR()", "$DATETIME" = timeformat("%F %T") ] # From inside the jail, location of a banner file, which is # shown in submenus that cannot be defined separately. # Some string substitution is done for every banner file contents: # - bannervars from above # - $VERSION replaced with "dgamelaunch v" + dgl version number. # - $USERNAME replaced with logged-in user's name, or with "[Anonymous]" # - $INCLUDE(filename) the named file will be inserted here. 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. # Use names, because the numeric ID's are not really predictable. They can # always be substituted after installation. # shed_user: username to shed privileges to shed_user = "rodney" # shed_group: group name to shed privileges to shed_group = "rodney" # Preferably, you may use the respective gids/uids. #shed_uid = 501 #shed_gid = 501 # Locale. Leaving this out, dgamelaunch will not explicitly set locale. locale = "en_US.UTF-8" # Default TERM, used if the user's $TERM is unknown. # If undefined, dgamelaunch will just terminate in that case. default_term = "xterm" # Should dgl send select-UTF8-charset escape code? (that is: ESC % G) # default is no. #utf8esc = yes # Should dgl allow XON/XOFF? Default is "yes", meaning "don't touch it". # "no" disables XON/XOFF #flowcontrol = no # Maximum time in seconds user can idle in the dgamelaunch menus # before dgl exits. Default value is 0, which disables the idling timer. # Does not apply to external programs or config editors. # For setting game idle time, use max_idle_time in the game DEFINE. # menu_max_idle_time = 1024 # Passwd refers to the file that stores the user database. # The default passwd file is "/dgl-login" for flat-text database, and for # sqlite, whatever value was defined for the sqlite database at compile time. # This is also used for the shared memory key, if shmem is enabled at compile # time. #passwd = "/dgl-login" # Lockfile is used only when dgl was compiled without sqlite. #lockfile = "/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 # gameend = after a game ends (see also per-game "postcommand" define) # # <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 # rawprint "foo" = output string "foo" # 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. # 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 # # NOTE: edit_options-command was removed. use ifnxcp and exec to simulate it. # # 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 # %N = first character of user name, if user is logged in # %u = shed_uid, as defined above, but numeric # %g = game name, if user has selected a game. # %s = short game name, if user has selected a game. # %t = ttyrec path & filename of the last game played. # # Also some escape codes: # \\ = backslash # \a = bell # \b = backspace # \e = escape character # \f = form feed # \n = newline # \r = carriage return # \t = tab # \v = vertical tab # # eg. commands[login] = mkdir "foo", unlink "bar", setenv "Z" "foo" # # Change the terminal title: (assuming terminals support the escape code) #commands[dglstart] = rawprint "\e]2;nethack.alt.org\a" # 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", mkdir "%rttyrec/%n/arogue7", mkdir "%rttyrec/%n/xrogue" # TODO ensure they exist for existing users 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", mkdir "%rttyrec/%n/arogue7", mkdir "%rttyrec/%n/xrogue" # file mode for when commands copy files. # readable and writable by all. you could use eg. "0644" to be more secure. filemode = "0644" # 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" 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. # Some string subsitutions can be done in the file: # $INCLUDE(filename) = includes the file to this file. # String substitutions defined in bannervars-section above. # $VERSION = dgamelaunch version # $USERNAME = user name (or [Anonymous] if not logged in) # $ATTR(params) = change text color and attributes. # params can be either number (to set the text color), # one, or any of "b" (bold), "s" (standout), "u" (underline), # "r" (reverse) or "d" (dim), # or both color number and attribute characters, separated by colon. # Empty param resets color and attributes to default. 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 "RogueV3" commands["4"] = play_game "RogueV4" commands["5"] = play_game "RogueV5" commands["Ss"] = play_game "SRogue" commands["Aa"] = play_game "ARogue5" commands["7"] = play_game "ARogue7" commands["Xx"] = play_game "XRogue" 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 } # Rogue V3: short and simple, like the game DEFINE { game_path = "/usr/bin/rogue3" game_name = "Rogue V3 (3.6)" short_name = "RogueV3" game_args = "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 = "/usr/bin/rogue4" game_name = "Rogue V4 (5.2)" short_name = "RogueV4" game_args = "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 = "/usr/bin/rogue5" game_name = "Rogue V5 (5.4)" short_name = "RogueV5" game_args = "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 = "/usr/bin/srogue" game_name = "Super-Rogue" short_name = "SRogue" game_args = "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 = "/usr/bin/arogue5" game_name = "Advanced Rogue 5" short_name = "ARogue5" game_args = "arogue5", "-n", "%n" inprogressdir = "%rinprogress/arogue5/" ttyrecdir = "%rttyrec/%n/arogue5/" commands = cp "/var/games/roguelike/arogue5save/%u-%n.ar5sav" "%rbackup/%u-%n.ar5sav.bak" } # Advanced Rogue 7 DEFINE { game_path = "/usr/bin/arogue7" game_name = "Advanced Rogue 7" short_name = "ARogue7" game_args = "arogue7", "-n", "%n" inprogressdir = "%rinprogress/arogue7/" ttyrecdir = "%rttyrec/%n/arogue7/" commands = cp "/var/games/roguelike/arogue7save/%u-%n.ar7sav" "%rbackup/%u-%n.ar7sav.bak" } # XRogue DEFINE { game_path = "/usr/bin/xrogue" game_name = "XRogue" short_name = "XRogue" game_args = "xrogue", "-n", "%n" inprogressdir = "%rinprogress/xrogue/" ttyrecdir = "%rttyrec/%n/xrogue/" commands = cp "/var/games/roguelike/xroguesave/%u-%n.xrsav" "%rbackup/%u-%n.xrsav.bak" } # 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" # # # If player idles longer than max_idle_time seconds, the game will # # receive a sighup. Default value is 0, which disables the idling timer. # max_idle_time = 2000 # # # Player-specific path to an extra information file written by the game # # The game should write the extra information on one line in this format: # # <numeric-weight>|extra-information # # For example, the game might write: "100|Astral", "1|D:1", etc. to indicate # # where the player is in the game world. The numeric weight is used when # # a spectator sorts games by the extra information field: higher weights # # will be sorted to appear before lower weights. # # # extra_info_file = "%rgamedir/%n.extrainfo" # # # 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" # # # We can also define per-game commands executed after the game ends, # # but before commands[gameend] # postcommands = chdir "/" # # # If the game uses an ancient encoding, you may specify "ibm" or "dec". # # If set to "ask", the game will be run with --print-charset beforehand, # # expected to return one of these values. # encoding = "unicode" #} # # the second game # # #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" #} # # third game # # #DEFINE { # game_path = "/bin/crawlss017" # game_name = "Crawl Stone Soup 0.1.7" # short_name = "Cr017" # # game_args = "/bin/crawlss017", # "-name", "%n", # "-dir", "/crawlss017/", # "-rc", "%rrcfiles/%n.crawlrc", # "-morgue", "/crawlss017/morgues/", # "-macro", "/crawlss017/macros/%n.macro" # # rc_template = "/dgl-default-rcfile.crawl" # rc_fmt = "%rrcfiles/%n.crawlrc" # inprogressdir = "%rinprogress-crawlss017/" # encoding = ask #} # # fourth game # # #DEFINE { # game_path = "/bin/crawlss020" # game_name = "Crawl Stone Soup 0.2.0" # short_name = "Cr020" # # game_args = "/bin/crawlss020", # "-name", "%n", # "-dir", "/crawlss020/", # "-rc", "/crawlss020/plr/%n/%n.crawlrc", # "-morgue", "/crawlss020/plr/%n/", # "-macro", "/crawlss020/plr/%n/" # # rc_template = "/dgl-default-rcfile.crawl" # rc_fmt = "/crawlss020/plr/%n/%n.crawlrc" # inprogressdir = "%rinprogress-crawlss020/" #}