diff --git a/html/doors.html b/html/doors.html index 9074b06a..454670ca 100644 --- a/html/doors.html +++ b/html/doors.html @@ -17,7 +17,77 @@
Last update 09-Aug-2004

MBSE BBS - Running DOS doors.

+

Introduction

+

+Running DOS doors is possible on systems that can run +dosemu. The latest versions of dosemu don't +need to be started suid root or started using sudo, it can run as the user that +is logged in the bbs. Since that is possible, a new location for the virtual C: +drive is now being used withing the $MBSE_ROOT file structure. This virtual C: +drive is owned by the group bbs. The basic ideas how doors should be run written +by Redy Rodriguez are still valid, but some scripts are changed and some dosemu +files must be copied into the mbse directory tree. +

 

+

Installing dosemu

+

+Some distributions have good dosemu packages, others don't. You need a dosemu +that can be used in a systemwide multiuser setup. The bad packages want to have +the dos drive in each users home directory, this is not what we want for doors. +If you don't have a good dosemu you have to compile your own. This is not too +complicated. First download the source from dosemu. You don't need the freedos-bin source +if you are going to use ms-dos or pc-dos. +Unpack the source in some directory of your choice and compile the sources:
+

+mbse@seaport$ tar xfvz dosemu-1.2.2.tgz
+mbse@seaport$ cd dosemu-1.2.2
+mbse@seaport:~/dosemu-1.2.2$ ./configure --prefix=/usr --sysconfdir=/etc/dosemu --with-x
+mbse@seaport:~/dosemu-1.2.2$ make
+
+Note that the --with-x is not needed for running doors, but it +might be handy that you can use dosemu as user mbse in X to do maintenance on +your doors.
+Then as root do:
+
+root@seaport:~/dosemu-1.2.2# make install
+
+

 

+ +

Setup dosemu in mbse

+

+First copy /etc/dosemu/dosemu.conf into ~/etc/dosmeu. +Then edit ~/etc/dosemu/dosemu.conf so that we have a version for +mbse users. Set the following settings in that file:
+

+$_hdimage = "/opt/mbse/var/dosemu/c"
+$_floppy_a = ""
+$_xms = (1024)
+$_ems = (2048)
+$_dpmi = (0x1000)
+$_layout = "us"
+
+Next we need to setup the C: drive. Do this as user mbse. First type umask +007, this sets the create mode for directories to 0770 and files to 0660 +so that we create all files and directories read/write for all bbs users. This +is very important! Type the following commands: +
+mbse@seaport:~$ umask 007
+mbse@seaport:~$ cd var/dosemu/c
+mbse@seaport:~/var/dosemu/c$ mkdir dos dosemu temp util
+
+To be continued.... +

 

+ +

What if I don't upgrade

+

+That's your choice, but for a while the old method starting dosemu via sudo is +still supported. The file ~/bin/bbsdoor.sh is still there, but the +file ~/bin/rundoor.sh is renamed to +~/bin/runvirtual.sh. So you should change all symlinks of your door +names in ~/bin (or copies) to ~/bin/runvirtual.sh. You +should not need to change anything else. +

BackGo Back diff --git a/script/rundoor.sh b/script/rundoor.sh index cd0deadf..b8ed9663 100644 --- a/script/rundoor.sh +++ b/script/rundoor.sh @@ -2,23 +2,55 @@ # # $Id$ # -# rundoor.sh - Never call this script directly, create a symlink -# to this file with the name of the door. For example -# to run the door ilord do: -# cd /opt/mbse/bin -# ln -s rundoor.sh ilord -# In the menu use the following line for Optional Data: -# /opt/mbse/bin/ilord /N +# Never call this script directly, create a symlink to this file with the +# name of the door. For example to run the door ilord do: +# cd /opt/mbse/bin +# ln -s rundoor.sh ilord # -# This version DOES NOT have virtual COMport support, see runvirtual.sh +# In the bbs menu use the following line for Opt. Data: +# /opt/mbse/bin/ilord /N [novirtual] +# +# The optional "novirtual" second paramter disables the use of the virtual +# comport in dosemu, this is for dos programs that are not doors. +# +# This is for dosemu 1.2.0 and later and runs the door as user. # # by Redy Rodriguez and Michiel Broek. -# + DOOR=`basename $0` COMMANDO="\"doors $DOOR $*\r\"" +DOSDRIVE=${MBSE_ROOT}/var/dosemu/c -/opt/mbse/bin/bbsdoor.sh $DOOR $1 -/usr/bin/sudo /usr/bin/dosemu.bin -f /opt/mbse/etc/dosemu/dosemu.conf -I "`echo -e keystroke $COMMANDO`" +# Prepare users home directory and node directory +if [ "$1" != "" ]; then + mkdir -p $DOSDRIVE/doors/node$1 >/dev/null 2>&1 + # Copy door*.sys to dos partition + cat ~/door.sys >$DOSDRIVE/doors/node$1/door.sys + cat ~/door32.sys >$DOSDRIVE/doors/node$1/door32.sys + # Create .dosemu directory for the user. + if [ ! -d $HOME/.dosemu ]; then + mkdir $HOME/.dosemu + fi + # Looks cheap, see above, but this does an upgrade too + if [ ! -d $HOME/.dosemu/drives ]; then + mkdir $HOME/.dosemu/drives + fi + # Create .dosemu/disclaimer in user home to avoid warning + if [ ! -f $HOME/.dosemu/disclaimer ]; then + touch $HOME/.dosemu/disclaimer + fi +else + exit 1 +fi + +# run the dos emulator with the door. +if [ "$2" == "novirtual" ]; then + /usr/bin/dosemu.bin -f ${MBSE_ROOT}/etc/dosemu/dosemu.conf -I "`echo -e keystroke $COMMANDO`" +else + /usr/bin/dosemu.bin -f ${MBSE_ROOT}/etc/dosemu/dosemu.conf -I "`echo -e serial { com 1 virtual }"\n" keystroke $COMMANDO`" +fi + +# reset the users terminal, just in case. reset tput reset stty sane