diff dgl/dgamelaunch.conf @ 24:ce26225f7d9d

Switch to the Git version of dgamelaunch.
author John "Elwin" Edwards
date Sun, 20 Oct 2013 17:45:38 -0700
parents f501c8dd6884
children dd72d2dd923f
line wrap: on
line diff
--- a/dgl/dgamelaunch.conf	Sat Oct 05 17:10:24 2013 -0700
+++ b/dgl/dgamelaunch.conf	Sun Oct 20 17:45:38 2013 -0700
@@ -1,4 +1,7 @@
-# rlgallery.org configuration file for dgamelaunch
+# 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:
@@ -6,7 +9,7 @@
 
 # Max amount of registered users to allow. Has no effect if dgl was
 # compiled with SQLite
-maxusers = 4096
+maxusers = 64000
 
 # Allow registration of new nicks? (yes or no)
 allow_new_nicks = yes
@@ -17,23 +20,48 @@
 maxnicklen = 10
 
 # Set the default watching-screen sorting mode. Can be one of
-# "unsorted", "username" or "idletime".  Unsorted is the default.
+# "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"],
+                  ["Started", "starttime", 60, "%s"]
+                ]
+
 # Path to a prepared chroot jail.
-chroot_path = "/var/dgl/"
+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"
+# 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, the topmost line will be
+# 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 the file:
-# $VERSION   replaced with "dgamelaunch v" + dgl version number.
-# $SERVERID  replaced with the server_id string, as defined above.
+# 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
@@ -51,17 +79,39 @@
 #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"
+# 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
@@ -72,6 +122,7 @@
 #   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"
@@ -81,6 +132,7 @@
 #   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
@@ -88,24 +140,41 @@
 #   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
 #
+#  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",
@@ -123,6 +192,9 @@
                   mkdir "%rttyrec/%n/srogue",
                   mkdir "%rttyrec/%n/arogue5"
 
+# file mode for when commands copy files.
+# readable and writable by all. you could use eg. "0644" to be more secure.
+filemode = "0644"
 
 
 
@@ -134,6 +206,7 @@
 # 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
@@ -145,6 +218,17 @@
 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
@@ -170,73 +254,6 @@
 	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"
@@ -305,3 +322,143 @@
 
   commands = cp "/var/games/roguelike/arogue5save/%u-%n.ar5sav" "%rbackup/%u-%n.ar5sav.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/"
+#}