Software: Apache/2.0.54 (Fedora). PHP/5.0.4 uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 uid=48(apache) gid=48(apache) groups=48(apache) Safe-mode: OFF (not secure) /usr/share/doc/cups-1.1.23/ drwxr-xr-x |
Viewing file: Select action/file-type: ![]() CUPS Software Design DescriptionCUPS-SDD-1.1 Easy Software Products Copyright 1997-2005, All Rights Reserved Table of Contents1 Scope 2 References 3 Design Overview
1 Scope1.1 IdentificationThis software design description document provides general information on the architecture and coding of the Common UNIX Printing System ("CUPS") Version 1.1.1.2 System OverviewCUPS provides a portable printing layer for UNIX®-based operating systems. It has been developed by Easy Software Products to promote a standard printing solution for all UNIX vendors and users. CUPS provides the System V and Berkeley command-line interfaces. CUPS uses the Internet Printing Protocol ("IPP") as the basis for managing print jobs and queues. The Line Printer Daemon ("LPD") Server Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are also supported with reduced functionality. CUPS adds network printer browsing and PostScript Printer Description ("PPD") based printing options to support real-world printing under UNIX. CUPS includes an image file RIP that supports printing of image files to non-PostScript printers. A customized version of GNU Ghostscript 7.05 for CUPS called ESP Ghostscript is available separately to support printing of PostScript files within the CUPS driver framework. Sample drivers for Dymo, EPSON, HP, and OKIDATA printers are included that use these filters. Drivers for thousands of printers are provided with our ESP Print Pro software, available at: http://www.easysw.com/printpro/ CUPS is licensed under the GNU General Public License and GNU Library General Public License. Please contact Easy Software Products for commercial support and "binary distribution" rights. 1.3 Document OverviewThis software design description document is organized into the following sections:
2 References2.1 CUPS DocumentationThe following CUPS documentation is referenced by this document:
2.2 Other DocumentsThe following non-CUPS documents are referenced by this document:
3 Design OverviewCUPS is composed of 9 software sub-systems that operate together to perform common printing tasks:
3.1 BackendsThe backends implement communications over a number of different interfaces. All backends are called with a common set of arguments:
Backends are named using the scheme of the URI, so a URI of "ipp://hostname/resource" would be processed by the "ipp" backend. 3.1.1 ippThe ipp backend sends the specified job to a network printer or host
using the Internet Printing Protocol. The URI is as specified by the 3.1.2 lpdThe lpd backend sends the specified job to a network printer or host using the Line Printer Daemon protocol. The URI is of the form: lpd://hostname/queue 3.1.3 parallelThe parallel backend sends the specified job to a local printer connected via the specified parallel port device. The URI is of the form: parallel:/dev/file 3.1.4 serialThe serial backend sends the specified job to a local printer connected via the specified serial port device. The URI is of the form: serial:/dev/file?option[+option+...]The options can be any combination of the following:
3.1.5 socketThe socket backend sends the specified job to a network host using the AppSocket protocol commonly used by Hewlett-Packard and Tektronix printers. The URI is of the form: socket://hostname[:port]The default port number is 9100. 3.1.6 usbThe usb backend sends the specified job to a local printer connected via the specified usb port device. The URI is of the form: usb:/dev/file 3.2 Berkeley CommandsThe Berkeley commands provide a simple command-line interface to CUPS to submit and control print jobs. It is provided for compatibility with existing software that is hardcoded to use the Berkeley commands. 3.2.1 lpcThe lpc command allows users and administrators to check the status and control print queues. The version provided with CUPS supports the following commands:
3.2.2 lpqThe lpq command shows the current queue status. 3.2.3 lprThe lpr command submits a job for printing. The CUPS version of lpr silently ignores the "i", "t", "m", "h", and "s" options. 3.2.4 lprmThe lprm removes one or more print jobs. 3.3 CGIThe Common Gateway Interface (CGI) programs provide a web-based status interface to monitor the status of printers, classes, and jobs. Each of the CGIs utilize HTML template files that can be customized to provide alternate appearances. 3.3.1 admin.cgiThe admin CGI provides administration interfaces for printers and classes. The user can add, modify, delete, start, stop, and configure printers and classes using "wizard" interfaces. 3.3.2 classes.cgiThe classes CGI lists the available printer classes and any pending jobs for the class. The user can click on individual classes to limit the display and click on jobs to see the job status. 3.3.3 jobs.cgiThe jobs CGI lists the queued print jobs in order of priority. The list can be limited by printer or job. 3.3.4 printers.cgiThe printers CGI lists the available printer queues and any pending jobs for the printer. The user can click on individual printers to limit the display and click on jobs to see the job status. 3.4 CUPS Application Programmers InterfaceThe CUPS Application Programmers Interface ("API") provides common convenience, HTTP, IPP, language, and PPD functions used by the CUPS software. 3.4.1 Convenience FunctionsConvenience functions are provided to submit an IPP request, send a print file, cancel a job, get a list of available printers, get a list of available classes, get the default printer or class, get the default server name, get the local username, and get a password string. 3.4.2 HTTP FunctionsThe HTTP functions provide functions to connect to HTTP servers, issue requests, read data from a server, and write data to a server. 3.4.3 IPP FunctionsThe IPP function provide functions to manage IPP request data and attributes, read IPP responses from a server, and write IPP requests to a server. 3.4.4 Language FunctionsThe language functions provide a standard interface for retrieving common textual messages for a particular locale and determining the correct encoding (e.g. US ASCII, UTF-8, ISO-8859-1, etc.) 3.4.5 PPD FunctionsThe PostScript Printer Description functions manage PPD files, select options, check for option conflicts, and emit selected options in the correct order. 3.5 CUPS Imaging LibraryThe CUPS imaging library provides colorspace conversion, color management, image management, scaling, image file, and raster functions used by the CUPS raster filters. 3.5.1 Colorspace Conversion FunctionsThe colorspace conversion functions handle conversion of grayscale and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces. 3.5.2 Color Management FunctionsThe color management functions handle gamut mapping and density correction. These are integrated with the colorspace conversion functions so that colorspace conversion and color management are processed in a single step. 3.5.3 Image Management FunctionsThe image management functions manage a tiled image database that is swapped to/from disk as needed. 3.5.4 Scaling FunctionsThe scaling functions provide image scaling services using nearest-neighbor sampling and bilinear interpolation as appropriate. 3.5.5 Image File FunctionsThe image file functions handle loading of all image file formats. 3.5.6 Raster FunctionsThe raster functions manage streams of CUPS raster data (described in the Interface Design Document) used by non-PostScript printer drivers and raster filters. 3.6 DaemonsThe daemons provide additional network functions for the scheduler. Currently only two daemons are provided with CUPS. 3.6.1 Line Printer DaemonThe line printer daemon provides remote LPD client support and is run
by the 3.6.2 Polling DaemonThe polling daemon is used to poll a remote server for a list of available printers and provide it to the scheduler for addition. A separate polling daemon is run by the scheduler for every remote system listed for polling in the scheduler configuration file. 3.7 FiltersThe filters implement file conversion services for CUPS. All filters are called with a common set of arguments:
Filters are added to the MIME conversion data file and implement all necessary conversions from one file type to another. 3.7.1 hpgltopsThe hpgltops filter converts HP-GL/2 files into PostScript. 3.7.2 imagetopsThe imagetops filter converts image files into PostScript. 3.7.3 imagetorasterThe imagetoraster filter converts image files into CUPS raster data. 3.7.4 pdftopsThe pdftops filter converts PDF files into PostScript. 3.7.5 pstopsThe pstops filter inserts printer-specific commands from PPD files and performs page filtering as requested by the user. 3.7.6 pstorasterThe pstoraster filter converts PostScript program data into CUPS raster data. 3.7.7 rastertoepsonThe rastertoepson filter handles converting CUPS raster data to ESC/P and supports both color and black-and-white printers. 3.7.8 rastertohpThe rastertohp filter handles converting CUPS raster data to HP-PCL and supports both color and black-and-white printers. 3.7.9 texttopsThe texttops filter converts text files into PostScript. 3.8 SchedulerThe scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that manages the printers, classes, and jobs in the system. It also handles a simple broadcast-based directory service so that remote print queues and classes can be accessed transparently from the local system. 3.8.1 AuthorizationThe authorization module is responsible for performing access control and authentication for all HTTP and IPP requests entering the system. 3.8.2 ClassesThe classes module is responsible for managing printer classes in the system. Each class is a collection of local and/or remote printers. The classes module also reads and writes the classes configuration file. 3.8.3 ClientThe client module is responsible for all HTTP client communications. It handles listening on selected interfaces, accepting connections from prospective clients, processing incoming HTTP requests, and sending HTTP responses to those requests. The client module also is responsible for executing the external CGI programs as needed to support web-based printer, class, and job status monitoring and administration. Once authorized, all IPP requests are sent to the IPP module. 3.8.4 ConfigurationThe configuration module is responsible for reading the CUPS configuration file and initializing the appropriate data structures and values. The configuration module also stops CUPS services before reading the configuration file and restarts them after the configuration file has been read. 3.8.5 DevicesThe devices module is responsible for managing the list of available devices for the CUPS-Get-Devices operation. 3.8.6 Directory ServicesThe directory services module sends and recieves printer state information over a broadcast socket. Remote printers and classes are automatically added to or removed from the local printer and class lists as needed. The directory services module can only recieve printer state information over a single UDP port, however it can broadcast to multiple addresses and ports as needed. 3.8.7 IPPThe IPP module handles IPP requests and acts accordingly. URI validation is also performed here, as a client can post IPP data to any URI on the server which might sidestep the access control or authentication of the HTTP server. 3.8.8 JobsThe jobs module manages print jobs, starts filter and backend processes for jobs to be printed, and monitors status messages from those filters and backends. 3.8.9 LoggingThe logging module manages the access, error, and page log files that are generated by the scheduler. 3.8.10 MainThe main module is responsible for timing out and dispatching input
and output for client connections. It also watches for incoming 3.8.11 MIMEThe Multimedia Internet Mail Exchange module manages a MIME type and conversion database that supports file typing by extension and content and least-cost file filtering from a source to a destination file type. 3.8.12 PPDsThe PPDs module is responsible for managing the list of available PPD files for the CUPS-Get-PPDs operation. 3.8.13 PrintersThe printers module is responsible for managing printers and PPD files in the system. The printers module also reads and writes the printers configuration file. 3.9 System V CommandsThe System V commands provide a robust command-line interface to CUPS to submit and control printers and jobs. 3.9.1 acceptThe accept command tells the scheduler to accept new jobs for specific printers. 3.9.2 cancelThe cancel command tells the scheduler to cancel one or more jobs that are queued for printing. 3.9.3 disableThe disable command tells the scheduler to stop printing jobs on the specified printers. 3.9.4 enableThe enable command tells the scheduler to start printing jobs on the specified printers. 3.9.5 lpThe lp command submits submits files for printing. Unlike the standard System V lp command, a single CUPS lp command will generate a separate job ID for each file that is printed. Also, the Solaris "f", "H", "P", "S", and "y" options are silently ignored. 3.9.6 lpadminThe lpadmin command manages printer queues and classes. The Solaris "A", "F", "I", "M", "P", "Q", "S", "T", "U", "W", "f", "l", "m", "o", "s", "t", and "u" options are not supported, and new options "P" (PPD file) and "E" (enable and accept) are provided to configure CUPS-specific features. 3.9.7 lpinfoThe lpinfo command lists the available PPD files or devices as selected by the user. 3.9.8 lpmoveThe lpmove command moves a print job to a new destination. 3.9.9 lpoptionsThe lpoptions command manages user-defined printers and options. 3.9.10 lpstatThe lpstat command lists printers, classes, and jobs as requested by the user. 3.9.11 rejectThe reject command tells the scheduler not to accept new jobs for specific printers. A GlossaryA.1 Terms
A.2 Acronyms
|
:: Command execute :: | |
--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0026 ]-- |