                              *** DPPP 1.2 ***

                      A Windows based BBS Door Program
         giving Callers Access to the Internet via PPP/SLIP dial-up

                         by Detlef Pleiss and others

               Internet:   det@goliath.de
               Compuserve: 74101.755

               Download and Online Order:
               Internet:   http://www.grafix-net.com/powrbbs/3rdprty.htm

               Online Support Mailing List:
               to subscribe send a message to majordomo@mail.msen.com with
               "subscribe dpsoft" in the body (no quotes)

This product includes software developed by:
Danny Gasparovski,
the University of California, Berkeley and its contributors,
Juha Pirkola,
Carnegie Mellon University,
The Australian National University,
Gregory M. Christy
This product contains the:
RSA Data Security, Inc. MD5 Message-Digest Algorithm

For related copyrights, please see the file RELCOPYR.TXT!

Do not bother one of these persons or institutions with DPPP related
questions! Instead, direct them to Detlef Pleiss or the DPSoft mailing list.

Microsoft, Windows / NT and Microsoft Windows / NT Logos are
registered trademarks of Microsoft Corporation. All other trademarks are
registered by their respective owners.

Thanks go out to:
Russell Frey for the PPP autodetection in PowerBBS
             and his help on seamless integration of DPPP and PowerBBS
David Robinson for the mailing list services and for his help on testing
Boris Seifert for his help on testing DPPP and for drawing the icon
All Alpha and Beta testers who helped to get DPPP in shape
All Sysops who contributed Caller Setup instructions
  (see DOCS\CALLERS\FILES.TXT)

====================================================================
Files included in package:
DOCS\ directory   - DPPP Documentation
DPIDENT.EXE       - Ident Server for IRC Connections, 16bit Version
DPID32.EXE        - Ident Server for IRC Connections, 32bit Version
DPINFO12.ZIP      - DPPP Caller Utility
DPPP.DLL          - DPPP, Main Program, 16bit Version
DPPP32.DLL        - DPPP, Main Program, 32bit Version
DPPPSET.EXE       - DPPP Configuration Program
FILE_ID.DIZ       - Description for BBS File Lists
FPTAB11.VBX       - VBX needed for DPPPSET.EXE
MLIST.VBX         - VBX needed for DPPPSET.EXE
THREED.VBX        - VBX needed for DPPPSET.EXE
DPSOFT.TXT        - Information about DP Software Products
READ1ST.TXT       - Documentation Overview
UPGRADE.TXT       - Change History and Upgrading from previous Versions
====================================================================

Requirements

DPPP requires a working TCP/IP stack, a Winsocket, on your BBS computer. To be
able to run DPPP, you yourself must be able to access the Internet from the
BBS machine. This document is not going to explain setting up a
TCP/IP stack / Winsocket here. For that please refer to the documentation of
your TCP/IP software or to your Internet Service Provider. From here on it is
assumed you do have a working Internet connection on your BBS machine.
There is a text file DOCS\SYSOP\NETW_BBS.TXT that covers running DPPP on a
multinode BBS on multiple networked machines, using routing or Proxy access to
the Internet.

You do NOT need a bunch of official IP addresses for your BBS lines. You only
need the one IP address you get for your BBS's connection to the Internet.
This does not even have to be a static IP address, DPPP works with a dynamic IP
address as well. To make things short: A simple dial-up account will do the
job. (Anyway make sure you are allowed to forward services to your callers)

Running DPPP and supporting your callers who use it takes some knowledge of
TCP/IP and the Internet. If these topics are new to you, please first read the
included Internet primer, TCPIP.TXT. From here on it is assumed you know what
"IP addresses", "port numbers", "TCP" and "UDP" etc. mean.

DPPP is a Windows DLL primarily developed as an add-on for PowerBBS. So you
need to run Windows in order to use it. If your BBS runs on Windows 95, please
read DOCS\SYSOP\WIN95.TXT. If you run a BBS system other than PowerBBS, you
can still use DPPP, as long as the BBS machine runs on a 32bit Windows
(Windows 95 or Windows NT) operating system. Watch out for the DPLoader
application that allows running this DLL (and all the other DPNet programs) as
a door on different BBS systems. See the documentation of DPLoader for details.

