Matthew Faltys
5 years ago
commit
d31638d191
7 changed files with 533 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||||||
|
OS_PERMS=sudo
|
||||||
|
IMAGE_NAME=nethack-server
|
||||||
|
NETHACK_DIR=$(shell pwd)/savedata
|
||||||
|
|
||||||
|
all: run |
||||||
|
|
||||||
|
run: savedata |
||||||
|
$(OS_PERMS) docker run \
|
||||||
|
-d \
|
||||||
|
-p 23:23 \
|
||||||
|
-v $(NETHACK_DIR)/var:/opt/nethack/nethack.alt.org/nh343/var:rw \
|
||||||
|
-v $(NETHACK_DIR)/dgldir:/opt/nethack/nethack.alt.org/dgldir:rw \
|
||||||
|
--name=nethack \
|
||||||
|
--restart always \
|
||||||
|
$(IMAGE_NAME)
|
||||||
|
|
||||||
|
|
||||||
|
build: |
||||||
|
mkdir -p stage.tmp/
|
||||||
|
cp deps/chowner.sh stage.tmp/
|
||||||
|
cp deps/dgamelaunch.conf stage.tmp/
|
||||||
|
cp deps/Dockerfile stage.tmp/
|
||||||
|
cp deps/run.sh stage.tmp/
|
||||||
|
cd stage.tmp/ && \
|
||||||
|
$(OS_PERMS) docker build -t $(IMAGE_NAME) .
|
||||||
|
|
||||||
|
savedata: |
||||||
|
tar -xzf deps/initial_savedata.tar.gz
|
||||||
|
|
||||||
|
clean: |
||||||
|
rm -rf stage.tmp/
|
@ -0,0 +1,73 @@ |
|||||||
|
FROM debian |
||||||
|
|
||||||
|
RUN \ |
||||||
|
apt-get update && \ |
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y autoconf bison \ |
||||||
|
bsdmainutils flex gcc git groff libncursesw5-dev libsqlite3-dev make \ |
||||||
|
ncurses-dev sqlite3 tar telnetd xinetd locales && \ |
||||||
|
apt-get clean |
||||||
|
|
||||||
|
RUN locale-gen en_US.UTF-8 |
||||||
|
|
||||||
|
RUN git clone git://github.com/paxed/dgamelaunch.git && \ |
||||||
|
cd dgamelaunch && \ |
||||||
|
sed -i \ |
||||||
|
-e "s/-lrt/-lrt -pthread/" \ |
||||||
|
configure.ac && \ |
||||||
|
sed -i \ |
||||||
|
-e "/^maxnicklen/s/=.*/= 20/" \ |
||||||
|
-e "/game_\(path\|args\)/s/nethack/nethack.343-nao/" \ |
||||||
|
-e "/^commands\[\(register\|login\)\]/s/=\(.*\)/= mkdir \"%ruserdata\/%N\",\n\1/" \ |
||||||
|
-e "s:/%n:/%N/%n:" \ |
||||||
|
examples/dgamelaunch.conf && \ |
||||||
|
./autogen.sh \ |
||||||
|
--enable-sqlite \ |
||||||
|
--enable-shmem \ |
||||||
|
--with-config-file=/opt/nethack/nethack.alt.org/etc/dgamelaunch.conf && \ |
||||||
|
make && \ |
||||||
|
./dgl-create-chroot && \ |
||||||
|
cd .. && \ |
||||||
|
rm -rf dgamelaunch |
||||||
|
|
||||||
|
RUN git clone http://alt.org/nethack/nh343-nao.git && \ |
||||||
|
cd nh343-nao && \ |
||||||
|
sed -i \ |
||||||
|
-e "/^CFLAGS/s/-O/-O2 -fomit-frame-pointer/" \ |
||||||
|
sys/unix/Makefile.src && \ |
||||||
|
sed -i \ |
||||||
|
-e "/rmdir \.\/-p/d" \ |
||||||
|
sys/unix/Makefile.top && \ |
||||||
|
sed -i \ |
||||||
|
-e "/^CFLAGS/s/-O/-O2 -fomit-frame-pointer/" \ |
||||||
|
sys/unix/Makefile.utl && \ |
||||||
|
make all && \ |
||||||
|
make install && \ |
||||||
|
cd .. && \ |
||||||
|
rm -rf nh343-nao |
||||||
|
|
||||||
|
RUN tar cf - \ |
||||||
|
/lib/x86_64-linux-gnu/libncurses* \ |
||||||
|
| tar xf - -C /opt/nethack/nethack.alt.org/ |
||||||
|
|
||||||
|
RUN ( \ |
||||||
|
echo "service telnet" && \ |
||||||
|
echo "{" && \ |
||||||
|
echo " socket_type = stream" && \ |
||||||
|
echo " protocol = tcp" && \ |
||||||
|
echo " user = root" && \ |
||||||
|
echo " wait = no" && \ |
||||||
|
echo " server = /usr/sbin/in.telnetd" && \ |
||||||
|
echo " server_args = -L /opt/nethack/nethack.alt.org/dgamelaunch" && \ |
||||||
|
echo " rlimit_cpu = 120" && \ |
||||||
|
echo "}" \ |
||||||
|
) > /etc/xinetd.d/dgl |
||||||
|
|
||||||
|
#VOLUME ["/opt/nethack/nethack.alt.org/nh343/var", "/opt/nethack/nethack.alt.org/dgldir"] |
||||||
|
COPY dgamelaunch.conf /opt/nethack/nethack.alt.org/etc/dgamelaunch.conf |
||||||
|
COPY chowner.sh / |
||||||
|
COPY run.sh / |
||||||
|
|
||||||
|
EXPOSE 23 |
||||||
|
|
||||||
|
#CMD ["xinetd", "-dontfork"] |
||||||
|
CMD ["/run.sh"] |
@ -0,0 +1,8 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
while : |
||||||
|
do |
||||||
|
chown -R games:games /opt/nethack/nethack.alt.org/nh343/var 2> /dev/null |
||||||
|
chown -R games:games /opt/nethack/nethack.alt.org/dgldir 2> /dev/null |
||||||
|
sleep 3 |
||||||
|
done |
@ -0,0 +1,399 @@ |
|||||||
|
# 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 = 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, "%-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)unixvoid.com - underground nethack server$ATTR()", |
||||||
|
"$DATETIME" = timeformat("%F %T") |
||||||
|
] |
||||||
|
#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 |
||||||
|
# |
||||||
|
# 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 "%ruserdata/%N/%n", |
||||||
|
mkdir "%ruserdata/%N/%n/dumplog", |
||||||
|
mkdir "%ruserdata/%N/%n/ttyrec" |
||||||
|
|
||||||
|
commands[login] = mkdir "%ruserdata/%N", |
||||||
|
mkdir "%ruserdata/%N/%n", |
||||||
|
mkdir "%ruserdata/%N/%n/dumplog", |
||||||
|
mkdir "%ruserdata/%N/%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/%n.nh343rc", |
||||||
|
exec "/bin/virus" "%ruserdata/%N/%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/nethack.343-naostub" |
||||||
|
# |
||||||
|
# # 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/nethack.343-naostub", |
||||||
|
# "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/%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.343-nao" |
||||||
|
game_name = "NetHack 3.4.3" |
||||||
|
short_name = "NH343" |
||||||
|
|
||||||
|
game_args = "/nh343/nethack.343-nao", "-u", "%n" |
||||||
|
|
||||||
|
spooldir = "/mail/" |
||||||
|
rc_template = "/dgl-default-rcfile.nh343" |
||||||
|
|
||||||
|
rc_fmt = "%ruserdata/%N/%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/%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/%n.nh343rc", |
||||||
|
# set up nethack mail stuff, assuming it's compiled with it... |
||||||
|
setenv "MAIL" "/mail/%N/%n", |
||||||
|
setenv "SIMPLEMAIL" "1", |
||||||
|
# don't let the mail file grow |
||||||
|
unlink "/mail/%N/%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/%n.crawlrc", |
||||||
|
# "-morgue", "/crawlss017/morgues/", |
||||||
|
# "-macro", "/crawlss017/macros/%N/%n.macro" |
||||||
|
# |
||||||
|
# rc_template = "/dgl-default-rcfile.crawl" |
||||||
|
# rc_fmt = "%rrcfiles/%N/%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/%n.crawlrc", |
||||||
|
# "-morgue", "/crawlss020/plr/%N/%n/", |
||||||
|
# "-macro", "/crawlss020/plr/%N/%n/" |
||||||
|
# |
||||||
|
# rc_template = "/dgl-default-rcfile.crawl" |
||||||
|
# rc_fmt = "/crawlss020/plr/%N/%n/%n.crawlrc" |
||||||
|
# inprogressdir = "%rinprogress-crawlss020/" |
||||||
|
#} |
Binary file not shown.
@ -0,0 +1,18 @@ |
|||||||
|
#!/bin/bash |
||||||
|
NETHACK_DIR=/home/admin/nethack-server/savedata |
||||||
|
|
||||||
|
sudo docker run \ |
||||||
|
-d \ |
||||||
|
-p 23:23 \ |
||||||
|
-v $NETHACK_DIR/var:/opt/nethack/nethack.alt.org/nh343/var:rw \ |
||||||
|
-v $NETHACK_DIR/dgldir:/opt/nethack/nethack.alt.org/dgldir:rw \ |
||||||
|
--name=nethack \ |
||||||
|
nethack-server |
||||||
|
|
||||||
|
#--user 5:60 \ |
||||||
|
#-v $NETHACK_DIR/var:/opt/nethack/nethack.alt.org/nh343/var:rw \ |
||||||
|
#-v $NETHACK_DIR/dgldir:/opt/nethack/nethack.alt.org/dgldir:rw \ |
||||||
|
#-v /tmp/nethack:/tmp/nethack:rw \ |
||||||
|
|
||||||
|
#--mount type=bind,source=$NETHACK_DIR/dgldir,target=/opt/nethack/nethack.alt.org/dgldir \ |
||||||
|
#--mount type=bind,source=$NETHACK_DIR/var,target=/opt/nethack/nethack.alt.org/nh343/var \ |
Loading…
Reference in new issue