From: sbkelley Date: Mon, 1 Jun 2026 20:47:29 +0000 (-0400) Subject: Merge branch 'install-dgl-nh500' into new-master X-Git-Tag: v1.6.1-roc-dev~6 X-Git-Url: https://skyeroc.xyz/gitweb/?a=commitdiff_plain;h=35d50cd91d31b015a2c713adf5e6a14327395f5c;p=dgamelaunch Merge branch 'install-dgl-nh500' into new-master --- 35d50cd91d31b015a2c713adf5e6a14327395f5c diff --cc README.bak index 0000000,2ecc7ef..241b804 mode 000000,100644..100644 --- a/README.bak +++ b/README.bak @@@ -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 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