ippserver - a sample ipp server implementation
ippserver [ -2 ] [ -C config-directory
] [ -D device-uri ] [ -F output-type/subtype ] [
-K keypath ] [ -M manufacturer ] [ -P ] [
-a attributes-file ] [ -c command ] [ -d
spool-directory ] [ -f type/subtype[,...] ] [ -h
] [ -i iconfile.png ] [ -k ] [ -l
location ] [ -m model ] [ -n hostname ] [
-p port ] [ -r subtype[,...,subtype] ] [
-s speed[,color-speed] ] [ -v[vvv] ] [ -B --help ] [
--no-dns-sd ] [ --no-web-forms ] [ -B --relaxed ] [ -B --state
directory ] [ -B --version ] service name
ippserver is a sample Internet Printing Protocol (IPP)
server conforming to the IPP Everywhere, IPP Shared Infrastructure
Extensions (INFRA), and IPP System Service specifications. It can be used as
a standalone print server and/or a very basic infrastructure server between
standard IPP clients and IPP proxies conforming to the INFRA
specification.
The following options are recognized by ippserver:
- -2
- Specifies that the printer supports two-sided printing.
- -C
config-directory
- Specifies the location of a directory containing files that define the
configuration of the server and the service instances that are available.
See the section titled "CONFIGURATION DIRECTORIES" below.
- -D device-uri
- Set the device URI for print output.
- -F
output-type/subtype[,...]
- Specifies the output MIME media type.
- -K keypath
- Specifies the location of TLS certificates and private keys.
- -M
manufacturer
- Specifies the manufacturer for the printer.
- -P
- Specifies that the printer will require a PIN ("job-password")
for submitted print jobs.
- -a
attributes-file
- Specifies a file containing attribute definitions for the printer.
- -c command
- Specifies a command that is used to process job files.
- -d
spool-directory
- Specifies the directory that will hold the print files. The default is a
directory under the user's current temporary directory.
- -f
type/subtype,[...]
- Specifies the list of supported MIME media types.
- -h
- --help
- Shows program help.
- -i
iconfile.png
- Specifies a PNG file for the printer icon.
- -k
- Keeps the print documents in the spool directory rather than deleting
them.
- -l location
- Specifies the "printer-location" string for the printer.
- -m model
- Specifies the model name of the printer.
- -n hostname
- Specifies the hostname that is reported by the server. The default is the
name returned by the hostname(1) command.
- -B --no-dns-sd
- Disables DNS-SD registrations.
- -B --no-web-forms
- Disables the GET-based web forms that allow web requests to change
material, media, and supply levels.
- -p port
- Specifies the port number to listen on. The default is a user-specific
number from 8000 to 8999.
- -r
subtype[,...,subtype]
- Specifies one or more comma-delimited DNS-SD subtypes to advertise for the
printer. The default subtype is "_print".
- --relaxed
- Runs the server in relaxed conformance mode, which allows certain harmless
IPP conformance issues to be ignored.
- -s
speed[,color-speed]
- Specifies the printer speed in pages-per-minute.
- --state
directory
- Specifies a persistent state directory to use. The directory is created if
it does not exist. The default is to not save state information between
runs.
- -v[vvv]
- Be (very) verbose when logging activity to the standard output.
- --version
- Show the software version number.
The ippserver program returns 1 if it is unable to process
the command-line arguments. Otherwise ippserver will run continuously
until terminated.
Run ippserver with a service name of My Cool Printer:
ippserver "My Cool Printer"
Specify a proxy username of "foo" and password of
"bar":
ippserver -u foo:bar "My Cool Printer"
When the -C option is specified, ippserver reads a
series of configuration files from the specified directory to configure the
server and services supported by the server.
The system.conf configuration file specifies settings that
apply to all services. Each line consists of a directive followed by its
value(s). Comments start with the # character and continue to the end of the
line. The following directives are supported:
- Authentication
{On|Off|Yes|No}
- Specifies whether authentication is required for requests other than
Get-Printer-Attributes. The default is "No".
- AuthAdminGroup
group
- Specifies the group of print administrators. The default administrator
group is "wheel".
- AuthGroups
group [... group]
- Specifies a list of groups that can be configured via IPP. If not
specified, the default for non-root users is the list of groups the user
belongs to. Otherwise, the default is the list of valid groups from
"adm", "admin", "daemon",
"operator", "staff", and/or "wheel".
- AuthName
realm
- Specifies the authentication realm name. The default realm name is
"Printing".
- AuthOperatorGroup
group
- Specifies the group of print operators. The default operator group is the
primary group for the user running the server.
- AuthProxyGroup
group
- Specifies the group of print proxies. The default proxy group is the
primary group for the user running the server.
- AuthService
name
- Specifies the PAM service name. The default is either "cups" or
"other", depending on the platform.
- AuthTestPassword
password
- Specifies a single password that can be used to authenticate against any
user account. Note: This directive is provided for testing only and does
not actually provide access to the "authenticated" user account.
The default is to not have a testing password enabled.
- AuthType
{None|Basic}
- Specifies the type of authentication to require. "None"
specifies that no authentication is required. "Basic" specifies
that HTTP Basic authentication (username + password) is required. The
default is "None" when authentication is turned off and
"Basic" when authentication is turned on.
- BinDir
directory
- Specifies the location of the ipptransform(1) and
ipptransform3d(1) programs.
- DataDir
directory
- Specifies the location of server data files.
- DefaultPrinter
name
- Specifies the default print service name.
- DocumentPrivacyAttributes
{all|default|none|list of attributes and groups}
- Specifies which document object attribute values are considered private.
"All" will hide all attributes except
"document-job-id", "document-number",
"document-printer-uri", and "document-uuid".
"Default" hides all description and template attributes but not
status attributes. "None" does not hide any attributes. A list
of (space-delimited) attributes and groups names specific attributes, all
description ("document-description"), and/or all template
("document-template") attributes. The default value is
"default".
- DocumentPrivacyScope
{all|default|owner|none}
- Specifies which users can query private document attribute values.
"All" means that all users can query private document attribute
values. "Default" means that the document owner and any
administrator or operator can query private document attribute values.
"Owner" means that only the document owner can query private
document attribute values. "None" means that no user can query
private document attribute values. The default is
"default".
- Encryption
{Always|IfRequested|Never|Required}
- Specifies when to use TLS encryption for client connections.
"Always" means that all connections are encrypted when
established (HTTPS). "IfRequested" means that connections are
encrypted when an upgrade is requested by the client. "Never"
means that encryption is not allowed or supported. "Required"
means that all connections are encrypted, either when established (HTTPS)
or immediately thereafter using HTTP Upgrade.
- FileDirectory
directory [ ... directory ]
- Specifies one or more directories that are allowed for local printing by
reference. Directories with spaces must be put inside single ('some
directory') or double ("some directory") quotes. The default is
to not allow file: URIs for printing.
- GeoLocation
geo:latitude,longitude[,altitude]
- Specifies the physical location of the server using a "geo" URI
(RFC 5870).
- Info
description
- Specifies a description of the server.
- JobPrivacyAttributes
{all|default|none|list of attributes and groups}
- Specifies which job object attribute values are considered private.
"All" will hide all attributes except "job-id",
"job-printer-uri", and "job-uuid". "Default"
hides all description and template attributes but not status attributes.
"None" does not hide any attributes. A list of (space-delimited)
attributes and groups names specific attributes, all description
("job-description"), and/or all template
("job-template") attributes. The default value is
"default".
- JobPrivacyScope
{all|default|owner|none}
- Specifies which users can query private job attribute values.
"All" means that all users can query private job attribute
values. "Default" means that the job owner and any administrator
or operator can query private job attribute values. "Owner"
means that only the job owner can query private job attribute values.
"None" means that no user can query private job attribute
values. The default is "default".
- KeepFiles
{No|Yes}
- Specifies whether job data files are retained after processing.
- Listen
address[:port] [ ... address[:port] ]
- Listens for client connections on the specified addresses and ports. If
the address is "*" the server will listen for connections on all
network interfaces. If the port is omitted, a port between 8000 and 8999
will be used.
- Location
location of server
- Specifies a human-readable location of the server.
- LogFile
path
- Specifies a log file to use. The path "stderr" causes all log
messages to be directed to the standard error file descriptor.
- LogLevel
{Debug|Info|Error}
- Specifies the verbosity of logged messages. "Debug" is the most
verbose level, logging all messages. "Info" provides basic
progress and status messages. "Error" provides only error
messages.
- MakeAndModel
make model
- Specifies the make and model of the server.
- MaxCompletedJobs
number
- Specifies the maximum number of completed jobs that are retained for job
history. The value 0 specifies there is no limit. Note: ippserver
currently removes completed jobs from the job history after 60
seconds.
- MaxJobs
number
- Specifies the maximum number of pending and active jobs that can be queued
at any given time. The value 0 specifies there is no limit.
- Name name of
server
- Specifies the human-readable name of the server.
- OwnerEmail
name@example.com
- Specifies the email address of the owner or administrator of the
server.
- OwnerLocation
location
- Specifies the human-readable location of the owner or administrator of the
server.
- OwnerName
name
- Specifies the name of the owner or administrator of the server.
- OwnerPhone
phone-number
- Specifies the telephone number of the owner or administrator of the
server.
- SpoolDir
path
- Specifies the location of print job spool files. The default is a
per-process temporary directory.
- StateDir
path
- Specifies the location of persistent printer state files. The default is
the empty string so no state is persisted.
- SubscriptionPrivacyAttributes
{all|default|none|list of attributes and groups}
- Specifies which subscription object attribute values are considered
private. "All" will hide all attributes except
"notify-job-id", "notify-printer-uri",
"notify-subscription-id", and
"notify-subscription-uuid". "Default" hides all
description and template attributes but not status attributes.
"None" does not hide any attributes. A list of (space-delimited)
attributes and groups names specific attributes, all description
("subscription-description"), and/or all template
("subscription-template") attributes. The default value is
"default".
- SubscriptionPrivacyScope
{all|default|owner|none}
- Specifies which users can query private subscription attribute values.
"All" means that all users can query private subscription
attribute values. "Default" means that the subscription owner
and any administrator or operator can query private subscription attribute
values. "Owner" means that only the subscription owner can query
private subscription attribute values. "None" means that no user
can query private subscription attribute values. The default is
"default".
- UUID
uuid
- Specifies the UUID of the server.
Each 2D print service is configured by a print/name.conf
configuration file, where "name" is the name of the service in the
printer URI, e.g., "ipps://hostname/ipp/print/name". Each 3D print
service is configured by a print3d/name.conf configuration file,
where "name" is the name of the service in the printer URI, e.g.,
"ipps://hostname/ipp/print3d/name". Each line consists of a
directive followed by its value(s). Comments start with the # character and
continue to the end of the line. The following directives are supported:
- Attr value-tag name
value(s)
- Specifies a Printer Description attribute. The format is further defined
in ipptoolfile(7).
- AuthPrintGroup
group
- Specifies the group of users that is allowed to do printing
operations.
- AuthProxyGroup
group
- Specifies the group of users that is allowed to do proxy operations.
- Command
command
- Specifies the command to run when processing jobs. The
ipptransform(1) command can be used for many printers.
- DeviceURI
uri
- Specifies the printer's device URI.
- Make
manufacturer
- Specifies the manufacturer name for the printer.
- Model
model
- Specifies the model for the printer.
- OutputFormat
type/subtype
- Specifies the output MIME media type for the printer.
- Profile name
filename.icc { ... }
- Specifies a named ICC profile and any member Job Template attributes that
select the profile.
- Strings
language filename.strings
- Specifies a localization ("strings") file for the specified
language.
- WebForms
Yes
- WebForms
No
- Enables or disables GET-based web forms which are used to manipulate the
material, media, and supply levels. The default is "Yes" to
enable GET-based forms.
ippserver defines the following additional
ipptoolfile(5) variables that can be used in attribute values:
- SERVERNAME
- Specifies the host name of the server, for example
"server.local".
- SERVERPORT
- Specifies the port number of the server, for example
"8501".
The icon for each 2D print service is stored in the
print/name.png file. Similarly, the icon for each 3D print service is
stored in the print3d/name.png file.
Copyright © 2014-2019 by the IEEE-ISTO Printer Working
Group. Copyright © 2007-2019 by Apple Inc.