In either case, DPPP is a door program, so it does not handle modem
initialization or answering calls etc. by itself. You need to run a BBS system
to handle those tasks.

For proper operation of DPPP you need at least PowerBBS version 5.11.
If you run an earlier version, please upgrade!

Not a requirement, but if you plan on running a couple of DPPP nodes fed from
an analog modem Internet connection, you should consider running a caching
Proxy server for your callers. Given a pretty large file cache it could help
giving full speed local access to the most frequently requested files and web
pages. If your ISP runs a Proxy, configure your Proxy to "cascade" to that
Proxy. Make sure your callers configure their web browsers to use either
your (preferably) or your ISP's Proxy server.

Your (one) connection to the Internet handles all the traffic of multiple BBS
nodes running DPPP and/or other Internet software. The only concern here is
bandwidth.  For more than let's say 4 nodes you'd prefer a connection to the
Internet faster than an analog modem to allow decent throughput for your
callers.

There may be a maximum number of sockets (speak Internet connections) your
TCP/IP stack can handle, which limits the number of Internet connections
summed up over all DPPP nodes. As TCP/IP stacks normally handle at least 256
sockets, this shouldn't be a problem as long as you don't run more than let's
say 32 very busy DPPP nodes from one machine. If you're running a local Proxy
as recommend, reduce that number to 16.

====================================================================

Installation

This chapter describes the DPPP installation procedure for PowerBBS. The
information here may also be helpful if you plan running DPPP under the
control of DPLoader, but for complete installation instructions refer to the
latter package.

DPPP assumes that your call-in modems work with a locked baud rate, 8
databits, no parity, 1 stop bit. It further assumes that the modem is
configured to use RTS/CTS (hardware) handshake, not XON/XOFF.

Make sure your modem settings are "Close Port on Drop to DOS" and "Lock Baud
Rate at Max" all checked. Make sure your modem does not drop carrier on DTR
drop. Normally that means having "&D0" in your modem init string. The PowerBBS
documentation already recommends this as otherwise doors wouldn't work at all.

If you run 16bit PowerBBS, copy DPPP.DLL to your PowerBBS home directory. If
you run 32bit PowerBBS, copy DPPP32.DLL to your PowerBBS home directory. All
further references to DPPP refer to the version appropriate to your system. You
cannot mix versions, you must use DPPP.DLL with 16bit PowerBBS and DPPP32.DLL
with 32bit PowerBBS.

Copy all *.VBX files to your \WINDOWS\SYSTEM directory.
VBRUN300.DLL must be in your \WINDOWS\SYSTEM directory. If you don't have it,
pick up VBRUN300.ZIP and extract it to that directory. You should not have
duplicates of any of the .VBX's or .DLL's anywhere on your hard drive to avoid
problems!

Copy DPPPSET.EXE to your PowerBBS home directory and run it. Enter your Domain
Name Server IP address and press "Exit". All other entries in DPPPSet are
optional and covered separately in DPPPSET.TXT.

PowerBBS has a built-in PPP autodetection that launches DPPP automatically
whenever a PPP call is detected. You may however decide to also install DPPP
as an ANSI DLL in your main menu. You need to do so if you plan to use
SLIP/CSLIP (in contrast to PPP). To launch DPPP from an ANSI menu your callers
will need a login script to automate the process of logging in, getting to the
menu and sending the appropriate menu command. Refer to the DOCS\CALLERS
directory of this package for installation instructions and example login
scripts for different caller systems. You may need to customize those
instructions and scripts to your system. Keep them available for download on
your BBS.

Here's the (optional) procedure for installing DPPP in an ANSI menu:
In your ANSI main menu add a command with Hotkey "P" (choose whatever you
like, the examples refer to "P"), that runs Command Type "DLL",
Actual Command To Run "DPPP" ("DPPP32" for 32bit PowerBBS).
It is not necessary to display the command on your menu screen(s).
Choose a "Security" setting that fit your needs.
IMPORTANT: In the menu editor, set the "Time" factor to "0.0", as DPPP deducts
online time and credits all on itself. Otherwise you're going to charge your
callers twice for using DPPP!

