Blame | Last modification | View Log | RSS feed
# All configuration options described here can also be supplied on the# command line of cups-browsed via the "-o" option. In case of# contradicting settings the setting defined in the configuration file# will get used.# Unknown directives are ignored, also unknown values.# Where should cups-browsed save information about the print queues it had# generated when shutting down, like whether one of these queues was the# default printer, or default option settings of the queues?# CacheDir /var/cache/cups# Where should cups-browsed create its debug log file (if "DebugLogging file"# is set)?# LogDir /var/log/cups# How should debug logging be done? Into the file# /var/log/cups/cups-browsed_log ('file'), to stderr ('stderr'), or# not at all ('none')?# DebugLogging file# DebugLogging stderr# DebugLogging file stderr# DebugLogging none# Which protocols will we use to discover printers on the network?# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.BrowseRemoteProtocols dnssd cups# Which protocols will we use to broadcast shared local printers to the network?# Can use DNSSD and/or CUPS, or 'none' for neither.# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore# DNSSD in this directive).# BrowseLocalProtocols none# Settings of this directive apply to both BrowseRemoteProtocols and# BrowseLocalProtocols.# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.# BrowseProtocols none# Only browse remote printers (via DNS-SD or CUPS browsing) from# selected servers using the "BrowseAllow", "BrowseDeny", and# "BrowseOrder" directives# This serves for restricting the choice of printers in print dialogs# to trusted servers or to reduce the number of listed printers in the# print dialogs to a more user-friendly amount in large networks with# very many shared printers.# This only filters the selection of remote printers for which# cups-browsed creates local queues. If the print dialog uses other# mechanisms to list remote printers as for example direct DNS-SD# access, cups-browsed has no influence. cups-browsed also does not# prevent the user from manually accessing non-listed printers.# "BrowseAllow": Accept printers from these hosts or networks. If# there are only "BrowseAllow" lines and no "BrowseOrder" and/or# "BrowseDeny" lines, only servers matching at last one "BrowseAllow"# line are accepted.# "BrowseDeny": Deny printers from these hosts or networks. If there# are only "BrowseDeny" lines and no "BrowseOrder" and/or# "BrowseAllow" lines, all servers NOT matching any of the# "BrowseDeny" lines are accepted.# "BrowseOrder": Determine the order in which "BrowseAllow" and# "BrowseDeny" lines are applied. With "BrowseOrder Deny,Allow" in the# beginning all servers are accepted, then the "BrowseDeny" lines are# applied to exclude unwished servers or networks and after that the# "BrowseAllow" lines to re-include servers or networks. With# "BrowseOrder Allow,Deny" we start with denying all servers, then# applying the "BrowseAllow" lines and afterwards the "BrowseDeny"# lines.# Default for "BrowseOrder" is "Deny.Allow" if there are both# "BrowseAllow" and "BrowseDeny" lines.# If there are no "Browse..." lines at all, all servers are accepted.# BrowseAllow All# BrowseAllow cups.example.com# BrowseAllow 192.168.1.12# BrowseAllow 192.168.1.0/24# BrowseAllow 192.168.1.0/255.255.255.0# BrowseDeny All# BrowseDeny printserver.example.com# BrowseDeny 192.168.1.13# BrowseDeny 192.168.3.0/24# BrowseDeny 192.168.3.0/255.255.255.0# BrowseOrder Deny,Allow# BrowseOrder Allow,Deny# The interval between browsing/broadcasting cycles, local and/or# remote, can be adjusted with the BrowseInterval directive.# BrowseInterval 60# Browsing-related operations such as adding or removing printer queues# and broadcasting are each allowed to take up to a given amount of time.# It can be configured, in seconds, with the BrowseTimeout directive.# Especially queues discovered by CUPS broadcasts will be removed after# this timeout if no further broadcast from the server happens.# BrowseTimeout 300# Filtering of remote printers by other properties than IP addresses# of their servers# Often the desired selection of printers cannot be reached by only# taking into account the IP addresses of the servers. For these cases# there is the BrowseFilter directive to filter by most of the known# properties of the printer.# By default there is no BrowseFilter line meaning that no filtering# is applied.# To do filtering one can supply one or more BrowseFilter directives# like this:# BrowseFilter [NOT] [EXACT] <FIELD> [<VALUE>]# The BrowseFilter directive always starts with the word# "BrowseFilter" and it must at least contain the name of the data# field (<FIELD>) of the printer's properties to which it should# apply.# Available field names are:# name: Name of the local print queue to be created# host: Host name of the remote print server# port: Port through which the printer is accessed on the server# service: DNS/SD service name of the remote printer# domain: Domain of the remote print server# Also all field names in the TXT records of DNS-SD-advertised printers# are valid, like "color", "duplex", "pdl", ... If the field name of# the filter rule does not exist for the printer, the rule is skipped.# The optional <VALUE> field is either the exact value (when the# option EXACT is supplied) or a regular expression (Run "man 7 regex"# in a terminal window) to be matched with the data field.# If no <VALUE> filed is supplied, rules with field names of the TXT# record are considered for boolean matching (true/false) of boolean# field (like duplex, which can have the values "T" for true and "F"# for false).# If the option NOT is supplied, the filter rule is fulfilled if the# regular expression or the exact value DOES NOT match the content of# the data field. In a boolean rule (without <VALUE>) the rule matches# false.# Regular expressions are always considered case-insensitive and# extended POSIX regular expressions. Field names and options (NOT,# EXACT) are all evaluated case-insensitive. If there is an error in a# regular expression, the BrowseFilter line gets ignored.# Especially to note is that supplying any simple string consisting of# only letters, numbers, spaces, and some basic special characters as# a regular expression matches if it is contained somewhere in the# data field.# If there is more than one BrowseFilter directive, ALL the directives# need to be fulfilled for the remote printer to be accepted. If one# is not fulfilled, the printer will get ignored.# Examples:# Rules for standard data items which are supplied with any remote# printer advertised via DNS-SD:# Print queue name must contain "hum_res_", this matches# "hum_res_mono" or "hum_res_color" but also "old_hum_res_mono":# BrowseFilter name hum_res_# This matches if the remote host name contains "printserver", like# "printserver.local", "printserver2.example.com", "newprintserver":# BrowseFilter host printserver# This matches all ports with 631 int its number, for example 631,# 8631, 10631,...:# BrowseFilter port 631# This rule matches if the DNS-SD service name contains "@ printserver":# Browsefilter service @ printserver# Matches all domains with "local" in their names, not only "local" but# also things like "printlocally.com":# BrowseFilter domain local# Examples for rules applying to items of the TXT record:# This rule selects PostScript printers, as the "PDL" field in the TXT# record contains "postscript" then. This includes also remote CUPS# queues which accept PostScript, independent of whether the physical# printer behind the CUPS queue accepts PostScript or not.# BrowseFilter pdl postscript# Color printers usually contain a "Color" entry set to "T" (for true)# in the TXT record. This rule selects them:# BrowseFilter color# This is a similar rule to select only duplex (automatic double-sided# printing) printers:# BrowseFilter duplex# Rules with the NOT option:# This rule EXCLUDES printers from all hosts containing "financial" in# their names, nice to get rid of the 100s of printers of the# financial department:# BrowseFilter NOT host financial# Get only monochrome printers ("Color" set to "F", meaning false, in# the TXT record):# BrowseFilter NOT color# Rules with more advanced use of regular expressions:# Only queue names which BEGIN WITH "hum_res_" are accepted now, so we# still get "hum_res_mono" or "hum_res_color" but not# "old_hum_res_mono" any more:# BrowseFilter name ^hum_res_# Server names is accepted if it contains "print_server" OR# "graphics_dep_server":# BrowseFilter host print_server|graphics_dep_server# "printserver1", "printserver2", and "printserver3", nothing else:# BrowseFilter host ^printserver[1-3]$# Printers understanding at least one of PostScript, PCL, or PDF:# BrowseFilter pdl postscript|pcl|pdf# Examples for the EXACT option:# Only printers from "printserver.local" are accepted:# BrowseFilter EXACT host printserver.local# Printers from all servers except "prinserver2.local" are accepted:# BrowseFilter NOT EXACT host prinserver2.local# Use BrowsePoll to poll a particular CUPS server# BrowsePoll cups.example.com# BrowsePoll cups.example.com:631# BrowsePoll cups.example.com:631/version=1.1# LDAP browsing configuration# The default value for all options is an empty string. Example configuration:# BrowseLDAPBindDN cn=cups-browsed,dc=domain,dc=tld# BrowseLDAPCACertFile /path/to/server/certificate.pem# BrowseLDAPDN ou=printers,dc=domain,dc=tld# BrowseLDAPFilter (printerLocation=/Office 1/*)# BrowseLDAPPassword s3cret# BrowseLDAPServer ldaps://ldap.domain.tld# Use DomainSocket to access the local CUPS daemon via another than the# default domain socket. "None" or "Off" lets cups-browsed not use CUPS'# domain socket.# DomainSocket /var/run/cups/cups.sock# DomainSocket None# DomainSocket Off# Set HTTP timeout (in seconds) for requests sent to local/remote# resources Note that too short timeouts can make services getting# missed when they are present and operations be unneccesarily# repeated and too long timeouts can make operations take too long# when the server does not respond.# HttpLocalTimeout 5# HttpRemoteTimeout 10# Set OnlyUnsupportedByCUPS to "Yes" will make cups-browsed not create# local queues for remote printers for which CUPS creates queues by# itself. These printers are printers advertised via DNS-SD and doing# CUPS-supported (currently PWG Raster and Apple Raster) driverless# printing, including remote CUPS queues. Queues for other printers# (like for legacy PostScript/PCL printers) are always created# (depending on the other configuration settings of cups-browsed).# With OnlyUnsupportedByCUPS set to "No", cups-browsed creates queues# for all printers which it supports, including printers for which# CUPS would create queues by itself. Temporary queues created by CUPS# will get overwritten. This way it is assured that any extra# functionality of cups-browsed will apply to these queues. As queues# created by cups-browsed are permanent CUPS queues this setting is# also recommended if applications/print dialogs which do not support# temporary CUPS queues are installed. This setting is the default.# OnlyUnsupportedByCUPS Yes# With UseCUPSGeneratedPPDs set to "Yes" cups-browsed creates queues# for IPP printers with PPDs generated by the PPD generator of CUPS# and not with the one of cups-browsed. So any new development in# CUPS' PPD generator gets available. As CUPS' PPD generator is not# directly accessible, we need to make CUPS generate a temporary print# queue with the desired PPD. Therefore we can only use these PPDs# when our queue replaces a temporary CUPS queue, meaning that the# queue is for a printer on which CUPS supports driverless printing# (IPP 2.x, PDLs: PDF, PWG Raster, and/or Apple Raster) and that its# name is the same as CUPS uses for the temporary queue# ("LocalQueueNamingIPPPrinter DNS-SD" must be set). The directive# applies only to IPP printers, not to remote CUPS queues, to not# break clustering. Setting this directive to "No" lets cups-browsed# generate the PPD file. Default setting is "Yes".# UseCUPSGeneratedPPDs No# With the directives LocalQueueNamingRemoteCUPS and# LocalQueueNamingIPPPrinter you can determine how the names for local# queues generated by cups-browsed are generated, separately for# remote CUPS printers and IPP printers.# DNS-SD (the default in both cases) bases the naming on the service# name of the printer's advertised DNS-SD record. This is exactly the# same naming scheme as CUPS uses for its temporary queues, so the# local queue from cups-browsed prevents CUPS from listing and# creating an additional queue. As DNS-SD service names have to be# unique, queue names of printers from different servers will also be# unique and so there is no automatic clustering for load-balanced# printing.# MakeModel bases the queue name on the printer's manufacturer and# model names. This scheme cups-browsed used formerly for IPP# printers.# RemoteName is only available for remote CUPS queues and uses the# name of the queue on the remote CUPS server as the local queue's# name. This makes printers on different CUPS servers with equal queue# names automatically forming a load-balancing cluster as CUPS did# formerly (CUPS 1.5.x and older) with CUPS-broadcasted remote# printers. This scheme cups-browsed used formerly for remote CUPS# printers.# LocalQueueNamingRemoteCUPS DNS-SD# LocalQueueNamingRemoteCUPS MakeModelLocalQueueNamingRemoteCUPS RemoteName# LocalQueueNamingIPPPrinter DNS-SD# LocalQueueNamingIPPPrinter MakeModel# Set IPBasedDeviceURIs to "Yes" if cups-browsed should create its# local queues with device URIs with the IP addresses instead of the# host names of the remote servers. This mode is there for any# problems with host name resolution in the network, especially also# if avahi-daemon is only run for printer discovery and already# stopped while still printing. By default this mode is turned off,# meaning that we use URIs with host names.# If you prefer IPv4 or IPv6 IP addresses in the URIs, you can set# IPBasedDeviceURIs to "IPv4" to only get IPv4 IP addresses or# IPBasedDeviceURIs to "IPv6" to only get IPv6 IP addresses.# IPBasedDeviceURIs No# IPBasedDeviceURIs Yes# IPBasedDeviceURIs IPv4# IPBasedDeviceURIs IPv6# Set CreateRemoteRawPrinterQueues to "Yes" to let cups-browsed also# create local queues pointing to remote raw CUPS queues. Normally,# only queues pointing to remote queues with PPD/driver are created# as we do not use drivers on the client side, but in some cases# accessing a remote raw queue can make sense, for example if the# queue forwards the jobs by a special backend like Tea4CUPS.# CreateRemoteRawPrinterQueues Yes# cups-browsed by default creates local print queues for each shared# CUPS print queue which it discovers on remote machines in the local# network(s). Set CreateRemoteCUPSPrinterQueues to "No" if you do not# want cups-browsed to do this. For example you can set cups-browsed# to only create queues for IPP network printers setting# CreateIPPPrinterQueues not to "No" and CreateRemoteCUPSPrinterQueues# to "No".# CreateRemoteCUPSPrinterQueues No# Set CreateIPPPrinterQueues to "All" to let cups-browsed discover IPP# network printers (native printers, not CUPS queues) with known page# description languages (PWG Raster, PDF, PostScript, PCL XL, PCL# 5c/e) in the local network and auto-create print queues for them.# Set CreateIPPPrinterQueues to "Everywhere" to let cups-browsed# discover IPP Everywhere printers in the local network (native# printers, not CUPS queues) and auto-create print queues for them.# Set CreateIPPPrinterQueues to "AppleRaster" to let cups-browsed# discover Apple Raster printers in the local network (native# printers, not CUPS queues) and auto-create print queues for them.# Set CreateIPPPrinterQueues to "Driverless" to let cups-browsed# discover printers designed for driverless use (currently IPP# Everywhere and Apple Raster) in the local network (native printers,# not CUPS queues) and auto-create print queues for them.# Set CreateIPPPrinterQueues to "LocalOnly" to auto-create print# queues only for local printers made available as IPP printers. These# are for example IPP-over-USB printers, made available via# ippusbxd. This is the default.# Set CreateIPPPrinterQueues to "No" to not auto-create print queues# for IPP network printers.# If queues with PPD file are created (see IPPPrinterQueueType# directive below) the PPDs are auto-generated by cups-browsed based# on properties of the printer polled via IPP. In case of missing# information, info from the Bonjour record is used asd as last mean# default values.# If queues without PPD (see IPPPrinterQueueType directive below) are# created clients have to IPP-poll the capabilities of the printer and# send option settings as standard IPP attributes. Then we do not poll# the capabilities by ourselves to not wake up the printer from# power-saving mode when creating the queues. Jobs have to be sent in# one of PDF, PWG Raster, or JPEG format. Other formats are not# accepted.# This functionality is primarily for mobile devices running# CUPS to not need a printer setup tool nor a collection of printer# drivers and PPDs.# CreateIPPPrinterQueues No# CreateIPPPrinterQueues LocalOnly# CreateIPPPrinterQueues Everywhere# CreateIPPPrinterQueues AppleRaster# CreateIPPPrinterQueues Everywhere AppleRaster# CreateIPPPrinterQueues DriverlessCreateIPPPrinterQueues All# If cups-browsed is automatically creating print queues for native# IPP network printers ("CreateIPPPrinterQueues Yes"), the type of# queue to be created can be selected by the "IPPPrinterQueueType"# directive. The "PPD" (default) setting makes queues with PPD file# being created. With "Interface" or "NoPPD" the queue is created with# a System V interface script (Not supported with CUPS 2.2.x or# later). "Auto" is for backward compatibility and also lets queues# with PPD get created.# IPPPrinterQueueType PPD# IPPPrinterQueueType NoPPD# IPPPrinterQueueType Interface# IPPPrinterQueueType Auto# The NewIPPPrinterQueuesShared directive determines whether a print# queue for a newly discovered IPP network printer (not remote CUPS# queue) will be shared to the local network or not. This is only# valid for newly discovered printers. For printers discovered in an# earlier cups-browsed session, cups-browsed will remember whether the# printer was shared, so changes by the user get conserved. Default is# not to share newly discovered IPP printers.# NewIPPPrinterQueuesShared Yes# If there is more than one remote CUPS printer whose local queue# would get the same name and AutoClustering is set to "Yes" (the# default) only one local queue is created which makes up a# load-balancing cluster of the remote printers which would get this# queue name (implicit class). This means that when several jobs are# sent to this queue they get distributed between the printers, using# the method chosen by the LoadBalancing directive.# Note that the forming of clusters depends on the naming scheme for# local queues created by cups-browsed. If you have set# LocalQueueNamingRemoteCUPS to "DNSSD" you will not get automatic# clustering as the DNS-SD service names are always unique. With# LocalQueueNamingRemoteCUPS set to "RemoteName" local queues are# named as the CUPS queues on the remote servers are named and so# equally named queues on different servers get clustered (this is how# CUPS did it in version 1.5.x or older). LocalQueueNamingRemoteCUPS# set to "MakeModel" makes remote printers of the same model get# clustered. Note that then a cluster can contain more than one queue# of the same server.# With AutoClustering set to "No", for each remote CUPS printer an# individual local queue is created, and to avoid name clashes when# using the LocalQueueNamingRemoteCUPS settings "RemoteName" or# "MakeModel" "@<server name>" is added to the local queue name.# Only remote CUPS printers get clustered, not IPP network printers or# IPP-over-USB printers.# AutoClustering Yes# AutoClustering No# Load-balancing printer cluster formation can also be manually# controlled by defining explicitly which remote CUPS printers should# get clustered together.# This is done by the "Cluster" directive:# Cluster <QUEUENAME>: <EXPRESSION1> <EXPRESSION2> ...# Cluster <QUEUENAME># If no expressions are given, <QUEUENAME> is used as the first and# only expression for this cluster.# Discovered printers are matched against all the expressions of all# defined clusters. The first expression which matches the discovered# printer determines to which cluster it belongs. Note that this way a# printer can only belong to one cluster. Once matched, further# cluster definitions will not checked any more.# With the first printer matching a cluster's expression a local queue# with the name <QUEUENAME> is created. If more printers are# discovered and match this cluster, they join the cluster. Printing# to this queue prints to all these printers in a load-balancing# manner, according to to the setting of the LoadBalancing directive.# Each expression must be a string of characters without spaces. If# spaces are needed, replace them by underscores ('_').# An expression can be matched in three ways:# 1. By the name of the CUPS queue on the remote server# 2. By make and model name of the remote printer# 3. By the DNS-SD service name of the remote printer# Note that the matching is done case-insensitively and any group of# non-alphanumerical characters is replaced by a single underscore.# So if an expression is "HP_DeskJet_2540" and the remote server# reports "hp Deskjet-2540" the printer gets matched to this cluster.# If "AutoClustering" is not set to "No" both your manual cluster# definitions will be followed and automatic clustering of# equally-named remote queues will be performed. If a printer matches# in both categories the match to the manually defined cluster has# priority. Automatic clustering of equally-named remote printers is# not performed if there is a manually defined cluster with this name# (at least as the printers do not match this cluster).# Examples:# To cluster all remote CUPS queues named "laserprinter" in your local# network but not cluster any other equally-named remote CUPS printers# use (Local queue will get named "laserprinter"):# AutoClustering No# Cluster laserprinter# To cluster all remote CUPS queues of HP LaserJet 4050 printers in a# local queue named "LJ4050":# Cluster LJ4050: HP_LaserJet_4050# As DNS-SD service names are unique in a network you can create a# cluster from exactly specified printers (spaces replaced by# underscors):# Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2# The LoadBalancing directive switches between two methods of handling# load balancing between equally-named remote queues which are# represented by one local print queue making up a cluster of them# (implicit class).# The two methods are:# Queuing of jobs on the client (LoadBalancing QueueOnClient):# Here we queue up the jobs on the client and regularly check the# clustered remote print queues. If we find an idle queue, we pass# on a job to it.# This is also the method which CUPS uses for classes. Advantage is a# more even distribution of the job workload on the servers# (especially if the printing speed of the servers is very different),# and if a server fails, there are not several jobs stuck or# lost. Disadvantage is that if one takes the client (laptop, mobile# phone, ...) out of the local network, printing stops with the jobs# waiting in the local queue.# Queuing of jobs on the servers (LoadBalancing QueueOnServers):# Here we check the number of jobs on each of the clustered remote# printers and send an incoming job immediately to the remote printer# with the lowest amount of jobs in its queue. This way no jobs queue# up locally, all jobs which are waiting are waiting on one of the# remote servers.# Not having jobs waiting locally has the advantage that we can take# the local machine from the network and all jobs get printed.# Disadvantage is that if a server with a full queue of jobs goes# away, the jobs go away, too.# Default is queuing the jobs on the client as this is what CUPS does# with classes.# LoadBalancing QueueOnClient# LoadBalancing QueueOnServers# With the DefaultOptions directive one or more option settings can be# defined to be applied to every print queue newly created by# cups-browsed. Each option is supplied as one supplies options with# the "-o" command line argument to the "lpadmin" command (Run "man# lpadmin" for more details). More than one option can be supplied# separating the options by spaces. By default no option settings are# pre-defined.# Note that print queues which cups-browsed already created before# remember their previous settings and so these settings do not get# applied.# DefaultOptions Option1=Value1 Option2=Value2 Option3 noOption4# The AutoShutdown directive specifies whether cups-browsed should# automatically terminate when it has no local raw queues set up# pointing to any discovered remote printers or no jobs on such queues# depending on AutoShutdownOn setting (auto shutdown mode). Setting it# to "On" activates the auto-shutdown mode, setting it to "Off"# deactiivates it (the default). The special mode "avahi" turns auto# shutdown off while avahi-daemon is running and on when avahi-daemon# stops. This allows running cups-browsed on-demand when avahi-daemon# is run on-demand.# AutoShutdown Off# AutoShutdown On# AutoShutdown avahi# The AutoShutdownOn directive determines what event cups-browsed# considers as inactivity in auto shutdown mode. "NoQueues" (the# default) means that auto shutdown is initiated when there are no# queues for discovered remote printers generated by cups-browsed any# more. "NoJobs" means that all queues generated by cups-browsed are# without jobs.# AutoShutdownOn NoQueues# AutoShutdownOn NoJobs# The AutoShutdownTimeout directive specifies after how many seconds# without local raw queues set up pointing to any discovered remote# printers or jobs on these queues cups-browsed should actually shut# down in auto shutdown mode. Default is 30 seconds, 0 means immediate# shutdown.# AutoShutdownTimeout 30