ESP-002-20050209
Copyright 1993-2005 by Easy Software Products, All Rights Reserved.
The ESP Print Pro Software Administrators Manual explains how to install and configure the ESP Print Pro software on your systems. This guide assumes that you know how to perform basic system administration tasks on your systems.
This guide is organized into the following sections:
If you are new to the ESP Print Pro software, you will probably want to read Chapters 1, 2, and 3. Additionally, Appendix B provides a good resource for network printers and print servers.
Various font and syntax conventions are used in this guide. Examples and their meanings and uses are explained below:
Example | Description | |
---|---|---|
lpstat
lpstat(1) | The names of commands; the first mention of a command or function in a chapter is followed by a manual page section number. | |
/var
/usr/share/cups/data/testprint.ps | File and directory names. | |
Request ID is Printer-123 | Screen output. | |
lp -d printer filename ENTER | Literal user input; special keys like ENTER are in ALL CAPS. | |
12.3 | Numbers in the text are written using the period (.) to indicate the decimal point. |
This chapter provides an overview of how ESP Print Pro works.
For years the printing problem has plagued UNIX. Unlike Microsoft® Windows® or Mac OS, UNIX has no standard interface or system in place for supporting printers. Among the solutions currently available, the Berkeley and System V printing systems are the most prevalent.
These printing systems support line printers (text only) or PostScript printers (text and graphics), and with some coaxing they can be made to support a full range of printers and file formats. However, because each varient of the UNIX operating system uses a different printing system than the next, developing printer drivers for a wide range of printers and operating systems is extremely difficult. That combined with the limited volume of customers for each UNIX varient has forced most printer vendors to give up supporting UNIX entirely.
ESP Print Pro is designed to eliminate the printing problem. One common printing system can be used by all UNIX varients to support the printing needs of users. Printer vendors can use its modular filter interface to develop a single driver program that supports a wide range of file formats with little or no effort. Since ESP Print Pro provides both the System V and Berkeley printing commands, users (and applications) can reap the benefits of this new technology with no changes.
ESP Print Pro is based upon an emerging Internet standard called the Internet Printing Protocol. IPP has been embraced by dozens of printer and printer server manufacturers and is supported by Microsoft Windows 2000.
IPP defines a standard protocol for printing as well as managing print jobs and printer options like media size, resolution, and so forth. Like all IP-based protocols, IPP can be used locally or over the Internet to printers hundreds or thousands of miles away. Unlike other protocols, however, IPP also supports access control, authentication, and encryption, making it a much more capable and secure printing solution than older ones.
IPP is layered on top of the Hyper-Text Transport Protocol ("HTTP") which is the basis of Web servers on the Internet. This allows users to view documentation, check status information on a printer or server, and manage their printers, classes, and jobs using their Web browser.
ESP Print Pro provides a complete IPP/1.1 based printing system that provides Basic, Digest, and local certificate authentication and user, domain, or IP-based access control. 128-bit SSL and TLS encryption can also be enabled and used with ESP Print Pro.
Each file or set of files that is submitted for printing is called a job. Jobs are identified by a unique number starting at 1 and are assigned to a particular destination, usually a printer. Jobs can also have options associated with them such as media size, number of copies, and priority.
ESP Print Pro supports collections of printers known as classes . Jobs sent to a class are forwarded to the next available printer in the class. A special type of class called an implicit class is also supported by ESP Print Pro. Implicit classes are created automatically on client machines when more than one server supports a particular printer. This allows the client machines to use any server for a particular printer transparently to the user, providing both load-balancing and failsafe operation.
Filters allow a user or application to print many types of files without extra effort. Print jobs sent to a ESP Print Pro server are filtered before sending them to a printer. Some filters convert job files to different formats that the printer can understand. Others perform page selection and ordering tasks.
ESP Print Pro provides filters for printing many types of image files, HP-GL/2 files, PDF files, and text files. ESP Print Pro also supplies PostScript and image file Raster Image Processor ("RIP") filters that convert PostScript or image files into bitmaps that can be sent to a raster printer.
Backends perform the most important task of all - they send the filtered print data to the printer.
ESP Print Pro provides backends for printing over parallel, serial, and USB ports, and over the network via the IPP, JetDirect (AppSocket), and Line Printer Daemon ("LPD") protocols. Additional backends are available in network service packages such as the SMB backend included with the popular SAMBA software.
Backends are also used to determine the available devices. On startup each backend is asked for a list of devices it supports, and any information that is available. This allows the parallel backend to tell ESP Print Pro that an EPSON Stylus Color 600 printer is attached to parallel port 1, for example.
Printer drivers in ESP Print Pro consist of one or more filters specific to a printer. ESP Print Pro includes thousands of printer drivers optimized for your printers.
Printers and classes on the local system are automatically shared with other systems on the network - the administrator of a server does not need to configure the client machines! This allows you to setup one system to print to a printer. This system can then be used as a print server or spool host for all other systems. Users may then select a local printer by name or a remote printer using "name@server".
This chapter describes how to install the ESP Print Pro software and license for your system. If your system configuration differs from the examples given in this chapter you may wish to consult the documentation that came with the system.
On Microsoft Windows, the ESP Print Pro software is provided in a single package with all files. For all other operating systems, it is organized into a "base" software distribution that includes all of the printing tools, documentation, and server software, a "SAMBA" software distribution that includes printer drivers for Windows clients, and several "driver" distributions that provide printer drivers for various printers.
For best functionality, the ESP Print Pro software should be loaded on all systems that print. The base software and Windows printer drivers are licensed for both the server and any client machines that communicate with the server.
The "SAMBA" driver software should only be loaded on a server that is running the SAMBA software and will be supporting clients running the Windows operating system.
The printer drivers should only be loaded on a server or standalone machine and are used to communicate directly with the printers on your system. Client machines cannot use the printer drivers, as they are licensed for the server system.
ESP Print Pro can only be used on systems running:
If you are uncertain about the operating system version on your system, type the following command at a shell prompt:
uname -r ENTER
The ESP Print Pro base software requires a minimum of 22Mb of disk
space. Additional space is required for the printer drivers, for a
total of about 75Mb for all printer drivers. You can determine the
amount of free disk space using the df(1)
command:
df -k ENTER
The software is installed in the following directories:
Additional disk space may be used during printing for temporary
storage; temporary files are normally created in /var/tmp
for user programs and /var/spool/cups/tmp for print filters
and printer drivers, however this can be overridden by setting the
TMPDIR
environment variable for user programs, or by setting the TempDir
directive in the
/etc/cups/cupsd.conf file for print filters and printer drivers.
The PostScript® Raster Image Processor (RIP) used for non-PostScript printers may create a page swap file if the size of the page image exceeds the RIP cache; the default size of the RIP cache is 8Mb. The actual amount of disk space used varies depending on the size and resolution of the print job and can be estimated with one of the following formulas:
bytes = page-width * page-height * resolution * resolution
bytes = page-width * page-height * resolution * resolution * 4
The Image RIP used for printing image files may require additional temporary disk space during printing as well. The amount of disk space used is based on the image size (not the page size as for the PostScript RIP) and can be estimated using one of the following formulas:
bytes = image-width * image-height
bytes = image-width * image-height * 4
The portable packages handle installations on diskless clients that mount /usr as a read-only NFS directory. This works since the appropriate executables reside under the /usr directory. Other types of diskless client configurations are not supported.
You must be logged onto your system as an administrative user, usually "root" on Linux and UNIX-based systems, to install the software.
Note:
When installing on a Linux or UNIX-based system, ESP Print Pro replaces the existing printing system installed on your system with the Common UNIX Printing System. When installing using the portable packages, the original printing system software is backed up automatically and is restored if you remove ESP Print Pro from your system using the commands shown later in this chapter. This backup functionality is only available with the portable packages. When installing on a Mac OS X system, ESP Print Pro does not replace the existing printing system but uses the Common UNIX Printing System that comes with Mac OS X. |
To install the ESP Print Pro software from CD-ROM, insert the CD-ROM into your CD-ROM drive and login to an administrative account, e.g. "root", on your system.
Some operating systems automatically mount the CD-ROM media when it is inserted in the CD-ROM drive. If your system does not do this, run one of the following commands to mount the CD-ROM:
mkdir /cdrom ENTER mount /dev/cd0 /cdrom ENTER
mkdir /cdrom ENTER mount -o ro,cdcase -F cdfs /dev/dsk/c1t2d0 /cdrom ENTER
mount /mnt/cdrom ENTER mount /media/cdrom ENTER [Alternate location]
On MacOS X, double-click on the Install icon to start the portable software installation program. Otherwise, type one of the following commands to run the software installation script:
/cdrom/install.sh ENTER
/CDROM/install.sh ENTER
/mnt/cdrom/install.sh ENTER /media/cdrom/install.sh ENTER [Alternate location]
/cdrom/ppro/install.sh ENTER
The installation script asks you a few questions and then installs the desired software on your system. If you are running the installation script from an X11 display, a graphical setup wizard will appear.
IRIX software packages are provided in the dist directory. Double-click on the CD-ROM icon to install software from the CD-ROM or run the software manager from the command-line:
cd /CDROM ENTER swmgr -f dist ENTER
RPM packages for ESP Print Pro are provided in the RPMS
directory. The rpm(8)
command supplied with Linux can be
used to install them:
rpm -i /mnt/cdrom/RPMS/*.rpm ENTER
Graphical RPM installation programs can also be used.
Debian packages for ESP Print Pro are provided in the DEBS
directory. The dpkg(8)
command supplied with Linux can be
used to install them:
dpkg -i /mnt/cdrom/DEBS/*.deb ENTER
Graphical Debian installation programs can also be used.
Solaris software packages are provided in the solaris/intel
and solaris/sparc directories. Run the swmtool(1m)
command to install software from the CD-ROM:
swmtool -d /cdrom/ppro/solaris/intel ENTER swmtool -d /cdrom/ppro/solaris/sparc ENTER
ESP Print Pro must be licensed on each system that talks directly to a printer. You get your software license from Easy Software Products or the reseller that sold the software to you. The ESP invoice number or enable code provided with your software can also be used to request the software license on-line at:
http://www.easysw.com/myesp.php
Once you have your software license, follow the instructions included with the license to add it to your system.
Since many newer computers do not provide hardware serial number
information, it is extremely important to make a backup of your
software licenses. To do so, copy the files in the /etc/software
directory using the following command:
tar cvf esp_backup_file /etc/software ENTER
Should you ever re-install the operating system or build a new boot
disk for your computer, simply restore the files in the
/etc/software
directory to re-license your ESP Print Pro software
using the following command:
tar xvf esp_backup_file ENTER
Note:
Copying the files using the |
You can manage your software licenses using the esplm
and esplicense
commands. The esplm
command
provides a graphical license management interface while the
esplicense
command provides a command-line interface. The
esplm
command is available in the ESP folder under
Applications in the MacOS X finder window.
Licenses record the product code, customer number, system number and expiration date of your software. Double-click on the License Manager icon in the MacOS X finder window or type one of the following commands to list your software license information:
/usr/sbin/esplicense list ENTER /usr/sbin/esplm ENTER
Software updates can be obtained from the Internet using a World Wide Web ("WWW") browser such as FireFox from the following URL:
http://www.easysw.com/printpro/software.php
Installation instructions are provided online for your convenience.
Software upgrades or patches are available free of charge from our web site for the same major release of ESP Print Pro (4.0, 4.1, 4.2, 4.3, etc.)
If you installed the portable packages, simply re-install the software to upgrade your system to the latest version of the software. Make sure to update both the base software and printer drivers you need.
For the vendor distributions, follow the instructions included with your operating system for upgrading software packages.
Should you ever need to remove the ESP Print Pro software, the
portable packages provide .remove
scripts in the
/etc/software
directory that will remove ESP Print Pro and
restore the original files that were overwritten, if any. For example,
if you have the ESP Print Pro base software and the HP printer drivers
loaded type:
/etc/software/printpro-hp.remove ENTER /etc/software/printpro.remove ENTER
to remove the ESP Print Pro software and printer drivers.
For MacOS X, simply click on the Uninstall icon to start the uninstall wizard and select the components you wish to uninstall.
For the vendor distributions, follow the instructions included with your operating system for removing software packages.
This chapter describes how to add your first printer and how to manage your printers.
Each printer queue has a name associated with it; the printer name can up to 127 printable characters except the space, "/", and "@". Case is not significant, e.g. "PRINTER", "Printer", and "printer" are considered to be the same name.
Printer queues also usually have a PostScript Printer Description
("PPD") file associated with them. PPD files describe the capabilities
of each printer, the page sizes supported, etc., and are used for
PostScript and non-PostScript printers. ESP Print Pro includes PPD
files for thousands of printers. You can see a list of the
currently-installed PPD files using the lpinfo(1m)
command:
lpinfo -m ENTER raw Raw Queue bgcb_210.ppd.gz Birmy PowerRIP Win/NT (Canon BJC210) bgcb_240.ppd.gz Birmy PowerRIP Win/NT (Canon BJC240) bgcb_600.ppd.gz Birmy PowerRIP Win/NT (Canon BJC600) bgcb_610.ppd.gz Birmy PowerRIP Win/NT (Canon BJC610) bgcb4100.ppd.gz Birmy PowerRIP Win/NT (Canon BJC4100) bgcb4200.ppd.gz Birmy PowerRIP Win/NT (Canon BJC4200) bgcb4550.ppd.gz Birmy PowerRIP Win/NT (Canon BJC4550) ...
Finally, printer queues also have a device associated with them. The
device can be a parallel port, a network interface, and so forth.
Devices within ESP Print Pro use Uniform Resource Identifiers ("URIs")
which are a more general form of Uniform Resource Locators ("URLs")
that are used in your web browser. For example, the first parallel port
in Linux usually uses a device URI of parallel:/dev/lp0
.
You can see a complete list of supported devices by running the
lpinfo
command:
lpinfo -v ENTER network socket network http network ipp network lpd direct parallel:/dev/lp0 serial serial:/dev/ttyS1?baud=115200 serial serial:/dev/ttyS2?baud=115200 direct usb://EPSON/Stylus%20C80 network smb
The -v
option specifies that you want a list of
available devices. The first word in each line is the type of device
(direct, file, network, or serial) and is followed by the device URI or
method name for that device. Local devices generally have device URIs
of the form method:/directory/filename
while network
devices use the more familiar method://server
or
method://server/path
format.
ESP Print Pro provides three methods for adding printers: a
command-line program called lpadmin(1m)
, a WWW interface,
and graphical interface. The lpadmin
command allows you to
perform most printer administration tasks from the command-line and is
located in /usr/sbin. The WWW interface is located at:
http://localhost:631/admin
and steps you through printer configuration. The graphical interface
is called the Printer Manager (printers(1m)
) and is
started by double-clicking on the Printer Manager icon or
running the following command from a shell prompt:
/usr/sbin/printers ENTER
On MacOS X, the Printer Manager icon can be found by opening a Finder window, clicking on Applications , and double-clicking on the ESP folder.
If you don't like command-line interfaces, try the graphical or WWW interfaces instead.
Run the lpadmin
command with the -p
option
to add a printer to ESP Print Pro:
/usr/sbin/lpadmin -p printer -E -v device -m ppd ENTER
For a HP DeskJet 660C printer connected to the parallel port this would look like:
/usr/sbin/lpadmin -p DeskJet -E -v parallel:/dev/lp0 -m en/espdj660.ppd.gz ENTER
Similarly, a HP LaserJet 4 printer using a JetDirect network interface at IP address 11.22.33.44 would be added with the command:
/usr/sbin/lpadmin -p LaserJet -E -v socket://11.22.33.44 \ -m en/esplsjt4.ppd.gz ENTER
As you can see, en/espdj660.ppd.gz
and
en/esplsjt4.ppd.gz
are the PPD files for the HP DeskJet and HP
LaserJet drivers included with ESP Print Pro. You'll find a complete
list of PPD files and the printers they will work with on-line at:
http://localhost:631/drivers/index.html http://www.easysw.com/printpro/printers.php
ESP Print Pro includes a graphical Printer Manager (Figure 3.1)
called printers
which allows you to view, add, modify, and
delete printer queues and printer classes on your system.
Type the following command to start the Printer Manager:
/usr/sbin/printers ENTER
Figure 3.1: The ESP Print Pro Printer Manager.
To add a printer to the system, choose Add... from the Action menu. This will start the ESP Print Pro Printer Wizard (Figure 2.)
Figure 3.2: The Printer Wizard Welcome Page.
The welcome screen is the first thing you will see when adding a printer. To proceed with printer installation simply click on the Next button.
Figure 3.3: The Printer Wizard Name Page.
The printer name uniquely identifies a printer on your workstation. Type the name of the printer on the keyboard and press ENTER . The printer name can be up to 127 letters, numbers, and underscores.
The location is a textual string that describes the location of the printer. It can be any string up to 127 characters and is displayed in the Printer Manager's printer list. The location field is meant entirely for user consumption - you'll specify the connection to the printer next.
Figure 3.4: The Printer Wizard Connection Page.
After you enter a name for your printer you will next be asked about how the printer is connected to the system (Figure 3.4). Choose the button that corresponds to your printer's connection and click on the Next button.
If you have a network printer and are unsure about the type of connection to use, see Appendix B, "Common Network Settings". Printers on Microsoft Windows connections require the SAMBA software which is described in detail in Chapter 5, "Printing System Management".
Figure 3.5: The Printer Wizard Serial Port Selection Page.
The serial port selection page appears if you choose Serial Port on the connection page. To select a serial port move the mouse pointer over the desired serial port in the list and click the left mouse button.
Once you have selected the serial port, choose the baud rate, data bits, parity, and flow control necessary for your printer; these values should be documented in your printer's user manual.
Click on the Next button to proceed.
Figure 3.6: The Printer Wizard Parallel Port Selection Page.
The parallel or USB port selection page appears if you choose Parallel or USB Port on the connection page. Move the mouse pointer over the desired port in the list and click the left mouse button to select it.
Click on the Next button to proceed.
Figure 3.7: The Printer Wizard JetDirect Configuration Page.
The JetDirect configuration page appears if you choose JetDirect or compatible on the connection page. Enter the IP address (or hostname) and port number (usually 9100) of the JetDirect interface. If you are unsure about the current IP address of a JetDirect interface, you may print a test/configuration page on the printer or press the Test button on JetDirect print servers to see the current IP address and network settings. Consult Appendix B, "Common Network Settings" for the proper port number assignments for compatible network interfaces.
Click on the Next button to proceed.
Figure 3.8: The Printer Wizard LPD Printer Selection Page.
The LPD printer selection page appears if you choose LPD/LPR Host/Printer on the connection screen. Enter the IP address (or hostname) and queue name. Consult Appendix B, "Common Network Settings" if you are unsure about the proper queue name to use.
Click on the Next button to proceed.
Hint:
Microsoft Windows NT, 2000, and XP provide an LPD service under the name TCP/IP Printing Services. To enable LPD printing on NT, open the Services control panel, select the TCP/IP Printing Services service, and click on the Start button. Any shared printer will then be available via the LPD protocol using the share name for the queue name. |
Figure 3.9: The Printer Wizard Microsoft Windows Printer
Selection Page.
The Microsoft Windows printer selection page appears if you choose Windows 95/98/NT Server via SAMBA on the connection page. To select the host for your printer, start by clicking on the workgroup for the system, and then on the corresponding system shown in the list of hosts. When you choose a host, the list of available printers will be displayed on the right. Click on the desired printer to finish selecting your printer.
If your workgroup, server, or shared printer does not appear in the lists, enter the correct names in the text fields below the lists.
Click on the Next button to proceed.
Hint:
When printing to a shared printer on a Microsoft Windows NT, 2000, or XP server, use the LPD protocol instead. The LPD protocol does not require a hard-coded username and password and will correctly log the name of the printing user on the Windows server. |
Figure 3.10: The Printer Wizard Internet Printing Protocol
Configuration Page.
The IPP printer selection page appears if you choose Internet Printing Protocol on the connection screen. Enter the URI for the printer or host in the URI field. Consult Appendix B, "Common Network Settings" if you are unsure about the proper URI to use.
Click on the Next button to proceed.
Figure 3.11: The Printer Wizard Printer Driver Selection Page.
The printer driver selection page appears after you have chosen the connection for your printer. To choose a printer driver start by clicking on the printer's manufacturer from the list on the left side of this screen. If you do not see your manufacturer listed you may need to scroll the list downward by dragging the bar on the right side of the list.
Once you have selected the manufacturer, the complete list of printers will be shown in the righthand list. Choose your printer from the list (scrolling the list as necessary) by clicking the left mouse button.
If you do not see your printer listed and have a PostScript printer, insert the driver CD-ROM that came with your printer and click on the Have Disk button to select a PostScript Printer Description ("PPD") file for your printer from the CD-ROM.
Click on the Next button to add the printer.
After you have added a printer to the system, configure the default printing options by clicking on the Configure Printer button (Figure 3.12). The printer option dialog also allows you to configure any hardware options, such as a duplexer, that are installed in the printer.
Figure 3.12: The Printer Options Panel.
Click on the Print Test Page button to send a test page to the printer. The test page should look like Figure 3.13 .
Figure 3.13: Printer Test Page.
Click on the Add Another Printer button to add another printer to your system.
The ESP Print Pro web server provides a user-friendly "wizard" interface for adding your printers. Rather than figuring out which device URI and PPD file to use, you can instead click on the appropriate listings and fill in some simple information. Enter the following URL in your web browser to begin:
http://localhost:631/admin
Click on the Add Printer button to add a printer.
Note:
If you use Microsoft Internet Explorer on MacOS X as your web browser, use the following URL instead: http://127.0.0.1:631/admin This is required because the Microsoft web browser is unable to resolve the localhost address. |
The lpadmin
command enables you to perform most printer
administration tasks from the command-line. You'll find lpadmin
in the /usr/sbin directory.
Run the lpadmin
command with the -p
option
to add or modify a printer:
/usr/sbin/lpadmin -p printer options ENTER
The options arguments can be any of the following:
lpinfo
command with the -m
option.
A list of printer drivers included with ESP Print Pro can be found
on-line at:
http://localhost:631/drivers/index.html http://www.easysw.com/printpro/printers.php
enable(1)
and accept(1m)
commands
on the printer.Run the lpadmin
command with the -x
option
to delete a printer:
/usr/sbin/lpadmin -x printer ENTER
Run the lpadmin
command with the -d
option
to set a default printer:
/usr/sbin/lpadmin -d printer ENTER
The default printer can be overridden by the user using the
lpoptions(1)
command.
The enable
and disable
commands start and
stop printer queues, respectively:
/usr/bin/enable printer ENTER /usr/bin/disable printer ENTER
Printers that are disabled may still accept jobs for printing, but won't actually print any files until they are restarted. This is useful if the printer malfunctions and you need time to correct the problem. Any queued jobs are printed after the printer is enabled (started).
The accept
and reject
commands accept and
reject print jobs for the named printer, respectively:
/usr/sbin/accept printer ENTER /usr/sbin/reject printer ENTER
As noted above, a printer can be stopped but still accept new print jobs. A printer can also be rejecting new print jobs while it finishes those that have been queued. This is useful for when you must perform maintenance on the printer and will not have it available to users for a long period of time.
ESP Print Pro supports page and size-based quotas for each printer. The quotas are tracked individually for each user, but a single set of limits applies to all users for a partiuclar printer. For example, you can limit every user to 5 pages per day on an expensive printer, but you cannot limit every user except Johnny.
The job-k-limit, job-page-limit, and job-quota-peiod options determine whether and how quotas are enforced for a printer. The job-quota-period option determines the time interval for quota tracking. The interval is expressed in seconds, so a day is 86,400, a week is 604,800 and a month is 2,592,000 seconds. The job-k-limit option specifies the job size limit in killobytes. The job-page-limit option specifies the number of pages limit.
For quotas to be enforced, the period and at least one of the limits must be set to a non-zero value. The following options will enable quotas:
/usr/sbin/lpadmin -p printer -o job-quota-period=604800 \ -o job-k-limit=1024 ENTER /usr/sbin/lpadmin -p printer -o job-quota-period=604800 \ -o job-page-limit=100 ENTER
Or, you can combine all three options on the same line.
The -u option of the lpadmin
command controls which
users can print to a printer. The default configuration allows all
users to print to a printer:
/usr/sbin/lpadmin -p printer -u allow:all ENTER
ESP Print Pro supports allow and deny lists so that you can specify a list of users who are allowed to print or not allowed to print. Along with your list of users, you can specify whether they are allowed or not allowed to use the printer:
/usr/sbin/lpadmin -p printer -u allow:peter,paul,mary ENTER
This command allows peter, paul, and mary to print to the named printer, but all other users cannot print. The command:
/usr/sbin/lpadmin -p printer -u deny:peter,paul,mary ENTER
has the opposite effect. All users except peter, paul, and mary will be able to print to the named printer.
Note:
The allow and deny options are not cummulative. That is, you must provide the complete list of users to allow or deny each time. Also, ESP Print Pro only maintains one list of users - the list can allow or deny users from printing. If you specify an allow list and then specify a deny list, the deny list will replace the allow list - only one list is active at any time. |
After starting the Printer Manager as described earlier, simply click on the printer's icon and choose Modify... from the Action menu to modify an existing printer. The ESP Print Pro Printer Wizard window will appear, allowing you to change the configuration of your printer.
To delete a printer choose Delete... from the Action menu.
The Web interface is located at:
http://localhost:631/admin
From there you can perform all printer management tasks with a few simple mouse clicks.
Note:
If you use Microsoft Internet Explorer on MacOS X as your web browser, use the following URL instead: http://127.0.0.1:631/admin This is required because the Microsoft web browser is unable to resolve the localhost address. |
This chapter describes what printer classes are and how to manage them.
ESP Print Pro provides collections of printers called printer classes. Jobs sent to a class are forwarded to the first available printer in the class. Classes can themselves be members of other classes, so it is possible for you to define very large, distributed printer classes for high-availability printing.
ESP Print Pro also supports implicit classes. Implicit classes work just like printer classes, but they are created automatically based upon the available printers and classes on the network. This allows you to setup multiple print servers with identical printer configurations and have the client machines send their print jobs to the first available server. If one or more servers go down, the jobs are automatically redirected to the servers that are running, providing fail-safe printing.
Run the lpadmin
command with the -p
and
-c
options to add a printer to a class:
/usr/sbin/lpadmin -p printer -c class ENTER
The class is created automatically if it doesn't exist. To
remove a printer from a class use the -r
option:
/usr/sbin/lpadmin -p printer -r class ENTER
To remove the entire class just use the -x
option:
/usr/sbin/lpadmin -x class ENTER
The Printer Manager provides a Class Wizard window for managing printer classes (Figure 4.1). Double click on the Printer Manager icon or type the following command to start the Printer Manager:
/usr/sbin/printers ENTER
Then click on the Classes button in the tool bar and choose Add... from the Action menu. The Class Wizard (Figure 4.1) will then appear.
Figure 4.1: The ESP Print Pro Class Wizard
The class name can up to 127 printable characters except the space, "/", and "@". Case is not significant, e.g. "CLASS", "Class", and "class" are considered to be the same name.
The class description is a textual description of what the class represents, e.g. "All the LaserJets in Lab 2".
The class location is a textual description of where the printers in the class are located, e.g. "Lab 2".
At the bottom of the Class Wizard window are two lists. The printers in the list on the right are the printers that are part of the class.
Click on a printer icon and click on the right arrow button to add printers in the lefthand list to the class. Similarly, click on the printer in the righthand list and click on the left arrow button to remove printers from the class.
Click on the OK button to commit your changes to the class. To leave everything as it was, click on the Cancel button.
Click on the class you would like to delete and choose Delete... from the Action menu to delete it.
The Web interface is located at:
http://localhost:631/admin
The Add Class and Modify Class interfaces provide a list of available printers; click on the printers of interest to add them to the class.
Note:
If you use Microsoft Internet Explorer on MacOS X as your web browser, use the following URL instead: http://127.0.0.1:631/admin This is required because the Microsoft web browser is unable to resolve the localhost address. |
A noted earlier, implicit classes are created automatically from the
available network printers and classes. To disable this functionality,
set the ImplicitClasses
directive to Off
in the cupsd.conf
file, or
use the Configuration Wizard by clicking on the Server
button in the Printer Manager. You will find more
information on doing this in Chapter 5,
"Printing System Management".
This chapter shows how you can configure the ESP Print Pro server.
Several text files are used to configure ESP Print Pro. All of the server configuration files are located in the /etc/cups directory:
lpadmin
command, or the Web interface.
lpadmin
command, or the Web Interface.
If you are interested in changing these files by hand, see Appendix C, Configuration Files for more information.
The Configuration Wizard is accessable from the Printer Manager window by clicking on the Server button or choosing Server from the Go menu (Figure 5.1.)
Figure 5.1: Starting the Configuration Wizard from the Printer
Manager.
If you are not logged in as the root user or are configuring a remote
server, a password dialog will appear requesting the username and
password to use for the administration request. Unless your username is
a valid administrative user, change the username field to root
and enter the root password.
Once authenticated, the Configuration Wizard window will appear (Figure 5.2.)
Figure 5.2: The Configuration Wizard window.
The window consists of several tabs that provide access to various configuration options supported by the ESP Print Pro server. Click on the tab to show those options.
The Browsing tab (Figure 5.3) allows you to configure the printer browsing features in ESP Print Pro. Printer browsing allows your server to automatically share its printers with client machines and other servers.
The options in the Browsing tab correspond to the cupsd.conf configuration directives shown in Table 5.1.
Control | Directive(s) |
---|---|
Browsing | Browsing
BrowseProtocols |
Browse Port | BrowsePort
|
Browse Interval |
BrowseInterval |
Browse Timeout |
BrowseTimeout |
Browse Addresses |
BrowseAddress BrowseAllow
BrowseDeny
BrowsePoll BrowseRelay
|
Browse Order | BrowseOrder
|
Browse Options |
BrowseShortNames
HideImplicitMembers
ImplicitAnyClasses
ImplicitClasses |
Figure 5.3: The Browsing Tab.
The Browsing controls determine whether browsing information is received or sent. Click on Yes to turn browsing on and No to turn browsing off. The CUPS and SLP check boxes control which protocols to use.
The CUPS browsing protocol is a UDP broadcast-based browsing service that is suitable for most small networks. Each server broadcasts a small (typically about 80 bytes) packet of information describing each local printer on the server at regular intervals. Clients then see these printers and provide them to each user. CUPS browsing is usually only available on the server's subnet but can be relayed to other subnets fairly easily.
The Service Location Protocol ("SLP") is a UDP multicast-based directory service that is better suited to larger corporate networks. A server advertises each printer as a separate printing service using the SLPv2 IPP printer template. Clients then do an active search for printers via SLP at regular intervals to determine which printers are available on the network. SLP browsing works best when you have one or more SLP Directory Agents ("DAs") on your network to consolidate the list of services that are available on the network.
The default client and server configuration uses CUPS browsing. If you wish to use SLP browsing, it must be enabled on each server and client separately.
The Browse Port control determines which UDP port to use when sending or receiving CUPS browsing information. The port number must be the same on all systems that wish to share or use printers on a server.
The default port number is the IPP port 631.
The Browse Interval control determines how often printer information is sent from servers and how often servers are polled by clients. This value should be no greater than 1/2 of the timeout value described next for reliable operation.
The default interval is 30 seconds.
The Browse Timeout control determines how long shared printers are shown on clients before they timeout. When a client has not seen a shared printer on the network for the specified timeout period, the shared printer is then removed from the list of available printers shown to users. The timeout must be at least twice the interval value described previously for reliable operation.
The default timeout is 300 seconds.
The Browse Addresses list shows the CUPS protocol browsing address. The default setting is to send printer information to the "all interfaces" broadcast address 255.255.255.255.
Click on the Add... button to add new browse addresses, Edit... to edit an address, and Delete to delete an address.
Click on the Default List button to restore the list to
the default browse address (Send 255.255.255.255
).
Figure 5.4: The Browse Address Allow Dialog.
CUPS browsing can allow printer information from specific addresses
or names with the BrowseAllow
directive. This enables you to ignore or listen to specific servers or
networks. To add a new Allow line to the Browse
Addresses list, click on the Add... button. When the
dialog appears (Figure 5.4), choose the Allow type to
specify that browsing information from the specified address or name
should be used.
The From field can contain a specific IP address (
11.22.33.44
), a class-based network number (11.22.33
or
11.22.33.*
), or a CIDR network number (
11.22.33.0/24
).
The From field can also contain a hostname (
foo.bar.com
) or domain name (*.bar.com
). Name-based
access control also requires that the hostname lookup option be enabled
- see the Network tab for this
option.
Finally, the From field can contain any of the following special names:
all
- Allows printer information from all hosts.none
- Does not allow printer information from any
hosts.@LOCAL
- Allows printer information from all local
network interfaces.@IF(name)
- Allows printer information from hosts on
the specified network interface.
Figure 5.5: The Browse Address Deny Dialog.
CUPS browsing can deny printer information from specific addresses or
names with the BrowseDeny
directive. This enables you to ignore or listen to specific servers or
networks. To add a new Deny line to the Browse
Addresses list, click on the Add... button. When the
dialog appears (Figure 5.5), choose the Deny type to specify
that browsing information from the specified address or name should be
used.
The From field can contain a specific IP address (
11.22.33.44
), a class-based network number (11.22.33
or
11.22.33.*
), or a CIDR network number (
11.22.33.0/24
).
The From field can also contain a hostname (
foo.bar.com
) or domain name (*.bar.com
). Name-based
access control also requires that the hostname lookup option be enabled
- see the Network tab for this
option.
Finally, the From field can contain any of the following special names:
all
- Denies printer information from all hosts.none
- Does not deny printer information from any
hosts.@LOCAL
- Denies printer information from all local
network interfaces.@IF(name)
- Denies printer information from hosts on
the specified network interface.
Figure 5.6: The Browse Address Poll Dialog.
When a print server is on a different subnet than the client, CUPS browsing information sent from the server will usually not be visible to the client. To work around this problem, the Poll type (Figure 5.6) allows a client to access printers on a remote server automatically.
The From field contains the hostname or IP address of the server you wish to poll.
The Poll type can be combined with the Relay type described next to relay browsing information from a remote server to all clients on the local subnet.
Figure 5.7: The Browse Address Relay Dialog.
CUPS browsing provides a relay or repeater mechanism that enables you
to relay browsing information from one network to another. For example,
if server A on subnet A (11.22.33.*
) provides printing
services for a corporate network, and machine B on subnet B (
11.22.44.*
) acts as a gateway between subnets A and B, machine B
can be setup to relay browsing information from subnet A to subnet B.
Similarly, client C on subnet B could poll server A and relay the
browsing information to subnet B. The Relay type (Figure
5.7) provides support for relaying or repeating browsing information
between networks.
The From address provides an address or name that is used
to match the source of the browse packets. For the first example, the
From address on machine B would be 11.22.33.*
. In
the second example, the From address on client C would be
the localhost address (127.0.0.1
) since polled printers
are broadcast to the local loopback interface.
The To address provides the UDP broadcast address for the
browsing packets. For the first example, the To address on
machine B would be 11.22.44.255
. For the second example,
the To address on client C could be 11.22.44.255
or 255.255.255.255
- the latter would send the browsing
packets to all network interfaces known to client C instead of just
subnet B.
The To address can also contain the special names
@LOCAL
or @IF(name)
. The @LOCAL
name
specifies that printer information should be relayed to all local
network interfaces except dial-up and other point-to-point connections.
The @IF(name)
name specifies that printer information
should be send to the named network interface.
Figure 5.8: The Browse Address Send Dialog.
The Send type (Figure 5.8) enables you to configure the
send addresses for all browsing information. The To address
provides the UDP broadcast address for the browsing packets. The
default configuration sends CUPS browsing packets to the "all
interfaces" broadcast address, 255.255.255.255
. If your
server also provides a dial-up or other WAN or Internet connection as
well as a local network interface, you probably will want to change
this to the broadcast address for your LAN.
The To address can also contain the special names
@LOCAL
or @IF(name)
. The @LOCAL
name
specifies that printer information should be relayed to all local
network interfaces except dial-up and other point-to-point connections.
The @IF(name)
name specifies that printer information
should be send to the named network interface.
The Browse Order control specifies the default access control for CUPS browsing packets. Set this to Deny,Allow to ignore browsing packets by default, or Allow,Deny to use browsing packets by default.
The Browse Options check boxes specify how to manage remote printers. The Implicit Classes check box determines whether implicit classes are created automatically. Implicit classes are collections of remote printers with the same name. When two or more remote printers are seen with the same name, e.g. LaserJet@server1 and LaserJet@server2, an implicit class is automatically created that joins the queues into a single virtual queue, e.g. LaserJet. Jobs sent to this virtual queue are forwarded to the next available server in the implicit class, providing automatic fault-tolerance and load-balancing between the available servers.
The Hide Implicit Members check box determines whether the member printers of an implicit class are hidden from the user. In the previous example, an implicit class named LaserJet was created for the printers LaserJet@server1 and LaserJet@server2, for a total of three queues. When the Hide Implicit Members box is checked, the LaserJet@server1 and LaserJet@server2 queues will be hidden from the user - only the LaserJet queue will be visible, pointing to both of the (hidden) queues on the two servers.
The Use Short Names check box determines if remote printers will use a "short name" whenever possible. For example, if you have a server with a printer named LaserJet, the client can name the local queue either LaserJet or LaserJet@server. If the Use Short Names box is checked, the server will use the short name (LaserJet) unless there is already a local queue of that name or there is more than one remote printer with the same name (e.g. LaserJet@server1, LaserJet@server2).
The "Any" Classes check box determines whether the server will create implicit classes containing a mix of local and remote printers. For example, if a client has a local printer called "LaserJet" and a server has a printer called "LaserJet@server", an implicit class called "AnyLaserJet" will be created if the "Any" Classes box is checked.
Figure 5.9: The Directories Tab.
The Directories tab (Figure 5.9) determines the location of various files on your system. The options in the Directories tab correspond to the cupsd.conf configuration directives shown in Table 5.2.
Control | Directive(s) |
---|---|
Data Directory | DataDir
|
Document Directory |
DocumentRoot |
Font Path | FontPath |
Request Directory |
RequestRoot |
Server Binaries | ServerBin
|
Server Files | ServerRoot
|
Temporary Files | TempDir
|
The Data Directory field contains the directory which holds the data files used by the printing system. The default value is /usr/share/cups.
The Document Directory field contains the location of HTML, PDF, and image files for the software documentation and web interface content. The default value is /usr/share/doc/cups.
The Font Path field contains a list of directories that are searched when looking for fonts to use for printing. Directories are separated using the colon (:) character. The default value is /usr/share/cups/fonts.
The Request Directory field contains the directory that contains the print job and request files sent by clients to the server. The default value is /var/spool/cups.
The Server Binaries field contains the directory where the filters, printer drivers, backends, background programs, and CGI programs are located. The default value is /usr/lib/cups or /usr/libexec/cups depending on the operating system.
The Server Files field contains the directory where the cupsd.conf and other server configuration files can be found. The default value is /etc/cups.
The Temporary Files field contains the directory the scheduler uses to hold temporary files for printing. The default value is /var/spool/cups/tmp.
Figure 5.10: The Filter Tab.
The Filter tab (Figure 5.10) contains the print filter options. The User and Group options are also used when running CGI programs for the web interface.The options in the Filter tab correspond to the cupsd.conf configuration directives shown in Table 5.3.
Control | Directive(s) |
---|---|
User | User |
Group | Group |
RIP Cache (Mb) | RIPCache
|
Filter Limit | FilterLimit
|
The User field contains the name of the user that all
filter programs and printer drivers are run under. This can be the name
of any unpriviledged user. The default value depends on the operating
system and is usually lp
.
Note:
Do not set the User field to |
The Group field contains the name of the group that all
filter programs and printers drivers run under. The default group name
is admin
, sys
, system
, or
root
depending on your operating system.
The RIP Cache (Mb) control specifies the maximum amount of memory each filter should use. The default value is 8Mb.
The Filter Limit control specifies the maximum cost of all filters that are running at any given time. This enables you to limit the number of print jobs that print simultaneously based on the complexity of the filtering required. A typical PostScript printer needs a filter limit of 100, while most non-PostScript printers require a limit of 250. A limit of 0 (the default) specifies that jobs should be printed immediately without regard to the number of jobs that are already printing.
Figure 5.11: The Jobs Tab.
The Jobs tab contains various history and limit options for jobs. The options in the Jobs tab correspond to the cupsd.conf configuration directives shown in Table 5.4.
Control | Directive(s) |
---|---|
Preserve Job History |
PreserveJobHistory |
Preserve Job Files |
PreserveJobFiles |
Auto Purge Jobs |
AutoPurgeJobs |
Max Jobs | MaxJobs |
Max Jobs Per Printer |
MaxJobsPerPrinter |
Max Jobs Per User |
MaxJobsPerUser |
The Preserve Job History option determines whether a history of completed print jobs is kept. This is necessary for doing some kinds of printer accounting and enforcement of printer quotas. The default setting is Yes.
The Preserve Job Files option determines whether the print files in a job are retained after the job completes. Retained jobs can be reprinted at a later time by restarting the job. The default setting is No.
The Auto Purge Jobs option determines whether the job history and files are automatically purged when they are no longer needed for enforcement of printer quotas. The default setting is No.
The Max Jobs option determines the maximum number of print
jobs that will be allowed by the server, including completed print jobs
if job history is enabled. The default setting is 0
for an
unlimited number of jobs.
The Max Jobs Per Printer option determines the maximum
number of pending and active print jobs that will be allowed for any
particular printer. This option is useful for limiting the backlog of
print jobs on printers. The default setting is 0
for an
unlimited number of jobs per printer.
The Max Jobs Per User option determines the maximum number
of pending and active print jobs that will be allowed for any
particular user. The default setting is 0
for an unlimited
number of jobs per user.
Figure 5.12: The Log Files Tab.
The Log Files tab contains options for the log files created by the ESP Print Pro server. The options in the Log Files tab correspond to the cupsd.conf configuration directives shown in Table 5.5.
Control | Directive(s) |
---|---|
Access Log | AccessLog
|
Error Log | ErrorLog |
Page Log | PageLog |
Max Log Size | MaxLogSize
|
Log Level | LogLevel |
The Access Log field contains the name of the HTTP access
log file that is stored in "common log format". The field can contain
any valid filename or the string syslog
which will log all
server accesses to the operating system log files. The default value is
/var/log/cups/access_log.
The Error Log field contains the name of the error log
file that contains text messages from the server, filters, printer
drivers, and backends. The field can contain any valid filename or the
string syslog
which will log all messages to the operating
system log files. The default value is /var/log/cups/error_log
.
The Page Log field contains the name of the page log file
that contains an entry for each page that is printed. The field can
contain any valid filename or the string syslog
which will
log all pages to the operating system log files. The default value is
/var/log/cups/page_log.
The Max Log Size (Mb) control determines the maximum size of each log file in megabytes. The default value is 0Mb for no limit.
The Log Level chooser determines the type of messages that are stored in the error log file. The default setting is General Information which provides general information messages along with any error messages. If you experience difficulties with the ESP Print Pro software, you will usually be asked to choose the Debuggging Information log level which provides additional information that can be used to diagnose problems in the software.
Figure 5.13: The Network Tab.
The Network tab (Figure 5.13) contains all of the networking options, including which network ports to listen to. The options in the Network tab correspond to the cupsd.conf configuration directives shown in Table 5.6.
Control | Directive(s) |
---|---|
Hostname Lookups |
HostNameLookups |
Keep Alive | KeepAlive
|
Keep-Alive Timeout |
KeepAliveTimeout |
Max Clients | MaxClients
|
Max Request Size (Mb) |
LimitRequestBody |
Client Timeout (seconds) |
Timeout |
Listen To | Listen
Port SSLListen
SSLPort |
The Hostname Lookups chooser determines if the server does hostname lookups on the client addresses. Hostname lookups are only required if you want to limit access by domain or host names. The default setting is Off.
The Keep Alive setting determines whether the server will keep client connections open for more than one request. The default setting is Yes.
The Keep-Alive Timeout control determines the number of
seconds that the server will keep client connections open with no
activity. The default value is 60
seconds.
The Max Clients control determines the maximum number of
clients that can connect to the server at any given time. The default
value is 0
which will set the maximum number of clients to
one third of the available file descriptors.
The Max Request Size (Mb) control determines the maximum
size of each print file and request that will be accepted by the
server. The default value is 0
which allows files of any
size to be printed.
The Client Timeout (seconds) control determines the amount
of time that the server will wait for a client to complete a request.
If no data is received from the client or sent to the client in this
time, then the connection to the client will be closed. The default
timeout is 300
seconds.
The Listen To list shows all of
the addresses and ports the server will listen for new connections. The
default is to listen to all addresses (*
) on the IPP port
(631
). Click on the Add... button to add a new
address and port, or the Edit... button to edit an existing
entry in the list. After clicking on either button the Listen
dialog (Figure 5.14) is displayed.
Figure 5.14: The Listen Dialog.
The Address field contains the listening address and can be the asterisk (*) to listen on all interfaces or an IP address of a specific network interface. For example, the localhost interface has an IP address of 127.0.0.1.
The Port field contains the listening port and can be any number from 1 to 65535. Normally, however, you will only use ports 80 (HTTP), 443 (HTTPS), or 631 (IPP).
Note:
Always check your server to make sure that you are not specifying a port number that is already in use. Port 631 can always be used for ESP Print Pro since it should be the only IPP server on a system. However, ports 80 and 443 are normally used by web servers like Apache to provide local web services, so if you already have a web server on your system be sure to choose different numbers. |
The SSL Encryption settings ( SSLListen and SSLPort) determines if the server will encrypt client connections. Unless you also change the client configuration to always use encryption, do not enable SSL encryption on port 631. See the "Using Encryption" section later in this chapter for more details
Figure 5.15: The Security Tab.
The Security tab (Figure 5.15) contains all of the security options, including the access control lists (ACL) and encryption files. The options in the Security tab correspond to the cupsd.conf configuration directives shown in Table 5.6.
Control | Directive(s) |
---|---|
Remote Root User | RemoteRoot
|
System Group | SystemGroup
|
Encryption Certificate |
ServerCertificate |
Encryption Key | ServerKey
|
Locations | Allow
AuthClass AuthGroupName
AuthType
Deny Encryption
Location Order
Require Satisfy |
The Remote Root User defines the user name that is
assigned to remote requests that use a username of root
without authentication. This prevents a malicious user from cancelling
every users' print jobs from a remote machine, for example. To disable
this security feature, set the user name to root
. The
default value is remroot
.
The System Group field defines the group name for users
that are allowed to perform administrative tasks. The default group
name is sys
, system
, or root
depending on your operating system.
The Encryption Certificate field defines the name of the
encryption certificate file for your server. This can be a certificate
file generated using the espca
program provided with ESP
Print Pro or a certificate you received from a commercial certificate
authority. See the "Using Encryption"
section later in this chapter for more details. The default value is
/etc/cups/ssl/server.crt.
The Encryption Key field defines the name of the
encryption key file for your server. This can be a key file generated
using the espca
program provided with ESP Print Pro or a
key you received from a commercial certificate authority. The default
value is /etc/cups/ssl/server.key.
The Locations list shows the access controls on various HTTP locations on the server. Click on the Add.. button to add a new location or Edit... to edit an existing location. Clicking on either button displays the location dialog (Figure 5.16).
Figure 5.16: The Location Dialog.
The location dialog window defines the authentication, encryption, and access control list for a particular location on the server. The Location field contains the virtual path on the server, such as /admin for administrative operations. This path can also refer to printers, classes, or jobs - see the "Printing System Security" section later in this chapter for more information.
The Authentication chooser sets the type of authentication
to use: None, Basic
, or Digest. This
directive is called AuthType
and
the default value is None.
The Class chooser sets the class of authentication to use:
None, User, Group, or System Group
. This directive is called AuthClass
and the default value is None.
The Names field contains a list of required user or group
names separated by spaces. Users that do not have one of the specified
user names (for the User class of authentication) or are not
members of one of the specified group names (for the Group
class of authentication) will not be allowed access even if they
provide a valid username and password to the server. This directive is
called AuthGroupName
.
The Encryption chooser selects the required level of
encryption for the location: Never, IfRequested,
or Required. For example, if you want to allow remote access
to the /admin location, you'll probably want to change the
Encryption option to Required so that passwords are
encrypted over the network connection. This directive is called
Encryption
and the default value is IfRequested
.
Note:
The Encryption option applies to IPP applications that support the HTTP Upgrade protocol. All CUPS and ESP Print Pro applications support this protocol, however most web browsers do not. For this reason, you will likely need to assign a dedicated port number (usually port 443) to listen for SSL (encrypted) connections if you wish to do remote adminstration tasks using a web browser. See the previous section on "The Network Tab" for more information on listening to secure ports. |
The Satisfy chooser determines if any or all of the
authentication and access control requirements must be met to allow
access. The value of All requires that all conditions be met
before a user is allowed to access the server at the specified
location. The Any value changes the server behavior so that
access is granted if the user is correctly authenticated or the
access control conditions are satisfied. This directive is called
Satisfy
and the default value is All.
The ACL Order chooser determines whether the default
behavior is to allow access (allow,deny) or reject access (
deny,allow.) The default is to reject access (deny,allow
.) This directive is called Order
and
the default is to reject access (deny,allow).
The ACL Addresses list shows the access control rules for
the specified location. Each line either allows (Allow ...)
or denies (Deny ...) access to the server. These directives
are called Allow
and
Deny
. Click on the Add... button to add a new
entry to the list or the Edit... button to edit an existing
entry. Clicking on either button displays the ACL dialog
window (Figure 5.17).
Figure 5.17: The Allow ACL Dialog.
To allow access from a specific IP address, enter the IP address in the From field.
Similarly, to allow access from a specific IP network, enter the
network address in the From field. For class-based network
addresses, you can enter the significant network numbers (
11.22.33
) or use the asterisk (*) as a wildcard (11.22.33.*
). For CIDR network numbers, use the slash notation with either the
number of significant bits or the netmask (11.22.33/24
or
11.22.33.0/255.255.255.0
.)
The From field can also contain a hostname (
foo.bar.com
) or a domain name (*.bar.com
.) If you
use name-based access control, always remember to turn on Hostname
Lookups in "The Network Tab".
Finally, the From field can contain any of the following special names:
all
- Allows access from all hosts.none
- Does not allow access from any hosts.@LOCAL
- Allow access from all local network
interfaces.@IF(name)
- Allows access from hosts on the specified
network interface.
Figure 5.18: The Deny ACL Dialog.
To deny access, simply change the Type chooser to the Deny value (Figure 5.18.)
Figure 5.19: The Server Tab.
The Server tab (Figure 5.19) defines the server name, administrator, classification, and other important values. The options in the Server tab correspond to the cupsd.conf configuration directives shown in Table 5.7.
Control | Directive(s) |
---|---|
Server Name | ServerName
|
Server Administrator |
ServerAdmin |
Classification |
Classification
ClassifyOverride |
Default Character Set |
DefaultCharset |
Default Language |
DefaultLanguage |
Printcap File | Printcap
|
Printcap Format |
PrintcapFormat |
The Server Name field contains the name of the server that is reported to clients when they connect. The default value is the hostname of your system.
The Server Administrator field contains the email address of the administrator for the system. Currently this field is unused, but will be used as the return address for email notifications and other server-generated output in future releases of ESP Print Pro. The default value is the root user at the local server name.
The Classification chooser determines the default classification labelling that is applied to print jobs. The default value of None disables classification labelling. If the Allow Overrides box is checked, users will be able to change the job classifcation by setting the banner pages and/or disable one of the banner pages as desired. Otherwise, both the leading and trailing banner pages will be locked to the classification that is set on the server.
The Default Character Set chooser sets the default character set that is used when printing text and formatting messages on the server. The default value is UTF-8 which is an ASCII-compatible 8-bit encoding for Unicode text.
The Default Language field sets the default language to
use when translating messages and web pages on the server. Currently
ESP Print Pro supports German (de
), English (en
), Spanish (es
), French (fr
), and Italian (
it
). Any trailing country code (e.g. the _US
in the
en_US
in Figure 5.19) is ignored.
The Printcap File field specifies the name of the printcap file on your system. This file will be automatically updated to contain a current list of available printers whenever local or remote printers are added or deleted from the system. Use the default value of /etc/printcap to simulate the old Berkeley (lpr) printing system, /etc/printers.conf to simulate the Solaris printing system, or the empty string to disable the generation of this file.
The Printcap Format chooser selects the printcap file format to be used. Select the default value of BSD to simulate the Berkeley printing system or Solaris to simulate the Solaris printing system.
ESP Print Pro provides support for address, certificate, and password (Basic and Digest) based authentication and access control.
Certificate and password authentication provide ways to limit access to individual people or groups.
Address based access control allows you to limit access to specific systems, networks, or domains. While this does not provide authentication, it does allow you to limit the potential users of your system efficiently.
ESP Print Pro maintains a list of locations that have access control
and/or authentication enabled. Locations are specified by using the
Configuration Wizard described previously of adding
Location
directive to the cupsd.conf file by
hand:
<Location /resource> AuthClass ... AuthGroupName ... AuthType ... Order ... Allow from ... Deny from ... </Location>
Locations generally follow the directory structure of the
DocumentRoot
directory, however ESP Print Pro does have
several virtual locations for administration, classes, jobs, and
printers. Table 5.8 shows these locations:
Location | Description |
---|---|
/admin | The path for all administration operations. |
/admin/conf | The path for access to the ESP Print Pro configuration files. |
/classes | The path for all classes. |
/classes/name | The resource for class name . |
/jobs | The path for all jobs. |
/jobs/id | The resource for job id . |
/printers | The path for all printers. |
/printers/name | The path for printer name . |
/printers/name.ppd | The PPD file path for printer
name . |
ESP Print Pro supports a local certificate-based authentication
scheme that can be used in place of Basic
or Digest
authentication by clients connecting through the localhost
interface. Certificate authentication is not supported or allowed from
clients on any other interface.
Certificates are 128-bit random numbers that refer to an internal
authentication record in the server. A client connecting via the
localhost
interface sends a request with an authorization header
of:
Authorization: Local 0123456789ABCDEF0123456789ABCDEF
The server then looks up the local certificate and authenticates using the username associated with it.
Certificates are generated by the server automatically and stored in
the /etc/cups/certs directory using the process ID of the
CGI program started by the server. Certificate files are only readable
by the User
and
Group
defined in the cupsd.conf file. When the CGI
program ends the certificate is removed and invalidated automatically.
The special file /etc/cups/certs/0 defines the root
certificate which can be used by any client running as the
super-user or another user that is part of the group defined by the
SystemGroup
directive. The root certificate is
automatically regenerated once every 5 minutes.
Basic authentication uses UNIX users and passwords to authenticate access to resources such as printers and classes, and to limit access to administrative functions.
Note:
Basic authentication sends the username and password Base64 encoded from the client to the server, so it offers no protection against eavesdropping. This means that a malicious user can monitor network packets and discover valid users and passwords that could result in a serious compromise in network security. We highly recommend that you use Basic authentication only in conjunction with encryption when allowing access from remote machines. |
The ESP Print Pro implementation of Basic authentication does not allow access through user accounts without a password. If you try to authenticate using an account without a password, your access will be immediately blocked.
Once a valid username and password is authenticated by ESP Print Pro, any additional group membership requirements are checked.
Note:
The root user is considered by ESP Print Pro to be a member of every group. |
Use the AuthType
directive to enable Basic
authentication:
AuthType Basic
Digest authentication uses users and passwords defined in the /etc/cups/passwd.md5 file to authenticate access to resources such as printers and classes, and to limit access to administrative functions.
Note:
Unlike Basic authentication, Digest passes the MD5 sum (basically a complicated checksum) of the username and password instead of the strings themselves. Also, Digest authentication does not use the UNIX password file, so if an attacker does discover the original password it is less likely to result in a serious security problem so long as you use a different UNIX password than the corresponding Digest password. The current ESP Print Pro implementation of Digest authentication uses the client's hostname or IP address for the "nonce" value. The nonce value is an additional string added to the username and password to make guessing the password more difficult. The server checks that the nonce value matches the client's hostname or address and rejects the MD5 sum if it doesn't. Future versions of ESP Print Pro will support Digest "session" authentication which adds the request data to the MD5 sum, providing even better authentication and security. Digest authentication does not guarantee that an attacker cannot gain unauthorized access, but it is safer than Basic authentication and should be used in place of Basic authentication if encryption is not used. Support for Digest authentication in web browsers is not yet universally available. |
The lppasswd(1)
command is used to add, change, or
remove accounts from the passwd.md5 file. To add a user to
the default system group, type:
lppasswd -a user ENTER Password: (password) ENTER [password is not echoed] Password again: (password) ENTER [password is not echoed]
Once added, a user can change his/her password by typing:
lppasswd ENTER Old password: (password) ENTER [password is not echoed] Password: (password) ENTER [password is not echoed] Password again: (password) ENTER [password is not echoed]
To remove a user from the password file, type:
lppasswd -x user ENTER
Once a valid username and password is authenticated by ESP Print Pro, any additional group membership requirements are checked.
Note:
The root user is considered by ESP Print Pro to be a member of every group. |
Use the AuthType
directive to enable Digest
authentication:
AuthType Digest
The AuthClass
directive
controls the level of authentication to perform. System
and Group
authentication extend the normal user-based
authentication to require membership in a UNIX group. For System
authentication each user must belong to the sys
,
system
, or root
group; the actual group depends on
the operating system.
For Group
authentication each user must belong to the
group(s) named by the AuthGroupName
directive:
<Location /path> AuthType Digest AuthClass Group AuthGroupName mygroup </Location>
When using Digest authentication you need to create user accounts
with the named group using the -g
option:
lppasswd -g mygroup -a user ENTER Password: (password) ENTER [password is not echoed] Password again: (password) ENTER [password is not echoed]
Similarly, users must use the -g
option when changing
their password:
lppasswd -g mygroup ENTER Old password: (password) ENTER [password is not echoed] Password: (password) ENTER [password is not echoed] Password again: (password) ENTER [password is not echoed]
ESP Print Pro supports SSL/2.0, SSL/3.0, and TLS/1.0 encryption using keys as large as 128-bits. Encryption support is provided via the OpenSSL library and is linked into the CUPS API and server provided with ESP Print Pro.
ESP Print Pro provides support for dedicated (https) and "upgrade" (TLS) encryption of sessions. The "HTTP Upgrade" method is described in RFC 2817; basically, the client can be secure or unsecure, and the client or server initiates an upgrade to a secure connection via some new HTTP fields and status codes. The HTTP Upgrade method is new and no browsers we know of support it yet. Stick with "https" for web browsers.
Warning:
CLIENTS CURRENTLY TRUST ALL CERTIFICATES FROM SERVERS. This makes the ESP Print Pro client applications vulnerable to "man in the middle" attacks, so we don't recommend using this to do remote administration over WANs at this time. Future versions of ESP Print Pro will keep track of server certificates and provide a callback/confirmation interface for accepting new certificates and warning when a certificate has changed. |
To enable encryption you need a certificate file and a key file. The
key file is generated by you using the espca
or
openssl
programs.
The certificate file can be generated on your own or by requesting a certificate from a Certificate Authority ("CA"). Certificate files that you generate on your own are often called unsigned or self-signed certificates, and more colloquially "snake-oil" certificates. Certificate files that you get from a CA have been signed by that company which provides a certain amount of authenticity to your certificate.
Note:
While self-signed certificates are not technically any more insecure than a signed certificate, they will require the user to go through a certificate acceptance dialog in a Web browser, so they are more vulnerable to man-in-the-middle attacks since the user is expecting the dialog to come up to accept the certificate. We recommend that you get a signed certificate for any server that provides services over a WAN or the Internet. |
Before you can use encryption on the server you need to create a server certificate and private key. The Certificate Wizard program (Figure 5.20) provides a GUI interface for creating your own self-signed server certificates:
/usr/sbin/espca ENTER
Choose Generate a Self-Signed Certificate and click on the Next button to step through the wizard that will generate the required encryption files.
Figure 5.20: Generating a Self-Signed Certificate Using the
Certificate Wizard
Signed certificates offer a way to validate the identity of the server you are talking to. Each certificate is signed by a well-known company known as a Certificate Authority ("CA"); each CA is registered with your browser software so that it can trust the certificate your server provides. Table 5.9 shows a list of several commercial certificate authorities.
Company | Country | URL |
---|---|---|
128i Ltd. | New Zealand | http://www.128i.com/ |
BelSign NV/SA | Belgium | http://www.belsign.be/ |
CertiSign Certificadora | Brazil | http://www.certisign.com.br/ |
Certplus SA | France | http://www.certplus.com/ |
Deutsches Forschungnetz | Germany | http://www.pca.dfn.de/dfnpca/certify/ssl/ |
Entrust.net Ltd. | Canada | http://www.entrust.net/ |
Equifax Inc. | USA | http://www.equifaxsecure.com/ebusinessid/ |
GlobalSign NV/SA | Belgium | http://www.GlobalSign.net/ |
IKS GmbH | Germany | http://www.iks.jena.de/produkte/ca/ |
NetLock Kft. | Hungary | http://www.netlock.net/ |
NLsign B.V. | Netherlands | http://www.nlsign.nl/ |
TC TrustCenter | Germany | http://www.trustcenter.de/html/Produkte/ |
Thawte Consulting | USA | http://www.thawte.com/certs/server/TC_Server/855.htmrequest.html |
Verisign, Inc. | USA | http://www.verisign.com/guide/apache/ |
The Certificate Wizard (Figure 5.21) can also be used to create a certificate request for your server:
/usr/sbin/espca ENTER
Figure 5.21: Generating a Certificate Request Using the
Certificate Wizard
Choose Generate a Signed Certificate Request and click on the Next button to step through the wizard that will generate the required encryption files. When complete, the certificate request will be in the file /etc/cups/server.csr as well as in the text box on the closing pane shown in Figure 5.22.
Figure 5.22: The Completed Certificate Request.
Send this certificate request to your CA, requesting a certificate that is compatible with either the Stronghold, ApacheSSL, or ModSSL varients of the Apache web server software. When you receive your certificate file from the CA, copy it to /etc/cups/ssl/server.crt and make sure the permissions only allow the root user to access the file:
cp certificate-filename /etc/cups/ssl/server.crt ENTER chmod 0600 /etc/cups/ssl/server.crt ENTER
ESP Print Pro can print to Windows servers in one of two ways. The first way uses the LPD protocol on the ESP Print Pro system and the "TCP/IP Printing Services" on the Windows system. You can find out more about this configuration in "Chapter 3, Printer Management".
The second way is through the Microsoft Server Message Block ("SMB") protocol. Support for this protocol is provided with the free SAMBA software package. You can download SAMBA from:
http://www.samba.org
Run the following commands to configure ESP Print Pro to use SAMBA:
ln -s `which smbspool` /usr/lib/cups/backend/smb ENTER /etc/software/init.d/cups restart ENTER
The smbspool(1)
program is provided with SAMBA starting
with SAMBA 2.0.6. Once you have made the link you can configure your
printers with one of the following device URIs:
smb://workgroup/server/sharename smb://server/sharename smb://user:pass@workgroup/server/sharename smb://user:pass@server/sharename
The workgroup
name need only be specified if your system
is using a different workgroup. The user:pass
strings are
required when printing to Windows NT and 2000 servers or to shares with
passwords enabled under Windows 95, 98, or Me.
This chapter discusses several ways to configure ESP Print Pro clients for printing.
A client is any machine that sends print jobs to another machine for final printing. Clients can also be servers if they communicate directly with any printers of their own.
ESP Print Pro supports several methods of configuring client machines:
The client configuration methods shown in this chapter require that the ESP Print Pro "base" software is installed on each client. The base software provides all of the printing commands and support files needed by clients, but none of the printer drivers. Consult Chapter 2, "Installing ESP Print Pro" for a description of installing the base software on client machines.
The most tedious method of configuring client machines is to
configure each remote queue by hand using the lpadmin
command:
lpadmin -p printer -E -v ipp://server/printers/printer ENTER
The printer
name is the name of the printer on the
server machine. The server
name is the hostname or IP
address of the server machine. Repeat the lpadmin
command
for each remote printer you wish to use.
Note:
Manual configuration of print queues is not recommended for large numbers of client machines because of the administration nightmare it creates. For busy networks, consider subnetting groups of clients and polling and relaying printer information instead. |
ESP Print Pro can be configured to run without a local spooler and send all jobs to a single server. However, if that server goes down then all printing will be disabled. Use this configuration only as absolutely needed.
The default server is normally "localhost". To override the default server create a file named /etc/cups/client.conf and add a line reading:
ServerName server
to the file. The server name can be the hostname or IP address of the default server.
The default server can also be customized on a per-user basis. To set a user-specific server create a file named ~/.cupsrc and add a line reading:
ServerName server
to the file. As before the server name can be the hostname or IP address of the default server.
ESP Print Pro supports automatic client configuration of printers on the same subnet. To configure printers on the same subnet, do nothing. Each client should see the available printers within 30 seconds automatically. The printer and class lists are updated automatically as printers and servers are added or removed.
If you want to see printers on other subnets as well, use the
BrowsePoll
directive as described next.
Note:
The Use the |
If you have ESP Print Pro servers on different subnets, then you should configure ESP Print Pro to poll those servers. Polling provides the benefits of automatic configuration without significant configuration on the clients, and multiple clients on the same subnet can share the same configuration information.
Polling is enabled by specifying one or more
BrowsePoll
directives in the /etc/cups/cupsd.conf
file. For information on making these changes, see
Chapter 5, "Printing System Management".
Multiple BrowsePoll
lines can
be used to poll multiple ESP Print Pro servers. To limit the amount of
polling you do from client machines, you can have only one of the
clients do the polling and relay that information to the others on the
same subnet (described next).
When you have clients and servers spread across multiple subnets, the
polling method is inefficient. ESP Print Pro provides a
BrowseRelay
directive that enables a single client to
relay (broadcast) the polled printer information to the local subnet.
For example, Server A and Server B are on subnet 1 and subnet 2, while the clients are on subnet 3. To provide printers to all of the clients in subnet 3, client C will be configured with the following directives in /etc/cups/cupsd.conf:
# Poll the two servers BrowsePoll ServerA BrowsePoll ServerB # Relay the printers to the local subnet BrowseRelay 127.0.0.1 192.168.3.255
The BrowseRelay
line
specifies a source address and mask. Any browse packets coming from a
matching address wil be sent to the given broadcast address. In this
case, we want the packets from the local machine (127.0.0.1) relayed to
the other clients.
As printers are found using polling, they are relayed from client C to the rest of the clients through a broadcast on subnet 3. The rest of the clients can use the standard cupsd.conf configuration.
Figure 6.1: A Typical Corporate Network with Multiple Subnets.
The BrowseRelay
directive can
also be used to relay browsing packets from one network interface to
another. For example, if client C in the previous example had network
interfaces attaches to both subnet 1 and subnet 2, it could use the
BrowseRelay
directive exclusively:
# Relay the printers from subnet 1 and 2 to subnet 3 BrowseRelay 192.168.1 192.168.3.255 BrowseRelay 192.168.2 192.168.3.255
When using server polling or broadcasting, ESP Print Pro clients can automatically merge identical printers on multiple servers into a single implicit class queue. Clients assume that printers with the same name on multiple servers are in fact the same printer or type of printer being served by multiple machines.
If you have two printers, LaserJet@ServerA and LaserJet@ServerB, a third implicit class called LaserJet will be created automatically on the client that refers to both printers. If the client also has a local printer with the name LaserJet then an implicit class named AnyLaserJet will be created instead.
The client will alternate between servers and automatically stop sending jobs to a server if it goes down, providing a load-balancing effect and fail-safe operation with automatic switchover.
Note:
Note that implicit classes ( |
ESP Print Pro supports limited functionality for LPD-based clients. With LPD you can print files to specific printers, list the queue status, and so forth. However, the automatic client configuration and printer options are not supported by the LPD protocol, so you must manually configure each client for the printers it needs to access.
The cups-lpd(1m)
program provides support for LPD
clients. To enable LPD support on your server, edit the
/etc/inetd.conf file and add a line reading:
printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
Once you have added this line, send the HUP
signal to
the inetd(1m)
process or reboot the system:
killall -HUP inetd ENTER [IRIX and some versions of Linux] kill -HUP pid ENTER reboot ENTER
If you are using the newer xinetd(8)
daemon, add the
following lines to the /etc/xinetd.conf file, or create a
file called /etc/xinetd.d/cups-lpd containing the following
text:
service printer { socket_type = stream protocol = tcp wait = no user = lp server = /usr/lib/cups/daemon/cups-lpd }
The xinetd
program will automatically read the new
configuration file.
ESP Print Pro does not provide Mac OS support directly. However, there are several free and commercial software packages that do.
Because the CAP LaserWriter server (lwsrv(1m)
) does not
support specification of PPD files, we do not recommend that you use
CAP with ESP Print Pro. However, you can run the lpsrv
program for limited printing with the command:
lwsrv -n "Name" -p printer -a /usr/lib/adicts -f /usr/lib/LW+Fonts ENTER
Name
is the name you want to use when sharing the
printer and printer
is the name of the ESP Print Pro print
queue.
To use your system as a print server for Mac OS clients, configure
each printer using a papserver(1m)
in the
/usr/adm/appletalk/services file, specifying the corresponding
PPD file in the /etc/cups/ppd directory for each printer.
For a printer named MyPrinter
the entry would look like:
/usr/etc/appletalk/papserver -I -L -P /etc/cups/ppd/MyPrinter.ppd \ "Printer Description" MyPrinter ENTER
Note:
Enter the text above on a single line without the backslash (\) character. |
To use your system as a print server for Mac OS clients, configure
each printer in the papd.conf file, specifying the
corresponding PPD file in the /etc/cups/ppd directory for
each printer. For a printer named MyPrinter
the entry
would look like:
Printer Name@Zone Name:\ :pr=|/usr/bin/lp -d MyPrinter:\ :op=daemon:\ :pd=/etc/cups/ppd/MyPrinter.ppd:
While ESP Print Pro does not provide Windows support directly, the free SAMBA software package does. SAMBA version 2.0.6 is the first release of SAMBA that supports ESP Print Pro. You can download SAMBA from:
http://www.samba.org
To configure SAMBA for ESP Print Pro, edit the smb.conf file and replace the existing printing commands and options with the lines:
printing = cups printcap name = cups
If you are using SAMBA 2.2 or higher, add the following section as well to the smb.conf file:
[global] load printers = yes printing = cups printcap name = cups [printers] comment = All Printers path = /var/spool/samba browseable = no public = yes guest ok = yes writable = no printable = yes printer admin = root [print$] comment = Printer Drivers path = /etc/samba/drivers browseable = yes guest ok = no read only = yes write list = root
This configuration assumes a FHS-compliant installation of SAMBA;
adjust the [printers] and [print$] share paths accordingly on your
system as needed. That is, the directory for your printer drivers can
be anywhere on the system; just make sure it is writable by the users
specified by the write list
directive plus readable and
executable by all users. Also, make sure that you have SAMBA passwords
defined for each user in the write list
using SAMBA's
smbpasswd(1)
command. Otherwise you will not be able to
authenticate.
Starting with SAMBA 2.2, ESP Print Pro can export printer drivers to
Windows clients. Please note that you will need the smbclient
and rpcclient
commands from SAMBA to continue. To export
the driver for a printer, start the Printer Manager with the following
command:
/usr/sbin/printers ENTER
Then select the printer you wish to export by clicking on it once.
Finally, choose Export... from the Action menu
to export the printer drivers for that printer to SAMBA. When asked for
a username and password, use the root username and password unless you
have enabled administrative access to other users specified in the
write list
directive of the smb.conf file.
PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS A LEGAL AGREEMENT BETWEEN YOU AND EASY SOFTWARE PRODUCTS ("ESP"). BY DOWNLOADING THIS PACKAGE, AND USING THE ESP PRINT PRO SOFTWARE AND DOCUMENTATION ("SOFTWARE") CONTAINED IN THIS PACKAGE, YOU ARE AGREEING TO BECOME BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. THIS AGREEMENT REPRESENTS THE ENTIRE AND SOLE AGREEMENT CONCERNING THE ESP SOFTWARE, AND IT SUPERSEDES ANY PRIOR PROPOSAL, REPRESENTATION OR UNDERSTANDING REGARDING THE SOFTWARE BETWEEN YOU AND ESP OR ANY OTHER PARTY. IF YOU (hereafter in this document referred to as "LICENSEE") ARE NOT WILLING TO BE BOUND BY THE TERMS OF THIS LICENSE AGREEMENT, PLEASE DO NOT DOWNLOAD OR USE THIS SOFTWARE.
If the unit or agency is the Department of Defense ("DOD"), the SOFTWARE and its documentation are classified as "commercial computer software" and "commercial computer software documentation" respectively and, pursuant to DFAR Section 227.7202, the Government is acquiring the SOFTWARE and its documentation in accordance with the terms of this License. If the unit or agency is other than DOD, the SOFTWARE and its documentation are classified as "commercial computer software" and "commercial computer software documentation" respectively and, pursuant to FAR Section 12.212, the Government is acquiring the SOFTWARE and its documentation in accordance with the terms of this License.
ESP warrants that it has the authority and right to license the SOFTWARE, and that the SOFTWARE will conform to the material printed specifications therefore which are in effect on the date of original delivery of such SOFTWARE. ESP's warranty and obligation shall extend for a period of ninety (90) days after the date of the original delivery of SOFTWARE to LICENSEE by ESP, and is solely for the benefit of LICENSEE, who has no authority to assign or pass through this warranty to any other person or entity.
Except as provided in this Section, the SOFTWARE is provided to LICENSEE on an "AS IS" basis, and ESP makes no other warranty of any kind, express or implied, with regard to the SOFTWARE licensed hereunder. ESP warrants that the SOFTWARE properly processes date and time information between the years 1970 and 2038. ESP does not warrant or represent that the SOFTWARE will operate uninterrupted or error free or that all defects in the SOFTWARE are correctable or will be corrected. This warranty shall not apply if SOFTWARE is used other than in accordance with ESP's written instructions, or if any of LICENSEE's hardware equipment or other software malfunctions. ESP's entire liability and LICENSEE's exclusive remedy for any defects in the SOFTWARE shall be to obtain ESP's SOFTWARE updates via the Internet or pay a media update fee for each copy of the SOFTWARE.
THE FORGOING WARRANTIES ARE IN LIEU OF, AND ESP DISCLAIMS, ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow the exclusion of implied warranties, so the exclusion above may not apply to LICENSEE. This warranty gives LICENSEE specific legal rights, and LICENSEE may have other rights which vary from state to state.
IN NO EVENT SHALL ESP OR ESP'S LICENSORS BE LIABLE TO LICENSEE FOR ANY SPECIAL, CONSEQUENTIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND (INCLUDING WITHOUT LIMITATION LOSS OF PROFITS OR DATA AND PERSONAL INJURY), WHETHER OR NOT ESP HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ARISING OUT OF THIS AGREEMENT. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. In no event will ESP be liable for any claim against LICENSEE by a third party, and LICENSEE hereby agrees to indemnify and hold ESP harmless for any claims for cost, damage, expense or liability arising out of or in connection with the installation, use and performance of the SOFTWARE licensed hereunder, whether alone or in combination with any other product or service. Some states do not allow the limitation or exclusion of liability for incidental or consequential damages, so the limitation above may not apply to LICENSEE.
The SOFTWARE covered by the AGREEMENT correctly processes dates between the years 1970 and 2038, provided that LICENSEE has installed all applicable operating system patches and/or hardware devices required for proper handling of dates beyond the year 2000.
This SOFTWARE is based upon the Common UNIX Printing System which is covered under the terms of the GNU General Public License and GNU Library General Public License. ESP shall provide to LICENSEE the complete and modified source code for the Common UNIX Printing System on CD-ROM for a nominal media fee of $50 US or via the Internet at no charge at http://www.cups.org.
Copyright 1997-2005 by Easy Software Products
44141 AIRPORT VIEW DR STE 204
HOLLYWOOD, MARYLAND 20636 USA
Voice: +1.301.373.9600
Email: cups-info@cups.org
WWW: http://www.cups.org
The Common UNIX Printing SystemTM, ("CUPSTM"), is provided under the GNU General Public License ("GPL") and GNU Library General Public License ("LGPL"), Version 2, with exceptions for Apple operating systems and the OpenSSL toolkit. A copy of the exceptions and licenses follow this introduction.
The GNU LGPL applies to the CUPS API library, located in the "cups" subdirectory of the CUPS source distribution and in the "cups" include directory and library files in the binary distributions. The GNU GPL applies to the remainder of the CUPS distribution, including the "pdftops" filter which is based upon Xpdf and the CUPS imaging library.
For those not familiar with the GNU GPL, the license basically allows you to:
What this license does not allow you to do is make changes or add features to CUPS and then sell a binary distribution without source code. You must provide source for any new drivers, changes, or additions to the software, and all code must be provided under the GPL or LGPL as appropriate. The only exceptions to this are the portions of the CUPS software covered by the Apple operating system license exceptions outlined later in this license agreement.
The GNU LGPL relaxes the "link-to" restriction, allowing you to develop applications that use the CUPS API library under other licenses and/or conditions as appropriate for your application.
In addition, as the copyright holder of CUPS, Easy Software Products grants the following special exceptions:
This file is subject to the Apple OS-Developed Software exception.
No developer is required to provide these exceptions in a derived work.
Easy Software Products has trademarked the Common UNIX Printing System, CUPS, and CUPS logo. You may use these names and logos in any direct port or binary distribution of CUPS. Please contact Easy Software Products for written permission to use them in derivative products. Our intention is to protect the value of these trademarks and ensure that any derivative product meets the same high-quality standards as the original.
Easy Software Products also sells rights to the CUPS source code under a binary distribution license for vendors that are unable to release source code for their drivers, additions, and modifications to CUPS under the GNU GPL and LGPL. For information please contact us at the address shown above.
The Common UNIX Printing System provides a "pdftops" filter that is based on the Xpdf software. For binary distribution licensing of this software, please contact:
Derek B. Noonburg
Email: derekn@foolabs.com
WWW: http://www.foolabs.com/xpdf/
Easy Software Products sells software support for CUPS as well as a commercial printing product based on CUPS called ESP Print Pro. You can find out more at our web site:
http://www.easysw.com/
Version 2, June 1991
Copyright 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.]
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license.
The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.
Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library.
Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.
0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice
That's all there is to it!
This appendix covers many of the popular TCP/IP network interfaces and printer servers available on the market today.
When you first install a network printer or print server on your LAN, you need to set the Internet Protocol ("IP") address. On most higher-end "workgroup" printers, you can set the address through the printer control panel. However, in most cases you will want to assign the addresses remotely from your workstation. This makes administration a bit easier and avoids assigning duplicate addresses accidentally.
To setup your printer or print server for remote address assignment, you'll need the Ethernet Media Access Control ("MAC") address, also sometimes called a node address, and the IP address you want to use for the device. The Ethernet MAC address can often be found on the printer test page or bottom of the print server.
The easiest way to set the IP address of a network device is to use
the arp(1m)
command. The arp
sends an Address
Resolution Protocol ("ARP") packet to the specified Ethernet MAC
address, setting the network device's IP address:
arp -s ip-address ethernet-address ENTER arp -s host.domain.com 08:00:69:00:12:34 ENTER arp -s 192.0.2.2 08:00:69:00:12:34 ENTER
The most flexible way to remotely assign IP addresses under UNIX is through the Reverse Address Resolution Protocol ("RARP"). RARP allows a network device to request an IP address using its Ethernet MAC address, and one or more RARP servers on the network will respond with an ARP packet with the IP address the device can use.
RARP should be used when you have to manage many printers or print
servers, or when you have a network device that does not remember its
IP address after a power cycle. If you just have a single printer or
print server, the arp
command is the way to go.
Some UNIX operating systems use a program called rarpd(1m)
to manage RARP. Others, like Linux, support this protocol in the
kernel. For systems that provide the rarpd
program you
will need to start it before RARP lookups will work:
rarpd ENTER
Under IRIX you can enable this functionality by default using:
chkconfig rarpd on ENTER
Both the rarpd
program and kernel RARP support read a
list of Ethernet and IP addresses from the file /etc/ethers.
Each line contains the Ethernet address (colon delimited) followed by
an IP address or hostname like:
08:00:69:00:12:34 myprinter.mydomain.com 08:00:69:00:12:34 192.0.2.2
Add a line to this file and cycle the power on the printer or print server to set its address.
The BOOTP protocol is used when you need to provide additional
information such as the location of a configuration file to the network
interface. Using the standard bootpd(1m)
program supplied
with UNIX you simply need to add a line to the /etc/bootptab
file; for IRIX:
myprinter 08:00:69:00:12:34 192.0.2.2 myprinter.boot
Newer versions of bootpd
use a different format:
myprinter:ha=080069001234:ip=192.0.2.2:t144=myprinter.boot
The myprinter.boot file resides in the /usr/local/boot directory by default. If you do not need to provide a boot file you may leave the last part of the line blank.
Note:
Some versions of UNIX do not enable the BOOTP service by default. The /etc/inetd.conf usually contains a line for the BOOTP service that can be uncommented if needed. |
To test that the IP address has been successfully assigned and that the printer is properly connected to your LAN, type:
ping ip-address ENTER
If the connection is working properly you will see something like:
ping myprinter ENTER PING myprinter (192.0.2.2): 56 data bytes 64 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms 64 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms 64 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms 64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms
If not, verify that the printer or print server is connected to the LAN, it is powered on, the LAN cabling is good, and the IP address is set correctly. You can usually see the current IP address and network status by printing a configuration or test page on the device.
Once you have set the IP address you can access the printer or print
server using the ipp
, lpd
, or socket
backends. The following is a list of common network interfaces and
printer servers and the settings you should use with ESP Print Pro:
Model/Manufacturer | Type of Connection | Queue/Port/URI |
---|---|---|
Apple LaserWriter | LPD/LPR Host/Printer | PASSTHRU |
Axis w/o IPP, (see directions) | HP JetDirect or AppSocket | 9100, 9101, 9102 |
Axis w/IPP | Internet Printing Protocol | ipp://address/LPT1, ipp://address/LPT2, ipp://address/COM1 |
Castelle LANpressTM | LPD/LPR Host/Printer | pr1, pr2, pr3 |
DPI NETPrint | LPD/LPR Host/Printer | pr1, pr2, pr3 |
EFI® Fiery RIP | LPD/LPR Host/Printer | |
EPSON® Multiprotocol Ethernet Interface Board | HP JetDirect or AppSocket | 9100 |
Extended System ExtendNET | LPD/LPR Host/Printer | pr1, pr2, pr3 |
Hewlett Packard JetDirect w/o IPP | HP JetDirect or AppSocket | 9100, 9101, 9102 |
Hewlett Packard JetDirect w/IPP | Internet Printing Protocol | ipp://address/ipp, ipp:// address/ipp/port1, ipp://address/ipp/port2, ipp://address /ipp/port3 |
Intel® NetportExpress XL, PRO/100 | LPD/LPR Host/Printer | LPT1_PASSTHRU, LPT2_PASSTHRU, COM1_PASSTHRU |
LexmarkTM MarkNet | LPD/LPR Host/Printer | ps |
Linksys EtherFast® | HP JetDirect or AppSocket | 4010, 4020, 4030 |
Kodak® | LPD/LPR Host/Printer | ps |
NETGEAR PS104, PS105, PS110 | HP JetDirect or AppSocket | 4010, 4020, 4030 |
QMS® CrownNetTM | LPD/LPR Host/Printer | ps |
Tektronix® PhaserShareTM | HP JetDirect or AppSocket | 9100 |
XEROX® 4512 NIC | LPD/LPR Host/Printer | PORT1 |
XEROX® XNIC | LPD/LPR Host/Printer | PASSTHRU |
XEROX® (most others) | HP JetDirect or AppSocket | 5503 |
The Axis print servers can be configured using ARP, RARP, or BOOTP. However, on models that do not provide IPP support an additional step must be performed to configure the TCP/IP portion of the print server for use with ESP Print Pro.
Each print server contains a configuration file named config
that contains a list of network parameters used by the server. To
modify this file you must first download it from the print server using
the ftp(1)
program:
ftp ip-address ENTER Connected to ip-address. 220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready. ftp> user root ENTER 331 User name ok, need password Password: pass ENTER (this is not echoed) 230 User logged in ftp> get config ENTER local: config remote: config 200 PORT command successful. 150 Opening data connection for config (192,0,2,2), (mode ascii). 226 Transfer complete. ##### bytes received in #.## seconds (##### Kbytes/s) ftp> quit ENTER 221 Goodbye.
Next, edit the file with your favorite text editor and locate the lines beginning with:
RTN_OPT. : YES RTEL_PR1. : 0 RTEL_PR2. : 0 RTEL_PR3. : 0 RTEL_PR4. : 0 RTEL_PR5. : 0 RTEL_PR6. : 0 RTEL_PR7. : 0 RTEL_PR8. : 0Change the
RTN_OPT
line to read:
RTN_OPT. : NO
This disables the Reverse TELNET protocol and enables the standard TELNET protocol on the print server. Next, assign a port number for each parallel and serial port on the server as follows:
RTEL_PR1. : 9100 RTEL_PR2. : 9101 RTEL_PR3. : 9102 RTEL_PR4. : 9103 RTEL_PR5. : 9104 RTEL_PR6. : 9105 RTEL_PR7. : 9106 RTEL_PR8. : 9107
This essentially makes the Axis print server look like a Hewlett
Packard JetDirect EX print server. Save the file and then upload the
new config file using the ftp
command:
ftp ip-address ENTER Connected to ip-address. 220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready. ftp> user root ENTER 331 User name ok, need password Password: pass ENTER (this is not echoed) 230 User logged in ftp> put config CONFIG ENTER local: config remote: CONFIG 200 PORT command successful. 150 Opening data connection for config (192,0,2,2), (mode ascii). 226 Transfer complete. ##### bytes received in #.## seconds (##### Kbytes/s) ftp> get hardreset ENTER local: hardreset remote: hardreset 200 PORT command successful. 421 Axis NPS ### hard reset, closing connection. ftp> quit ENTER 221 Goodbye.
Your Axis print server is now ready for use!
This appendix describes the ESP Print Pro configuration files.
Several text files are used to configure ESP Print Pro. All of the server configuration files are located in the /etc/cups directory:
lpadmin
command or the Web
interface.
lpadmin
command or the Web
Interface.
Once you have made a change to a configuration file you need to
restart the ESP Print Pro server by sending it a HUP
signal or using the supplied initialization script. The ESP Print Pro
distributions install the script in the init.d directory
with the name cups. The location varies based upon the
operating system:
/etc/software/init.d/cups restart ENTER /etc/rc.d/init.d/cups restart ENTER /etc/init.d/cups restart ENTER /sbin/init.d/cups restart ENTER
The /etc/cups/cupsd.conf file contains configuration directives that control how the server functions. Each directive is listed on a line by itself followed by its value. Comments are introduced using the number sign ("#") character at the beginning of a line.
Since the server configuration file consists of plain text, you can use your favorite text editor to make changes to it.
The cupsd.conf file contains many directives that determine how the server operates:
AccessLog /var/log/cups/access_log AccessLog /var/log/cups/access_log-%s AccessLog syslog
The AccessLog
directive sets the name of the access log
file. If the filename is not absolute then it is assumed to be relative
to the ServerRoot
directory. The
access log file is stored in "common log format" and can be used by any
web access reporting tool to generate a report on CUPS server activity.
The server name can be included in the filename by using %s
in the name.
The special name "syslog" can be used to send the access information to the system log instead of a plain file.
The default access log file is /var/log/cups/access_log. You can change this directive under the Log Files Tab GUI.
Allow from All Allow from None Allow from *.domain.com Allow from .domain.com Allow from host.domain.com Allow from nnn.* Allow from nnn.nnn.* Allow from nnn.nnn.nnn.* Allow from nnn.nnn.nnn.nnn Allow from nnn.nnn.nnn.nnn/mm Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm Allow from @LOCAL Allow from @IF(name)
The Allow
directive specifies a hostname, IP address, or
network that is allowed access to the server. Allow
directives are cummulative, so multiple Allow
directives
can be used to allow access for multiple hosts or networks. The
/mm
notation specifies a CIDR netmask:
mm | netmask | mm | netmask |
---|---|---|---|
0 | 0.0.0.0 | 8 | 255.0.0.0 |
1 | 128.0.0.0 | 16 | 255.255.0.0 |
2 | 192.0.0.0 | 24 | 255.255.255.0 |
... | ... | 32 | 255.255.255.255 |
The @LOCAL
name will allow access from all local
interfaces. The @IF(name)
name will allow access from the
named interface.
The Allow
directive must appear inside a
Location
directive. You can change these directives
under the Security Tab GUI.
AuthClass Anonymous AuthClass User AuthClass System AuthClass Group
The AuthClass
directive defines what level of
authentication is required:
Anonymous
- No authentication should be performed
(default.)User
- A valid username and password is required.System
- A valid username and password is required, and
the username must belong to the "sys" group; this can be changed using
the SystemGroup
directive.Group
- A valid username and password is required, and
the username must belong to the group named by the
AuthGroupName
directive.The AuthClass
directive must appear inside a
Location
directive. You can change these directives
under the Security Tab GUI.
AuthGroupName mygroup AuthGroupName lp
The AuthGroupName
directive sets the group to use for
Group
authentication.
The AuthGroupName
directive must appear inside a
Location
directive. You can change these directives
under the Security Tab GUI.
AuthType None AuthType Basic AuthType Digest
The AuthType
directive defines the type of
authentication to perform:
None
- No authentication should be performed (default.)Basic
- Basic authentication should be performed using
the UNIX password and group files.Digest
- Digest authentication should be performed
using the /etc/cups/passwd.md5 file.When using Basic
or Digest
authentication,
clients connecting through the localhost
interface can
also authenticate using certificates.
The AuthType
directive must appear inside a
Location
directive. You can change these directives
under the Security Tab GUI.
AutoPurgeJobs Yes AutoPurgeJobs No
The AutoPurgeJobs
directive specifies whether or not to
purge completed jobs once they are no longer required for quotas. This
option has no effect if quotas are not enabled. The default setting is
No
. You can change this directive under the
Jobs Tab GUI.
BrowseAddress 255.255.255.255:631 BrowseAddress 192.0.2.255:631 BrowseAddress host.domain.com:631 BrowseAddress @LOCAL BrowseAddress @IF(name)
The BrowseAddress
directive specifies an address to send
browsing information to. Multiple BrowseAddress
directives
can be specified to send browsing information to different networks or
systems.
The @LOCAL
name will broadcast printer information to
all local interfaces. The @IF(name)
name will broadcast to
the named interface.
The default address is 255.255.255.255:631
which will
broadcast the information to all networks the server is connected to.
Note:
If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8 bits, printer browsing (and in fact all broadcast reception) will not work. This problem appears to be fixed in HP-UX 11.0. |
You can change this directive under the Browsing Tab GUI.
BrowseAllow from all BrowseAllow from none BrowseAllow from 192.0.2 BrowseAllow from 192.0.2.0/24 BrowseAllow from 192.0.2.0/255.255.255.0 BrowseAllow from *.domain.com BrowseAllow from @LOCAL BrowseAllow from @IF(name)
The BrowseAllow
directive specifies a system or network
to accept browse packets from. The default is to accept browse packets
from all hosts.
Host and domain name matching require that you enable the
HostNameLookups
directive.
IP address matching supports exact matches, partial addresses that match networks using netmasks of 255.0.0.0, 255.255.0.0, and 255.255.255.0, or network addresses using the specified netmask or bit count.
The @LOCAL
name will allow browse data from all local
interfaces. The @IF(name)
name will allow browse data from
the named interface.
You can change this directive under the Browsing Tab GUI.
BrowseDeny from all BrowseDeny from none BrowseDeny from 192.0.2 BrowseDeny from 192.0.2.0/24 BrowseDeny from 192.0.2.0/255.255.255.0 BrowseDeny from *.domain.com BrowseDeny from @LOCAL BrowseDeny from @IF(name)
The BrowseDeny
directive specifies a system or network
to reject browse packets from. The default is to deny browse packets
from no hosts.
Host and domain name matching require that you enable the
HostNameLookups
directive.
IP address matching supports exact matches, partial addresses that match networks using netmasks of 255.0.0.0, 255.255.0.0, and 255.255.255.0, or network addresses using the specified netmask or bit count.
The @LOCAL
name will block browse data from all local
interfaces. The @IF(name)
name will block browse data from
the named interface.
You can change this directive under the Browsing Tab GUI.
BrowseOrder allow,deny BrowseOrder deny,allow
The BrowseOrder
directive specifies the order of
allow/deny processing. The default order is deny,allow
:
allow,deny
- Browse packets are accepted unless
specifically denied.deny,allow
- Browse packets are rejected unless
specifically allowed.You can change this directive under the Browsing Tab GUI.
BrowseInterval 0 BrowseInterval 30
The BrowseInterval
directive specifies the maximum
amount of time between browsing updates. Specifying a value of 0
seconds disables outgoing browse updates but allows a server to receive
printer information from other hosts.
The BrowseInterval
value should always be less than the BrowseTimeout
value. Otherwise
printers and classes will disappear from client systems between
updates.
You can change this directive under the Browsing Tab GUI.
BrowsePoll 192.0.2.2:631 BrowsePoll host.domain.com:631
The BrowsePoll
directive polls a server for available
printers once every BrowseInterval
seconds. Multiple BrowsePoll
directives can be
specified to poll multiple servers.
If BrowseInterval
is set to 0 then the server is polled
once every 30 seconds.
You can change this directive under the Browsing Tab GUI.
BrowsePort 631 BrowsePort 9999
The BrowsePort
directive specifies the UDP port number
used for browse packets. The default port number is 631.
Note:
You must set the |
You can change this directive under the Browsing Tab GUI.
BrowseProtocols CUPS BrowseProtocols SLP BrowseProtocols CUPS SLP BrowseProtocols all
The BrowseProtocols
directive specifies the protocols to
use when collecting and distributing shared printers on the local
network. The default protocol is CUPS
, which is a
broadcast-based protocol.
Note:
When using the |
You can change this directive under the Browsing Tab GUI.
BrowseRelay 193.0.2.1 192.0.2.255 BrowseRelay 193.0.2.0/255.255.255.0 192.0.2.255 BrowseRelay 193.0.2.0/24 192.0.2.255 BrowseRelay *.domain.com 192.0.2.255 BrowseRelay host.domain.com 192.0.2.255
The BrowseRelay
directive specifies source and
destination addresses for relaying browsing information from one host
or network to another. Multiple BrowseRelay
directives can
be specified as needed.
BrowseRelay
is typically used on systems that bridge
multiple subnets using one or more network interfaces. It can also be
used to relay printer information from polled servers with the line:
BrowseRelay 127.0.0.1 255.255.255.255
This effectively provides access to printers on a WAN for all clients on the LAN(s).
You can change this directive under the Browsing Tab GUI.
BrowseShortNames Yes BrowseShortNames No
The BrowseShortNames
directive specifies whether or not
short names are used for remote printers when possible. Short names are
just the remote printer name, without the server ("printer"). If more
than one remote printer is detected with the same name, the printers
will have long names ("printer@server1", "printer@server2".)
The default value for this option is Yes
. You can change
this directive under the Browsing Tab
GUI.
BrowseTimeout 300 BrowseTimeout 60
The BrowseTimeout
directive sets the timeout for printer
or class information that is received in browse packets. Once a printer
or class times out it is removed from the list of available
destinations.
The BrowseTimeout
value should always be greater than
the BrowseInterval
value.
Otherwise printers and classes will disappear from client systems
between updates.
You can change this directive under the Browsing Tab GUI.
Browsing On Browsing Off
The Browsing
directive controls whether or not network
printer browsing is enabled. The default setting is On
.
Note:
If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8 bits, printer browsing (and in fact all broadcast reception) will not work. This problem appears to be fixed in HP-UX 11.0. |
You can change this directive under the Browsing Tab GUI.
Classification Classification classified Classification confidential Classification secret Classification topsecret Classification unclassified
The Classification
directive sets the classification
level on the server. When this option is set, at least one of the
banner pages is forced to the classification level, and the
classification is placed on each page of output. The default is no
classification level. You can change this directive under the
Server Tab GUI.
ClassifyOverride Yes ClassifyOverride No
The ClassifyOverride
directive specifies whether users
can override the default classification level on the server. When the
server classification is set, users can change the classification using
the job-sheets
option and can choose to only print one
security banner before or after the job. If the job-sheets
option is set to none
then the server default
classification is used.
The default is to not allow classification overrides. You can change this directive under the Server Tab GUI.
ConfigFilePerm 0644 ConfigFilePerm 0600
The ConfigFilePerm
directive specifies the permissions
to use when writing configuration files. The default is 0600.
DataDir /usr/share/cups
The DataDir
directive sets the directory to use for data
files. You can change this directive under the
Directories Tab GUI.
DefaultCharset utf-8 DefaultCharset iso-8859-1 DefaultCharset windows-1251
The DefaultCharset
directive sets the default character
set to use for client connections. The default character set is
utf-8
but is overridden by the character set for the language
specified by the client or the DefaultLanguage
directive.
You can change these directives under the
Server Tab GUI.
DefaultLanguage de DefaultLanguage en DefaultLanguage es DefaultLanguage fr DefaultLanguage it
The DefaultLanguage
directive specifies the default
language to use for client connections. Setting the default language
also sets the default character set if a language localization file
exists for it. The default language is "en" for English. You can change
this directive under the Server Tab
GUI.
Deny from All Deny from None Deny from *.domain.com Deny from .domain.com Deny from host.domain.com Deny from nnn.* Deny from nnn.nnn.* Deny from nnn.nnn.nnn.* Deny from nnn.nnn.nnn.nnn Deny from nnn.nnn.nnn.nnn/mm Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm Deny from @LOCAL Deny from @IF(name)
The Deny
directive specifies a hostname, IP address, or
network that is allowed access to the server. Deny
directives are cummulative, so multiple Deny
directives
can be used to allow access for multiple hosts or networks. The
/mm
notation specifies a CIDR netmask:
mm | netmask | mm | netmask |
---|---|---|---|
0 | 0.0.0.0 | 8 | 255.0.0.0 |
1 | 128.0.0.0 | 16 | 255.255.0.0 |
2 | 192.0.0.0 | 24 | 255.255.255.0 |
... | ... | 32 | 255.255.255.255 |
The @LOCAL
name will deny access from all local
interfaces. The @IF(name)
name will deny access from the
named interface.
The Deny
directive must appear inside a
Location
directive.
You can change these directives under the Security Tab GUI.
DocumentRoot /usr/share/doc/cups DocumentRoot /foo/bar/doc/cups
The DocumentRoot
directive specifies the location of web
content for the HTTP server in CUPS. If an absolute path is not
specified then it is assumed to be relative to the
ServerRoot
directory. The default directory is
/usr/share/doc/cups.
Documents are first looked up in a sub-directory for the primary
language requested by the client (e.g. /usr/share/doc/cups/fr/...
) and then directly under the DocumentRoot
directory (e.g.
/usr/share/doc/cups/...), so it is possible to localize the web
content by providing subdirectories for each language needed.
You can change this directive under the Directories Tab GUI.
Encryption Never Encryption IfRequested Encryption Required Encryption Always
The Encryption
directive must appear instead a
Location
section and specifies the encryption settings
for that location. The default setting is IfRequested
for
all locations. You can change these directives under the
Security Tab GUI.
ErrorLog /var/log/cups/error_log ErrorLog /var/log/cups/error_log-%s ErrorLog syslog
The ErrorLog
directive sets the name of the error log
file. If the filename is not absolute then it is assumed to be relative
to the ServerRoot
directory. The
default error log file is /var/log/cups/error_log.
The server name can be included in the filename by using %s
in the name.
The special name "syslog" can be used to send the error information to the system log instead of a plain file. You can change this directive under the Log Files Tab GUI.
FileDevice Yes FileDevice No
The FileDevice
directive determines whether the
scheduler allows new printers to be added using device URIs of the form
file:/filename
. File devices are most often used to test
new printer drivers and do no support raw file printing.
The default setting is No
.
Note:
File devices are managed by the scheduler. Since the scheduler
normally runs as the root user, file devices can be used to overwrite
system files and potentially gain unauthorized access to the system. If
you must create printers using file devices, we recommend that you set
the |
FilterLimit 0 FilterLimit 200 FilterLimit 1000
The FilterLimit
directive sets the maximum cost of all
running job filters. It can be used to limit the number of filter
programs that are run on a server to minimize disk, memory, and CPU
resource problems. A limit of 0 disables filter limiting.
An average print to a non-PostScript printer needs a filter limit of about 200. A PostScript printer needs about half that (100). Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time.
The default limit is 0. You can change this directive under the Filter Tab GUI.
FontPath /foo/bar/fonts FontPath /usr/share/cups/fonts:/foo/bar/fonts
The FontPath
directive specifies the font path to use
when searching for fonts. The default font path is
/usr/share/cups/fonts
. You can change this directive under the
Directories Tab GUI.
Group sys Group system Group root
The Group
directive specifies the UNIX group that filter
and CGI programs run as. The default group is sys
,
system
, or root
depending on the operating system.
You can change this directive under the Filter
Tab GUI.
HideImplicitMembers Yes HideImplicitMembers No
The HideImplicitMembers
directive controls whether the
individual printers in an implicit class are shown to the user. The
default is No
.
ImplicitClasses
must be
enabled for this directive to have any effect. You can change this
directive under the Browsing Tab
GUI.
HostNameLookups On HostNameLookups Off HostNameLookups Double
The HostNameLookups
directive controls whether or not
CUPS looks up the hostname for connecting clients. The Double
setting causes CUPS to verify that the hostname resolved from the
address matches one of the addresses returned for that hostname.
Double
lookups also prevent clients with unregistered addresses
from connecting to your server. The default is Off
to
avoid the potential server performance problems with hostname lookups.
Set this option to On
or Double
only if
absolutely required. You can change this directive under the
Network Tab GUI.
ImplicitClasses On ImplicitClasses Off
The ImplicitClasses
directive controls whether implicit
classes are created based upon the available network printers and
classes. The default setting is On
but is automatically
turned Off
if Browsing
is turned Off
. You can change the ImplicitClasses
directive under the Browsing Tab
GUI.
ImplicitAnyClasses On ImplicitAnyClasses Off
The ImplicitAnyClasses
directive controls whether
implicit classes for local and remote printers are created with the
name AnyPrinter
. The default setting is Off
.
ImplicitClasses
must be
enabled for this directive to have any effect.
Include filename Include /foo/bar/filename
The Include
directive includes the named file in the
cupsd.conf
file. If no leading path is provided, the file is
assumed to be relative to the ServerRoot
directory.
KeepAlive On KeepAlive Off
The KeepAlive
directive controls whether or not to
support persistent HTTP connections. The default is On
.
HTTP/1.1 clients automatically support persistent connections, while
HTTP/1.0 clients must specifically request them using the
Keep-Alive
attribute in the Connection:
field of
each request. You can change this directive under the
Network Tab GUI.
KeepAliveTimeout 60 KeepAliveTimeout 30
The KeepAliveTimeout
directive controls how long a
persistent HTTP connection will remain open after the last request. The
default is 60 seconds. You can change this directive under the
Network Tab GUI.
<Limit GET POST> ... </Limit> <Limit ALL> ... </Limit>
The Limit
directive groups access control directives for
specific types of HTTP requests and must appear inside a
Location
section. Access can be limited for individual
request types (DELETE
, GET
, HEAD
, OPTIONS
, POST
, PUT
, and
TRACE
) or for all request types (ALL
). The request
type names are case-sensitive for compatibility with Apache.
<LimitExcept GET POST> ... </LimitExcept>
The LimitExcept
directive groups access control
directives for specific types of HTTP requests and must appear inside a
Location
section. Unlike the
Limit
directive, LimitExcept
restricts
access for all requests except those listed on the
LimitExcept
line.
LimitRequestBody 10485760 LimitRequestBody 10m LimitRequestBody 0
The LimitRequestBody
directive controls the maximum size
of print files, IPP requests, and HTML form data in HTTP POST requests.
The default limit is 0 which disables the limit check.
Also see the identical MaxRequestSize
directive. You can change these directives under the
Network Tab GUI.
Listen 127.0.0.1:631 Listen 192.0.2.1:631
The Listen
directive specifies a network address and
port to listen for connections. Multiple Listen
directives
can be provided to listen on multiple addresses.
The Listen
directive is similar to the
Port
directive but allows you to restrict access to specific
interfaces or networks. You can change the Listen
directive under the Network Tab GUI.
<Location /> ... </Location> <Location /admin> ... </Location> <Location /printers> ... </Location> <Location /printers/name> ... </Location> <Location /classes> ... </Location> <Location /classes/name> ... </Location>
The Location
directive specifies access control and
authentication options for the specified HTTP resource or path. The
Allow
, AuthClass
,
AuthGroupName
,
AuthType
, Deny
,
Encryption
, Limit
,
LimitExcept
, Order
, Require
, and
Satisfy
directives may all appear inside a location. You can
change this directive under the Security
Tab GUI. More information can be found under the section
"Printing System Security".
Note that more specific resources override the less specific ones. So
the directives inside the /printers/name
location will
override ones from /printers
. Directives inside
/printers
will override ones from /
. None of the
directives are inherited.
Location | Description |
---|---|
/ | The path for all get operations (get-printers, get-jobs, etc.) |
/admin | The path for all administration operations (add-printer, delete-printer, start-printer, etc.) |
/admin/conf | The path for access to the ESP Print Pro configuration files (cupsd.conf, client.conf, etc.) |
/classes | The path for all classes |
/classes/name | The resource for class
name |
/jobs | The path for all jobs (hold-job, release-job, etc.) |
/jobs/id | The resource for job id
|
/printers | The path for all printers |
/printers/name | The path for printer
name |
/printers/name.ppd | The PPD file path for
printer name |
LogFilePerm 0644 LogFilePerm 0600
The LogFilePerm
directive specifies the permissions to
use when writing configuration files. The default is 0644.
LogLevel none LogLevel emerg LogLevel alert LogLevel crit LogLevel error LogLevel warn LogLevel notice LogLevel info LogLevel debug LogLevel debug2
The LogLevel
directive specifies the level of logging
for the ErrorLog
file. The
following values are recognized (each level logs everything under the
preceding levels):
none
- Log nothing.emerg
- Log emergency conditions that prevent the
server from running.alert
- Log alerts that must be handled immediately.crit
- Log critical errors that don't prevent the
server from running.error
- Log general errors.warn
- Log errors and warnings.notice
- Log temporary error conditions.info
- Log all requests and state changes (default).debug
- Log basic debugging information.debug2
- Log all debugging information.You can change this directive under the Log Files Tab GUI.
MaxClients 100 MaxClients 1024
The MaxClients
directive controls the maximum number of
simultaneous clients that will be allowed by the server. The default is
100 clients. You can change this directive under the
Network Tab of the configuration GUI.
Note:
Since each print job requires a file descriptor for the status pipe,
the CUPS server internally limits the |
MaxClientsPerHost 0 MaxClientsPerHost 10
The MaxClientsPerHost
directive controls the maximum
number of simultaneous clients that will be allowed from a single host
by the server. The default is 10 or 1/10th the MaxClients
value, whichever is greater. A value of 0 uses the automatic setting
based on the MaxClients
value.
This directive provides a small measure of protection against Denial of Service attacks from a single host.
You can change this directive under the Network Tab in the configuration GUI.
MaxCopies 100 MaxCopies 65535
The MaxCopies
directive controls the maximum number of
copies that a user can print of a job. The default is 100 copies.
Note:
Most HP PCL laser printers internally limit the number of copies to 100. |
MaxJobs 100 MaxJobs 9999 MaxJobs 0
The MaxJobs
directive controls the maximum number of
jobs that are kept in memory. Once the number of jobs reaches the
limit, the oldest completed job is automatically purged from the system
to make room for the new one. If all of the known jobs are still
pending or active then the new job will be rejected.
Setting the maximum size to 0 disables this functionality. The default setting is 0. You can change this directive under the Jobs Tab GUI.
MaxJobsPerPrinter 100 MaxJobsPerPrinter 9999 MaxJobsPerPrinter 0
The MaxJobsPerPrinter
directive controls the maximum
number of active jobs that are allowed for each printer or class. Once
a printer or class reaches the limit, new jobs will be rejected until
one of the active jobs is completed, stopped, aborted, or cancelled.
Setting the maximum to 0 disables this functionality. The default setting is 0. You can change this directive under the Jobs Tab GUI.
MaxJobsPerUser 100 MaxJobsPerUser 9999 MaxJobsPerUser 0
The MaxJobsPerUser
directive controls the maximum number
of active jobs that are allowed for each user. Once a user reaches the
limit, new jobs will be rejected until one of the active jobs is
completed, stopped, aborted, or cancelled.
Setting the maximum to 0 disables this functionality. The default setting is 0. You can change this directive under the Jobs Tab GUI.
MaxLogSize 1048576 MaxLogSize 1m MaxLogSize 0
The MaxLogSize
directive controls the maximum size of
each log file. Once a log file reaches or exceeds the maximum size it
is closed and renamed to filename.O. This allows you to
rotate the logs automatically. The default size is 1048576 bytes (1MB).
Setting the maximum size to 0 disables log rotation. You can change this directive under the Log Files Tab GUI.
MaxRequestSize 10485760 MaxRequestSize 10m MaxRequestSize 0
The MaxRequestSize
directive controls the maximum size
of print files, IPP requests, and HTML form data in HTTP POST requests.
The default limit is 0 which disables the limit check.
Also see the identical
LimitRequestBody
directive. You can change these directives
under the Network Tab GUI.
Order Allow,Deny Order Deny,Allow
The Order
directive defines the default access control.
The following values are supported:
Allow,Deny
- Allow requests from all systems except
for those listed in a Deny
directive.Deny,Allow
- Allow requests only from those listed in
an Allow
directive.The Order
directive must appear inside a
Location
directive. You can change these directives
under the Security Tab GUI.
PageLog /var/log/cups/page_log PageLog /var/log/cups/page_log-%s PageLog syslog
The PageLog
directive sets the name of the page log
file. If the filename is not absolute then it is assumed to be relative
to the ServerRoot
directory. The
default page log file is /var/log/cups/page_log.
The server name can be included in the filename by using %s
in the name.
The special name "syslog" can be used to send the page information to the system log instead of a plain file. You can change this directive under the Log Files Tab GUI.
Port 631 Port 80
The Port
directive specifies a port to listen on.
Multiple Port
lines can be specified to listen on multiple
ports. The Port
directive is equivalent to "Listen
*:nnn
". The default port is 631. You can change this directive
under the Network Tab GUI.
PreserveJobHistory On PreserveJobHistory Off
The PreserveJobHistory
directive controls whether the
history of completed, cancelled, or aborted print jobs is stored on
disk.
A value of On
(the default) preserves job information
until the administrator purges it with the cancel
command.
A value of Off
removes the job information as soon as
each job is completed, cancelled, or aborted. You can change this
directive under the Jobs Tab GUI.
PreserveJobFiles On PreserveJobFiles Off
The PreserveJobFiles
directive controls whether the
document files of completed, cancelled, or aborted print jobs are
stored on disk.
A value of On
preserves job files until the
administrator purges them with the cancel
command. Jobs
can be restarted (and reprinted) as desired until they are purged.
A value of Off
(the default) removes the job files as
soon as each job is completed, cancelled, or aborted. You can change
this directive under the Jobs Tab GUI.
Printcap Printcap /etc/printcap Printcap /etc/printers.conf
The Printcap
directive controls whether or not a
printcap file is automatically generated and updated with a list of
available printers. If specified with no value, then no printcap file
will be generated. The default is to generate a file named
/etc/printcap.
When a filename is specified (e.g. /etc/printcap), the printcap file is written whenever a printer is added or removed. The printcap file can then be used by applications that are hardcoded to look at the printcap file for the available printers.
You can change this directive under the Server Tab GUI.
PrintcapFormat BSD PrintcapFormat Solaris
The PrintcapFormat
directive controls the output format
of the printcap file. The default is to generate a BSD printcap file.
You can change this directive under the Server
Tab GUI.
RemoteRoot remroot RemoteRoot root
The RemoteRoot
directive sets the username for
unauthenticated root requests from remote hosts. The default username
is remroot. Setting RemoteRoot
to root
effectively disables this security mechanism.
You can change this directive under the Security Tab GUI.
RequestRoot /var/spool/cups RequestRoot /foo/bar/spool/cups
The RequestRoot
directive sets the directory for
incoming IPP requests and HTML forms. If an absolute path is not
provided then it is assumed to be relative to the
ServerRoot
directory. The default request directory is
/var/spool/cups. You can change this directive under the
Directories Tab GUI.
Require group foo bar Require user john mary Require valid-user
The Require
directive specifies that authentication is
required for the resource. The group
keyword specifies
that the authenticated user must be a member of one or more of the
named groups that follow.
The user
keyboard specifies that the authenticated user
must be one of the named users that follow.
The valid-user
keyword specifies that any authenticated
user may access the resource.
The default is to do no authentication. This directive must appear
inside a Location
directive. You
can change these directives under the
Security Tab GUI.
RIPCache 8m RIPCache 1g RIPCache 2048k
The RIPCache
directive sets the size of the memory cache
used by Raster Image Processor ("RIP") filters such as
imagetoraster
and pstoraster
. The size can be
suffixed with a "k" for kilobytes, "m" for megabytes, or "g" for
gigabytes. The default cache size is "8m", or 8 megabytes.
You can change this directive under the Filter Tab GUI.
RunAsUser Yes RunAsUser No
The RunAsUser
directive controls whether the scheduler
runs as the unpriviledged user account (usually lp
). The
default is No
which leaves the scheduler running as the
root
user.
Note: Running as a non-priviledged user may prevent LPD and
locally connected printers from working due to permission problems. The
lpd
backend will automatically use a non-priviledged mode
that is not 100% compliant with RFC 1179. The parallel
,
serial
, and usb
backends will need write access to
the corresponding device files.
Satisfy all Satisfy any
The Satisfy
directive specifies whether all conditions
must be satisfied to allow access to the resource. If set to all
, then all authentication and access control conditions must be satified
to allow access.
Setting Satisfy
to any
allows a user to
gain access if the authentication or access control requirements are
satisfied. For example, you might require authentication for remote
access, but allow local access without authentication.
The default is all
. This directive must appear inside a Location
directive. You can change
these directives under the Security Tab
GUI.
ServerAdmin user@host ServerAdmin root@foo.bar.com
The ServerAdmin
directive identifies the email address
for the administrator on the system. By default the administrator email
address is root@server
, where server
is the
server name. You can change this directive under the
Server Tab GUI.
ServerBin /usr/lib/cups ServerBin /foo/bar/lib/cups
The ServerBin
directive sets the directory for
server-run executables. If an absolute path is not provided then it is
assumed to be relative to the ServerRoot
directory. The default executable directory is /usr/lib/cups
or /usr/lib32/cups (IRIX 6.5). You can change this directive
under the Directories Tab GUI.
ServerCertificate /etc/cups/ssl/server.crt
The ServerCertificate
directive specifies the location
of the SSL certificate file used by the server when negotiating
encrypted connections. The certificate must not be encrypted (password
protected) since the scheduler normally runs in the background and will
be unable to ask for a password.
The default certificate file is /etc/cups/ssl/server.crt. You can change this directive under the Security Tab GUI.
ServerKey /etc/cups/ssl/server.key
The ServerKey
directive specifies the location of the
SSL private key file used by the server when negotiating encrypted
connections.
The default key file is /etc/cups/ssl/server.crt. You can change this directive under the Security Tab GUI.
ServerName foo.domain.com ServerName myserver.domain.com
The ServerName
directive specifies the hostname that is
reported to clients. By default the server name is the hostname. You
can change this directive under the Server
Tab GUI.
ServerRoot /etc/cups ServerRoot /foo/bar/cups
The ServerRoot
directive specifies the absolute path to
the server configuration and state files. It is also used to resolve
relative paths in the cupsd.conf file. The default server
directory is /etc/cups. You can change this directive under
the Directories Tab GUI.
SSLListen 127.0.0.1:443 SSLListen 192.0.2.1:443
The SSLListen
directive specifies a network address and
port to listen for secure connections. Multiple SSLListen
directives can be provided to listen on multiple addresses.
The SSLListen
directive is similar to the
SSLPort
directive but allows you to restrict access to
specific interfaces or networks. You can change the SSLListen
directive under the Network Tab GUI.
SSLPort 443
The SSLPort
directive specifies a port to listen on for
secure connections. Multiple SSLPort
lines can be
specified to listen on multiple ports. You can change this directive
under the Network Tab GUI.
SystemGroup sys SystemGroup system SystemGroup root
The SystemGroup
directive specifies the system
administration group for System
authentication.
You can change this directive under the Security Tab GUI. More information can be found under section "Printing System Security".
TempDir /var/tmp TempDir /foo/bar/tmp
The TempDir
directive specifies an absolute path for the
directory to use for temporary files. The default directory is
/var/tmp.
Temporary directories must be world-writable and should have the "sticky" permission bit enabled so that other users cannot delete filter temporary files. The following commands will create an appropriate temporary directory called /foo/bar/tmp:
mkdir /foo/bar/tmp ENTER chmod a+rwxt /foo/bar/tmp ENTER
You can change this directive under the Directories Tab GUI.
Timeout 300 Timeout 90
The Timeout
directive controls the amount of time to
wait before an active HTTP or IPP request times out. The default
timeout is 300 seconds. You can change this directive under the
Network Tab GUI.
User lp User guest
The User
directive specifies the UNIX user that filter
and CGI programs run as. The default user is lp
. You can
change this directive under the Filter Tab
GUI.
The CUPS client application (lp
, lpr
, and
so forth) use the /etc/cups/client.conf file for default
settings. The client application also look in the user's home directory
for a file called .cupsrc. Each directive is listed on a
line by itself followed by its value. Comments are introduced using the
number sign ("#") character at the beginning of a line.
Since the client configuration file consists of plain text, you can use your favorite text editor to make changes to it.
The client.conf file contains many directives that determine how the client behaves:
Encryption Never Encryption IfRequested Encryption Required Encryption Always
The Encryption
directive specifies the default
encryption settings for the client. The default setting is
IfRequested.
ServerName foo.bar.com ServerName 11.22.33.44
The ServerName
directive specifies sets the remote
server that is to be used for all client operations. That is, it
redirects all client requests to the remote server. The default is to
use the local server ("localhost").
The CUPS scheduler (cupsd) uses the /etc/cups/printers.conf file to store the list of available printers. This file contains only locally defined printers, but not remote printers that are created automatically. Each directive is listed on a line by itself followed by its value. Comments are introduced using the number sign ("#") character at the beginning of a line.
Since the printer configuration file consists of plain text, you can use your favorite text editor to make changes to it.
The printers.conf file contains many directives that determine how the printer behaves:
Accepting AllowUser DefaultPrinter DenyUser DeviceURI |
Info JobSheets KLimit Location PageLimit |
Printer QuotaPeriod State StateMessage |
Accepting yes Accepting no
The Accepting
directive defines the initial Boolean
value for the printer-is-accepting-job attribute which can
be set by the accept
and reject
commands.
This directive must appear inside a Printer
or DefaultPrinter
directive.
AllowUser foo_user AllowUser bar_user
The AllowUser
directive adds a username to the
requesting-user-name-allowed attribute which can be set by the
lpadmin -u
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
<DefaultPrinter name/> ... </Printer>
The DefaultPrinter
directive begins a printer definition
for the default server destination. It can be added by the
lpadmin
command or if already defined, set as default by the
lpoptions -d
command.
DenyUser foo_user DenyUser bar_user
The DenyUser
directive adds a username to the
requesting-user-name-allowed attribute which can be set by the
lpadmin -u
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
DeviceURI socket://foo.bar.com:9100
The DeviceURI
directive defines the value of the
device-uri-attribute attribute which can be set by the
lpadmin -v
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
Info My Printer
The Info
directive defines the string for the
printer-info attribute which can be set by the lpadmin -D
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
JobSheets none,standard
The JobSheets
directive specifies the default banner
pages to print before and after a print job. In the above example, only
a standard banner will print after each job.
The lpoptions -o job-sheets=
command can be used to set
banners. For example, the following command would produce the same
results of a standard banner at the end of each print job
for the default printer.
If only one banner file is specified, it will be printed before the files in the job. If a second banner file is specified, it is printed after the files in the job.
The available banner pages depend on the local system configuration; CUPS includes the following banner files:
none
- Do not produce a banner page.classified
- A banner page with a "classified" label at
the top and bottom.confidential
- A banner page with a "confidential"
label at the top and bottom.secret
- A banner page with a "secret" label at the top
and bottom.standard
- A banner page with no label at the top and
bottom.topsecret
- A banner page with a "top secret" label at
the top and bottom.unclassified
- A banner page with an "unclassified"
label at the top and bottom.This directive must appear inside a Printer
or DefaultPrinter
directive.
KLimit 1234
The KLimit
directive defines the value of the
job-k-limit attribute which can be set by the lpadmin -o
job-k-limit=
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
Location Building 3321
The Location
directive defines the string for the
printer-location attribute which can be set by the lpadmin
-L
command.
Note:
Do not confuse this |
This directive must appear inside a Printer
or DefaultPrinter
directive.
PageLimit 1234
The PageLimit
directive defines the value of the
job-page-limit attribute which can be set by the lpadmin -o
job-page-limit=
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
<Printer name/> ... </Printer>
The Printer
directive begins a printer definition. It
can be added by the lpadmin
command.
QuotaPeriod 604800
The QuotaPeriod
directive defines the value of the
job-quota-period attribute which can be set by the lpadmin
-o job-quota-period=
command.
This directive must appear inside a Printer
or DefaultPrinter
directive.
State stopped
The State
directive defines the initial value of the
printer-state attribute. The strings idle and
stopped correspond to the IPP enumeration values.
This directive must appear inside a Printer
or DefaultPrinter
directive.
StateMessage Ready to print.
The StateMessage
directive defines the initial string
for the printer-state-message attribute. The following are
some example messages:
This directive must appear inside a Printer
or DefaultPrinter
directive.
The CUPS scheduler (cupsd) uses the /etc/cups/classes.conf file to store the list of available classes. This file contains only locally defined classes, but not remote or implicit classes that are created automatically. Each directive is listed on a line by itself followed by its value. Comments are introduced using the number sign ("#") character at the beginning of a line.
Since the classes configuration file consists of plain text, you can use your favorite text editor to make changes to it.
The classes.conf file contains many directives that determine how the classes behaves:
Accepting AllowUser Class DefaultClass DenyUser |
Info JobSheets KLimit Location PageLimit |
Printer QuotaPeriod State StateMessage |
Accepting yes Accepting no
The Accepting
directive defines the initial Boolean
value for the printer-is-accepting-job attribute which can
be set by the accept
and reject
commands.
This directive must appear inside a Class
or DefaultClass
directive.
AllowUser foo_user AllowUser bar_user
The AllowUser
directive adds a username to the
requesting-user-name-allowed attribute which can be set by the
lpadmin -u
command.
This directive must appear inside a Class
or DefaultClass
directive.
<Class name/> ... </Class>
The Class
directive begins a class definition. It can be
added by the lpadmin -c
command.
<DefaultClass name/> ... </DefaultClass>
The DefaultClass
directive begins a class definition for
the default server destination. It can be added by the lpadmin -c
command or if already defined, set as default by the lpoptions -d
command.
DenyUser foo_user DenyUser bar_user
The DenyUser
directive adds a username to the
requesting-user-name-allowed attribute which can be set by the
lpadmin -u
command.
This directive must appear inside a Class
or DefaultClass
directive.
Info My Printer
The Info
directive defines the string for the
printer-info attribute which can be set by the lpadmin -D
command.
This directive must appear inside a Class
or DefaultClass
directive.
JobSheets none,standard
The JobSheets
directive specifies the default banner
pages to print before and after a print job. In the above example, only
a standard banner will print after each job.
The lpoptions -o job-sheets=
command can be used to set
banners. For example, the following command would produce the same
results of a standard banner at the end of each print job
for the default class.
If only one banner file is specified, it will be printed before the files in the job. If a second banner file is specified, it is printed after the files in the job.
The available banner pages depend on the local system configuration; CUPS includes the following banner files:
none
- Do not produce a banner page.classified
- A banner page with a "classified" label at
the top and bottom.confidential
- A banner page with a "confidential"
label at the top and bottom.secret
- A banner page with a "secret" label at the top
and bottom.standard
- A banner page with no label at the top and
bottom.topsecret
- A banner page with a "top secret" label at
the top and bottom.unclassified
- A banner page with an "unclassified"
label at the top and bottom.This directive must appear inside a Class
or DefaultClass
directive.
KLimit 1234
The KLimit
directive defines the value of the
job-k-limit attribute which can be set by the lpadmin -o
job-k-limit=
command.
This directive must appear inside a Class
or DefaultClass
directive.
Location Building 3321
The Location
directive defines the string for the
printer-location attribute which can be set by the lpadmin
-L
command.
Note:
Do not confuse this |
This directive must appear inside a Class
or DefaultClass
directive.
PageLimit 1234
The PageLimit
directive defines the value of the
job-page-limit attribute which can be set by the lpadmin -o
job-page-limit=
command.
This directive must appear inside a Class
or DefaultClass
directive.
Printer foo Printer bar Printer foo@bar
The Printer
directive adds a printer to the class. It
can be added by the lpadmin -c
command.
Note:
Do not confuse this |
This directive must appear inside a Class
or DefaultClass
directive.
QuotaPeriod 604800
The QuotaPeriod
directive defines the value of the
job-quota-period attribute which can be set by the lpadmin
-o job-quota-period=
command.
This directive must appear inside a Class
or DefaultClass
directive.
State stopped
The State
directive defines the initial value of the
printer-state attribute. The strings idle and
stopped correspond to the IPP enumeration values.
This directive must appear inside a Class
or DefaultClass
directive.
StateMessage Ready to print.
The StateMessage
directive defines the initial string
for the printer-state-message attribute. The following are
some example messages:
This directive must appear inside a Class
or DefaultClass
directive.
ESP Print Pro maintains a log of all accesses, errors, and pages that are printed. The log files are normally stored in the /var/log/cups directory. You can change this by editing the /etc/cups/cupsd.conf configuration file.
The access_log file lists each HTTP resource that is accessed by a web browser or ESP Print Pro/IPP client. Each line is in the so-called "Common Log Format" used by many web servers and web reporting tools:
host group user date-time \"method resource version\" status bytes 127.0.0.1 - - [20/May/1999:19:20:29 +0000] "POST /admin/ HTTP/1.1" 401 0 127.0.0.1 - mike [20/May/1999:19:20:31 +0000] "POST /admin/ HTTP/1.1" 200 0
The host field will normally only be an IP address unless you
have enabled the HostNameLookups
directive in the cupsd.conf file.
The group field always contains "-" in ESP Print Pro.
The user field is the authenticated username of the requesting user. If no username and password is supplied for the request then this field contains "-".
The date-time field is the date and time of the request in Greenwich Mean Time (a.k.a. ZULU) and is in the format:
[DD/MON/YYYY:HH:MM:SS +0000]
The method field is the HTTP method used ("GET", "PUT", "POST", etc.)
The resource field is the filename of the requested resource.
The version field is the HTTP specification version used by the client. For ESP Print Pro clients this will always be "HTTP/1.1".
The status field contains the HTTP result status of the request. Usually it is "200", but other HTTP status codes are possible. For example, 401 is the "unauthorized access" status in the example above.
The bytes field contains the number of bytes in the request. For POST requests the bytes field contains the number of bytes of non-IPP data that is received from the client.
The error_log file lists messages from the scheduler (errors, warnings, etc.):
level date-time message I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'. I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'. I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.
The level field contains the type of message:
E
- An error occurred.W
- The server was unable to perform some action.I
- Informational message.D
- Debugging message.The date-time field contains the date and time of when the page started printing. The format of this field is identical to the data-time field in the access_log file.
The message fields contains a free-form textual message.
The page_log file lists each page that is sent to a printer. Each line contains the following information:
printer user job-id date-time page-number num-copies job-billing DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 0 acme-123
The printer field contains the name of the printer that printed the page. If you send a job to a printer class, this field will contain the name of the printer that was assigned the job.
The user field contains the name of the user (the IPP
requesting-user-name
attribute) that submitted this file for
printing.
The job-id field contains the job number of the page being printed. Job numbers are reset to 1 whenever the ESP Print Pro server is started, so don't depend on this number being unique!
The date-time field contains the date and time of when the page started printing. The format of this field is identical to the data-time field in the access_log file.
The page-number and num-pages fields contain the page number and number of copies being printed of that page. For printer that can not produce copies on their own, the num-pages field will always be 1.
The job-billing field contains a copy of the job-billing
attribute provided with the IPP create-job
or
print-job
requests or "-" if none was provided.
ESP Print Pro provides a MIME-based file typing and filtering
mechanism to convert files to a printable format for each printer. On
startup the ESP Print Pro server reads MIME database files from the
/etc/cups directory (or a directory specified by the
ServerRoot
directive) to build a file type and
conversion database in memory. These database files are plain ASCII
text and can be edited with your favorite text editor.
The mime.types and mime.convs files define the standard file types and filters that are available on the system.
The mime.types file defines the known file types. Each
line of the file starts with the MIME type and may be followed by one
or more file type recognition rules. For example, the text/html
file type is defined as:
text/html html htm \ printable(0,1024) + \ (string(0,"<HTML>") string(0,"<!DOCTYPE"))
The first two rules say that any file with an extension of .html
or .htm is a HTML file. The third rule says that any file
whose first 1024 characters are printable text and starts with the
strings <HTML>
or <!DOCTYPE
is a HTML file as
well.
The first two rules deal solely with the name of the file being typed. This is useful when the original filename is known, however for print files the server doesn't have a filename to work with. The third rule takes care of this possibility and automatically figures out the file type based upon the contents of the file instead.
The available tests are:
( expr )
- Parenthesis for expression grouping+
- Logical AND,
or whitespace - Logical OR!
- Logical NOTmatch("pattern")
- Pattern match on filenameextension
- Pattern match on "*.extension"ascii(offset,length)
- True if bytes are valid
printable ASCII (CR, NL, TAB, BS, 32-126)printable(offset,length)
- True if bytes are printable
8-bit chars (CR, NL, TAB, BS, 32-126, 160-254)string(offset,"string")
- True if bytes are identical
to stringcontains(offset,range,"string")
- True if the range of
bytes contains the stringchar(offset,value)
- True if byte is identicalshort(offset,value)
- True if 16-bit integer is
identical (network or "big-endian" byte order)int(offset,value)
- True if 32-bit integer is identical
(network or "big-endian" byte order)locale("string")
- True if current locale matches
stringAll numeric values can be in decimal (123), octal (0123), or hexadecimal (0x123) as desired.
Strings can be in quotes, all by themselves, as a string of hexadecimal values, or some combination:
"string" 'string' string <737472696e67> <7374>ring
As shown in the text/html
example, rules can continue on
multiple lines using the backslash (\) character. A more complex
example is the image/jpeg
rules:
image/jpeg jpeg jpg jpe string(0,<FFD8FF>) &&\ (char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\ char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\ char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\ char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
This rule states that any file with an extension of .jpeg,
.jpg, or .jpe is a JPEG file. In addition, any file
starting with the hexadecimal string <FFD8FF>
(JPEG
Start-Of-Image) followed by a character between and including
0xe0
and 0xef
(JPEG APPn markers) is also a JPEG
file.
The mime.convs file defines all of the filter programs that are known to the system. Each line consists of:
source destination cost program text/plain application/postscript 50 texttops application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster image/* application/vnd.cups-postscript 50 imagetops image/* application/vnd.cups-raster 50 imagetoraster
The source field is a MIME type, optionally using a wildcard for the super-type or sub-type (e.g. "text/plain", "image/*", "*/postscript").
The destination field is a MIME type defined in the mime.types file.
The cost field defines a relative cost for the filtering
operation from 1 to 100. The cost is used to choose between two
different sets of filters when converting a file. For example, to
convert from image/jpeg
to
application/vnd.cups-raster
, you could use the imagetops
and pstoraster
filters for a total cost of 100, or the
imagetoraster
filter for a total cost of 50.
The program field defines the filter program to run; the special program "-" can be used to make two file types equivalent. The program must accept the standard filter arguments and environment variables described in the CUPS Interface Design Description and CUPS Software Programmers Manual:
program job user title options [filename]
If specified, the filename argument defines a file to read when filtering, otherwise the filter must read from the standard input. All filtered output must go to the standard output.
Adding a new file type or filter is fairly straight-forward. Rather than adding the new type and filter to the mime.types and mime.convs files which are overwritten when you upgrade to a new version of ESP Print Pro, you simple need to create new files with .types and .convs extensions in the /etc/cups directory. We recommend that you use the product or format name, e.g.:
myproduct.types myproduct.convs
If you are providing a filter for a common file format or printer, add the company or author name:
acme-msword.types acme.msword.convs
This will help to prevent name collisions if you install many different file types and filters.
Once you choose the names for these files, create them using your
favorite text editor as described earlier in this chapter. Once you
have created the files, restart the cupsd
process as
described in Chapter N, "Printing System
Configuration".
Most ESP Print Pro printer drivers utilize one or more
printer-specific filters and a PPD file for each printer model. Printer
driver filters are registered via the PPD file using cupsFilter
attributes:
*cupsFilter: "application/vnd.cups-raster 0 rastertohp"
The filter is specified using the source file type only; the
destination file type is assumed to be printer/name
-
suitable for sending to the printer.
ESP Print Pro supports an unlimited number of file formats and filters, and can handle any printer. If you'd like to write a filter or printer driver for your favorite file format or printer, consult the CUPS Software Programmers Manual for step-by-step instructions.
This appendix lists the files and directories that are installed by ESP Print Pro.
Pathname | Description |
---|---|
/etc/cups/classes.conf | The printer classes configuration file for the scheduler. |
/etc/cups/cupsd.conf | The scheduler configuration file. |
/etc/cups/mime.convs | The list of standard file filters included with ESP Print Pro. |
/etc/cups/mime.types | The list of recognized file types for ESP Print Pro. |
/etc/cups/printers.conf | The printer configuration file for the scheduler. |
/etc/cups/interfaces/ | The location of System V interface scripts for printers. |
/etc/cups/ppd/ | The location of PostScript Printer Description ("PPD") files for printers. |
/etc/cups/ssl/ | The location of encryption files for the scheduler. |
/usr/bin/cancel | The System V cancel job(s) command. |
/usr/bin/disable | The System V disable printer command. |
/usr/bin/enable | The System V enable printer command. |
/usr/bin/lp | The System V print command. |
/usr/bin/lpoptions | Sets user-defined printing options and defaults. |
/usr/bin/lppasswd | Adds, changes, or removes Digest password accounts. |
/usr/bin/lpq | The Berkeley status command. |
/usr/bin/lpr | The Berkeley print command. |
/usr/bin/lprm | The Berkeley cancel job(s) command. |
/usr/bin/lpstat | The System V status command. |
/usr/include/cups/ | ESP Print Pro API header files. |
/usr/lib32/libcups.a
/usr/lib32/libcupsimage.a | Static libraries (IRIX 6.5) |
/usr/lib/libcups.a
/usr/lib/libcupsimage.a | Static libraries (all others) |
/usr/lib/libcups.sl.2
/usr/lib/libcupsimage.sl.2 | Shared libraries (HP-UX) |
/usr/lib32/libcups.so.2
/usr/lib32/libcupsimage.so.2 | Shared libraries (IRIX 6.5) |
/usr/lib/libcups.so.2
/usr/lib/libcupsimage.so.2 | Shared libraries (all others) |
/usr/lib/cups/backend/ | Backends for various types of printer connections. |
/usr/lib/cups/cgi-bin/ | CGI programs for the scheduler. |
/usr/lib/cups/daemon/ | Daemons for polling and LPD support. |
/usr/lib/cups/filter/ | Filters for various types of files. |
/usr/lib/locale/ | The location of language-specific message files. (System V) |
/usr/lib/nls/msg/ | The location of language-specific message files. (Compaq Tru64 UNIX) |
/usr/share/locale/ | The location of language-specific message files. (Linux, *BSD) |
/usr/sbin/accept | The accept-jobs command. |
/usr/sbin/cupsd | The ESP Print Pro print scheduler. |
/usr/sbin/lpadmin | The System V printer administration tool. |
/usr/sbin/lpc | The Berkeley printer administration tool. |
/usr/sbin/lpinfo | The get-devices and get-ppds command. |
/usr/sbin/lpmove | The move-jobs command. |
/usr/sbin/reject | The reject-jobs command. |
/usr/share/catman/a_man/
/usr/share/catman/u_man/ | Man pages (IRIX) |
/usr/man/ | Man pages (all others) |
/usr/share/cups/data/ | The location of filter data files. |
/usr/share/cups/data/testprint.ps | The PostScript test page file. |
/usr/share/cups/fonts/ | The location of PostScript fonts for the PostScript RIP. |
/usr/share/cups/model/ | The location of PostScript Printer Description ("PPD") files and interface scripts that may be used to setup a printer queue. |
/usr/share/cups/pstoraster/ | Other PostScript RIP initialization files. |
/usr/share/cups/pstoraster/Fontmap | The font mapping file (converts filenames to fontnames) |
/usr/share/cups/templates/ | The location of HTML template files for the web interfaces. |
/usr/share/doc/cups/ | Documentation and web page data for the scheduler. |
/var/log/cups/ | The location of scheduler log files. |
/var/spool/cups/ | The location of print files waiting to be printed. |