Go to file
Till Kamppeter 254598ba35 Fix scheduler cupsd.conf load
When running it without arguments it is supposed to read the local CUPS's
cupsd.conf and show a summary of the setting. in CUPS 2.3.1 it shows a mess
with a lot of HTML inside and this is due to the fact that when loading the
file via HTTP using the /admin/cups/cupsd.conf path the scheduler calls the
admin.cgi program which returns the admin front page of the web admin
interface. cupsctl then tries to interpret that as the config file and displays
garbage. Even worse is if you run cupsctl with command line argument (one of
the five switches or a key=value pair) to change a setting. It seems to load
cupsd.conf again and gets again the HTML code of the web interface page.
cupsctl tries to interpret this again, producing garbage, adds the
user-supplied setting and writes all this back into cupsd.conf. Then it tries
to restart the scheduler which fails due to the broken config file.
The problem is that in the file scheduler/client.conf, in the function
get_file() the URI from the client is at first checked whether it begins with
"/admin/" and in this case the CGI program admin.cgi is responsible. Only after
that the check for "/admin/conf/cupsd.conf" comes and is never reached.
I have changed the order now appropriately and this way cupsctl works again.
Note that the problem only occurs if the web interface is active and the
cupsctl command is issued by a non-root user.
This is a regression caused by issue #5652.

Bug: https://github.com/apple/cups/issues/5744

Gbp-Pq: Name 0005-Fix-scheduler-cupsd.conf-load.patch
2022-05-13 20:08:42 +08:00
backend Let snmp backend also use manufacturer-specific MIBs 2022-05-13 20:08:42 +08:00
berkeley Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
cgi-bin Move cupsd.conf.default from SERVERROOT to DATADIR 2022-05-13 20:08:42 +08:00
conf Set the default for SyncOnClose to Yes 2022-05-13 20:08:42 +08:00
config-scripts Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
cups Tests: Force LC_* environment variables when testing (non) l10n'isation. 2022-05-13 20:08:42 +08:00
data Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
debian Import Debian changes 2.3.1-ok1 2022-05-13 20:08:21 +08:00
desktop Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
doc Set default job error policy to "retry-job" 2022-05-13 20:08:42 +08:00
examples Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
filter Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
locale Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
man po4a infrastructure and translations for manpages 2022-05-13 20:08:42 +08:00
monitor Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
notifier Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
packaging Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
ppdc Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
scheduler Fix scheduler cupsd.conf load 2022-05-13 20:08:42 +08:00
systemv Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
templates Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
test Tests: Do not test pdftourf 2022-05-13 20:08:42 +08:00
tools Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
vcnet Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
xcode Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
.lgtm.yml Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
CHANGES.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
CONTRIBUTING.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
CREDITS.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
DEVELOPING.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
INSTALL.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
LICENSE Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
Makedefs.in Build mantohtml with the build architecture compiler 2022-05-13 20:08:42 +08:00
Makefile Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
NOTICE Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
README.md Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
config.guess Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
config.h.in Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
config.sub Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
configure Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00
configure.ac Build mantohtml with the build architecture compiler 2022-05-13 20:08:42 +08:00
cups-config.in Use dpkg-architecture in cups-config to make it architecture-independant 2022-05-13 20:08:42 +08:00
install-sh Import Upstream version 2.3.1 2022-05-13 20:08:20 +08:00

README.md

README - CUPS v2.3.1 - 2019-12-13

INTRODUCTION

CUPS is a standards-based, open source printing system developed by Apple Inc. for macOS® and other UNIX®-like operating systems. CUPS uses the Internet Printing Protocol ("IPP") and provides System V and Berkeley command-line interfaces, a web interface, and a C API to manage printers and print jobs. It supports printing to both local (parallel, serial, USB) and networked printers, and printers can be shared from one computer to another, even over the Internet!

Internally, CUPS uses PostScript Printer Description ("PPD") files to describe printer capabilities and features and a wide variety of generic and device- specific programs to convert and print many types of files. Sample drivers are included with CUPS to support many Dymo, EPSON, HP, Intellitech, OKIDATA, and Zebra printers. Many more drivers are available online and (in some cases) on the driver CD-ROM that came with your printer.

CUPS is licensed under the Apache License Version 2.0. See the file "LICENSE" for more information.

READING THE DOCUMENTATION