If you want to use DPPP from an ANSI menu ONLY, so never have the PPP
autodetection kick in, you need to rename the DLL to something different from
DPPP(32).DLL. Alter the "Actual Command To Run" menu entry accordingly.

If you do not already have so, you may want to install one or more PA/Net
nodes, so callers can get into these nodes once connected via DPPP.

====================================================================

DPIDENT.EXE / DPID32.EXE

Most IRC servers require verification of the login data using the
identification protocol (defined in RFC 1413). DPIDENT.EXE (32bit version:
DPID32.EXE) is a server for that protocol and has to be running in the
background in order to make this verification (and thus the login) succeed.
The IRC emulation of DPPP (automatically active for IP ports 6667 and 6668)
interfaces to DPIDENT, just like DPIRC and DPLINK do. DPIDENT is the same for
DPIRC, DPLINK and DPPP. If you run DPPP, you MUST use the latest versions of
DPIDENT, DPIRC and DPLINK (Apr-22-97 or later), earlier versions are not
compatible! Running just one copy of DPIDENT works for multiple nodes running
the named programs. You may want to put it in your autostart/startup
group/folder. Just make sure DPIDENT is running before a user tries to
connect to an IRC server that requires Identification Protocol verification.
Data exchange between applications and DPIDENT takes place using the file
DPIDENT.INI in the \WINDOWS directory. If you have a DPIDENT.INI in your
PowerBBS home directory from an older version, you may delete it. You don't
need to touch the INI file in the \windows directory, but as long as no
application (DPIDENT, DPPP, DPIRC or DPLINK) is running you may delete this
file (i.e. during daily maintenance).

====================================================================

Dial-Up Support

DPPP can be used on a dial-up account to your ISP, even with a dynamically
assigned IP address. For details refer to DOCS\SYSOP\DIALUP.TXT.

====================================================================

DPINFO12.ZIP

contains 16bit and 32bit versions of DPINFO. This is a small utility for DPPP
callers that displays online time and credits to them.
If the caller has email waiting on the BBS, DPInfo pops up a notifying
messagebox on startup.
If DPPP Timebank functionality is enabled in DPPPSet, DPInfo also offers a
point 'n click interface to deposit or withdraw minutes to or from Timebank.
The display is updated every minute, exchanging data over the DPPP link, so
careful, this defeats a configured inactivity timeout. Put DPINFO in your
download area for DPPP users. It is not required, but DPPP callers may find it
convenient.

====================================================================

Installation for the Caller

Details of the installation for the caller depend on the TCP/IP stack he
uses. There's a compilation of sample installation instructions and login
scripts for different systems in the DOCS\CALLERS directory of this package.
The general instructions for callers are:
Use the PPP protocol.
Choose "server assigned" for IP address and DNS address if the TCP/IP stack
supports it. Entering an IP address of 0.0.0.0 (Trumpet) is the same like
"server assigned". If the TCP/IP stack does not support retrieving a server
assigned DNS address, enter 10.0.2.3. for DNS. If there is a problem
retrieving a server assigned IP address, use 10.0.2.15.
Enter your BBS account and password in all capitals for CHAP or PAP
authentication. IMPORTANT: The password must be entered in ALL CAPITALS and up
to 10 characters maximum.
Use VJ IP Header Compression.
If you're asked to use a Proxy server, please configure your web browser to
use this Proxy (IP address for a Proxy running on the BBS machine is
10.0.2.2, see below).

====================================================================

Testing the Installation

