System Administration Guide: Solaris Printing

IPP Server-Side Support

The IPP listening service provides an IPP network protocol service that enables print client systems a means of interacting with a print service on the system that is running the listener. This listener implements server-side IPP protocol support that includes a broad set of standard operations and attributes. The listener is implemented in the Solaris OS as an Apache module and a series of shared libraries that contain IPP operation and wire support. The IPP software stack is installed when the Solaris OS is installed on the system. The IPP listening service is an SMF service that depends on the print service to run. As a result, IPP is automatically enabled on a print server when the first print queue has been added . IPP is disabled when the last print queue has been removed.

Server-side support for IPP starts with the IPP module, mod_ipp. The listening service uses the Apache web server because the Solaris OS already ships with Apache software. The Apache module uses the Dynamic Shared Object (DSO) interface to plug in under the web server. Using the DSO interface, the module includes configuration support for the IPP Listening service and an entry point for the web server to hand the listener the HTTP connection. This modular approach enables the IPP support to reuse Apache delivered encryption and authentication mechanisms

Figure of components that make up the IPP server configuration.
Further explanation included in surrounding text.

Configuration of IPP Server-Side Data

The IPP listening service configuration file, /etc/apache/httpd-standalone-ipp.conf, is like any normal Apache 1.3 configuration file. The configuration files takes any Apache 1.3 configuration directives that you want to use.

The default configuration includes the following features:

The default operations that are enabled for /printers/ is limited to a set of operations that poses less of a security risk. However, all operations are enabled at the /admin/path (ipp://server/admin/), with basic authentication required.

The mod_ipp Apache configuration options to choose from are described in the following table:

Table A–2 mod_ipp Apache Module Configuration Options:

Value

Description

ipp-conformance

Selects level of protocol checking. The default is automatic, which provides maximal client interaction.

ipp-operation

Enables you to selectively enable or disable IPP operation support for one more IPP operations. 

ipp-default-user

Selects the user name to use when contacting the local print service. The default is the lp print user, which enables more functional proxying.

ip-default-service

Selects the default print service to direct requests to. The default is the lpsched daemon and currently only has been tested against lpsched.

The following table shows the conformance checking types for the Apache Web Server Configuration. The syntax to use is:


ipp-conformance value
Table A–3 Apache Web Server Conformance Checking Types

Value

Meaning

Automatic 

Only check that the requested operation is supported by the protocol listener. (default) 

1.0 

Check that the request conforms to IPP/1.0. 

1.1 

Check that the request conforms to IPP/1.1. 

The following is an annotated example of an apache configuration file:

if mod_ipp is loaded User lp run as "lp"
URI: ipp://{host]/printers/{queue}
SetHandler application/ipp use mod_ipp for this location
ipp-conformance strict enable strict protocol checking (default)
ipp-operation all enable enable all supported operations

IPP Operation Keywords

IPP objects support operations. An operation consists of a request and a response. When a print client communicates with an IPP object, the client issues an operation request to the URI for that object. Operation requests and responses have parameters that identify the operation. Operations also have attributes that affect the run time characteristics of the operation. These operation-specific attributes are defined as operation attributes. Print requests contain operation attributes, object attributes, and the required document data to perform the specific operation. Each request requires a response from the object. Each response indicates success or failure of the operation with a corresponding status code as a response parameter. Responses contain operation attributes, object attributes, and status messages that are generated during the operation request.

The following table describes the IPP operation keywords for the Apache Web Server Configuration.

Table A–4 IPP Operation Keywords

Value

Meaning

All

This keyword is used in place of an operation. The keyword is meant to signify that all operations that are supported by mod_ipp are selected.

Required

This keyword is used in place of an operation. The keyword is meant to signify that all the required operations, as defined in RFC-2911, are selected, including the following: print-job, cancel-job, get-job-attributes, get-jobs, and get-printer-attributes.

Print-job

A client wants to submit a print job with only a single document. The document data is sent with the request. 

Print-uri

Unsupported 

Validate-job

A client wants to validate that a print job can be handled by the scheduler before submitting a print job. 

Create-job

A client wants to submit a print job with multiple documents. The documents are sent with the send-document and send-uri operations.

Send-document

A client wants to add a document to a print job that is created with the print-job operation. The document data is sent with the request.

Send-uri

Unsupported 

Cancel-job

A client wants to cancel a print job. 

Get-job-attributes

A client wants to gather information about a print job. 

Get-jobs

A client wants to gather a list of print jobs in a particular print queue. 

Get-printer-attributes

A client wants to gather information about a particular print queue. 

Hold-job

A client wants to hold a particular print job. 

Release-job

A client wants to release a particular print job. 

Restart-job

A client wants to restart a particular print  

Pause-printer

A client wants to pause (disable) a particular print queue. This operation will stop the processing of print requests in the queue. Note that the operation does not stop the queue from accepting jobs. 

Resume-printer

A client wants to resume (enable) processing of jobs in a particular print queue. 

Purge-jobs

A client wants to remove all jobs from a particular print queue. 

Set-printer-attributes

Create or modify attributes of a printer. 

Set-job-attributes

Modify attributes of an existing print job. 

Enable-printer

Resume (accept) queueing of print jobs. 

Disable-printer

Disable (reject) queueing of print jobs. 

cups-get-default

Retrieve the default destination for a print service. 

cups-get-printers

Enumerate all printers available from the print service. 

cups-get-classes

Enumerate all classes available from the print service. 

cups-accept-jobs

CUPS specific equivalent of Enable-printer. 

cups-reject-jobs

CUPS specific equivalent of Disable-printer. 

cups-move-jobs

Move jobs between queues in the same print service.