PLP -- the Portable Line Printer spooler system
PLP is a portable, reliable implementation of the BSD Line Printer Spooler (LPD) system. Some new features that improve on the features of most BSD LPD implementations:
- The PLP daemon can run from inetd, resulting in reduced virtual memory usage and more reliability at the expense of request turn-around time.
- TCP/IP sockets can be used as line printer devices, allowing printers to be connected to terminal servers, and allowing use of recent HP LaserJet printers' MIO interfaces.
- Input-filters can be used in a remote-printer printcap entry, ie. one where the file is forwarded to another host for printing.
- Extremely verbose and chatty error messages have been added. These greatly ease debugging and installation. In addition, the "checkpc" utility can be used to set file permissions and other items for use by the PLP software. The PLP daemon can also fix some common permissions problems on-the-fly.
- Security: the setuid executables now sanitize their environment before exec'ing other programs.
- Security: lpd will check any command lines before exec'ing them, logging an error message if shell metacharacters are embedded in them.
- Security: PLP is immune to the security hole described in 8lgm advisory 3.
- Security: "root" and "daemon" permissions are used only when they are explicitly needed.
- The PLP software can be used with NFS spool directories, in which there is a common set of spool queues, as well as the usual environment where each host transfers print jobs to a common host.
- Access and permission to use PLP functions is controlled by entries in a printer permissions file which can restrict use by user name, host, spooler, page useage, and a host of other factors. The printcap file is used to specify the printer queues and their operation.
- Jobs can now be prioritized. The maximum priority a user can specify is set in the printer permissions file.
- In addition to the general printer permissions file, each spool queue can have its own additional printer permissions file.
- Line printer control functions can be exercised from a remote host. Hosts and users with remote control permissions are specified by entries in the printer permissions file.
- The unspooling of jobs can be performed by a user defined program, rather than the spooler. This allows the spooler to be used to send jobs to remote sites using various file transfer protocols.
- remote-printer sequences ("rm", "rp" printcap entries) with more than two entries are possible.
The code has been extensively ported, and uses GNU autoconf to determine its portability options.
It's in constant use on SunOS 4.1.x and Solaris 2.x, so it will definitely work there. It's also been checked for memory leaks and so on using Purify.
(link to FTP archive)
This software is based on PLP version 2.0, by Prof. Patrick Powell of the Electrical and Computer Engineering Dept., San Diego State University (firstname.lastname@example.org). It is being distributed under his copyright. PLP is Copyright © 1988 Patrick Powell.
email@example.com-- this page last modified: Mar 95