You cannot test DPPP locally.
Have a caller dial up your BBS with his TCP/IP stack. If he uses a dial-in
script to launch DPPP from a menu, watch out that all the BBS prompts get
answered properly up to the point where "P" (or whatever hotkey you
configured) is sent to the main menu to launch DPPP. If something goes wrong
here, the script must be corrected.
If PPP autodetection does not work, have the caller check he really uses the
PPP protocol and check the modem setup on both ends (use RTS/CTS handshake,
not XON/XOFF!).
DPPP starts up minimized. To see what's going on, maximize the window.
On startup DPPP tells you about your BBS's (real) IP address, the DNS (real)
IP address you configured and the IP address for the caller (10.0.2.15). Check
those!
If DPPP gets launched but PPP negotiation doesn't work, have the caller
re-check the connection and TCP/IP properties.
Have the caller "ping" to 10.0.2.2. Any IP address in the 10.*.*.* network
should reply to "ping"s from the caller, also your BBS's real IP address.
Have the caller Telnet to IP address 10.0.2.0. That is an online
configuration console for DPPP. He should see a short help message and a
"DPPP>" prompt. He may try the "help" command to see that the connection
works. It may happen that the caller sees a double echo or no echo at all of
the characters he types in, depending on the Telnet client he uses. He must
then switch local echo on or off in the Telnet client or use the "echo on" or
"echo off" command at the "DPPP>" prompt.
Each Internet server software running on your BBS machine is available to the
caller under the IP address 10.0.2.2. If you have a FTP or web server
running on your BBS machine, have him try these under the
IP address 10.0.2.2, and/or if you have a fixed IP and domain name, under
that address and/or name. Have him log in to a PA/Net node. Again, the IP
entry for the address book is 10.0.2.2 (or your fixed IP address or DNS name).
If the caller didn't come in by PBBS PPP autodetection, but by means of a
login script, he will need to log in under a different or new user account, as
not being allowed to log in twice. Well, if all that works ... let him surf
the Net!

====================================================================

So, how does it work?

