]> skyeroc.xyz Git - dgamelaunch/commitdiff
Merge branch 'install-dgl-nh500' into new-master
authorsbkelley <sb24kelley@gmail.com>
Mon, 1 Jun 2026 20:47:29 +0000 (16:47 -0400)
committersbkelley <sb24kelley@gmail.com>
Mon, 1 Jun 2026 20:47:29 +0000 (16:47 -0400)
1  2 
README.bak

diff --cc README.bak
index 0000000000000000000000000000000000000000,2ecc7ef030b4fc9a1a8d01b8ac7ac13cb5508110..241b804aa44690645a80735d7923527ee0374923
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,246 +1,247 @@@
+ dgamelaunch
+ ===========
+ dgamelaunch is a network-based game shell where anyone can sign up for an
+ account and start playing any game which suits your fancy - games known to
+ work with dgamelaunch are for example NetHack (http://www.nethack.org) and
+ Crawl (http://crawl.develz.org).
+ DGAMELAUNCH VERSIONS
+ ====================
+ Development version can be fetched from the source repository with git:
+   git clone git://github.com/paxed/dgamelaunch.git
+ Releases are downloadable at http://alt.org/nethack/dgamelaunch/
+ REQUIREMENTS
+ ============
+ - normal development tools (make, etc)
+ - autotools (autogen, autoconf, automake)
+ - ncurses library and development files
+ - bison (or yacc or byacc)
+ - flex (or lex)
+ - optionally sqlite3 library and development files
+ COMPILING
+ =========
+ Basically all you have to do is:
+   ./autogen.sh && make
+ Some options you might want give to autogen:
+  --with-config-file=/absolute/path/to/dgamelaunch.config
+  --enable-shmem
+  --enable-sqlite
+ Dgamelaunch should compile without issue on Linux, Solaris, FreeBSD 4 and 5.
+ (Whether it _runs_ on all of these platforms is a different issue. We'd
+ like to hear about it.)
+ dgamelaunch was originally developed by M. Drew Streib <dtype@dtype.org> but
+ is now a collaborative project. Copyright and contact information is in the
+ COPYING file, included with this package.
+ BASIC SETUP INSTRUCTIONS
+ ========================
+ These instructions are not current. For a more up-to-date ones, see
+ http://nethackwiki.com/wiki/User:Paxed/HowTo_setup_dgamelaunch
+ 1) Setup a chroot jail. There is a helpful script included to accomplish this,
+ called dgl-create-chroot, in the source directory. The default settings are
+ viewable by editing the script; to customize the installation, look at
+ dgl-create-chroot.conf.example.* (also in the source directory) and edit it to
+ suit your needs, and save it into the same directory as dgl-create-chroot as
+ dgl-create-chroot.conf. It's very likely you need to run the script as root.
+ The script will not work with the very limited System V /bin/sh, such found on
+ Solaris; start it with ksh instead.
+ If you decide to not use dgl-create-chroot, you're on your own and we assume
+ you have enough clue to figure out exactly what's needed for the chroot to
+ operate correctly.
+ 2) Compile nethack. Make sure the directories in the chroot match up with
+ where nethack thinks everything is. You may need to edit the VAR_PLAYGROUND
+ variable in include/unixconf.h and/or the HACKDIR variable in include/config.h.
+ (Note: Try not to, for security, to put anything else in the chroot. You may
+ need to put gzip in there though if you compile nethack to use it for 
+ compression.)
+ 3) Make a copy of dgamelaunch.conf and edit it. This will contain information
+ for dgamelaunch about what uid/username, gid/group to shed privileges to at
+ runtime. It must also contain the path to nethack, and needs to know certain
+ aspects of your chroot.
+ Note that using a username in dgamelaunch.conf will cause (part of) your
+ passwd database to be loaded into dgamelaunch's memory space. If you use BSD,
+ this will also include encrypted passwords. Therefore, it's recommended to
+ put the uid in the dgamelaunch.conf. The same applies to groups, but openpty(3)
+ often looks up the tty group anyway.
+ 4) Setup dgamelaunch as one of the following:
+         a) The shell for a single login.
+         b) An (x)inetd service.
+ If you choose a login shell make sure dgamelaunch is setuid root. (that is,
+ chmod 4755 dgamelaunch.) It will shed privs right after entering the chroot
+ jail though.
+ Example xinetd lines:
+ service telnet
+ {
+   socket_type     = stream
+   protocol  = tcp
+   wait      = no
+   user      = root
+   server    = /usr/sbin/in.telnetd
+   server_args     = -h -L /opt/nethack/nethack.dtype.org/dgamelaunch -q -f /etc/dgamelaunch.conf
+   rlimit_cpu      = 3600
+   bind      = 64.71.163.206
+ }
+ A classic inetd line would look like this:
+ telnet stream tcp nowait root.root /usr/sbin/tcpd /usr/sbin/in.telnetd -h -L /usr/sbin/dgamelaunch -q -f /etc/dgamelaunch.conf
+ In both cases, the -L specifies an alternate login program (telnetlogin is
+ invoked by default) and -h prevents revealing of a login banner (for 
+ example, "Debian GNU/Linux testing/unstable influx") before starting the
+ login shell.
+ It goes without saying that the argument after -L must point to dgamelaunch's
+ exact location. Also, the location of dgamelaunch.conf is variable and of
+ course should be customized by you.
+ NOTE: It appears that the -L option is not very widely supported. FreeBSD's
+ telnetd uses -p instead, and you can't give arguments (arguments appropriate
+ to standard login are used). Some other telnetds do not support anything
+ like this at all.
+ The -f option, followed by a filename, specifies the path to the config file
+ to use for dgamelaunch.  If you specify the right path for DEFCONFIG in the
+ Makefile, you may be able to omit this.
+ For dgamelaunch, the -q option will silence errors pertaining to the server
+ configuration. This is recommended for use within inetd to prevent spamming
+ the clients, but when testing and setting up we strongly suggest you leave it
+ off until running dgamelaunch produces no error output on stderr.
+ 5) Test your compilation of dgamelaunch by running it as root. If this
+ works, a shell login or (x)inetd will work with the correct configuration.
+ If you have problems with dgamelaunch's display make sure that your chroot's
+ /etc/terminfo directory (or whatever directory your ncurses uses) is
+ populated.
+ COMMANDLINE PARAMETERS
+ ======================
+  -a           Ignored.
+  -c           Shows error message and exits. (login shell command)
+  -e           Ignored.
+  -h           Ignored.
+  -i user      Autologin and run the register -command hook for "user"
+               (with password "user").
+  -p           Ignored.
+  -q           Be quiet, suppress errors.
+  -s           Show players currently playing.
+  -W user:msg  Send message "msg" to all players. The message seems
+               to come from "user".
+  -S           Free the shared memory block.
+  -D           Show contents of the shared memory block.
+ ENVIRONMENT VARIABLES
+ =====================
+  Linux telnetd allows importing the USER environment variables via telnet,
+  while FreeBSD does not.  FreeBSD, on the other hand, does allow the LOGNAME
+  environment variable.  Dgamelaunch will first check USER, then LOGNAME,
+  for "username:password", and tries autologin if either exists.
+  Dgamelaunch-specific DGLAUTH is checked before either of those.
+ ERROR CODES
+ ===========
+    1  Could not terminate stale processes
+    2  Cannot chroot()
+    3  Cannot chdir()
+    4  Cannot setgroups()
+    5  Cannot setgid()
+    6  Cannot setuid()
+    7  Caught HUP
+    8  Cannot run as root: Config file has shed_user = "root"
+    9  Cannot run as root: Config file has shed_user set to UID 0 user.
+   10  Could not setup player
+   11  Cannot run as root: Config file has shed_uid = 0
+   12  Config file has an unrecognized token
+   13  Config file: Negative value not accepted
++  14  Cannot unshare()
+   15  dgamelaunch called with -c (login shell command); exited
+   20  No menu defined, or no banner found for menu
+   60  Cannot create a new terminal, or no termcap files.
+   61  Cannot openpty()
+   62  Cannot open /dev/ptmx
+   65  Cannot open master ptsname
+   68  Cannot fcntl inprogress-lock
+   70  Cannot write to inprogress-lock
+   71  ftok() error for shm_key, no "dgamelaunch" file found?
+   72  ftok() error for shm_sem_key, no "dgamelaunch" file found?
+   73  shmget() error, cannot connect to shared memory
+   74  smat() error, cannot attach to shared memory
+   75  Nothing in shared memory?
+   76  sem_init() error, could not initialize shared memory
+   77  sem_wait() error
+   78  sem_post() error
+   95  Cannot fnctl lockfile
+   96  sqlite3_open() failed when checking user existence: could not open login database
+   97  sqlite3_open() failed in writefile()
+   98  sqlite3_exec() failed in writefile()
+   99  Could not open password file
+  100  Username field too long in login file
+  101  Email field too long in login file
+  102  password field too long in login file
+  103  env field too long in login file
+  104  Cannot read config file
+  105  Cannot read default config file
+  106  Cannot open lockfile or password file
+  107  fcntl failed on login database in writefile()
+  108  sqlite3_exec() failed when checking user existence.
+  109  Too many registered users. (see maxusers setting in config file)
+  110  Login failed
+  111  Two users trying to register at the same time
+  112  Error changing password: cannot have ':' in password
+  113  Error parsing configuration file
+  114  exec-command fork failed
+  115  could not read lock file in writefile()
+  116  Too many registered users. (see maxusers setting in config file)
+  117  wall error: no message to send
+  118  wall error: no players
+  119  User has a retarded terminal
+  120  wall error: message too long
+  121  wall error: "from" username is too short
+  122  Error changing password: struct "me" does not exist
+  123  chdir() failed in dgl commands.
+  140  populate_games(): Cannot open inprogress-dir
+  145  populate_games(): Inprogress-filename does not have ':' in it
+  146  populate_games(): Inprogress-filename does not have ': in it (pt. 2)
+  200  purge_stale_locks(): could not open inprogress-dir
+  201  purge_stale_locks(): inprogress-file did not have ':' in it
+  202  purge_stale_locks(): could not read inprogress-file
+  203  purge_stale_locks(): could not get inprogress-file contents