]> skyeroc.xyz Git - dgamelaunch/commitdiff
Add dgamelaunch.conf.orig
authorsbkelley <sb24kelley@gmail.com>
Mon, 1 Jun 2026 20:59:43 +0000 (16:59 -0400)
committersbkelley <sb24kelley@gmail.com>
Mon, 1 Jun 2026 20:59:43 +0000 (16:59 -0400)
examples/dgamelaunch.conf.orig [new file with mode: 0644]

diff --git a/examples/dgamelaunch.conf.orig b/examples/dgamelaunch.conf.orig
new file mode 100644 (file)
index 0000000..187d526
--- /dev/null
@@ -0,0 +1,450 @@
+# This is a sample dgamelaunch configuration file. Only bash-style comments
+# are allowed, such as this. Each configuration option will be explained
+# along with its default value.
+
+
+
+# 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 = 10
+
+# 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, "%-15s"],
+#                   ["Game", "game", 21, "%-11s"],
+#                   ["Term", "windowsize", 34, "%s"],
+#                   ["Idle", "idletime", 43, "%-10s"],
+#                   ["Watchers", "watchers", 55, "%5s"],
+#                   ["Started", "starttime", 65, "%s"]
+#                 ]
+
+# Path to a prepared chroot jail.
+chroot_path = "/opt/nethack/nethack.alt.org/"
+
+# 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)nethack.alt.org - http://nethack.alt.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 = "/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:
+shed_uid = 5
+shed_gid = 60
+
+# 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)
+#   play_if_exist "foo" "file" = start game "foo", if file "file" exists.
+#   submenu "foo"      = go to submenu "foo"
+#   return             = return from submenu
+#   sleep "foo"        = sleep for "foo" seconds
+#   ifnxsleep "foo" "file" = sleep for "foo" seconds if file "file" does not exist.
+#
+#  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, or user being watched.
+#   %l = user nick, if logged in, otherwise empty string.
+#   %w = user selected from the watch menu (or logged in user if no user selected)
+#   %N, %L, %W = first character of the above
+#   %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 "%ruserdata/%n/dumplog",
+                     mkdir "%ruserdata/%n/ttyrec"
+
+commands[login] = mkdir "%ruserdata/%n",
+                     mkdir "%ruserdata/%n/dumplog",
+                     mkdir "%ruserdata/%n/ttyrec"
+
+# file mode for when commands copy files.
+# readable and writable by all. you could use eg. "0644" to be more secure.
+filemode = "0666"
+
+
+
+
+# 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 = "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.
+# 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 = "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["o"] = ifnxcp "/dgl-default-rcfile.nh343" "%ruserdata/%n/%n.nh343rc",
+                       exec "/bin/virus" "%ruserdata/%n/%n.nh343rc"
+        commands["p"] = play_game "NH343"
+        commands["q"] = quit
+}
+
+# this menu is shown when user presses '?' in the watching menu
+menu["watchmenu_help"] {
+       bannerfile = "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"
+#
+#  # Game ID - should be unique. Defaults to game_name, if not defined.
+#  # Used to determine which game is which for "play_game" and "play_if_exists" commands
+#  game_id = "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"
+#}
+
+#
+# fiqhack example - showing watch mode options
+#
+#
+
+#DEFINE {
+#  game_path = "/fiqhackdir/fiqhack"
+#  game_name = "FIQHack 4.3.0"
+#  short_name = "fiqhack"
+#
+#  game_args = "/fiqhackdir/fiqhack",
+#              "-H", "/fiqhackdir/data",
+#              "-U", "%ruserdata/%N/%n/fiqhack"
+#
+#  spooldir = "/mail/"
+#  #rc_template = "/dgl-default-rcfile.gh"
+#
+#  #rc_fmt = "%ruserdata/%N/%n/%n.ghrc"
+#
+#  inprogressdir = "%rinprogress-fh/"
+#  extra_info_file = "%rextrainfo-fh/%n.extrainfo"
+#
+#  # The place where ttyrecs are stored for this game.
+#  # If this is not defined, ttyrecs are not saved for this game.
+#  # ttyrecs are not necessary for spectating if watch_path is configured.
+#  ttyrecdir = "%ruserdata/%N/%n/ttyrec/"
+#
+#
+#  commands = setenv "NH4SERVERUSER" "%n",
+#             setenv "NHMAILBOX" "/mail/%n",
+#             setenv "SIMPLEMAIL" "1",
+#             unlink "/mail/%n"
+#
+#  # The executable to use for watching instead of the built-in ttyrec player
+#  watch_path = "/fiqhackdir/fiqhack"
+#
+#  # The args to call it with. As with game_args, argv[0] needs to be included
+#  watch_args = "/fiqhackdir/fiqhack",
+#               "-H", "/fiqhackdir/data",
+#               # we use %n here so anonymous viewers can inherit the config
+#               # of the player. The watch program needs to ensure the watcher
+#               # can't modify anything in here that would affect the player.
+#               "-U", "%ruserdata/%N/%n/fiqhack",
+#               # %w is the player to watch
+#               "-W", "%ruserdata/%W/%w/fiqhack"
+#
+#  # these are run before watching commences.
+#  # Use %l so the watching program knows if the watcher is logged in.
+#  # The watching program should disable mail for anonymous watchers.
+#  watchcommands = setenv "NH4SERVERUSER" "%w",
+#                  setenv "NH4WATCHER" "%l",
+#                  setenv "NHMAILBOX" "/mail/%w"
+#}
+
+#
+# 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/"
+#}