DPPP is a door program that acts as a PPP server. It gives your callers
access to the Internet using their own TCP/IP stack (Trumpet, DUN, RAS, MacTCP
etc.) and software (Web Browsers, FTP, IRC clients), over your BBS's phone
lines. In talking PPP, DPPP emulates an Internet connection for your callers.
They are not directly connected to the Internet, it only looks like
they were. DPPP acts as a "middleman", it forwards data packets back and
forth between the "real" Internet and your caller. As it talks the Internet
standard protocol PPP to the callers TCP/IP stack, this does not make much of a
difference for "normal, homegrown" use like web browsing. When it comes to a
caller wanting to run an Internet service like a web or ftp server on his own
machine, this is still possible but takes a little more configuration work.
The advantages of this approach are: You need only one IP for all nodes, the
setup for all your callers is the same, in fact it's nearly the same for all
BBS's running DPPP, regardless of their real IP addresses.
After reading TCPIP.TXT you may wonder how all nodes on all DPPP systems can
use the same IP address when it is said that IP addresses have to be unique
throughout the net. That's because this IP address (10.0.2.15)
only exists on your caller's modem link. It is not seen out there on the
Internet. If the caller requests i.e. a web page, DPPP sends out this request,
on behalf of the caller, from your BBS's IP number. For the web server on the
other end it looks like the request would come from your BBS machine. When the
connection is established, DPPP forwards all data it receives from the web
server back to your caller.
If DPPP receives a Telnet connection to IP address 10.0.2.0 it connects the
caller to its (DPPP's) own Telnet Command Line interface.
All connection attempts to 10.0.2.2 get translated to connections to your BBS
machine. Therefore all servers on that machine are accessible under the IP
10.0.2.2 (even if your BBS itself has a dynamically assigned IP address).
The IP address 10.0.2.3 is an alias for your (IPS's) DNS server, the IP
you entered in DPPPSet. Therefore 10.0.2.3 is a valid DNS server entry for all
callers on all BBS's running DPPP.

Port Redirection

The caller's PC cannot be reached under the IP address 10.0.2.15, as this
private IP address doesn't exist on the Internet. This isn't a problem as long
as the caller doesn't want to run a server (a software that listens for
incoming connections on a specific port) on his own PC. He can still do that,
but he then has to instruct DPPP to listen for incoming connections on a
specific port on his behalf. This is done via the DPPP Telnet (10.0.2.0)
command "redir" (See below for a complete discussion of the "redir" command).
Assume the caller runs a web server listening on his PC's port 80. Now, in
Telnet to 10.0.2.0 he gives DPPP the command: "redir 2000 80".  This instructs
DPPP to listen for incoming connections on TCP port 2000 (your callers should
use port numbers above 1024, as the lower port numbers are reserved for
standard services)(port numbers range up to 65535) ... listen on TCP port 2000
and forward all incoming connections on that port of the BBS machine to
TCP port 80 of the callers PC - where the web server sits and waits for them.
In order to have people connect to his server the caller now gives out *your
BBS's IP address* (or DNS name) plus port number 2000 to others who want to
reach his server. As only one program can listen on one port at a time, a
caller on another node would not be able to redirect/listen on TCP port 2000
after the first caller issued his command. The other caller must then use a
different port for his redirections. He gets an error message when trying to
redirect on TCP port 2000 from his DPPP Telnet Command Line. BTW, a second
caller would be able to reach the first caller's web server under the address
10.0.2.2:2000.

Emulations

The most complicated protocol to emulate is FTP. Because in FTP you have a
control connection where the caller connects to the remote FTP server's TCP
port 21 (not a problem), then over that control connection tells the FTP
server "hey, I'm listening for your data on IP aaa.bbb.ccc.ddd, port xxx".
This wouldn't work if the FTP client would send out 10.0.2.15 for its IP
address (as it believes to runs on that IP). DPPP solves that problem in
implementing a so-called "emulation" for FTP. This emulation is automatically
activated for all connections to TCP port 21 (standard for FTP). On such
connections DPPP scans the outgoing data stream on the control connection for
the "hey, I'm listening ..." PORT command and replaces the values in there
with its own IP address and an appropriate port number. The FTP server at the
other end sends its data to the BBS machine which then again forwards data to
the port at the callers end where the FTP client waits for them. This is
totally automatic and transparent to the caller as long as he connects to FTP
servers that run on standard port 21. If he connects to an FTP server on a
different port, he needs to tell DPPP about it, so DPPP can watch out for the
PORT command on connections to that (not standard FTP) port. This is done via
the Telnet console command "emu" (See below for a complete discussion of the
"emu" command). Assuming the caller connects to a FTP server on port 1234, the
command would be "emu ftp 1234". After that DPPP also works with FTP servers
on the non-standard port 1234. BTW for FTP access using a web browser AND
having a Proxy configured for (HTTP-)FTP either locally or at your ISP's, this
is NOT an issue as the actual connection is a HTTP connection, even for FTP://
- addresses with non-standard ports. One more reason to have a Proxy installed
somewhere in between.

====================================================================

ICMP Echo-Request / Ping Emulation

"Ping"s to addresses in the 10.*.*.* range and to the real BBS host IP address
are answered by DPPP directly. "Ping"s to other addresses get translated
to echo requests to UDP port 7 of the target machine. If the remote
machine supports the UDP echo service, DPPP translates the response back to an
ICMP Echo-Reply packet to the caller. In practice that means: From getting no
response to "ping"ing a remote host the caller cannot conclude that the host is
down or unreachable. But if the caller gets a response back he can conclude
that the remote host is up and running and the "ping" reflects the response
time correctly. Normally remote Unix hosts will answer to such emulated
"ping"s, while Windows hosts won't.
Traceroute cannot be used over a DPPP connection. It will display just one hop
with the same data like what ping displays.

====================================================================

Telnet Console Commands

REDIR [once|time] [udp|tcp] <PORT> [to] <LPORT>
Makes the BBS machine listen for incoming UDP or TCP (default) connections
on port <PORT> and redirect them to your port <LPORT>.
Option "once" (for TCP only) will accept only one incoming connection and then
stop listening for more connections.
Option "time" (for UDP only) will close the listening socket on the BBS
machine if there didn't come in a packet within 75 seconds.
"redir" without a parameter lists the currently active redirections.

SPECIAL <ADDR>
Defines <ADDR> as the *network* IP address for special functions / aliases:
xxx.xxx.xxx.0 = command line configuration
xxx.xxx.xxx.2 = alias for BBS computer
xxx.xxx.xxx.3 = alias for DNS
(Default: 10.0.2.0)
"special" without a parameter displays the currently active special address.

HOST <ADDR>
Defines <ADDR> as the IP address of the BBS host.
"host" without a parameter displays the currently active host address.

EMU ftp|irc|none [:lowdelay|throughput] [<LPORT>:]<FPORT>
Adds an emulation routine and / or controls priorities for connections from
the Internet to your <LPORT> and / or from your machine to a foreign <FPORT>.
"ftp" emulation patches the PORT command, "irc" emulation is for DCC CHAT,
SEND, MOVE and the Identification Protocol. "none" is for changing priorities
only. Packets on "lowdelay" connections have higher priority than packets on
"throughput" connections. If you're running a FTP download and a Telnet
session the same time you may want to set the Telnet connection to "lowdelay"
as to get decent response times, instead of having to wait for a pause in the
FTP stream. The standard Telnet port 23 is set to "lowdelay" per default. You
may want to issue this command for Telnet connections to a different port
(MUDs, MUSHs, WinCim etc.).
"emu" without a parameter lists the currently active emulations.
Use this command to find out about the emulations that are automatically
active in DPPP from startup on.

DNS <ADDR>
Defines <ADDR> as the IP address of the DNS name server to use. This is the
address UDP packets to IP 10.0.2.3, port 53 get forwarded to. If there's a
problem with the default name server you may change the server to be used
on the fly!
"dns" without a parameter displays the currently active DNS IP address.

HELP [<COMMAND>]
Shows help for the given <COMMAND>, or a list of available commands, if no
parameter is given.

ECHO [on|off]
Without parameter displays status of wether the DPPP Command Line echoes
characters back or not. Switches echo status to on or off if a parameter is
given. You may want to use this command if you see either double characters or
no echo at all at your DPPP Telnet Command Line (or change your local Telnet
clients echo setting).

KILL <SOCKET>
"Brutal" kill of a socket / connection. Valid socket numbers can be retrieved
with the "stats socket" command or using "kill" without a parameter.

CLOSE <SOCKET>
"Gently" close a socket / connection. Valid socket numbers can be retrieved
with the "stats socket" command or using "close" without a parameter.

STATS ip|socket|tcp|udp|icmp|mbuf|tty|vj
Display a variety of statistics about the running DPPP session.

QUIT
Ends the Telnet command line session.

VERSION
Displays DPPP version and registration information.

INFO
Displays a variety of information from the user data and about the currently
active connection.

TIMEBANK [deposit|withdraw <MINUTES>]
Gives access to the PBBS Timebank. Without any parameter it displays timing
information about the current call and the account stored in the timebank.
TIMEBANK DEPOSIT <MINUTES> deducts <MINUTES> from the available online time for
this call and stores it in the timebank.
TIMEBANK WITHDRAW <MINUTES> deducts <MINUTES> from the time you already used
this call (so it's available to you again) and from the timebank account.
Note: You can only withdraw time you already used this call, as otherwise it
would simply be lost if you forget to deposit it again or on a carrier loss.

====================================================================

The Sysop Console

The DPPP window comes up initially minimized. You need to maximize it in order
to see its contents. The title bar displays the active COM port, locked baud
rate and minutes left for this call. On program startup information about the
program, the configuration, PPP negotiation in progress and authentication
gets displayed. One minute after the connection is established / PPP
negotiation completed (so you have some time to read the configuration
information), the Sysop Console Window is switched to become an equivalent of
the callers Telnet Command Console. If you need access to the Command Console
before DPPP switches automatically, you can press any key to get there, as
soon as PPP negotiation is completed. You can use the same commands as
explained above. Only "quit" will not end the session but tell you that you
have to click the close button on the Sysop Console Window if you want to hang
up on the caller. Most Telnet commands are also available by means of drop
down menus. Additionally to the available Telnet commands you can give online
time to the caller or take it away from him, launch the bandwidth monitor or
hang up on the caller. Choosing "Bandwidth Monitor" opens a small "System
Monitor" like window, giving graphical information about how much of your
bandwidth gets through to the caller. With multiple callers online you can
have just their bandwidth monitor displays open to gain an impression of how
your bandwidth is shared between multiple DPPP lines.

====================================================================

Authentication

With PPP, authentication of the caller is required per default. Normally CHAP
is used. With this protocol the password itself is never transfered over
the line, but DPPP builds an encoded value from the password stored in the
user base and compares it to the encoded value it gets from the callers PPP
engine. Therefore the password the caller enters must match exactly the
password stored in the user base, which in case of PowerBBS means it must be
entered in ALL CAPITALS and up to a maximum of 10 characters! The user name on
the other hand is not case sensitive but must of course match the user name in
the user base. If DPPP gets launched from an ANSI menu, the caller must use
his BBS account and password for PPP authentication (as long as you didn't
disable authentication at all). If you use PBBS PPP auto detection and do not
require authentication and the caller does not authenticate, he is restricted
to 9 minutes online time per call. Authentication may fail for:
- an unknown user name
- user is locked out
- a wrong password
- the users security level doesn't meet the configured minimum
- the user does not have a configured required flag set
- the user has no online time or credits left
In either case DPPP hangs up on the caller. Please note that SLIP or CSLIP do
not include an authentication protocol and also do not send the PPP
autodetection byte streams. Therefore in order to accept SLIP/CSLIP
connections you need to go the menu command / login script way.

====================================================================

Accounting

DPPP does all the accounting on itself, regardless of being launched from PBBS
PPP autodetection or from an ANSI menu. Therefore set the "Time" setting in
the ANSI menu definition to "0.0" in order to avoid charging your callers
double for Internet access.
You can configure a multiplier for online time allowance and usage. The
default value of 1 means that 1 minute BBS online time equals 1 minute
Internet online time. A value of for example 2 means that the caller gets half
the online time for DPPP as what the BBS would allow, and twice the really
used online time gets deducted from the callers daily online time allowance.
If launched from an ANSI menu, DPPP uses the online time allowance PowerBBS
tells it the user has, and then divides it by the configured value.
If launched from PPP autodetection, DPPP checks if the expiration date is
reached and if so expires the user account to the new access level. It then
checks if this is the users first call today, so the full daily allowance
applies, or if he has been online already today so that time has to be
deducted from the allowance for his access level. The
online time left for today is then divided by the configured factor. If
necessary, the online time allowance is limited to the next event on that
node, if there is one not marked as "Wait to run Event". If there is no online
time left for the caller today, DPPP hangs up on him.
If the DPPPSet credit accounting option is set to 0 (default), DPPP does
neither care nor alter credit values, wether you run a credit system or not.
If it is set to a value other than 0, it is the number of credits
to be deducted per minute. In that case, if the caller has not enough credits
for all of his online time left for today, DPPP limits his online time
according to the credits he has. Please note: DPPP does not care wether your
BBS is a credit system or not. It only cares about the setting configured in
DPPPSet. This way you can run DPPP based on credit accounting (charging per
minute online time) even if the rest of your BBS is not credit based. If on
the other hand your BBS already is a credit based system, DPPP fits nicely in,
given appropriate settings. Just in case of launching from an ANSI
menu set the "Time" value to "0.0", so not both, DPPP and PowerBBS deduct
online time and credits.
When the callers online time is over or he has none left for today, DPPP hangs
up on him.
When a DPPP call ends, the used online time and credits (multiplied by the
configured factors) are deducted from the callers account.
There's one special case: If a caller comes in by PBBS PPP autodetection and
then logs in to a PA/Net node with the same account he used for DPPP
authentication. In that case, DPPP has already handled expiration and
is-it-a-new-day check on that account. Anyway, time the caller already spent
in DPPP is not counted against his PA/Net login. Then again, as DPPP already
checks against the online time allowance the caller initially had, it will end
the call and thus also the PA/Net connection when the users time is up. When
DPPP exits there are two possibilities: to either a) re-read the callers user
record (with PA/Net login time / credits already deducted) and deduct its own
online time / credits from that record or b) just deduct online time and
credit usage from the user record it initially read during PPP authentication.
The latter case is the default behaviour, so that only DPPP online time and
credits are counted against the user record, while PA/Net online time /
credits spent during that DPPP call are not counted, so PA/Net through DPPP is
basically free. If your BBS is a credit system or you even sell goods or
services for BBS credits you may need to change that setting in DPPPSet so
that both, DPPP times / credits and PA/Net-through-DPPP times / credits are
counted against the user.
If you set a maximum timebank account other than 0, callers with at least the
configured minimum security level can store online time from one day in their
timebank for use on another day. If you have "Deduct BBS Online Time
and Credits ..." checked on the DPPPSet "Accounting" tab, the Telnet Command
Line Time Bank is disabled, in that case the caller has to use a Time Bank
program on the BBS itself.

