系统管理指南:打印

IPP 服务器端支持

IPP 侦听服务提供了一个 IPP 网络协议服务,该服务为打印客户机系统提供一种与运行侦听程序的系统上的打印服务进行交互的方法。此侦听程序实现了服务器端 IPP 协议支持,其中包括一组广泛的标准操作和属性。此侦听程序是在 Oracle Solaris OS 中作为 Apache 模块和一系列共享库(包含 IPP 操作和网络支持)实现的。在系统上安装 Oracle Solaris OS 时,将会安装 IPP 软件栈。IPP 侦听服务是一个 SMF 服务,它依赖于要运行的打印服务。因此,在添加第一个打印队列后,会在打印服务器上自动启用 IPP。在删除最后一个打印队列后,会禁用 IPP。

IPP 的服务器端支持从 IPP 模块 mod_ipp 开始。侦听服务使用 Apache Web 服务器,这是因为 Oracle Solaris OS 附带提供 Apache 软件。Apache 模块使用动态共享对象 (Dynamic Shared Object, DSO) 接口以插入到 Web 服务器下面。通过使用 DSO 接口,此模块包含对 IPP 侦听服务的配置支持,并包含 Web 服务器入口点以便为侦听程序提供 HTTP 连接。通过这种模块化方法,IPP 支持可以重用 Apache 提供的加密和验证机制。

图 A–1 IPP 服务器配置

构成 IPP 服务器配置的组件图。周围文字给出了进一步的说明。

IPP 服务器端数据的配置

IPP 侦听服务配置文件 /etc/apache/httpd-standalone-ipp.conf 与任何标准的 Apache 1.3 配置文件类似。这些配置文件可采用您要使用的任何 Apache 1.3 配置指令。

缺省配置包括以下功能:

/printers/ 启用的缺省操作仅限于一组具有较小安全风险的操作。但是,所有操作都在 /admin/path (ipp://server/admin/) 下启用,并且需要进行基本验证。

下表说明了可以选择的 mod_ipp Apache 配置选项。

表 A–2 mod_ipp Apache 模块配置选项

说明

ipp-conformance

选择协议检查级别。缺省值为 automatic,它提供最大限度的客户机交互。

ipp-operation

使您可以为多个 IPP 操作有选择性地启用或禁用 IPP 操作支持。 

ipp-default-user

选择与本地打印服务联系时使用的用户名。缺省为 lp 打印用户,它可启用功能更强的代理。

ip-default-service

选择将请求定向到的缺省打印服务。缺省为 lpsched 守护进程,当前仅针对 lpsched 进行了测试。

下表说明了 Apache Web 服务器配置的一致性检查类型。使用的语法为:


ipp-conformance value
表 A–3 Apache Web 服务器一致性检查类型

含义

Automatic 

仅检查协议侦听程序是否支持所请求的操作。(缺省) 

1.0 

检查请求是否符合 IPP/1.0 规范。 

1.1 

检查请求是否符合 IPP/1.1 规范。 

以下是包含注释的 Apache 配置文件示例:

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 操作关键字

IPP 对象支持操作。操作由请求和响应组成。当打印客户机与 IPP 对象进行通信时,该客户机会向该对象的 URI 发出操作请求。操作请求和响应具有标识操作的参数。操作还具有影响操作的运行时间特征的属性。这些特定于操作的属性被定义为操作属性。打印请求包含操作属性、对象属性和执行特定操作所需的文档数据。每个请求都要求获得来自对象的响应。每个响应都以对应的状态代码作为响应参数来指示操作的成败。响应包含操作属性、对象属性,以及在执行操作请求期间生成的状态消息。

下表说明了 Apache Web 服务器配置的 IPP 操作关键字。

表 A–4 IPP 操作关键字

含义

All

此关键字用于代替某个操作。此关键字用于表示已选择 mod_ipp 支持的所有操作。

Required

此关键字用于代替某个操作。此关键字用于表示已选择 RFC-2911 中定义的所有必需操作,其中包括以下操作: print-jobcancel-jobget-job-attributesget-jobsget-printer-attributes

Print-job

客户机要提交一个仅包含单个文档的打印作业。文档数据将随请求一起发送。 

Print-uri

不受支持。 

Validate-job

在提交打印作业之前,客户机要验证调度程序能否处理打印作业。 

Create-job

客户机要提交一个包含多个文档的打印作业。文档是使用 send-documentsend-uri 操作发送的。

Send-document

客户机要将文档添加到使用 print-job 操作创建的打印作业中。文档数据将随请求一起发送。

Send-uri

不受支持。 

Cancel-job

客户机要取消打印作业。 

Get-job-attributes

客户机要收集有关打印作业的信息。 

Get-jobs

客户机要收集特定打印队列中打印作业的列表。 

Get-printer-attributes

客户机要收集有关特定打印队列的信息。 

Hold-job

客户机要保留特定打印作业。 

Release-job

客户机要释放特定打印作业。 

Restart-job

客户机要重新启动特定打印作业。 

Pause-printer

客户机要暂停(禁用)特定打印队列。此操作将停止处理队列中的打印请求。请注意,此操作不会禁止队列接受作业。 

Resume-printer

客户机要恢复(启用)处理特定打印队列中的作业。 

Purge-jobs

客户机要删除特定打印队列中的所有作业。 

Set-printer-attributes

创建或修改打印机属性。 

Set-job-attributes

修改现有打印作业的属性。 

Enable-printer

恢复(接受)将打印作业排入队列。 

Disable-printer

禁止(拒绝)将打印作业排入队列。 

cups-get-default

检索打印服务的缺省目标。 

cups-get-printers

枚举通过打印服务提供的所有打印机。 

cups-get-classes

枚举通过打印服务提供的所有类。 

cups-accept-jobs

特定于 CUPS 的 Enable-printer 等效项。 

cups-reject-jobs

特定于 CUPS 的 Disable-printer 等效项。 

cups-move-jobs

在相同打印服务的队列之间移动作业。