Initial documentation to get you started is provided in the root directory of the CUPS sources:

  • CHANGES.md: A list of changes in the current major release of CUPS.
  • CONTRIBUTING.md: Guidelines for contributing to the CUPS project.
  • CREDITS.md: A list of past contributors to the CUPS project.
  • DEVELOPING.md: Guidelines for developing code for the CUPS project.
  • INSTALL.md: Instructions for building and installing CUPS.
  • LICENSE: The CUPS license agreement (Apache 2.0).
  • NOTICE: Copyright notices and exceptions to the CUPS license agreement.
  • README.md: This file.

Once you have installed the software you can access the documentation (and a bunch of other stuff) online at http://localhost:631/ and using the man command, for example man cups.

If you're having trouble getting that far, the documentation is located under the doc/help and man directories.

Please read the documentation before asking questions.

GETTING SUPPORT AND OTHER RESOURCES

If you have problems, read the documentation first! We also provide two mailing lists which are available at https://lists.cups.org/mailman/listinfo.

See the CUPS web site at https://www.cups.org/ for other resources.

SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER

CUPS includes a web-based administration tool that allows you to manage printers, classes, and jobs on your server. Open http://localhost:631/admin/ in your browser to access the printer administration tools:

Do not use the hostname for your machine - it will not work with the default CUPS configuration. To enable administration access on other addresses, check the Allow Remote Administration box and click on the Change Settings button.

You will be asked for the administration password (root or any other user in the "sys", "system", "root", "admin", or "lpadmin" group on your system) when performing any administrative function.

SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE

CUPS currently uses PPD (PostScript Printer Description) files that describe printer capabilities and driver programs needed for each printer. The everywhere PPD is used for nearly all modern networks printers sold since about 2009. For example, the following command creates a print queue for a printer at address "11.22.33.44":

lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere

CUPS also includes several sample PPD files you can use for "legacy" printers:

Driver PPD Name
Dymo Label Printers drv:///sample.drv/dymo.ppd
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
Generic PostScript Printer drv:///sample.drv/generic.ppd
HP DeskJet Series drv:///sample.drv/deskjet.ppd
HP LaserJet Series drv:///sample.drv/laserjet.ppd
OKIDATA 9-Pin Series drv:///sample.drv/okidata9.ppd
OKIDATA 24-Pin Series drv:///sample.drv/okidat24.ppd
Zebra CPCL Label Printer drv:///sample.drv/zebracpl.ppd
Zebra EPL1 Label Printer drv:///sample.drv/zebraep1.ppd
Zebra EPL2 Label Printer drv:///sample.drv/zebraep2.ppd
Zebra ZPL Label Printer drv:///sample.drv/zebra.ppd

You can run the lpinfo -m command to list all of the available drivers:

lpinfo -m

Run the lpinfo -v command to list the available printers:

lpinfo -v

Then use the correct URI to add the printer using the lpadmin command:

lpadmin -p printername -E -v device-uri -m ppd-name

Current network printers typically use ipp or ipps URIS:

lpadmin -p printername -E -v ipp://11.22.33.44/ipp/print -m everywhere
lpadmin -p printername -E -v ipps://11.22.33.44/ipp/print -m everywhere

Older network printers typically use socket or lpd URIs:

lpadmin -p printername -E -v socket://11.22.33.44 -m ppd-name
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name

The sample drivers provide basic printing capabilities, but generally do not exercise the full potential of the printers or CUPS. Other drivers provide greater printing capabilities.

PRINTING FILES

CUPS provides both the System V lp and Berkeley lpr commands for printing:

lp filename
lpr filename

Both the lp and lpr commands support printing options for the driver:

lp -o media=A4 -o resolution=600dpi filename
lpr -o media=A4 -o resolution=600dpi filename

CUPS recognizes many types of images files as well as PDF, PostScript, and text files, so you can print those files directly rather than through an application.

If you have an application that generates output specifically for your printer then you need to use the -oraw or -l options:

lp -o raw filename
lpr -l filename

This will prevent the filters from misinterpreting your print file.

Copyright © 2007-2019 by Apple Inc. Copyright © 1997-2007 by Easy Software Products.

CUPS is provided under the terms of the Apache License, Version 2.0 with exceptions for GPL2/LGPL2 software. A copy of this license can be found in the file LICENSE. Additional legal information is provided in the file NOTICE.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.