====================================================================

Logging and Error Messages

These are the possible error conditions, where DPPP exits *before* a logfile
gets opened, thus without a logged error message:

a) The TCP/IP stack (Winsock.dll / WSock32.dll) is not found or cannot be
   initialised at program startup
b) The hostname of the BBS computer cannot be determined on startup
c) There's not enough free memory on startup (about 600kb)

If it gets past this point, DPPP creates a log file, DPPP<node#>.LOG
(<node#> = node number). If such a file already exists it gets overwritten.
The log file holds information about the ongoing DPPP call and error messages
which may be useful to track down configuration problems.

====================================================================

SLIP Connections

DPPP can serve not only PPP connections but also SLIP connections. You can
configure it in DPPPSet to speak SLIP or CSLIP (SLIP with Van Jacobson IP
header compression). The recommended option is to have DPPP autodetect wether a
caller uses SLIP or CSLIP. Just in case of problems with that autodetection
you may force it to speak either SLIP or CSLIP. In that case it wouldn't
understand the other protocol. As with DPPPSet you can configure options per
COMPort, you can configure your system to speak PPP on some lines and (C)SLIP
on others.
During a SLIP login the callers TCP/IP stack may ask him for the IP address of
his machine. He must then enter the 10.0.2.15 there.

====================================================================

Registration and Disclaimer

DPPP is shareware. It is neither free, nor freeware nor in the public domain.
The unregistered version may be distributed freely in its unaltered form.
This software is provided as is. Detlef Pleiss disclaims all warranties,
either expressed or implied, including but not limited to implied warranties
of merchantability, fitness for a particular purpose. In no event will
Detlef Pleiss be liable to you for damages, including any loss of data,
profits, lost savings, or other incidental or consequential damages arising
out of your use or inability to use the software. Use at your own risk.

The unregistered version is limited to 20 minutes per call.
Registration fee is $180.
Online registration is available at
http://www.grafix-net.com/powrbbs/3rdprty.htm
Compuserve registration is available at GO SWREG, ID number 14127.
If registering at Compuserve, send Compuserve email to 74101,755, stating
which program you registered, your name and your BBS's name, as this
information is required to generate registration codes.
After registering you'll receive a registration code by email that is valid
for your name and your BBS's name. Registration can not be transferred. If
either name or BBS name change a new registration is required.

====================================================================

Support

Support is available via email or on the DPSoft mailing list (for addresses
see above). If you send in a report, please include the following information
about your system, even if you posted the same information in a previous
report:

- operating system version
- PBBS version (16bit / 32bit)
- TCP/IP stack / Winsocket (DUN / RAS / Trumpet etc.)
- dialup or dedicated line / fixed or dynamic IP address

If you get a GPF, send a copy of the message you get, with all the numbers,
or a screen shot.
If possible include a DPPP<node>.LOG of a call where the problem occured.
A copy of your DPPP.INI may be helpful too.
Anyway, do not post files to the mailing list, especially not INI files with
registration numbers in them.

====================================================================

History of DPPP:

Dec-23-96 - Feb-9-97  semipublic alpha releases
Feb-25-97 - Apr-10-97 semipublic beta releases

v 1.0 - released: May 2 1997
        first public release
v 1.1 - no public release
v 1.2 - released: Sep 1 1997
        fixed problem when running with Trumpet Winsocket (on the BBS machine)
        fixed bug where login from ANSI menu sometimes used up all
          available online time of a caller
        fixed problems running on dialup accounts with dynamic IP
        fixed GPF related to "ping" emulation
        fixed GPF in memory management routines
        compatibility to WhoCallD
        added VDOlive support
