Add dgamelaunch configuration to the project.
This commit is contained in:
parent
4ffd81e3e9
commit
5a8eded910
6 changed files with 396 additions and 0 deletions
308
dgl/dgamelaunch.conf
Normal file
308
dgl/dgamelaunch.conf
Normal file
|
|
@ -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"
|
||||
}
|
||||
1
dgl/dgl-banner
Normal file
1
dgl/dgl-banner
Normal file
|
|
@ -0,0 +1 @@
|
|||
## $SERVERID
|
||||
24
dgl/dgl-common.c.patch
Normal file
24
dgl/dgl-common.c.patch
Normal file
|
|
@ -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, ':');
|
||||
> }
|
||||
19
dgl/dgl_menu_main_anon.txt
Normal file
19
dgl/dgl_menu_main_anon.txt
Normal file
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
=>
|
||||
22
dgl/dgl_menu_main_user.txt
Normal file
22
dgl/dgl_menu_main_user.txt
Normal file
|
|
@ -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
|
||||
|
||||
=>
|
||||
22
dgl/dgl_menu_watchmenu_help.txt
Normal file
22
dgl/dgl_menu_watchmenu_help.txt
Normal file
|
|
@ -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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue