This is version @(#)README	1.12 1/29/93 of the pcnfsd README file. 
The comments in this file are cumulative; for the latest info, 
start at the end.

----------------------------------------------------------------------
This is the second cut at PCNFSD v2. All printing now uses the same
SVR4 based printing model: lp, lpstat, cancel. This implies SunOS 4.1
or later on a Sun. The printing hasn't been properly tested on SVR4,
since my SVR4 system is a bit quirky, but authentication via shadow
passwords works fine.

The Makefile supplied will build either SunOS 4.1 or SVR4 versions;
however you will need to tweak a couple of definitions. See the
Makefile for details.

For this round, I have frozen the rpcgen'd code and modified it by hand
to get around a few rpcgen deficiencies. If in doubt, you can take the
pcnfsd.x file included here off to a separate directory, rpcgen everything
up and diff against the versions given here.

You should also be sure to read the man page. I haven't tried [nt]roff'ing
this anywhere outside SunOS, so let me know if there are any quirks.
Note especially the /etc/pcnfsd.conf configuration model.

Standard disclaimers. Read the source for more of the same.

Geoff Arnold (Geoff.Arnold@Sun.COM)
May 2, 1991

----------------------------------------------------------------------
This is the first major spin since the version I posted in May.
Changes are described in the SCCS deltas, but anyone analysing
or porting this should watch for the following:

- Lots of SVR4 stuff. Look at the Makefile and common.h; you will
  need to make sure that SVR4 is defined to build a version for SVR4.
- Fixed a major bug whereby aliased printers (a.k.a. virtual printers)
  didn't show up in the printer list.
- Since some commands (especially lpq) can hang up forever if, say,
  the host of a remote printer is down, the su_popen mechanism now
  includes a watchdog timer. I HAVE NOT HAD A CHANCE TO TEST THIS
  LOGIC ON SVR4 YET! The code was derived from the System V compatiility
  section of the AnswerBook, so it _should_ be OK, but I can't wait to
  test it before posting this.
- I've mades lots of lint-suggested improvements. It doesn't lint
  100% cleanly yet, but it's a lot better.
- The client testbed has been tightened up a bit and the reporting
  is somewhat clearer. Please run it.

Feedback is solicited.

Geoff Arnold (Geoff.Arnold@Sun.COM)
July 24, 1991

----------------------------------------------------------------------------

This version includes support for TCP as well as UDP, both in the
server and in the test client.  Some of the calls can have long
responses, in which case TCP is the preferred transport.

Jon Dreyer
January 28, 1992

----------------------------------------------------------------------------

This release incorporates minor bug fixes occasioned by internal testing
against preliminary versions of PC-NFS subsystems which actually use the
V2 protocol features. It also addresses a security hole which was identified:
see the comment in pcnfsd_print.c for details. This is the version
of the daemon which we expect to send out for beta testing.

Geoff Arnold
November 16, 1991

----------------------------------------------------------------------------

Several people pointed out that if I was going to fix the security
hole, I should *REALLY* fix it. So this revision checks every argument
for every shell metacharacter. This means that if your print subsystem
allows such characters in printer names, print job id's, user names,
etc. you're going to have to relax the restrictions or tighten up
elsewhere. The routine "suspicious()" in pcnfsd_print.c is the starting
point for this.

Geoff Arnold
November 21, 1991

----------------------------------------------------------------------------

This version includes one more tweak on the previous security fix, plus
a fix for the "user shell" security hole.

Geoff Arnold
December 17, 1991

----------------------------------------------------------------------------

Fix a stupid bug - the secondary groups array wasn't static, so it
got overwritten, resulting in the corruption of some GIDs.

Geoff Arnold
December 18, 1991
----------------------------------------------------------------------------

This version corresponds to PC-NFS 4.0a: in other words, the first patch
to PC-NFS 4.0 FCS. The main changes here are to include support for
Ultrix 4.2 and use my_strdup() instead of strdup() throughout. The latter
change was made for two reasons. Firstly, my_strdup() uses grab() which
centralizes the storage allocation, making it easier to get out an error
message if failure occurs. Secondly, it turns out that some systems
(ULtrix) don't have strdup().

Geoff
April 27, 1992
----------------------------------------------------------------------------

This version has been extensively reorganized to make it easier to
accomodate alternative printing schemes. Please read common.h and the
Makefile for details. It also supports SVR4 style password aging,
returning appropriate messages in the "comment" field of the RPC
results. It will monitor /etc/printcap (for BSD-style systems) or 
/etc/lp/printers (for SVR4) and will trigger a rebuild of the
printer list if the file/directory changes. It also restricts logins
to "user accounts", and supports configurable restriction by uid.

Geoff
August 18, 1992

----------------------------------------------------------------------------

There are a fairly small set of cleanups in this version. The most obvious
change is to the Makefile, which has been reorganized to make it easier
to build versions for multiple architectures in the same tree. The
build now takes place in a named subdirectory. The infamous yp_match
bug is fixed, as are the undefined's in the WTMP code in Solaris 1.0.1.

Geoff
October 12, 1992

----------------------------------------------------------------------------

This version brings printing under the same userid range restrictions
as authentication. Check pcnfsd.8c for details. Also it fixes a bug in
pcnfsd_print.c where if the "suspicious()" check failed, a null
pointer would be returned. (Thanks to Brian Fitzgerald at RPI for this.)

Geoff
November 4, 1992

----------------------------------------------------------------------------

This versions takes the multiple platform architecture and simplifies
it by providing a Makefile for each architecture. This version supports:
	SunOS 4.1.2
	SunOS 4.0.3c
	SVR4 (including Solaris 2.x)
	BSD (including BSD/386 and 386bsd)
	Ultrix 4.x
Among the numerous small fixes is logic to allow SunOS 4.1.x servers
to accept the BSD-style names from "lpc" as well as the SVR4
style names from "lpstat". Please read common.h for more details.

Geoff Arnold
January 29, 1993
