86 lines
3.5 KiB
Plaintext
86 lines
3.5 KiB
Plaintext
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 - currently, though,
|
|
it only supports NetHack (see http://www.nethack.org).
|
|
|
|
It requires the ncurses library and development headers to build and should
|
|
compile without issue on Linux and FreeBSD 4/5. Other platforms have not been
|
|
tested yet.
|
|
|
|
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.
|
|
Mailing list: http://alt.org/mailman/listinfo/nethack/
|
|
|
|
BASIC SETUP INSTRUCTIONS
|
|
========================
|
|
|
|
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. Depending on what you choose to do you may need to
|
|
run the script as root.
|
|
|
|
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) Edit dgamelaunch.conf. 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. If you used dgl-create-chroot, the defaults are appropriate,
|
|
except of course that you will need to install the nethack binary into the
|
|
specified location.
|
|
|
|
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 755 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 /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 /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.
|
|
|
|
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 is populated.
|