]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Redo CUPS home page, drop blog format and old FAQ.
authorMichael R Sweet <msweet@msweet.org>
Thu, 25 Feb 2021 02:56:03 +0000 (21:56 -0500)
committerMichael R Sweet <msweet@msweet.org>
Thu, 25 Feb 2021 02:56:03 +0000 (21:56 -0500)
14 files changed:
404.html
_layouts/default.html
_layouts/doc.html [new file with mode: 0644]
_layouts/post.html [deleted file]
_layouts/sub.html [deleted file]
_posts/2020-11-27-cups-2.3.3op1.md [deleted file]
_posts/2021-02-01-cups-2.3.3op2.md [deleted file]
_posts/2021-02-16-openprinting-cups.md [deleted file]
blog.html [deleted file]
css/cups.css
doc/relnotes.html
documentation.html [deleted file]
faq.html [deleted file]
index.html

index 88661787abefb84d29210a34abd9c173f79b8aee..b26085ce42073fc4257ffb9973614ea1c472e05a 100644 (file)
--- a/404.html
+++ b/404.html
@@ -1,21 +1,13 @@
 ---
-title: Page Has Moved - OpenPrinting CUPS
-layout: default
+title: Page Has Moved
+layout: doc
 permalink: /404.html
 ---
 
-<h1>Page Has Moved</h1>
-
 <p>The link you have followed is stale. The following are some common places people want to go:</p>
 
 <ul>
-
-       <li><a href="{{site.prefix}}/blog.html">Blog / Articles</a></li>
-
-       <li><a href="{{site.github.issues_url}}">Bugs / Roadmap</a></li>
-
-       <li><a href="{{site.prefix}}/documentation.html">Help / Documentation</a></li>
-
-       <li><a href="{{site.github.releases_url}}">Downloads / Software</a></li>
-
+  <li><a href="{{site.github.issues_url}}">Bugs / Roadmap</a></li>
+  <li><a href="{{site.prefix}}/documentation.html">Help / Documentation</a></li>
+  <li><a href="{{site.github.releases_url}}">Downloads / Software</a></li>
 </ul>
index 509e33b3b4113f770b48682bc0f73be084137d29..a510cf91a26309314c9ead7981780f381782c66a 100644 (file)
@@ -2,8 +2,9 @@
 <html lang="en">
   <head>
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">
     <link rel="stylesheet" type="text/css" href="{{ 'css/cups.css' | relative_url }}">
-    <link rel="shortcut icon" href="apple-touch-icon.png" type="image/png">
+    <link rel="shortcut icon" href="{{ 'apple-touch-icon.png' | relative_url }}" type="image/png">
     <meta charset="utf-8">
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=9">
     <meta name="keywords" content="printing,printer driver,internet printing protocol,ipp,ipp everywhere,ppd,linux,unix,mac,os x,postscript,pdf,text,image">
   </head>
   <body>
-    <nav class="navbar navbar-expand-sm navbar-dark cups-nav fixed-top" role="navigation">
+    <header class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" role="navigation">
       <a class="navbar-brand" href="{{ 'index.html' | relative_url }}"><img class="logo" alt="OpenPrinting CUPS"></a>
-      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#cups-collapsible" aria-controls="cups-collapsible" aria-expanded="false" aria-label="Toggle navigation">
+      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#cups-nav-collapse" aria-controls="cups-nav-collapse" aria-expanded="false" aria-label="Toggle navigation">
         <span class="navbar-toggler-icon"></span>
       </button>
-
-      <div class="collapse navbar-collapse" id="cups-collapsible">
-       <ul class="navbar-nav">
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-blog-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Blog</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-blog-dropdown">
-  {% for post in site.posts offset: 0 limit: 10 %}
-             <a class="dropdown-item cups-nav" href=".{{ post.url }}">{{post.title}}</a>
-  {% endfor %}
-             <div class="dropdown-divider cups-nav"></div>
-             <a class="dropdown-item cups-nav" href="{{ 'blog.html' | relative_url }}">All Articles</a>
-           </div>
-         </li>
-         <li class="nav-item">
-           <a class="nav-link" href="{{site.github.repository_url}}/releases">Software</a>
-         </li>
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-bugs-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Support</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-bugs-dropdown">
-             <a class="dropdown-item cups-nav" href="{{ 'documentation.html' | relative_url }}">Documentation</a>
-             <a class="dropdown-item cups-nav" href="{{ 'faq.html' | relative_url }}">Frequently Asked Questions</a>
-             <a class="dropdown-item cups-nav" href="{{site.github.issues_url}}">Reporting Bugs</a>
-           </div>
-         </li>
-       </ul>
+      <div class="collapse navbar-collapse" id="cups-nav-collapse">
+        <ul class="navbar-nav">
+          <li class="nav-item"><a class="nav-link" href="https://lists.linuxfoundation.org/mailman/listinfo/printing-architecture"><i class="bi bi-chat-left-text-fill"></i> Mailing List</a></li>
+          <li class="nav-item"><a class="nav-link" href="{{site.github.repository_url}}/issues/new"><i class="bi bi-bug-fill"></i> Report a Bug</a></li>
+          <li class="nav-item"><a class="nav-link" href="{{site.github.repository_url}}"><i class="bi bi-github"></i> Repository</a></li>
+        </ul>
+        <form action="https://duckduckgo.com/" method="get" class="form-inline ml-auto mr-0">
+          <input type="hidden" name="sites" value="openprinting.github.io/cups">
+          <input class="form-control mr-sm-2" style="width: 80%;" type="search" name="q" placeholder="Search Documentation" aria-label="Search">
+          <button class="btn btn-primary my-2 my-sm-0" type="submit"><i class="bi bi-search"></i></button>
+        </form>
       </div>
-    </nav>
+    </header>
     <!-- Page Content -->
-    <div class="container-fluid container-top">
-      {{ content }}
-    </div>
-    <div class="footer">
-      <p>Copyright &copy; 2020-{{ site.time | date: "%Y" }} OpenPrinting.</p>
-    </div>
+    {{ content }}
+    <footer class="navbar navbar-expand navbar-dark bg-dark fixed-bottom justify-content-center">
+      <span class="navbar-text">Copyright &copy; 2020-{{ site.time | date: "%Y" }} OpenPrinting.</span>
+      <ul class="navbar-nav ml-2">
+        <li class="nav-item"><a class="nav-link" href="{{'doc/license.html' | relative_url}}">License</a></li>
+        <li class="nav-item"><a class="nav-link" href="{{'doc/privacy.html' | relative_url}}">Privacy Policy</a></li>
+      </ul>
+    </footer>
     <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
   </body>
diff --git a/_layouts/doc.html b/_layouts/doc.html
new file mode 100644 (file)
index 0000000..71b6a7c
--- /dev/null
@@ -0,0 +1,59 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">
+    <link rel="stylesheet" type="text/css" href="{{ 'css/cups.css' | relative_url }}">
+    <link rel="shortcut icon" href="{{ 'apple-touch-icon.png' | relative_url }}" type="image/png">
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=9">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>{{page.title}}</title>
+    <meta name="keywords" content="printing,printer driver,internet printing protocol,ipp,ipp everywhere,ppd,linux,unix,mac,os x,postscript,pdf,text,image">
+  </head>
+  <body>
+    <header class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" role="navigation">
+      <a class="navbar-brand" href="{{ 'index.html' | relative_url }}"><img class="logo" alt="OpenPrinting CUPS"></a>
+      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#cups-nav-collapse" aria-controls="cups-nav-collapse" aria-expanded="false" aria-label="Toggle navigation">
+        <span class="navbar-toggler-icon"></span>
+      </button>
+      <div class="collapse navbar-collapse" id="cups-nav-collapse">
+        <ul class="navbar-nav">
+          <li class="nav-item"><a class="nav-link" href="https://lists.linuxfoundation.org/mailman/listinfo/printing-architecture"><i class="bi bi-chat-left-text-fill"></i> Mailing List</a></li>
+          <li class="nav-item"><a class="nav-link" href="{{site.github.repository_url}}/issues/new"><i class="bi bi-bug-fill"></i> Report a Bug</a></li>
+          <li class="nav-item"><a class="nav-link" href="{{site.github.repository_url}}"><i class="bi bi-github"></i> Repository</a></li>
+        </ul>
+        <form action="https://duckduckgo.com/" method="get" class="form-inline ml-auto mr-0">
+          <input type="hidden" name="sites" value="openprinting.github.io/cups">
+          <input class="form-control mr-sm-2" style="width: 80%;" type="search" name="q" placeholder="Search Documentation" aria-label="Search">
+          <button class="btn btn-primary my-2 my-sm-0" type="submit"><i class="bi bi-search"></i></button>
+        </form>
+      </div>
+    </header>
+    <!-- Page Content -->
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col">
+          <h1>{{page.title}}</h1>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col">
+          {{ content }}
+        </div>
+      </div>
+    </div>
+    <footer class="navbar navbar-expand navbar-dark bg-dark fixed-bottom justify-content-center">
+      <span class="navbar-text">Copyright &copy; 2020-{{ site.time | date: "%Y" }} OpenPrinting.</span>
+      <ul class="navbar-nav ml-2">
+        <li class="nav-item"><a class="nav-link" href="{{'doc/license.html' | relative_url}}">License</a></li>
+        <li class="nav-item"><a class="nav-link" href="{{'doc/privacy.html' | relative_url}}">Privacy Policy</a></li>
+      </ul>
+    </footer>
+    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
+  </body>
+</html>
diff --git a/_layouts/post.html b/_layouts/post.html
deleted file mode 100644 (file)
index c496e06..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
-    <link rel="stylesheet" type="text/css" href="{{ 'css/cups.css' | relative_url }}">
-    <link rel="shortcut icon" href="apple-touch-icon.png" type="image/png">
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=9">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>{{page.title}}</title>
-    <meta name="keywords" content="printing,printer driver,internet printing protocol,ipp,ipp everywhere,ppd,linux,unix,mac,os x,postscript,pdf,text,image">
-  </head>
-  <body>
-    <nav class="navbar navbar-expand-sm navbar-dark cups-nav fixed-top" role="navigation">
-      <a class="navbar-brand" href="{{ 'index.html' | relative_url }}"><img class="logo" alt="OpenPrinting CUPS"></a>
-      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#cups-collapsible" aria-controls="cups-collapsible" aria-expanded="false" aria-label="Toggle navigation">
-        <span class="navbar-toggler-icon"></span>
-      </button>
-
-      <div class="collapse navbar-collapse" id="cups-collapsible">
-       <ul class="navbar-nav">
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-blog-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Blog</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-blog-dropdown">
-  {% for post in site.posts offset: 0 limit: 10 %}
-             <a class="dropdown-item cups-nav" href=".{{ post.url }}">{{post.title}}</a>
-  {% endfor %}
-             <div class="dropdown-divider cups-nav"></div>
-             <a class="dropdown-item cups-nav" href="{{ 'blog.html' | relative_url }}">All Articles</a>
-           </div>
-         </li>
-         <li class="nav-item">
-           <a class="nav-link" href="{{site.github.repository_url}}/releases">Software</a>
-         </li>
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-bugs-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Support</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-bugs-dropdown">
-             <a class="dropdown-item cups-nav" href="{{ 'documentation.html' | relative_url }}">Documentation</a>
-             <a class="dropdown-item cups-nav" href="{{ 'faq.html' | relative_url }}">Frequently Asked Questions</a>
-             <a class="dropdown-item cups-nav" href="{{site.github.issues_url}}">Reporting Bugs</a>
-           </div>
-         </li>
-       </ul>
-      </div>
-    </nav>
-    <!-- Page Content -->
-    <div class="container-fluid container-top">
-     <div class="jumbotron">
-       <h1><small class="float-right muted">{{page.date | date_to_string}}</small>{{page.title}}</h1>
-     </div>
-      {{ content }}
-    </div>
-    <div class="footer">
-      <p>Copyright &copy; 2020-{{ site.time | date: "%Y" }} OpenPrinting.</p>
-    </div>
-    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
-  </body>
-</html>
diff --git a/_layouts/sub.html b/_layouts/sub.html
deleted file mode 100644 (file)
index 951dc33..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
-    <link rel="stylesheet" type="text/css" href="{{ 'css/cups.css' | relative_url }}">
-    <link rel="shortcut icon" href="apple-touch-icon.png" type="image/png">
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=9">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>{{page.title}}</title>
-    <meta name="keywords" content="printing,printer driver,internet printing protocol,ipp,ipp everywhere,ppd,linux,unix,mac,os x,postscript,pdf,text,image">
-  </head>
-  <body>
-    <nav class="navbar navbar-expand-sm navbar-dark cups-nav fixed-top" role="navigation">
-      <a class="navbar-brand" href="{{ 'index.html' | relative_url }}"><img class="logo" alt="OpenPrinting CUPS"></a>
-      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#cups-collapsible" aria-controls="cups-collapsible" aria-expanded="false" aria-label="Toggle navigation">
-        <span class="navbar-toggler-icon"></span>
-      </button>
-
-      <div class="collapse navbar-collapse" id="cups-collapsible">
-       <ul class="navbar-nav">
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-blog-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Blog</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-blog-dropdown">
-  {% for post in site.posts offset: 0 limit: 10 %}
-             <a class="dropdown-item cups-nav" href=".{{ post.url }}">{{post.title}}</a>
-  {% endfor %}
-             <div class="dropdown-divider cups-nav"></div>
-             <a class="dropdown-item cups-nav" href="{{ 'blog.html' | relative_url }}">All Articles</a>
-           </div>
-         </li>
-         <li class="nav-item">
-           <a class="nav-link" href="{{site.github.repository_url}}/releases">Software</a>
-         </li>
-         <li class="nav-item dropdown">
-           <a class="nav-link dropdown-toggle" href="#" id="cups-bugs-dropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Support</a>
-           <div class="dropdown-menu cups-nav" aria-labelledby="cups-bugs-dropdown">
-             <a class="dropdown-item cups-nav" href="{{ 'documentation.html' | relative_url }}">Documentation</a>
-             <a class="dropdown-item cups-nav" href="{{ 'faq.html' | relative_url }}">Frequently Asked Questions</a>
-             <a class="dropdown-item cups-nav" href="{{site.github.issues_url}}">Reporting Bugs</a>
-           </div>
-         </li>
-       </ul>
-      </div>
-    </nav>
-    <!-- Page Content -->
-    <div class="container-fluid container-top">
-      <div class="jumbotron">
-        <h1>{{page.title}}</h1>
-      </div>
-      {{ content }}
-    </div>
-    <div class="footer">
-      <p>Copyright &copy; 2020-{{ site.time | date: "%Y" }} OpenPrinting.</p>
-    </div>
-    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
-  </body>
-</html>
diff --git a/_posts/2020-11-27-cups-2.3.3op1.md b/_posts/2020-11-27-cups-2.3.3op1.md
deleted file mode 100644 (file)
index 544ff0b..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: CUPS 2.3.3op1
-layout: post
-permalink: /blog/:year-:month-:day-:title.html
----
-
-CUPS 2.3.3op1 is the first OpenPrinting CUPS release which fixes many bugs,
-incorporates common Linux distribution changes, and provides several IPP
-Everywhere improvements. Changes include:
-
-- The automated test suite can now be activated using `make test` for
-  consistency with other projects and CI environments - the old `make check`
-  continues to work as well, and the previous test server behavior can be
-  accessed by running `make testserver`.
-- ippeveprinter now supports multiple icons and strings files.
-- ippeveprinter now uses the system's FQDN with Avahi.
-- ippeveprinter now supports Get-Printer-Attributes on "/".
-- ippeveprinter now uses a deterministic "printer-uuid" value.
-- ippeveprinter now uses system sounds on macOS for Identify-Printer.
-- Updated ippfind to look for files in "~/Desktop" on Windows.
-- Updated ippfind to honor `SKIP-XXX` directives with `PAUSE`.
-- Updated IPP Everywhere support to work around printers that only advertise
-  color raster support but really also support grayscale (Issue #1)
-- ipptool now supports DNS-SD URIs like `ipps://My%20Printer._ipps._tcp.local`
-  (Issue #5)
-- The scheduler now allows root backends to have world read permissions but not
-  world execute permissions (Issue #21)
-- Failures to bind IPv6 listener sockets no longer cause errors if IPv6 is
-  disabled on the host (Issue #25)
-- The SNMP backend now supports the HP and Ricoh vendor MIBs (Issue #28)
-- The scheduler no longer includes a timestamp in files it writes (Issue #29)
-- The systemd service names are now "cups.service" and "cups-lpd.service"
-  (Issue #30, Issue #31)
-- The scheduler no longer adds the local hostname to the ServerAlias list
-  (Issue #32)
-- Added `LogFileGroup` directive in "cups-files.conf" to control the group
-  owner of log files (Issue #34)
-- Added `--with-max-log-size` configure option (Issue #35)
-- Added `--enable-sync-on-close` configure option (Issue #37)
-- Added `--with-error-policy` configure option (Issue #38)
-- IPP Everywhere PPDs could have an "unknown" default InputSlot (Issue #44)
-- The `httpAddrListen` function now uses a listen backlog of 128.
-- Added USB quirks (Apple issue #5789, #5823, #5831)
-- Fixed IPP Everywhere v1.1 conformance issues in ippeveprinter.
-- Fixed DNS-SD name collision support in ippeveprinter.
-- Fixed compiler and code analyzer warnings.
-- Fixed TLS support on Windows.
-- Fixed ippfind sub-type searches with Avahi.
-- Fixed the default hostname used by ippeveprinter on macOS.
-- Fixed resolution of local IPP-USB printers with Avahi.
-- Fixed coverity issues (Issue #2)
-- Fixed `httpAddrConnect` issues (Issue #3)
-- Fixed web interface device URI issue (Issue #4)
-- Fixed lp/lpr "printer/class not found" error reporting (Issue #6)
-- Fixed xinetd support for LPD clients (Issue #7)
-- Fixed libtool build issue (Issue #11)
-- Fixed a memory leak in the scheduler (Issue #12)
-- Fixed a potential integer overflow in the PPD hashing code (Issue #13)
-- Fixed output-bin and print-quality handling issues (Issue #18)
-- Fixed PPD options getting mapped to odd IPP values like "tray---4" (Issue #23)
-- Fixed remote access to the cupsd.conf and log files (Issue #24)
-- Fixed the automated test suite when running in certain build/CI environments
-  (Issue #25)
-- Fixed a logging regression caused by a previous change for Apple issue #5604
-  (Issue #25)
-- Fixed fax phone number handling with GNOME (Issue #40)
-- Fixed potential rounding error in rastertopwg filter (Issue #41)
-- Fixed the "uri-security-supported" value from the scheduler (Issue #42)
-- Fixed IPP backend crash bug with "printer-alert" values (Issue #43)
-- Removed old Solaris inetconv(1m) reference in cups-lpd man page (Issue #46)
-- Fixed default options that incorrectly use the "custom" prefix (Issue #48)
-- Fixed a memory leak when resolving DNS-SD URIs (Issue #49)
-- Fixed systemd status reporting by adopting the notify interface (Issue #51)
-- Fixed crash in rastertopwg (Apple issue #5773)
-- Fixed cupsManualCopies values in IPP Everywhere PPDs (Apple issue #5807)
-
-Enjoy!
diff --git a/_posts/2021-02-01-cups-2.3.3op2.md b/_posts/2021-02-01-cups-2.3.3op2.md
deleted file mode 100644 (file)
index 1b9e191..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: CUPS 2.3.3op2
-layout: post
-permalink: /blog/:year-:month-:day-:title.html
----
-
-CUPS 2.3.3op2 is the latest OpenPrinting CUPS security and bug fix
-release. Changes include:
-
-- Security: Fixed a buffer (read) overflow in the `ippReadIO` function
-  (CVE-2020-10001)
-- Clarified the documentation for the "Listen" directive (Issue #53)
-- Fixed duplicate ColorModel entries for AirPrint printers (Issue 59)
-- Fixed directory/permission defaults for Debian kfreebsd-based systems
-  (Issue #60, Issue #61)
-- Fixed crash bug in `ppdOpen` (Issue #64, Issue #78)
-- Fixed regression in `snprintf` emulation function (Issue #67)
-- The scheduler's systemd service file now waits for the nslcd service to start
-  (Issue #69)
-- The libusb-based USB backend now uses a simpler read timer implementation to
-  avoid a regression in a previous change (Issue #72)
-- The PPD caching code now only tracks the `APPrinterIconPath` value on macOS
-  (Issue #73)
-- Fixed segfault in help.cgi when searching in man pages (Issue #81)
-- Root certificates were incorrectly stored in "~/.cups/ssl".
-
-Enjoy!
diff --git a/_posts/2021-02-16-openprinting-cups.md b/_posts/2021-02-16-openprinting-cups.md
deleted file mode 100644 (file)
index 59bef36..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: OpenPrinting CUPS Web Site
-layout: post
-permalink: /blog/:year-:month-:day-:title.html
----
-
-Welcome to the new home of the OpenPrinting CUPS printing system.  All new
-development of CUPS is being done by the OpenPrinting group of the Linux
-Foundation.
diff --git a/blog.html b/blog.html
deleted file mode 100644 (file)
index 27d571d..0000000
--- a/blog.html
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: All Articles - OpenPrinting CUPS
-layout: default
----
-
-<div class="jumbotron">
-  <h1>All Articles</h1>
-</div>
-
-{% for post in site.posts offset: 0 %}
-<h2><small class="float-right muted">{{ post.date | date_to_string }}</small>{{post.title}}</h2>
-{{ post.excerpt }}
-{% if post.excerpt != post.content %}
-<p><a class="btn btn-default btn-xs" href=".{{ post.url }}">Read</a></p>
-{% endif %}
-{% endfor %}
index 917ca254da8daed64c9f0f3cb62711978d240940..aeb0162da2f20addb8039fc1282ade63b605088f 100644 (file)
@@ -3,12 +3,29 @@
  */
 
 /* Basic site appearance */
-BODY {
-  font-size: 16px;
-  line-height: 20px;
+body {
+  font-size: 20px;
+  line-height: 25px;
   margin: 0px;
 }
 
+pre {
+  background: rgba(127,127,127,0.25);
+  border-left: dotted 2px rgb(127,127,127);
+  padding: 0.5em 2em;
+}
+
+/* Colors */
+.btn-auto {
+  background: rgba(159,159,159,0.5);
+  color: black;
+}
+.btn-auto:hover {
+  background: rgba(159,159,159,0.6);
+  color: black;
+}
+
+/* Logos */
 img.logo {
   content: url(../images/cups.png);
   height: 32px;
@@ -21,377 +38,37 @@ img.logo-full {
   width: 424px;
 }
 
-BLOCKQUOTE {
-  border-left: 2px solid #111;
-  padding: 10px;
-}
-
-BLOCKQUOTE P {
-  margin: 0;
-}
-
-A, A:hover {
-  color: black;
-  text-decoration: none;
-}
-
-A:link, A:link:visited, A:visited, A:link:hover, A:visited:hover {
-  color: #0062cc;
-  text-decoration: underline;
-}
-
-NAV A:link, NAV A:link:visited, NAV A:visited {
-  background: inherit;
-  color: inherit;
-  text-decoration: none;
-}
-
-NAV.cups-nav {
-  background: #111;
-  box-shadow: 0px 0px 3px rgba(0,0,0,0.8);
-}
-
-NAV.cups-nav a.navbar-brand {
-  background: none;
-}
-
-NAV a.navbar-brand:link, NAV a.navbar-brand:visited {
-  color: #ccc;
-}
-
-NAV a.navbar-brand:hover, NAV a.navbar-brand:active {
-  color: #fff;
-}
-
-.dropdown-divider {
-  border-top-color: #888;
-}
-
-.cups-nav {
-  background: #222;
-  color: #ccc;
-}
-
-A.btn:link, A.btn:hover, A.btn:visited, A.btn:focus,
-A.btn:active, A.btn.active, A.btn.disabled,
-A.btn[disabled] {
-  border-radius: 8px;
-  color: #000000;
-  margin-right: .5em;
-  text-decoration: none;
-}
-
-A.btn-bright:link, A.btn-bright:visited, A.btn-bright.active,
-A.btn-bright.disabled, A.btn-bright[disabled] {
-  background: #fff;
-  color: #000;
-}
-
-A.btn-bright:hover, A.btn-bright:focus, A.btn-bright:active {
-  background: #ccc;
-  color: #000;
-}
-
-A.btn-default:link, A.btn-default:visited, A.btn-default.active,
-A.btn-default.disabled, A.btn-default[disabled] {
-  background: #333;
-  color: #fff;
-}
-
-A.btn-default:hover, A.btn-default:focus, A.btn-default:active {
-  background: #666;
-  color: #fff;
-}
-
-A.btn-primary:link, A.btn-primary:hover, A.btn-primary:visited, A.btn-primary:focus, A.btn-primary:active, A.btn-primary.active, A.btn-primary.disabled, A.btn-primary[disabled] {
-  color: #ffffff;
-  text-decoration: none;
-}
-
-/*UL.nav {
-  font-size: 14px;
-}*/
-
-SUP, SUB {
-  font-size: 62%;
-}
-
-FORM {
-  display: inline;
-}
-
-INPUT[TYPE="TEXT"], INPUT[TYPE="EMAIL"], INPUT[TYPE="NUMBER"], INPUT[TYPE="PASSWORD"], INPUT[TYPE="SEARCH"], TEXTAREA {
-/*  font-family: Consolas, "Courier New", monospace;*/
-}
-
-INPUT[TYPE="NUMBER"] {
-  text-align: right;
-}
-
-INPUT, SELECT, TEXTAREA {
-  vertical-align: middle;
-  width: auto;
-}
-
-FORM.navbar-search, FORM.pull-right {
-  display: inline-block;
-}
-
-FORM.navbar-search INPUT {
-  margin-top: 12px;
-}
-
-INPUT[type="checkbox"] {
-  height: 16px !important;
-}
-
-.form-horizontal .control-label {
-  padding-right: 0px;
-  padding-top: 0px;
-}
-
-.control-label:after {
-  content: ":";
-}
-
-DIV.jumbotron {
-  background: #222;
-  border-radius: 0;
-  color: white;
-  margin: -3px -20px 20px;
-  padding: 20px 30px 20px;
-}
-
-A.jumbolink:link, A.jumbolink:hover, A.jumbolink:focus, A.jumbolink:visited {
-  color: #3C92FF;
-}
-
-DIV.jumbotron H1 {
-  font-size: 32px;
-  line-height: 40px;
-  margin: 0px;
-  padding: 0px;
-}
-DIV.jumbotron P {
-  font-size: 16px;
-  line-height: 20px;
-}
-DIV.jumbotron P.cups-buttons {
-  line-height: 3;
-}
-
-H2 {
- margin-top: 1em;
-}
-
-DIV.footer {
-  background-color: #111;
-  bottom: 0px;
-  box-shadow: 0px 0px 3px rgba(0,0,0,0.8);
-  color: #ccc;
-  font-size: 11px;
-  left: 0px;
-  line-height: 14px;
-  padding: 10px 10px 0px; /* top right+left bottom */
-  position: fixed;
-  right: 0px;
-}
-
-DIV.footer A, DIV.footer A:hover, DIV.footer A:focus, DIV.footer A:visited {
-  color: #3C92FF;
-}
-
-P {
-  margin-bottom: 20px;
-}
-
-PRE {
-  border: 0px;
-  border-left: 5px solid #ddd;
-  border-radius: 0px;
-  padding-left: 10px;
-}
-
-DIV.footer P {
-  margin-bottom: 10px;
-}
-
-DIV.container-top {
-  padding: 55px 20px; /* top+bottom right+left */
-}
-
-.form-control {
-  display: inline-block;
-  height: auto;
-  width: auto;
-}
-
-TABLE.table {
-  border-bottom: solid 1px #dddddd;
-}
-
-.center {
-  margin-left: auto;
-  margin-right: auto;
-  text-align: center;
-}
-
-.float-right {
-  float: right;
-}
-
-SPAN.message {
-  font-style: italic;
-  font-size: smaller;
-}
-
-.modal .modal-dialog
-{
-  width: 90%;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.modal-open .modal, a:focus
-{
-  outline: none !important;
-}
-
-<!-- These styles fix CSE and Bootstrap 3 conflict -->
-.reset-box-sizing, .reset-box-sizing *, .reset-box-sizing *:before, .reset-box-sizing *:after,  .gsc-inline-block
-{
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus, .gsc-search-button
-{
-  box-sizing: content-box;
-  line-height: normal;
-}
-
-DL.comment DT, DL.comment DT A {
-  color: #999999;
-  font-weight: normal;
-}
-
-DD.small, DD.small > P, DD.small > PRE, DD.small > H2, DD.small > H2 > A,
-DD.small > H3, DD.small > H3 > A, DD.small > H4, DD.small > H4 > A,
-DD.small > UL {
-  font-size: 12px;
-  line-height: 14px;
-  margin-bottom: 0px;
-  margin-top: 0px;
-}
-
-/* API documentation stuff... */
-DIV.table TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table CAPTION {
-  caption-side: top;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table TABLE TD {
-  border: solid thin #cccccc;
-  padding-top: 5pt;
-}
-
-DIV.table TABLE TH {
-  background: #cccccc;
-  border: none;
-  border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.figure CAPTION {
-  caption-side: bottom;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-span.info {
-  background: #333333;
-  border: thin solid #333333;
-  border-radius: 10px;
-  color: white;
-  font-size: 80%;
-  font-style: italic;
-  font-weight: bold;
-  white-space: nowrap;
+img.logo-full-32 {
+  content: url(../images/cups-full.png);
+  height: 32px;
+  width: 106px;
 }
 
-h2 span.info, h3 span.info, h4 span.info {
-  border-radius: 20px;
-  float: right;
-  font-size: 100%;
-  padding: 0px 10px;
+img.logo-mascot {
+  content: url(../images/cups-mascot.svg);
+  width: 100%;
 }
 
-div.body h1 {
-  margin: 0;
-}
-div.body h2 {
-  margin-top: 1.5em;
-}
-div.body h3, div.body h4, div.body h5 {
-  margin-bottom: 0.5em;
-  margin-top: 1.5em;
-}
-.class, .enumeration, .function, .struct, .typedef, .union {
-  border-bottom: solid thin #999999;
-  margin-bottom: 0;
-  margin-top: 2em;
-}
-.description {
-  margin-top: 0.5em;
-}
-code, p.code, pre, ul.code li {
-/*  font-family: monaco, courier, monospace;*/
-  font-size: 90%;
+/* Layout */
+.container-fluid:first-of-type {
+  padding-top: 52px;
 }
-ul.code, ul.contents, ul.subcontents {
-  list-style-type: none;
-  margin: 0;
-  padding-left: 0;
+.container-fluid:last-of-type {
+  padding-bottom: 92px;
 }
-ul.code li {
-  margin: 0;
+.container-fluid:nth-of-type(odd) {
+  background: rgba(0,123,255,0.1);
 }
-ul.contents > li {
-  margin-top: 1em;
+.container-fluid:first-of-type .col {
+  font-size: 125%;
+  line-height: 1.4;
+  padding: 30px 50px;
 }
-ul.contents li ul.code, ul.contents li ul.subcontents {
-  padding-left: 2em;
+.col {
+  padding: 5px 50px;
 }
-div.body dl {
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dt {
-  font-style: italic;
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dd {
-  margin-bottom: 0.5em;
+.col-section {
+  padding: 30px 50px;
 }
 
 /* Dark mode overrides */
@@ -400,77 +77,30 @@ div.body dd {
     background: black;
     color: #eee;
   }
-  A:link, A:link:visited, A:visited, A:link:hover, A:visited:hover {
-    color: #327DCC;
-  }
-  PRE {
-    background: #333;
-    border-left-color: #666;
-    color: #ccc;
-  }
-  DIV.table TABLE TH {
-    background: #333;
-  }
-  DIV.footer {
-    background: #222;
-  }
-}
-
-/* iPhone/iPod touch overrides */
-@media only screen and (min-device-width: 320px) and (max-device-width: 480px),
-       only screen and (min-device-width: 320px) and (max-device-width: 568px) {
-  DIV.page-header {
-    margin: 0px;
-    padding: 0px;
-  }
-  DIV.page-header H1 {
-    font-size: 30px;
-    line-height: 36px;
-    margin: 0px;
-    padding: 0px;
+  pre {
+    color: #eee;
   }
-  DIV.jumbotron {
-    margin: 20px 0px 10px; /* top right+left bottom */
-    padding: 10px 20px;
+  .container-fluid:nth-of-type(odd) {
+    background: rgba(0,123,255,0.3);
   }
-  H2 {
-    font-size: 25px;
-    line-height: 25px;
+  .btn-auto {
+    background: rgba(255,255,255,0.6);
+    border: solid 1px #cccccc;
+    color: black;
   }
-  H3 {
-    font-size: 20px;
-    line-height: 20px;
+  .btn-auto:hover {
+    background: rgba(255,255,255,0.5);
+    border: solid 1px #cccccc;
+    color: black;
   }
-  DIV.footer {
-    height: auto;
-    padding: 10px 10px 5px; /* top right+left bottom */
-    position: relative;
+  img.logo-mascot {
+    content: url(../images/cups-mascot-dark.svg);
   }
 }
 
-/* iPad overrides */
-@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
-}
 
 /* Print overrides */
 @media print {
-/*  DIV.navbar, DIV.container-top UL.breadcrumb {
-    display: none;
-  }*/
-
-  DIV.container-top {
-    padding: 0px;
-  }
-
-  DIV.footer {
-    font-style: italic;
-    position: relative;
-  }
-
-  .hidden-print {
-    display: none;
-  }
-
   /* Bootstrap adds URLs after every link, stop doing that... */
   a[href]:after {
     content: none !important;
index 527458a0ab7dc974cbdde40e2fbda87e1c1b2238..1acc788f6076691d4d6e2bd060ea02aa4d7f69de 100644 (file)
 ---
 title: Release Notes
-layout: sub
+layout: default
 ---
-
-<h2 class="title"><a name="020303op2">CUPS 2.3.3op2</a> <em>(February 1, 2021)</em></h2>
-
-<ul>
-       <li>Security: Fixed a buffer (read) overflow in the `ippReadIO` function (CVE-2020-10001)</li>
-       <li>Clarified the documentation for the "Listen" directive (Issue #53)</li>
-       <li>Fixed duplicate ColorModel entries for AirPrint printers (Issue 59)</li>
-       <li>Fixed directory/permission defaults for Debian kfreebsd-based systems (Issue #60, Issue #61)</li>
-       <li>Fixed crash bug in `ppdOpen` (Issue #64, Issue #78)</li>
-       <li>Fixed regression in `snprintf` emulation function (Issue #67)</li>
-       <li>The scheduler's systemd service file now waits for the nslcd service to start (Issue #69)</li>
-       <li>The libusb-based USB backend now uses a simpler read timer implementation to avoid a regression in a previous change (Issue #72)</li>
-       <li>The PPD caching code now only tracks the `APPrinterIconPath` value on macOS (Issue #73)</li>
-       <li>Fixed segfault in help.cgi when searching in man pages (Issue #81)</li>
-       <li>Root certificates were incorrectly stored in "~/.cups/ssl".</li>
-</ul>
-
-
-<h2 class="title"><a name="020303op1">CUPS 2.3.3op1</a> <em>(November 27, 2020)</em></h2>
-
-<ul>
-       <li>The automated test suite can now be activated using `make test` for consistency with other projects and CI environments - the old `make check` continues to work as well, and the previous test server behavior can be accessed by running `make testserver`.</li>
-       <li>ippeveprinter now supports multiple icons and strings files.</li>
-       <li>ippeveprinter now uses the system's FQDN with Avahi.</li>
-       <li>ippeveprinter now supports Get-Printer-Attributes on "/".</li>
-       <li>ippeveprinter now uses a deterministic "printer-uuid" value.</li>
-       <li>ippeveprinter now uses system sounds on macOS for Identify-Printer.</li>
-       <li>Updated ippfind to look for files in "~/Desktop" on Windows.</li>
-       <li>Updated ippfind to honor `SKIP-XXX` directives with `PAUSE`.</li>
-       <li>Updated IPP Everywhere support to work around printers that only advertise color raster support but really also support grayscale (Issue #1)</li>
-       <li>ipptool now supports DNS-SD URIs like `ipps://My%20Printer._ipps._tcp.local` (Issue #5)</li>
-       <li>The scheduler now allows root backends to have world read permissions but not world execute permissions (Issue #21)</li>
-       <li>Failures to bind IPv6 listener sockets no longer cause errors if IPv6 is disabled on the host (Issue #25)</li>
-       <li>The SNMP backend now supports the HP and Ricoh vendor MIBs (Issue #28)</li>
-       <li>The scheduler no longer includes a timestamp in files it writes (Issue #29)</li>
-       <li>The systemd service names are now "cups.service" and "cups-lpd.service" (Issue #30, Issue #31)</li>
-       <li>The scheduler no longer adds the local hostname to the ServerAlias list (Issue #32)</li>
-       <li>Added `LogFileGroup` directive in "cups-files.conf" to control the group owner of log files (Issue #34)</li>
-       <li>Added `--with-max-log-size` configure option (Issue #35)</li>
-       <li>Added `--enable-sync-on-close` configure option (Issue #37)</li>
-       <li>Added `--with-error-policy` configure option (Issue #38)</li>
-       <li>IPP Everywhere PPDs could have an "unknown" default InputSlot (Issue #44)</li>
-       <li>The `httpAddrListen` function now uses a listen backlog of 128.</li>
-       <li>Added USB quirks (Apple issue #5789, #5823, #5831)</li>
-       <li>Fixed IPP Everywhere v1.1 conformance issues in ippeveprinter.</li>
-       <li>Fixed DNS-SD name collision support in ippeveprinter.</li>
-       <li>Fixed compiler and code analyzer warnings.</li>
-       <li>Fixed TLS support on Windows.</li>
-       <li>Fixed ippfind sub-type searches with Avahi.</li>
-       <li>Fixed the default hostname used by ippeveprinter on macOS.</li>
-       <li>Fixed resolution of local IPP-USB printers with Avahi.</li>
-       <li>Fixed coverity issues (Issue #2)</li>
-       <li>Fixed `httpAddrConnect` issues (Issue #3)</li>
-       <li>Fixed web interface device URI issue (Issue #4)</li>
-       <li>Fixed lp/lpr "printer/class not found" error reporting (Issue #6)</li>
-       <li>Fixed xinetd support for LPD clients (Issue #7)</li>
-       <li>Fixed libtool build issue (Issue #11)</li>
-       <li>Fixed a memory leak in the scheduler (Issue #12)</li>
-       <li>Fixed a potential integer overflow in the PPD hashing code (Issue #13)</li>
-       <li>Fixed output-bin and print-quality handling issues (Issue #18)</li>
-       <li>Fixed PPD options getting mapped to odd IPP values like "tray---4" (Issue #23)</li>
-       <li>Fixed remote access to the cupsd.conf and log files (Issue #24)</li>
-       <li>Fixed the automated test suite when running in certain build/CI environments (Issue #25)</li>
-       <li>Fixed a logging regression caused by a previous change for Apple issue #5604 (Issue #25)</li>
-       <li>Fixed fax phone number handling with GNOME (Issue #40)</li>
-       <li>Fixed potential rounding error in rastertopwg filter (Issue #41)</li>
-       <li>Fixed the "uri-security-supported" value from the scheduler (Issue #42)</li>
-       <li>Fixed IPP backend crash bug with "printer-alert" values (Issue #43)</li>
-       <li>Removed old Solaris inetconv(1m) reference in cups-lpd man page (Issue #46)</li>
-       <li>Fixed default options that incorrectly use the "custom" prefix (Issue #48)</li>
-       <li>Fixed a memory leak when resolving DNS-SD URIs (Issue #49)</li>
-       <li>Fixed systemd status reporting by adopting the notify interface (Issue #51)</li>
-       <li>Fixed crash in rastertopwg (Apple issue #5773)</li>
-       <li>Fixed cupsManualCopies values in IPP Everywhere PPDs (Apple issue #5807)</li>
-</ul>
-
-
-<h2 class="title"><a name="020303">CUPS 2.3.3</a> <em>(April 24, 2020)</em></h2>
-
-<ul>
-       <li>CVE-2020-3898: The `ppdOpen` function did not handle invalid UI constraint.  `ppdcSource::get_resolution` function did not handle invalid resolution strings.</li>
-       <li>CVE-2019-8842: The `ippReadIO` function may under-read an extension field.</li>
-       <li>Fixed WARNING_OPTIONS support for GCC 9.x.</li>
-</ul>
-
-
-<h2 class="title"><a name="020302">CUPS 2.3.2</a></h2>
-
-<ul>
-       <li>Localization updates.</li>
-</ul>
-
-
-<h2 class="title"><a name="020301">CUPS 2.3.1</a> <em>(December 13, 2019)</em></h2>
-
-<ul>
-       <li>Documentation updates (Issue #5661, #5674, #5682)</li>
-       <li>CVE-2019-2228: The `ippSetValuetag` function did not validate the default language value.</li>
-       <li>Fixed a crash bug in the web interface (Issue #5621)</li>
-       <li>The PPD cache code now looks up page sizes using their dimensions (Issue #5633)</li>
-       <li>PPD files containing "custom" option keywords did not work (Issue #5639)</li>
-       <li>Added a workaround for the scheduler's systemd support (Issue #5640)</li>
-       <li>On Windows, TLS certificates generated on February 29 would likely fail (Issue #5643)</li>
-       <li>Added a DigestOptions directive for the `client.conf` file to control whether MD5-based Digest authentication is allowed (Issue #5647)</li>
-       <li>Fixed a bug in the handling of printer resource files (Issue #5652)</li>
-       <li>The libusb-based USB backend now reports an error when the distribution permissions are wrong (Issue #5658)</li>
-       <li>Added paint can labels to Dymo driver (Issue #5662)</li>
-       <li>The `ippeveprinter` program now supports authentication (Issue #5665)</li>
-       <li>The `ippeveprinter` program now advertises DNS-SD services on the correct interfaces, and provides a way to turn them off (Issue #5666)</li>
-       <li>The `--with-dbusdir` option was ignored by the configure script (Issue #5671)</li>
-       <li>Sandboxed applications were not able to get the default printer (Issue #5676)</li>
-       <li>Log file access controls were not preserved by `cupsctl` (Issue #5677)</li>
-       <li>Default printers set with `lpoptions` did not work in all cases (Issue #5681, Issue #5683, Issue #5684)</li>
-       <li>Fixed an error in the jobs web interface template (Issue #5694)</li>
-       <li>Fixed an off-by-one error in `ippEnumString` (Issue #5695)</li>
-       <li>Fixed some new compiler warnings (Issue #5700)</li>
-       <li>Fixed a few issues with the Apple Raster support (rdar://55301114)</li>
-       <li>The IPP backend did not detect all cases where a job should be retried using a raster format (rdar://56021091)</li>
-       <li>Fixed spelling of "fold-accordion".</li>
-       <li>Fixed the default common name for TLS certificates used by `ippeveprinter`.</li>
-       <li>Fixed the option names used for IPP Everywhere finishing options.</li>
-       <li>Added support for the second roll of the DYMO Twin/DUO label printers.</li>
-</ul>
-
-
-<h2 class="title"><a name="020300">CUPS 2.3.0</a> <em>(August 23, 2019)</em></h2>
-
-<ul>
-       <li>CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)</li>
-       <li>Added a GPL2/LGPL2 exception to the new CUPS license terms.</li>
-       <li>Documentation updates (Issue #5604)</li>
-       <li>Localization updates (Issue #5637)</li>
-       <li>Fixed a bug in the scheduler job cleanup code (Issue #5588)</li>
-       <li>Fixed builds when there is no TLS library (Issue #5590)</li>
-       <li>Eliminated some new GCC compiler warnings (Issue #5591)</li>
-       <li>Removed dead code from the scheduler (Issue #5593)</li>
-       <li>&quot;make&quot; failed with GZIP options (Issue #5595)</li>
-       <li>Fixed potential excess logging from the scheduler when removing job files (Issue #5597)</li>
-       <li>Fixed a NULL pointer dereference bug in `httpGetSubField2` (Issue #5598)</li>
-       <li>Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622)</li>
-       <li>The scheduler no longer provides a default value for the description (Issue #5603)</li>
-       <li>The scheduler now logs jobs held for authentication using the error level so it is clear what happened (Issue #5604)</li>
-       <li>The `lpadmin` command did not always update the PPD file for changes to the `cupsIPPSupplies` and `cupsSNMPSupplies` keywords (Issue #5610)</li>
-       <li>The scheduler now uses both the group's membership list as well as the various OS-specific membership functions to determine whether a user belongs to a named group (Issue #5613)</li>
-       <li>Added USB quirks rule for HP LaserJet 1015 (Issue #5617)</li>
-       <li>Fixed some PPD parser issues (Issue #5623, Issue #5624)</li>
-       <li>The IPP parser no longer allows invalid member attributes in collections (Issue #5630)</li>
-       <li>The configure script now treats the &quot;wheel&quot; group as a potential system group (Issue #5638)</li>
-       <li>Fixed a USB printing issue on macOS (rdar://31433931)</li>
-       <li>Fixed IPP buffer overflow (rdar://50035411)</li>
-       <li>Fixed memory disclosure issue in the scheduler (rdar://51373853)</li>
-       <li>Fixed DoS issues in the scheduler (rdar://51373929)</li>
-       <li>Fixed an issue with unsupported &quot;sides&quot; values in the IPP backend (rdar://51775322)</li>
-       <li>The scheduler would restart continuously when idle and printers were not shared (rdar://52561199)</li>
-       <li>Fixed an issue with `EXPECT !name WITH-VALUE ...` tests.</li>
-       <li>Fixed a command ordering issue in the Zebra ZPL driver.</li>
-       <li>Fixed a memory leak in `ppdOpen`.</li>
-</ul>
-
-
-<h2 class="title"><a name="020212">CUPS 2.2.12</a> <em>(August 15, 2019)</em></h2>
-
-<ul>
-       <li>CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)</li>
-       <li>The `cupsctl` command now prevents setting &quot;cups-files.conf&quot; directives (Issue #5530)</li>
-       <li>Updated the systemd service file for cupsd (Issue #5551)</li>
-       <li>The `cupsCheckDestSupported` function did not check octetString values correctly (Issue #5557)</li>
-       <li>The scheduler did not encode octetString values like &quot;job-password&quot; correctly for the print filters (Issue #5558)</li>
-       <li>Restored minimal support for the `Emulators` keyword in PPD files to allow old Samsung printer drivers to continue to work (Issue #5562)</li>
-       <li>Timed out job submission now yields an error (Issue #5570)</li>
-       <li>The footer in the web interface covered some content on small displays (Issue #5574)</li>
-       <li>The libusb-based USB backend now enforces read limits, improving print speed in many cases (Issue #5583)</li>
-       <li>Fixed some compatibility issues with old releases of CUPS (Issue #5587)</li>
-       <li>Fixed a bug in the scheduler job cleanup code (Issue #5588)</li>
-       <li>&quot;make&quot; failed with GZIP options (Issue #5595)</li>
-       <li>Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622)</li>
-       <li>The scheduler no longer provides a default value for the description (Issue #5603)</li>
-       <li>The `lpadmin` command did not always update the PPD file for changes to the `cupsIPPSupplies` and `cupsSNMPSupplies` keywords (Issue #5610)</li>
-       <li>The scheduler now uses both the group's membership list as well as the various OS-specific membership functions to determine whether a user belongs to a named group (Issue #5613)</li>
-       <li>Added USB quirks rule for HP LaserJet 1015 (Issue #5617)</li>
-       <li>Fixed some PPD parser issues (Issue #5623, Issue #5624)</li>
-       <li>The IPP parser no longer allows invalid member attributes in collections (Issue #5630)</li>
-       <li>Fixed IPP buffer overflow (rdar://50035411)</li>
-       <li>Fixed memory disclosure issue in the scheduler (rdar://51373853)</li>
-       <li>Fixed DoS issues in the scheduler (rdar://51373929)</li>
-       <li>The scheduler would restart continuously when idle and printers were not shared (rdar://52561199)</li>
-       <li>Fixed a command ordering issue in the Zebra ZPL driver.</li>
-       <li>Fixed a memory leak in `ppdOpen`.</li>
-</ul>
-
-
-
-<h2 class="title"><a name="0203rc1">CUPS 2.3rc1</a> <em>(May 21, 2019)</em></h2>
-
-<ul>
-       <li>The <code>cups-config</code> script no longer adds extra libraries when linking against shared libraries (Issue #5261)</li>
-       <li>The supplied example print documents have been optimized for size (Issue #5529)</li>
-       <li>The <code>cupsctl</code> command now prevents setting &quot;cups-files.conf&quot; directives (Issue #5530)</li>
-       <li>The &quot;forbidden&quot; message in the web interface is now explained (Issue #5547)</li>
-       <li>The footer in the web interface covered some content on small displays (Issue #5574)</li>
-       <li>The libusb-based USB backend now enforces read limits, improving print speed in many cases (Issue #5583)</li>
-       <li>The <code>ippeveprinter</code> command now looks for print commands in the &quot;command&quot; subdirectory.</li>
-       <li>The <code>ipptool</code> command now supports <code>$date-current</code> and <code>$date-start</code> variables to insert the current and starting date and time values, as well as ISO-8601 relative time values such as &quot;PT30S&quot; for 30 seconds in the future.</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b8">CUPS 2.3b8</a> <em>(May 2, 2019)</em></h2>
-
-<ul>
-
-       <li>Media size matching now uses a tolerance of 0.5mm (rdar://33822024)</li>
-       <li>The lpadmin command would hang with a bad PPD file (rdar://41495016)</li>
-       <li>Fixed a potential crash bug in cups-driverd (rdar://46625579)</li>
-       <li>Fixed a performance regression with large PPDs (rdar://47040759)</li>
-       <li>Fixed a memory reallocation bug in HTTP header value expansion (rdar://problem/50000749)</li>
-       <li>Timed out job submission now yields an error (Issue #5570)</li>
-       <li>Restored minimal support for the <code>Emulators</code> keyword in PPD files to allow old Samsung printer drivers to continue to work (Issue #5562)</li>
-       <li>The scheduler did not encode octetString values like &quot;job-password&quot; correctly for the print filters (Issue #5558)</li>
-       <li>The <code>cupsCheckDestSupported</code> function did not check octetString values correctly (Issue #5557)</li>
-       <li>Added support for <code>UserAgentTokens</code> directive in &quot;client.conf&quot; (Issue #5555)</li>
-       <li>Updated the systemd service file for cupsd (Issue #5551)</li>
-       <li>The <code>ippValidateAttribute</code> function did not catch all instances of invalid UTF-8 strings (Issue #5509)</li>
-       <li>Fixed an issue with the self-signed certificates generated by GNU TLS (Issue #5506)</li>
-       <li>Fixed a potential memory leak when reading at the end of a file (Issue #5473)</li>
-       <li>Fixed potential unaligned accesses in the string pool (Issue #5474)</li>
-       <li>Fixed a potential memory leak when loading a PPD file (Issue #5475)</li>
-       <li>Added a USB quirks rule for the Lexmark E120n (Issue #5478)</li>
-       <li>Updated the USB quirks rule for Zebra label printers (Issue #5395)</li>
-       <li>Fixed a compile error on Linux (Issue #5483)</li>
-       <li>The lpadmin command, web interface, and scheduler all queried an IPP Everywhere printer differently, resulting in different PPDs for the same printer (Issue #5484)</li>
-       <li>The web interface no longer provides access to the log files (Issue #5513)</li>
-       <li>Non-Kerberized printing to Windows via IPP was broken (Issue #5515)</li>
-       <li>Eliminated use of private headers and some deprecated macOS APIs (Issue #5516)</li>
-       <li>The scheduler no longer stops a printer if an error occurs when a job is canceled or aborted (Issue #5517)</li>
-       <li>Added a USB quirks rule for the DYMO 450 Turbo (Issue #5521)</li>
-       <li>Added a USB quirks rule for Xerox printers (Issue #5523)</li>
-       <li>The scheduler's self-signed certificate did not include all of the alternate names for the server when using GNU TLS (Issue #5525)</li>
-       <li>Fixed compiler warnings with newer versions of GCC (Issue #5532, Issue #5533)</li>
-       <li>Fixed some PPD caching and IPP Everywhere PPD accounting/password bugs (Issue #5535)</li>
-       <li>Fixed <code>PreserveJobHistory</code> bug with time values (Issue #5538)</li>
-       <li>The scheduler no longer advertises the HTTP methods it supports (Issue #5540)</li>
-       <li>Localization updates (Issue #5461, Issues #5471, Issue #5481, Issue #5486, Issue #5489, Issue #5491, Issue #5492, Issue #5493, Issue #5494, Issue #5495, Issue #5497, Issue #5499, Issue #5500, Issue #5501, Issue #5504)</li>
-       <li>The scheduler did not always idle exit as quickly as it could.</li>
-       <li>Added a new <code>ippeveprinter</code> command based on the old ippserver sample code.</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020211">CUPS 2.2.11</a> <em>(March 22, 2019)</em></h2>
-
-<ul>
-       <li>Running ppdmerge with the same input and output filenames did not work as advertised (Issue #5455)</li>
-       <li>Fixed a potential memory leak when reading at the end of a file (Issue #5473)</li>
-       <li>Fixed potential unaligned accesses in the string pool (Issue #5474)</li>
-       <li>Fixed a potential memory leak when loading a PPD file (Issue #5475)</li>
-       <li>Added a USB quirks rule for the Lexmark E120n (Issue #5478)</li>
-       <li>Updated the USB quirks rule for Zebra label printers (Issue #5395)</li>
-       <li>Fixed a compile error on Linux (Issue #5483)</li>
-       <li>The lpadmin command, web interface, and scheduler all queried an IPP Everywhere printer differently, resulting in different PPDs for the same printer (Issue #5484)</li>
-       <li>Fixed an issue with the self-signed certificates generated by GNU TLS (Issue #5506)</li>
-       <li>The `ippValidateAttribute` function did not catch all instances of invalid UTF-8 strings (Issue #5509)</li>
-       <li>Non-Kerberized printing to Windows via IPP was broken (Issue #5515)</li>
-       <li>The scheduler no longer stops a printer if an error occurs when a job is canceled or aborted (Issue #5517)</li>
-       <li>Added a USB quirks rule for the DYMO 450 Turbo (Issue #5521)</li>
-       <li>Added a USB quirks rule for Xerox printers (Issue #5523)</li>
-       <li>The scheduler's self-signed certificate did not include all of the alternate names for the server when using GNU TLS (Issue #5525)</li>
-       <li>Fixed compiler warnings with newer versions of GCC (Issue #5532, Issue #5533)</li>
-       <li>Fixed some PPD caching and IPP Everywhere PPD accounting/password bugs (Issue #5535)</li>
-       <li>Fixed `PreserveJobHistory` bug with time values (Issue #5538)</li>
-       <li>Media size matching now uses a tolerance of 0.5mm (rdar://33822024)</li>
-       <li>The lpadmin command would hang with a bad PPD file (rdar://41495016)</li>
-       <li>Fixed a potential crash bug in cups-driverd (rdar://46625579)</li>
-       <li>Fixed a performance regression with large PPDs (rdar://47040759)</li>
-       <li>The scheduler did not always idle exit as quickly as it could.</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b7">CUPS 2.3b7</a> <em>(December 14, 2018)</em></h2>
-
-<ul>
-       <li>Fixed some build failures (Issue #5451, Issue #5463)</li>
-       <li>Running ppdmerge with the same input and output filenames did not work as advertised (Issue #5455)</li>
-</ul>
-
-
-<h2 class="title"><a name="020210">CUPS 2.2.10</a> <em>(December 7, 2018)</em></h2>
-
-<ul>
-       <li>CVE-2018-4700: Linux session cookies used a predictable random number seed.</li>
-       <li>The `lpoptions` command now works with IPP Everywhere printers that have not yet been added as local queues (Issue #5045)</li>
-       <li>Added USB quirk rules (Issue #5395, Issue #5443)</li>
-       <li>The generated PPD files for IPP Everywhere printers did not contain the cupsManualCopies keyword (Issue #5433)</li>
-       <li>Kerberos credentials might be truncated (Issue #5435)</li>
-       <li>The handling of `MaxJobTime 0` did not match the documentation (Issue #5438)</li>
-       <li>Incorporated the page accounting changes from CUPS 2.3 (Issue #5439)</li>
-       <li>Fixed a bug adding a queue with the `-E` option (Issue #5440)</li>
-       <li>Fixed a crash bug when mapping PPD duplex options to IPP attributes (rdar://46183976)</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b6">CUPS 2.3b6</a> <em>(December 7, 2018)</em></h2>
-
-<ul>
-       <li>Localization update (Issue #5339, Issue #5348, Issue #5362, Issue #5408, Issue #5410)</li>
-       <li>Documentation updates (Issue #5369, Issue #5402, Issue #5403, Issue #5404)</li>
-       <li>CVE-2018-4700: Linux session cookies used a predictable random number seed.</li>
-       <li>All user commands now support the `--help` option (Issue #5326)</li>
-       <li>The `lpoptions` command now works with IPP Everywhere printers that have not yet been added as local queues (Issue #5045)</li>
-       <li>The lpadmin command would create a non-working printer in some error cases (Issue #5305)</li>
-       <li>The scheduler would crash if an empty `AccessLog` directive was specified (Issue #5309)</li>
-       <li>The scheduler did not idle-exit on some Linux distributions (Issue #5319)</li>
-       <li>Fixed a regression in the changes to ippValidateAttribute (Issue #5322, Issue #5330)</li>
-       <li>Fixed a crash bug in the Epson dot matrix driver (Issue #5323)</li>
-       <li>Automatic debug logging of job errors did not work with systemd (Issue #5337)</li>
-       <li>The web interface did not list the IPP Everywhere &quot;driver&quot; (Issue #5338)</li>
-       <li>The scheduler did not report all of the supported job options and values (Issue #5340)</li>
-       <li>The IPP Everywhere &quot;driver&quot; now properly supports face-up printers (Issue #5345)</li>
-       <li>Fixed some typos in the label printer drivers (Issue #5350)</li>
-       <li>Setting the `Community` name to the empty string in `snmp.conf` now disables SNMP supply level monitoring by all the standard network backends (Issue #5354)</li>
-       <li>Multi-file jobs could get stuck if the backend failed (Issue #5359, Issue #5413)</li>
-       <li>The IPP Everywhere &quot;driver&quot; no longer does local filtering when printing to a shared CUPS printer (Issue #5361)</li>
-       <li>The lpadmin command now correctly reports IPP errors when configuring an IPP Everywhere printer (Issue #5370)</li>
-       <li>Fixed some memory leaks discovered by Coverity (Issue #5375)</li>
-       <li>The PPD compiler incorrectly terminated JCL options (Issue #5379)</li>
-       <li>The cupstestppd utility did not generate errors for missing/mismatched CloseUI/JCLCloseUI keywords (Issue #5381)</li>
-       <li>The scheduler now reports the actual location of the log file (Issue #5398)</li>
-       <li>Added USB quirk rules (Issue #5395, Issue #5420, Issue #5443)</li>
-       <li>The generated PPD files for IPP Everywhere printers did not contain the cupsManualCopies keyword (Issue #5433)</li>
-       <li>Kerberos credentials might be truncated (Issue #5435)</li>
-       <li>The handling of `MaxJobTime 0` did not match the documentation (Issue #5438)</li>
-       <li>Fixed a bug adding a queue with the `-E` option (Issue #5440)</li>
-       <li>The `cupsaddsmb` program has been removed (Issue #5449)</li>
-       <li>The `cupstestdsc` program has been removed (Issue #5450)</li>
-       <li>The scheduler was being backgrounded on macOS, causing applications to spin (rdar://40436080)</li>
-       <li>The scheduler did not validate that required initial request attributes were in the operation group (rdar://41098178)</li>
-       <li>Authentication in the web interface did not work on macOS (rdar://41444473)</li>
-       <li>Fixed an issue with HTTP Digest authentication (rdar://41709086)</li>
-       <li>The scheduler could crash when job history was purged (rdar://42198057)</li>
-       <li>Fixed a crash bug when mapping PPD duplex options to IPP attributes (rdar://46183976)</li>
-       <li>Fixed a memory leak for some IPP (extension) syntaxes.</li>
-       <li>The `cupscgi`, `cupsmime`, and `cupsppdc` support libraries are no longer installed as shared libraries.</li>
-       <li>The `snmp` backend is now deprecated.</li>
-</ul>
-
-
-<h2 class="title"><a name="020209">CUPS 2.2.9</a> <em>(November 8, 2018)</em></h2>
-
-<ul>
-       <li>Localization changes (Issue #5348, Issue #5362, Issue #5408)</li>
-       <li>Documentation updates (Issue #5369)</li>
-       <li>The lpadmin command would create a non-working printer in some error cases (Issue #5305)</li>
-       <li>The scheduler would crash if an empty `AccessLog` directive was specified (Issue #5309)</li>
-       <li>Fixed a regression in the changes to ippValidateAttribute (Issue #5322, Issue #5330)</li>
-       <li>Fixed a crash bug in the Epson dot matrix driver (Issue #5323)</li>
-       <li>Automatic debug logging of job errors did not work with systemd (Issue #5337)</li>
-       <li>The web interface did not list the IPP Everywhere &quot;driver&quot; (Issue #5338)</li>
-       <li>The IPP Everywhere &quot;driver&quot; now properly supports face-up printers (Issue #5345)</li>
-       <li>Fixed some typos in the label printer drivers (Issue #5350)</li>
-       <li>Multi-file jobs could get stuck if the backend failed (Issue #5359, Issue #5413)</li>
-       <li>The IPP Everywhere &quot;driver&quot; no longer does local filtering when printing to a shared CUPS printer (Issue #5361)</li>
-       <li>The lpadmin command now correctly reports IPP errors when configuring an IPP Everywhere printer (Issue #5370)</li>
-       <li>Fixed some memory leaks discovered by Coverity (Issue #5375)</li>
-       <li>The PPD compiler incorrectly terminated JCL options (Issue #5379)</li>
-       <li>The cupstestppd utility did not generate errors for missing/mismatched CloseUI/JCLCloseUI keywords (Issue #5381)</li>
-       <li>The scheduler now reports the actual location of the log file (Issue #5398)</li>
-       <li>Added a USB quirk rule (Issue #5420)</li>
-       <li>The scheduler was being backgrounded on macOS, causing applications to spin (rdar://40436080)</li>
-       <li>The scheduler did not validate that required initial request attributes were in the operation group (rdar://41098178)</li>
-       <li>Authentication in the web interface did not work on macOS (rdar://41444473)</li>
-       <li>Fixed an issue with HTTP Digest authentication (rdar://41709086)</li>
-       <li>The scheduler could crash when job history was purged (rdar://42198057)</li>
-       <li>Dropped non-working RSS subscriptions UI from web interface templates.</li>
-       <li>Fixed a memory leak for some IPP (extension) syntaxes.</li>
-</ul>
-
-<h2 class="title"><a name="0203b5">CUPS 2.b5</a> <em>(June 5, 2018)</em></h2>
-
-<ul>
-       <li>The `ipptool` program no longer checks for duplicate attributes when running in list or CSV mode (Issue #5278)</li>
-       <li>The `cupsCreateJob`, `cupsPrintFile2`, and `cupsPrintFiles2` APIs did not use the supplied HTTP connection (Issue #5288)</li>
-       <li>Fixed another crash in the scheduler when adding an IPP Everywhere printer (Issue #5290)</li>
-       <li>Added a workaround for certain web browsers that do not support multiple authentication schemes in a single response header (Issue #5289)</li>
-       <li>Fixed policy limits containing the `All` operation (Issue #5296)</li>
-       <li>The scheduler was always restarted after idle-exit with systemd (Issue #5297)</li>
-       <li>Added a USB quirks rule for the HP LaserJet P1102 (Issue #5310)</li>
-       <li>The mailto notifier did not wait for the welcome message (Issue #5312)</li>
-       <li>Fixed a parsing bug in the pstops filter (Issue #5321)</li>
-       <li>Documentation updates (Issue #5299, Issue #5301, Issue #5306)</li>
-       <li>Localization updates (Issue #5317)</li>
-       <li>The scheduler allowed environment variables to be specified in the `cupsd.conf` file (rdar://37836779, rdar://37836995, rdar://37837252, rdar://37837581)</li>
-       <li>Fax queues did not support pause (p) or wait-for-dialtone (w) characters (rdar://39212256)</li>
-       <li>The scheduler did not validate notify-recipient-uri values properly (rdar://40068936)</li>
-       <li>The IPP parser allowed invalid group tags (rdar://40442124)</li>
-       <li>Fixed a parsing bug in the new authentication code.</li>
-</ul>
-
-
-<h2 class="title"><a name="020208">CUPS 2.2.8</a> <em>(June 5, 2018)</em></h2>
-
-<ul>
-       <li>Additional changes for the scheduler to substitute default values for invalid job attributes when running in &quot;relaxed conformance&quot; mode (Issue #5229)</li>
-       <li>The `ipptool` program no longer checks for duplicate attributes when running in list or CSV mode (Issue #5278)</li>
-       <li>Fixed builds without PAM (Issue #5283)</li>
-       <li>Fixed `lpoptions` man page (Issue #5286)</li>
-       <li>The `cupsCreateJob`, `cupsPrintFile2`, and `cupsPrintFiles2` APIs did not use the supplied HTTP connection (Issue #5288)</li>
-       <li>Fixed another crash in the scheduler when adding an IPP Everywhere printer (Issue #5290)</li>
-       <li>Added a workaround for certain web browsers that do not support multiple authentication schemes in a single response header (Issue #5289)</li>
-       <li>Fixed policy limits containing the `All` operation (Issue #5296)</li>
-       <li>The scheduler was always restarted after idle-exit with systemd (Issue #5297)</li>
-       <li>Added a USB quirks rule for the HP LaserJet P1102 (Issue #5310)</li>
-       <li>The mailto notifier did not wait for the welcome message (Issue #5312)</li>
-       <li>Fixed a parsing bug in the pstops filter (Issue #5321)</li>
-       <li>Documentation updates (Issue #5299, Issue #5301, Issue #5306)</li>
-       <li>Localization updates (Issue #5317)</li>
-       <li>The scheduler allowed environment variables to be specified in the `cupsd.conf` file (rdar://37836779, rdar://37836995, rdar://37837252, rdar://37837581)</li>
-       <li>Fax queues did not support pause (p) or wait-for-dialtone (w) characters (rdar://39212256)</li>
-       <li>The scheduler did not validate notify-recipient-uri values properly (rdar://40068936)</li>
-       <li>The IPP parser allowed invalid group tags (rdar://40442124)</li>
-       <li>Fixed a parsing bug in the new authentication code.</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b4">CUPS 2.3b4</a> <em>(March 27, 2018)</em></h2>
-
-<ul>
-       <li>NOTICE: Printer drivers are now deprecated (Issue #5270)</li>
-       <li>Kerberized printing to another CUPS server did not work correctly (Issue #5233)</li>
-       <li>Fixed printing to some IPP Everywhere printers (Issue #5238)</li>
-       <li>Fixed installation of filters (Issue #5247)</li>
-       <li>The scheduler now supports using temporary print queues for older IPP/1.1 print queues like those shared by CUPS 1.3 and earlier (Issue #5241)</li>
-       <li>Star Micronics printers need the &quot;unidir&quot; USB quirk rule (Issue #5251)</li>
-       <li>Documentation fixes (Issue #5252)</li>
-       <li>Fixed a compile issue when PAM is not available (Issue #5253)</li>
-       <li>Label printers supported by the rastertolabel driver don't support SNMP, so don't delay printing to test it (Issue #5256)</li>
-       <li>The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)</li>
-       <li>The Lexmark Optra E310 printer needs the &quot;no-reattach&quot; USB quirk rule (Issue #5259)</li>
-       <li>Systemd did not restart cupsd when configuration changes were made that required a restart (Issue #5263)</li>
-       <li>The IPP Everywhere PPD generator did not include the `cupsJobPassword` keyword, when supported (Issue #5265)</li>
-       <li>Fixed an Avahi crash bug in the scheduler (Issue #5268)</li>
-       <li>Raw print queues are now deprecated (Issue #5269)</li>
-       <li>Fixed an RPM packaging problem (Issue #5276)</li>
-       <li>The IPP backend did not properly detect failed PDF prints (rdar://34055474)</li>
-       <li>TLS connections now properly timeout (rdar://34938533)</li>
-       <li>Temp files could not be created in some sandboxed applications (rdar://37789645)</li>
-       <li>The ipptool `--ippserver` option did not encode out-of-band attributes correctly.</li>
-       <li>Added public `cupsEncodeOption` API for encoding a single option as an IPP attribute.</li>
-       <li>Removed support for the `-D_PPD_DEPRECATED=&quot;&quot;` developer cheat - the PPD API should no longer be used.</li>
-       <li>Removed support for `-D_IPP_PRIVATE_STRUCTURES=1` developer cheat - the IPP accessor functions should be used instead.</li>
-</ul>
-
-<h2 class="title"><a name="020207">CUPS 2.2.7</a> <em>(March 27, 2018)</em></h2>
-
-<ul>
-       <li>NOTICE: Raw print queues are now deprecated (Issue #5269)</li>
-       <li>Fixed an Avahi crash bug in the scheduler (Issue #5268)</li>
-       <li>The IPP Everywhere PPD generator did not include the `cupsJobPassword` keyword, when supported (Issue #5265)</li>
-       <li>Systemd did not restart cupsd when configuration changes were made that required a restart (Issue #5263)</li>
-       <li>The Lexmark Optra E310 printer needs the &quot;no-reattach&quot; USB quirk rule (Issue #5259)</li>
-       <li>The scheduler could crash while adding an IPP Everywhere printer (Issue #5258)</li>
-       <li>Label printers supported by the rastertolabel driver don't support SNMP, so don't delay printing to test it (Issue #5256)</li>
-       <li>Fixed a compile issue when PAM is not available (Issue #5253)</li>
-       <li>Documentation fixes (Issue #5252)</li>
-       <li>Star Micronics printers need the &quot;unidir&quot; USB quirk rule (Issue #5251)</li>
-       <li>The scheduler now supports using temporary print queues for older IPP/1.1 print queues like those shared by CUPS 1.3 and earlier (Issue #5241)</li>
-       <li>Fixed printing to some IPP Everywhere printers (Issue #5238)</li>
-       <li>Kerberized printing to another CUPS server did not work correctly (Issue #5233)</li>
-       <li>The `cupsRasterWritePixels` function did not correctly swap bytes for some formats (Issue #5225)</li>
-       <li>Added a USB quirk rule for Canon MP280 series printers (Issue #5221)</li>
-       <li>The `ppdInstallableConflict` tested too many constraints (Issue #5213)</li>
-       <li>More fixes for printing to old CUPS servers (Issue #5211)</li>
-       <li>The `cupsCopyDest` function now correctly copies the `is_default` value (Issue #5208)</li>
-       <li>The scheduler did not work with older versions of uClibc (Issue #5188)</li>
-       <li>The scheduler now substitutes default values for invalid job attributes when running in &quot;relaxed conformance&quot; mode (Issue #5186)</li>
-       <li>Fixed PAM module detection and added support for the common PAM definitions (Issue #5185)</li>
-       <li>Fixed a journald support bug in the scheduler (Issue #5181)</li>
-       <li>The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop was seen (Issue #5170)</li>
-       <li>Fixed group validation on OpenBSD (Issue #5166)</li>
-       <li>Fixed the `ippserver` sample code when threading is disabled or unavailable (Issue #5154)</li>
-       <li>The `cupsEnumDests` function did not include options from the lpoptions files (Issue #5144)</li>
-       <li>The `SSLOptions` directive now supports `MinTLS` and `MaxTLS` options to control the minimum and maximum TLS versions that will be allowed, respectively (Issue #5119)</li>
-       <li>The scheduler did not write out dirty configuration and state files if there were open client connections (Issue #5118)</li>
-       <li>The `lpadmin` command now provides a better error message when an unsupported System V interface script is used (Issue #5111)</li>
-       <li>The `lp` and `lpr` commands now provide better error messages when the default printer cannot be found (Issue #5096)</li>
-       <li>No longer support backslash, question mark, or quotes in printer names (Issue #4966)</li>
-       <li>The CUPS library now supports the latest HTTP Digest authentication specification including support for SHA-256 (Issue #4862)</li>
-       <li>The `lpstat` command now reports when new jobs are being held (Issue #4761)</li>
-       <li>The `lpoptions` command incorrectly saved default options (Issue #4717)</li>
-       <li>The `ppdLocalizeIPPReason` function incorrectly returned a localized version of &quot;none&quot; (rdar://36566269)</li>
-       <li>TLS connections now properly timeout (rdar://34938533)</li>
-       <li>The IPP backend did not properly detect failed PDF prints (rdar://34055474)</li>
-       <li>Temporary files are now placed in the correct directory for sandboxed applications on macOS (rdar://problem/37789645)</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b3">CUPS 2.3b3</a> <em>(February 1, 2018)</em></h2>
-
-<ul>
-       <li>More fixes for printing to old CUPS servers (Issue #5211)</li>
-       <li>The IPP Everywhere PPD generator did not support deep grayscale or 8-bit per component AdobeRGB (Issue #5227)</li>
-       <li>Additional changes for the scheduler to substitute default values for invalid job attributes when running in &quot;relaxed conformance&quot; mode (Issue #5229)</li>
-       <li>Localization changes (Issue #5232, rdar://37068158)</li>
-       <li>The `cupsCopyDestInfo` function did not work with all print queues (Issue #5235)</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b2">CUPS 2.3b2</a> <em>(January 17, 2018)</em></h2>
-
-<ul>
-       <li>Localization changes (Issue #5210)</li>
-       <li>Build fixes (Issue #5217)</li>
-       <li>IPP Everywhere PPDs were not localized to English (Issue #5205)</li>
-       <li>The `cupsGetDests` and `cupsEnumDests` functions no longer filter out local print services like IPP USB devices (Issue #5206)</li>
-       <li>The `cupsCopyDest` function now correctly copies the `is_default` value (Issue #5208)</li>
-       <li>Printing to old CUPS servers has been fixed (Issue #5211)</li>
-       <li>The `ppdInstallableConflict` tested too many constraints (Issue #5213)</li>
-       <li>All HTTP field values can now be longer than `HTTP_MAX_VALUE` bytes (Issue #5216)</li>
-       <li>Added a USB quirk rule for Canon MP280 series printers (Issue #5221)</li>
-       <li>The `cupsRasterWritePixels` function did not correctly swap bytes for some formats (Issue #5225)</li>
-       <li>Fixed an issue with mapping finishing options (rdar://34250727)</li>
-       <li>The `ppdLocalizeIPPReason` function incorrectly returned a localized version of "none" (rdar://36566269)</li>
-       <li>The scheduler did not add ".local" to the default DNS-SD host name when needed.</li>
-</ul>
-
-
-<h2 class="title"><a name="0203b1">CUPS 2.3b1</a> <em>(December 19, 2017)</em></h2>
-
-<ul>
-       <li>CUPS is now provided under the Apache License, Version 2.0.</li>
-       <li>Documentation updates (Issue #4580, Issue #5177, Issue #5192)</li>
-       <li>The <code>cupsCopyDestConflicts</code> function now handles collection attribute ("media-col", "finishings-col", etc.) constraints (Issue #4096)</li>
-       <li>The <code>lpoptions</code> command incorrectly saved default options (Issue #4717)</li>
-       <li>The <code>lpstat</code> command now reports when new jobs are being held (Issue #4761)</li>
-       <li>The <code>ippfind</code> command now supports finding printers whose name starts with an underscore (Issue #4833)</li>
-       <li>The CUPS library now supports the latest HTTP Digest authentication specification including support for SHA-256 (Issue #4862)</li>
-       <li>The scheduler now supports the "printer-id" attribute (Issue #4868)</li>
-       <li>No longer support backslash, question mark, or quotes in printer names (Issue #4966)</li>
-       <li>The scheduler no longer logs pages as they are printed, instead just logging a total of the pages printed at job completion (Issue #4991)</li>
-       <li>Dropped RSS subscription management from the web interface (Issue #5012)</li>
-       <li>Bonjour printer sharing now uses the DNS-SD hostname (or ServerName value if none is defined) when registering shared printers on the network (Issue #5071)</li>
-       <li>The <code>ipptool</code> command now supports writing <code>ippserver</code> attributes files (Issue #5093)</li>
-       <li>The <code>lp</code> and <code>lpr</code> commands now provide better error messages when the default printer cannot be found (Issue #5096)</li>
-       <li>The <code>lpadmin</code> command now provides a better error message when an unsupported System V interface script is used (Issue #5111)</li>
-       <li>The scheduler did not write out dirty configuration and state files if there were open client connections (Issue #5118)</li>
-       <li>The <code>SSLOptions</code> directive now supports <code>MinTLS</code> and <code>MaxTLS</code> options to control the minimum and maximum TLS versions that will be allowed, respectively (Issue #5119)</li>
-       <li>Dropped hard-coded CGI scripting language support (Issue #5124)</li>
-       <li>The <code>cupsEnumDests</code> function did not include options from the lpoptions files (Issue #5144)</li>
-       <li>Fixed the <code>ippserver</code> sample code when threading is disabled or unavailable (Issue #5154)</li>
-       <li>Added label markup to checkbox and radio button controls in the web interface templates (Issue #5161)</li>
-       <li>Fixed group validation on OpenBSD (Issue #5166)</li>
-       <li>Improved IPP Everywhere media support, including a new <code>cupsAddDestMediaOptions</code> function (Issue #5167)</li>
-       <li>IPP Everywhere PPDs now include localizations of printer-specific media types, when available (Issue #5168)</li>
-       <li>The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop was seen (Issue #5170)</li>
-       <li>IPP Everywhere PPDs now support IPP job presets (Issue #5179)</li>
-       <li>IPP Everywhere PPDs now support finishing templates (Issue #5180)</li>
-       <li>Fixed a journald support bug in the scheduler (Issue #5181)</li>
-       <li>Fixed PAM module detection and added support for the common PAM definitions (Issue #5185)</li>
-       <li>The scheduler now substitutes default values for invalid job attributes when running in "relaxed conformance" mode (Issue #5186)</li>
-       <li>The scheduler did not work with older versions of uClibc (Issue #5188)</li>
-       <li>The scheduler now generates a strings file for localizing PPD options (Issue #5194)</li>
-</ul>
-
-
-<h2 class="title"><a name="020206">CUPS 2.2.6</a> <em>(November 1, 2017)</em></h2>
-
-<ul>
-
-       <li>DBUS notifications could crash the scheduler (Issue #5143)</li>
-       <li>Added USB quirks rules for Canon MP540 and Samsung ML-2160 (Issue #5148)</li>
-       <li>Fixed TLS cipher suite selection with GNU TLS (Issue #5145, Issue #5150)</li>
-       <li>Localization updates (Issue #5152)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020205">CUPS 2.2.5</a> <em>(October 13, 2017)</em></h2>
-
-<ul>
-
-       <li>The scheduler's `-t` option did not force all errors to the standard error file, making debugging of configuration problems hard (Issue #5041)</li>
-       <li>Fixed a typo in the CUPS Programming Manual (Issue #5042)</li>
-       <li>Fixed RPM packaging issue (Issue #5043, Issue #5044)</li>
-       <li>The `cupsGetDests` function incorrectly returned an empty list of printers if there was no default printer (Issue #5046)</li>
-       <li>The `cupsGetDests` function waited too long for network printers (Issue #5049)</li>
-       <li>Libtool support was completely broken with current libtool versions that use an incompatible command-line syntax (Issue #5050)</li>
-       <li>Fixed a build issue with `--enable-mallinfo` (Issue #5051)</li>
-       <li>The ippserver test program contained a deadlock issue (Issue #5054)</li>
-       <li>The `cupsLocalizeDest*` functions did not provide base localizations for all registered IPP attributes and values (Issue #5056)</li>
-       <li>The --enable-libtool configure option requires a path to the libtool program, but doesn't document or check for it (Issue #5062)</li>
-       <li>Fixed the `SSLOptions DenyCBC` option when using GNU TLS (Issue #5065)</li>
-       <li>Fixed the `ServerTokens None` option (Issue #5065)</li>
-       <li>Fixed the default `ServerAlias` value from `ServerName` (Issue #5072)</li>
-       <li>Fixed the adminurl field in the TXT record for fully-qualified `ServerName` values (Issue #5074)</li>
-       <li>The scheduler now creates a PID file when not running on demand with a modern service launcher (Issue #5080)</li>
-       <li>The web interface did not support newer language identifiers used by Microsoft web browsers (Issue #5803)</li>
-       <li>Updated the cups-files.conf and cupsd.conf file documentation for missing directives (Issue #5084)</li>
-       <li>Fixed an Avahi-related crash bug in the scheduler (Issue #5085, Issue #5086)</li>
-       <li>Fixed the interactions between the "print-quality" and "cupsPrintQuality" options (Issue #5090)</li>
-       <li>The IPP Everywhere PPD generator now sorts the supported resolutions before choosing them for draft, normal, and best quality modes (Issue #5091)</li>
-       <li>Fixed the localization unit test on Linux (Issue #5097)</li>
-       <li>The CUPS library did not reuse domain sockets (Issue #5098)</li>
-       <li>Fixed the "make check" target for some environments (Issue #5099)</li>
-       <li>The scheduler woke up once per second to remove old temporary queues (Issue #5100)</li>
-       <li>Added USB quirk rule for Kyocera printer (Issue #5102, Issue #5103)</li>
-       <li>Re-documented the limits of `file:///...` device URIs and moved the FileDevice directive in `cups-files.conf` to the list of deprecated configuration directives (Issue #5117)</li>
-       <li>Added USB quirk rule for HP LaserJet 1160 printer (Issue #5121)</li>
-       <li>Fixed the script interpreter detection in the configure script (Issue #5122)</li>
-       <li>The network backends now retry on more error conditions (Issue #5123)</li>
-       <li>Added a French translation of the web interface (Issue #5134)</li>
-       <li>`cupsGetDests2` was not using the supplied HTTP connection (Issue #5135)</li>
-       <li>`httpAddrConnect` leaked sockets in certain circumstances, causing some printers to hang (rdar://31965686)</li>
-       <li>Fixed an issue with Chinese localizations on macOS (rdar://32419311)</li>
-       <li>The IPP backend now always sends the "finishings" attribute for printers that support it because otherwise the client cannot override printer defaults (rdar://33169732)</li>
-       <li>The `cupsGetNamedDest` function did not use the local default printer (rdar://33228500)</li>
-       <li>The IPP backend incorrectly sent the "job-pages-per-set" attribute to PDF printers (rdar://33250434)</li>
-       <li>Fixed the `cups.strings` file that is used on macOS (rdar://33287650)</li>
-       <li>CUPS now sends the `Date` HTTP header in IPP requests (rdar://33302034)</li>
-       <li>The `ippCopyAttribute` function did not copy out-of-band values correctly (rdar://33688003)</li>
-       <li>Fixed the localization fallback code on macOS (rdar://33583699)</li>
-       <li>The scheduler did not run with a high enough priority, causing problems on busy systems (rdar://33789342)</li>
-       <li>Added support for Japanese Kaku 1 envelope size (rdar://34774110)</li>
-       <li>The `ipptool` program's `-P` option did not work correctly.</li>
-       <li>The `ipptool` program did not compare URI scheme or hostname components correctly for the WITH-ALL-HOSTNAMES, WITH-ALL-SCHEMES, WITH-HOSTNAME, or WITH-SCHEME predicates.</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020204">CUPS 2.2.4</a> <em>(June 30, 2017)</em></h2>
-
-<ul>
-
-       <li>The scheduler did not remove old job files (Issue #4987)</li>
-       <li>cupsEnumDests did not return early when all printers had been discovered (Issue #4989)</li>
-       <li>The CUPS build system now supports cross-compilation (Issue #4897)</li>
-       <li>Added a new CUPS Programming Manual to replace the aging API documentation.</li>
-       <li>Added the `cupsAddIntegerOption` and `cupsGetIntegerOption` functions (Issue #4992)</li>
-       <li>The `cupsGetDests` and `cupsCreateJob` functions now support Bonjour printers (Issue #4993)</li>
-       <li>Added a USB quirk rule for Lexmark E260dn printers (Issue #4994)</li>
-       <li>Fixed a potential buffer overflow in the `cupstestppd` utility (Issue #4996)</li>
-       <li>IPP Everywhere improvements (Issue #4998)</li>
-       <li>Fixed the "cancel all jobs" function in the web interface for several languages (Issue #4999)</li>
-       <li>Fixed issues with local queues (Issue #5003, Issue #5008, Issue #5009)</li>
-       <li>The `lpstat` command now supports a `-e` option to enumerate local printers (either previously added or on the network) that can be accessed (Issue #5005)</li>
-       <li>The `lp` and `lpr` commands now support printing to network printers that haven't yet been added (Issue #5006)</li>
-       <li>Fixed a typo in the mime.types file.</li>
-       <li>Fixed a bug in the Spanish web interface template (Issue #5016)</li>
-       <li>The `cupsEnumDests*` and `cupsGetDest*` functions now report the value of the "printer-is-temporary" Printer Status attribute (Issue #5028)</li>
-       <li>Added Chinese localization (Issue #5029)</li>
-       <li>The `cupsCheckDestSupported` function did not support `NULL` values (Issue #5031)</li>
-       <li>Fixed some issues in the RPM spec file (Issue #5032)</li>
-       <li>The `cupsConnectDest` function now supports the `CUPS_DEST_FLAGS_DEVICE` flag for explicitly connecting to the device (printer) associated with the destination.</li>
-       <li>The `SSLOptions` directive in "client.conf" and "cupsd.conf" now supports `DenyCBC` and `DenyTLS1.0` options (Issue #5037)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020203">CUPS 2.2.3</a> <em>(March 28, 2017)</em></h2>
-
-<ul>
-
-       <li>The IPP backend could get into an infinite loop for certain errors, causing a hung queue (&lt;rdar://problem/28008717>)</li>
-       <li>The scheduler could pause responding to client requests in order to save state changes to disk (&lt;rdar://problem/28690656>)</li>
-       <li>Added support for PPD finishing keywords (Issue #4960, Issue #4961, Issue #4962)</li>
-       <li>The IPP backend did not send a media-col attribute for just the source or type (Issue #4963)</li>
-       <li>IPP Everywhere print queues did not always support all print qualities supported by the printer (Issue #4953)</li>
-       <li>IPP Everywhere print queues did not always support all media types supported by the printer (Issue #4953)</li>
-       <li>The IPP Everywhere PPD generator did not return useful error messages (Issue #4954)</li>
-       <li>The IPP Everywhere finishings support did not work correctly with common UI or command-line options (Issue #4976)</li>
-       <li>Fixed an error handling issue for the network backends (Issue #4979)</li>
-       <li>The default cupsd.conf file did not work on systems compiled without Kerberos support (Issue #4947)</li>
-       <li>The "reprint job" option was not available for some canceled jobs (Issue #4915)</li>
-       <li>Updated the job listing in the web interface (Issue #4978)</li>
-       <li>Fixed some localization issues on macOS (&lt;rdar://problem/27245567>)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020202">CUPS 2.2.2</a> <em>(January 17, 2017)</em></h2>
-
-<ul>
-
-       <li>Fixed some issues with the Zebra ZPL printer driver (Issue #4898)</li>
-       <li>Fixed some issues with IPP Everywhere printer support (Issue #4893, Issue #4909, Issue #4916, Issue #4921, Issue #4923, Issue #4932, Issue #4933, Issue #4938)</li>
-       <li>The rastertopwg filter could crash with certain input (Issue #4942)</li>
-       <li>Optimized connection usage in the IPP backend (&lt;rdar://problem/29547323>)</li>
-       <li>The scheduler did not detect when an encrypted connection was closed by the client on Linux (Issue #4901)</li>
-       <li>The cups-lpd program did not catch all legacy usage of ISO-8859-1 (Issue #4899)</li>
-       <li>Fixed builds on systems without a working poll() implementation (Issue #4905)</li>
-       <li>Added a USB quirk rule for the Kyocera Ecosys P6026cdn (Issue #4900)</li>
-       <li>The scheduler no longer creates log files on startup (&lt;rdar://problem/28332470>)</li>
-       <li>The ippContainsString function now uses case-insensitive comparisons for mimeMediaType, name, and text values in conformance with RFC 2911.</li>
-       <li>The network backends now log the addresses that were found for a printer (&lt;rdar://problem/29268474>)</li>
-       <li>Let's Encrypt certificates did not work when the hostname contained uppercase letters (Issue #4919)</li>
-       <li>Fixed reporting of printed pages in the web interface (Issue #4924)</li>
-       <li>Updated systemd config files (Issue #4935)</li>
-       <li>Updated documentation (PR #4896)</li>
-       <li>Updated localizations (PR #4894, PR #4895, PR #4904, PR #4908, Issue #4946)</li>
-       <li>Updated packaging files (Issue #4940)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020201">CUPS 2.2.1</a> <em>(October 3, 2016)</em></h2>
-
-<ul>
-       <li>Added &quot;CreateSelfSignedCerts&quot; directive for cups-files.conf to control whether the scheduler automatically creates its own self-signed X.509 certificates for TLS connections (Issue #4876)</li>
-       <li>http*Connect did not handle partial failures (Issue #4870)</li>
-       <li>Addressed some build warnings on Linux (Issue #4881)</li>
-       <li>cupsHashData did not use the correct hashing algorithm (&lt;rdar://problem/28209220&gt;)</li>
-       <li>Updated man pages (PR #4885)</li>
-       <li>Updated localizations (PR #4877, PR #4886)</li>
-</ul>
-
-
-<h2 class="title"><a name="020200">CUPS 2.2.0</a> <em>(September 13, 2016)</em></h2>
-
-<ul>
-       <li>Normalized the TLS certificate validation code and added additional error messages to aid troubleshooting.</li>
-       <li>http*Connect did not work on Linux when cupsd was not running (Issue #4870)</li>
-       <li>The --no-remote-any option of cupsctl had no effect (Issue #4866)</li>
-       <li>http*Connect did not return early when all addresses failed (Issue #4870)</li>
-</ul>
-
-
-<h2 class="title"><a name="0202rc1">CUPS 2.2rc1</a> <em>(August 8, 2016)</em></h2>
-
-<ul>
-
-       <li>Updated the list of supported IPP Everywhere media types.</li>
-       <li>The IPP backend did not validate TLS credentials properly.</li>
-       <li>The printer-state-message attribute was not cleared after a print job with no errors (Issue #4851)</li>
-       <li>The CUPS-Add-Modify-Class and CUPS-Add-Modify-Printer operations did not always return an error for failed adds (Issue #4854)</li>
-       <li>PPD files with names longer than 127 bytes did not work (Issue #4860)</li>
-       <li>Updated localizations (Issue #4846, PR #4858)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="0202b2">CUPS 2.2b2</a> <em>(June 24, 2016)</em></h2>
-
-<ul>
-
-       <li>Added Upstart support (PR #4825)</li>
-       <li>CUPS now supports Let's Encrypt certificates on Linux.</li>
-
-</ul>
-
-
-<h2 class="title"><a name="0202b1">CUPS 2.2b1</a> <em>(June 14, 2016)</em></h2>
-
-<ul>
-
-       <li>All CUPS commands now support POSIX options (Issue #4813)</li>
-       <li>The scheduler now restarts faster (Issue #4760)</li>
-       <li>Improved performance of web interface with large numbers of jobs (Issue #3819)</li>
-       <li>Encrypted printing can now be limited to only trusted printers and servers (&lt;rdar://problem/25711658&gt;)</li>
-       <li>The scheduler now advertises PWG Raster attributes for IPP Everywhere clients (Issue #4428)</li>
-       <li>The scheduler now logs informational messages for jobs at LogLevel "info" (Issue #4815)</li>
-       <li>The scheduler now uses the getgrouplist function when available (Issue #4611)</li>
-       <li>The IPP backend no longer enables compression by default except for certain raster formats that generally benefit from it (&lt;rdar://problem/25166952&gt;)</li>
-       <li>The scheduler did not handle out-of-disk situations gracefully (Issue #4742)</li>
-       <li>The LPD mini-daemon now detects invalid UTF-8 sequences in job, document, and user names (Issue #4748)</li>
-       <li>The IPP backend now continues on to the next job when the remote server/printer puts the job on hold (&lt;rdar://problem/24858548&gt;)</li>
-       <li>The scheduler did not cancel multi-document jobs immediately (&lt;rdar://problem/24854834&gt;)</li>
-       <li>The scheduler did not return non-shared printers to local clients unless they connected to the domain socket</li> (&lt;rdar://problem/24566996&gt;)</li>
-       <li>The scheduler now reads the spool directory if one or more job cache entries point to deleted jobs (&lt;rdar://problem/24048846&gt;)</li>
-       <li>Added support for disc media sizes (&lt;rdar://problem/20219536&gt;)</li>
-       <li>The httpAddrConnect and httpConnect* APIs now try connecting to multiple addresses in parallel (&lt;rdar://problem/20643153&gt;)</li>
-       <li>The cupsd domain socket is no longer world-accessible on macOS (&lt;rdar://problem/7542560&gt;)</li>
-       <li>Interface scripts are no longer supported for security reasons (&lt;rdar://problem/23135640&gt;)</li>
-       <li>Added a new cupsHashData API and support for hashed job passwords (&lt;rdar://problem/20221502&gt;)</li>
-       <li>Localization fixes (&lt;rdar://problem/25292403>, &lt;rdar://problem/25461517>, Issue #4041, Issue #4796)</li>
-       <li>Documentation changes (Issue #4624, Issue #4781)</li>
-       <li>Packaging fixes (PR #4832)</li>
-
-</ul>
-
-
-<h2 class="title"><a name="020104">CUPS 2.1.4</a> <em>(June 14, 2016)</em></h2>
-
-<ul>
-       <li>Fixed reporting of 1284 Device IDs (Issue #3835, PR #3836)</li>
-       <li>Fixed printing of multiple files to raw queues (Issue #4782)</li>
-       <li>The scheduler did not implement the Hold-New-Jobs operation correctly (Issue #4767)</li>
-       <li>The ipptool program truncated values at 8k (Issue #4786)</li>
-       <li>The ipptool program did not correctly report uriScheme values in plist output (Issue #4785)</li>
-       <li>The cups-lpd mini-daemon incorrectly included the document-name attribute when creating a job.  It should only be included when sending a job (Issue #4790)</li>
-       <li>USB quirk updates (Issue #4778, Issue #4789)</li>
-       <li>Documentation update (Issue #4772)</li>
-</ul>
-
-
-<h2 class="title"><a name="020103">CUPS 2.1.3</a> <em>(February 5, 2016)</em></h2>
-
-<ul>
-       <li>The default password function did not work on some platforms (<a href="https://github.com/apple/cups/issues/4750">Issue #4750</a>)</li>
-       <li>The scheduler should not exit under memory pressure (&lt;rdar://problem/23255001&gt;)</li>
-       <li>The EPL2 and ZPL sample drivers did not properly support the CutMedia option.</li>
-       <li>Pending subscriptions would prevent the scheduler from idle exiting (<a href="https://github.com/apple/cups/issues/4754">Issue #4754</a>)</li>
-       <li>Fixed some issues in ipptool for skipped tests (&lt;rdar://problem/24137160&gt;)</li>
-       <li>The &quot;lp -H resume&quot; command did not reset the &quot;job-state-reasons&quot; attribute value (<a href="https://github.com/apple/cups/issues/4752">Issue #4752</a>)</li>
-       <li>The scheduler did not allow access to resource files (icons, etc.) when the web interface was disabled (<a href="https://github.com/apple/cups/issues/4755">Issue #4755</a>)</li>
-       <li>Localization fix (<a href="https://github.com/apple/cups/issues/4756">Issue #4756</a>)</li>
-</ul>
-
-
-<h2 class="title"><a name="020102">CUPS 2.1.2</a> <em>(December 2, 2015)</em></h2>
-
-<ul>
-       <li>Re-release of CUPS 2.1.1 as CUPS 2.1.2 due to error in tagging of the 2.1.1 release (pulled content from the 2.2.x tree instead)</li>
-</ul>
-
-
-<h2 class="title"><a name="020101">CUPS 2.1.1 WITHDRAWN</a> <em>(November 30, 2015)</em></h2>
-
-<ul>
-       <li>Security hardening fixes (&lt;rdar://problem/23131948&gt;, &lt;rdar://problem/23132108&gt;, &lt;rdar://problem/23132353&gt;, &lt;rdar://problem/23132803&gt;, &lt;rdar://problem/23133230&gt;, &lt;rdar://problem/23133393&gt;, &lt;rdar://problem/23133466&gt;, &lt;rdar://problem/23133833&gt;, &lt;rdar://problem/23133998&gt;, &lt;rdar://problem/23134228&gt;, &lt;rdar://problem/23134299&gt;, &lt;rdar://problem/23134356&gt;, &lt;rdar://problem/23134415&gt;, &lt;rdar://problem/23134506&gt;, &lt;rdar://problem/23135066&gt;, &lt;rdar://problem/23135122&gt;, &lt;rdar://problem/23135207&gt;, &lt;rdar://problem/23144290&gt;, &lt;rdar://problem/23144358&gt;, &lt;rdar://problem/23144461&gt;)</li>
-       <li>The cupsGetPPD* functions did not work with IPP printers (<a href="https://github.com/apple/cups/issues/4725">Issue #4725</a>)</li>
-       <li>Some older HP LaserJet printers need a delayed close when printing using the libusb-based USB backend (<a href="https://github.com/apple/cups/issues/4549">Issue #4549</a>)</li>
-       <li>The libusb-based USB backend did not unload the kernel usblp module if it was preventing the backend from accessing the printer (<a href="https://github.com/apple/cups/issues/4707">Issue #4707</a>)</li>
-       <li>Current Primera printers were incorrectly reported as Fargo printers (<a href="https://github.com/apple/cups/issues/4708">Issue #4708</a>)</li>
-       <li>The IPP backend did not always handle jobs getting canceled at the printer (&lt;rdar://problem/22716820&gt;)</li>
-       <li>Scheduler logging change (<a href="https://github.com/apple/cups/issues/4728">Issue #4728</a>)</li>
-       <li>Added USB quirk for Canon MP530 (<a href="https://github.com/apple/cups/issues/4730">Issue #4730</a>)</li>
-       <li>The scheduler did not deliver job notifications for jobs submitted to classes (<a href="https://github.com/apple/cups/issues/4733">Issue #4733</a>)</li>
-       <li>Changing the printer-is-shared value for a remote queue did not produce an error (<a href="https://github.com/apple/cups/issues/4738">Issue #4738</a>)</li>
-       <li>The IPP backend incorrectly included the job-password attribute in Validate-Job requests (&lt;rdar://problem/23531939&gt;)</li>
-       <li>Updated localizations (<a href="https://github.com/apple/cups/issues/4709">Issue #4709</a>)</li>
-</ul>
-
-
-<h2 class="title"><a name="020100">CUPS 2.1.0</a> <em>(August 31, 2015)</em></h2>
-
-<ul>
-       <li>Fixed more scheduler crash bugs in the new logging code (<a href="https://github.com/apple/cups/issues/4687">Issue #4687</a>, <a href="https://github.com/apple/cups/issues/4690">Issue #4690</a>)</li>
-       <li>The scheduler did not use the ConfigFilePerm setting when copying PPD files or interface scripts attached to a request (<a href="https://github.com/apple/cups/issues/4703">Issue #4703</a>)</li>
-       <li>Now support new Chinese locale IDs and their correct fallback locales (&lt;rdar://problem/22086642&gt;, &lt;rdar://problem/22130168&gt;)</li>
-       <li>&quot;make check&quot; incorrectly reported an expectation of 18 warning messages when 8 were expected (<a href="https://github.com/apple/cups/issues/4684">Issue #4684</a>)</li>
-       <li>The new PDF file type rule did not work (<a href="https://github.com/apple/cups/issues/4692">Issue #4692</a>)</li>
-       <li>The scheduler did not update the jobs.cache file when job files were expired (<a href="https://github.com/apple/cups/issues/4706">Issue #4706</a>)</li>
-       <li>Fixed some configure script issues (<a href="https://github.com/apple/cups/issues/4694">Issue #4694</a>, <a href="https://github.com/apple/cups/issues/4695">Issue #4695</a>, <a href="https://github.com/apple/cups/issues/4698">Issue #4698</a>)</li>
-       <li>Documentation updates (<a href="https://github.com/apple/cups/issues/4691">Issue #4691</a>, <a href="https://github.com/apple/cups/issues/4693">Issue #4693</a>)</li>
-</ul>
-
-
-<h2 class="title"><a name="0201rc1">CUPS 2.1rc1</a> <em>(July 31, 2015)</em></h2>
-
-<ul>
-       <li>Added support for 3D printers (basic types only, no built-in filters) based on PWG white paper.</li>
-       <li>Fixed bugs in the new journald support (<a href="https://github.com/apple/cups/issues/4655">Issue #4655</a>, <a href="https://github.com/apple/cups/issues/4658">Issue #4658</a>, <a href="https://github.com/apple/cups/issues/4661">Issue #4661</a>)</li>
-       <li>Fixed domain socket support on Linux (<a href="https://github.com/apple/cups/issues/4679">Issue #4679</a>)</li>
-       <li>Fixed signal handlers in the dnssd and usb backends (<a href="https://github.com/apple/cups/issues/4671">Issue #4671</a>)</li>
-       <li>&lt;Limit All&gt; in &lt;Policy&gt; sections now applies to all operations when used by itself (<a href="https://github.com/apple/cups/issues/4659">Issue #4659</a>)</li>
-       <li>Configure script changes for systemd support (<a href="https://github.com/apple/cups/issues/4669">Issue #4669</a>)</li>
-       <li>Updated autoconf sources to use newer form of AC_INIT (<a href="https://github.com/apple/cups/issues/4664">Issue #4664</a>)</li>
-</ul>
-
-
-<h2 class="title"><a name="0201b1">CUPS 2.1b1</a> <em>(June 8, 2015)</em></h2>
-
-<ul>
-       <li>Improved speed of ppdMarkDefaults for complex/large PPDs (&lt;rdar://problem/15146999&gt;)</li>
-       <li>The IPP backend now stops sending print data if the printer indicates the job has been aborted or canceled (&lt;rdar://problem/17837631&gt;)</li>
-       <li>The IPP backend now sends the job-pages-per-set attribute when printing multiple copy jobs with finishings (&lt;rdar://problem/16792757&gt;)</li>
-       <li>The IPP backend now updates the cupsMandatory values when the printer configuration changes (&lt;rdar://problem/18126570&gt;)</li>
-       <li>No longer install banner files since third-party banner filters now supply their own (<a href="https://github.com/apple/cups/issues/4518">Issue #4518</a>)</li>
-       <li>Added support for EXPECT-ALL directive in ipptool test files (<a href="https://github.com/apple/cups/issues/4469">Issue #4469</a>)</li>
-       <li>Added support for WITH-VALUE-FROM predicate in ipptool test files (<a href="https://github.com/apple/cups/issues/4470">Issue #4470</a>)</li>
-       <li>The scheduler no longer listens on the loopback interface unless the web interface or printer sharing are enabled (&lt;rdar://problem/9136448&gt;)</li>
-       <li>Added a PPD generator for IPP Everywhere printers (<a href="https://github.com/apple/cups/issues/4258">Issue #4258</a>)</li>
-       <li>Now install &quot;default&quot; versions of more configuration files (&lt;rdar://problem/19024491&gt;)</li>
-       <li>The cupstestppd program did not handle &quot;maxsize(nnn)&quot; entries in cupsFilter/cupsFilter2 values (&lt;rdar://problem/18974858&gt;)</li>
-       <li>The scheduler now checks the return value of rename() calls (<a href="https://github.com/apple/cups/issues/4589">Issue #4589</a>)</li>
-       <li>The scheduler now validates ErrorPolicy values in config files (<a href="https://github.com/apple/cups/issues/4591">Issue #4591</a>)</li>
-       <li>Long cookies caused the web interface to stop working (<a href="https://github.com/apple/cups/issues/4619">Issue #4619</a>)</li>
-       <li>Added SSLOptions values to allow Diffie-Hellman key exchange and disable TLS/1.0 support.</li>
-       <li>Updated the scheduler to support more IPP Everywhere attributes (<a href="https://github.com/apple/cups/issues/4630">Issue #4630</a>)</li>
-       <li>The scheduler now supports advanced ASL and journald logging when &quot;syslog&quot; output is configured (<a href="https://github.com/apple/cups/issues/4474">Issue #4474</a>)</li>
-       <li>The scheduler now supports logging to stderr when running in the foreground (<a href="https://github.com/apple/cups/issues/4505">Issue #4505</a>)</li>
-</ul>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col col-featured">
+          <h1>Release Notes</h1>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col">
+          <h2 id="020303op2">CUPS 2.3.3op2</a> <em>(February 1, 2021)</em></h2>
+
+          <ul>
+            <li>Security: Fixed a buffer (read) overflow in the `ippReadIO` function (CVE-2020-10001)</li>
+            <li>Clarified the documentation for the "Listen" directive (Issue #53)</li>
+            <li>Fixed duplicate ColorModel entries for AirPrint printers (Issue 59)</li>
+            <li>Fixed directory/permission defaults for Debian kfreebsd-based systems (Issue #60, Issue #61)</li>
+            <li>Fixed crash bug in `ppdOpen` (Issue #64, Issue #78)</li>
+            <li>Fixed regression in `snprintf` emulation function (Issue #67)</li>
+            <li>The scheduler's systemd service file now waits for the nslcd service to start (Issue #69)</li>
+            <li>The libusb-based USB backend now uses a simpler read timer implementation to avoid a regression in a previous change (Issue #72)</li>
+            <li>The PPD caching code now only tracks the `APPrinterIconPath` value on macOS (Issue #73)</li>
+            <li>Fixed segfault in help.cgi when searching in man pages (Issue #81)</li>
+            <li>Root certificates were incorrectly stored in "~/.cups/ssl".</li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col">
+          <h2 id="020303op1">CUPS 2.3.3op1</a> <em>(November 27, 2020)</em></h2>
+
+          <ul>
+            <li>The automated test suite can now be activated using `make test` for consistency with other projects and CI environments - the old `make check` continues to work as well, and the previous test server behavior can be accessed by running `make testserver`.</li>
+            <li>ippeveprinter now supports multiple icons and strings files.</li>
+            <li>ippeveprinter now uses the system's FQDN with Avahi.</li>
+            <li>ippeveprinter now supports Get-Printer-Attributes on "/".</li>
+            <li>ippeveprinter now uses a deterministic "printer-uuid" value.</li>
+            <li>ippeveprinter now uses system sounds on macOS for Identify-Printer.</li>
+            <li>Updated ippfind to look for files in "~/Desktop" on Windows.</li>
+            <li>Updated ippfind to honor `SKIP-XXX` directives with `PAUSE`.</li>
+            <li>Updated IPP Everywhere support to work around printers that only advertise color raster support but really also support grayscale (Issue #1)</li>
+            <li>ipptool now supports DNS-SD URIs like `ipps://My%20Printer._ipps._tcp.local` (Issue #5)</li>
+            <li>The scheduler now allows root backends to have world read permissions but not world execute permissions (Issue #21)</li>
+            <li>Failures to bind IPv6 listener sockets no longer cause errors if IPv6 is disabled on the host (Issue #25)</li>
+            <li>The SNMP backend now supports the HP and Ricoh vendor MIBs (Issue #28)</li>
+            <li>The scheduler no longer includes a timestamp in files it writes (Issue #29)</li>
+            <li>The systemd service names are now "cups.service" and "cups-lpd.service" (Issue #30, Issue #31)</li>
+            <li>The scheduler no longer adds the local hostname to the ServerAlias list (Issue #32)</li>
+            <li>Added `LogFileGroup` directive in "cups-files.conf" to control the group owner of log files (Issue #34)</li>
+            <li>Added `--with-max-log-size` configure option (Issue #35)</li>
+            <li>Added `--enable-sync-on-close` configure option (Issue #37)</li>
+            <li>Added `--with-error-policy` configure option (Issue #38)</li>
+            <li>IPP Everywhere PPDs could have an "unknown" default InputSlot (Issue #44)</li>
+            <li>The `httpAddrListen` function now uses a listen backlog of 128.</li>
+            <li>Added USB quirks (Apple issue #5789, #5823, #5831)</li>
+            <li>Fixed IPP Everywhere v1.1 conformance issues in ippeveprinter.</li>
+            <li>Fixed DNS-SD name collision support in ippeveprinter.</li>
+            <li>Fixed compiler and code analyzer warnings.</li>
+            <li>Fixed TLS support on Windows.</li>
+            <li>Fixed ippfind sub-type searches with Avahi.</li>
+            <li>Fixed the default hostname used by ippeveprinter on macOS.</li>
+            <li>Fixed resolution of local IPP-USB printers with Avahi.</li>
+            <li>Fixed coverity issues (Issue #2)</li>
+            <li>Fixed `httpAddrConnect` issues (Issue #3)</li>
+            <li>Fixed web interface device URI issue (Issue #4)</li>
+            <li>Fixed lp/lpr "printer/class not found" error reporting (Issue #6)</li>
+            <li>Fixed xinetd support for LPD clients (Issue #7)</li>
+            <li>Fixed libtool build issue (Issue #11)</li>
+            <li>Fixed a memory leak in the scheduler (Issue #12)</li>
+            <li>Fixed a potential integer overflow in the PPD hashing code (Issue #13)</li>
+            <li>Fixed output-bin and print-quality handling issues (Issue #18)</li>
+            <li>Fixed PPD options getting mapped to odd IPP values like "tray---4" (Issue #23)</li>
+            <li>Fixed remote access to the cupsd.conf and log files (Issue #24)</li>
+            <li>Fixed the automated test suite when running in certain build/CI environments (Issue #25)</li>
+            <li>Fixed a logging regression caused by a previous change for Apple issue #5604 (Issue #25)</li>
+            <li>Fixed fax phone number handling with GNOME (Issue #40)</li>
+            <li>Fixed potential rounding error in rastertopwg filter (Issue #41)</li>
+            <li>Fixed the "uri-security-supported" value from the scheduler (Issue #42)</li>
+            <li>Fixed IPP backend crash bug with "printer-alert" values (Issue #43)</li>
+            <li>Removed old Solaris inetconv(1m) reference in cups-lpd man page (Issue #46)</li>
+            <li>Fixed default options that incorrectly use the "custom" prefix (Issue #48)</li>
+            <li>Fixed a memory leak when resolving DNS-SD URIs (Issue #49)</li>
+            <li>Fixed systemd status reporting by adopting the notify interface (Issue #51)</li>
+            <li>Fixed crash in rastertopwg (Apple issue #5773)</li>
+            <li>Fixed cupsManualCopies values in IPP Everywhere PPDs (Apple issue #5807)</li>
+          </ul>
+        </div>
+      </div>
+    </div>
diff --git a/documentation.html b/documentation.html
deleted file mode 100644 (file)
index 847d079..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Documentation - OpenPrinting CUPS
-layout: default
----
-
-<div class="jumbotron">
-  <h1>Documentation</h1>
-</div>
-
-<h2>Getting Started</h2>
-
-<div class="row">
-       <div class="col-md-4"><a href="doc/admin.html">Command-Line Printer Administration</a></div>
-       <div class="col-md-4"><a href="doc/options.html">Command-Line Printing and Options</a></div>
-       <div class="col-md-4"><a href="doc/firewalls.html">Firewalls</a></div>
-       <div class="col-md-4"><a href="doc/glossary.html">Glossary</a></div>
-       <div class="col-md-4"><a href="doc/encryption.html">Managing Encryption Policies</a></div>
-       <div class="col-md-4"><a href="doc/policies.html">Managing Operation Policies</a></div>
-       <div class="col-md-4"><a href="doc/overview.html">Overview of CUPS</a></div>
-       <div class="col-md-4"><a href="doc/accounting.html">Printer Accounting Basics</a></div>
-       <div class="col-md-4"><a href="doc/sharing.html">Printer Sharing</a></div>
-       <div class="col-md-4"><a href="doc/relnotes.html">Release Notes</a></div>
-       <div class="col-md-4"><a href="doc/reporting-bugs.html">Reporting Bugs</a></div>
-       <div class="col-md-4"><a href="doc/security.html">Server Security</a></div>
-       <div class="col-md-4"><a href="doc/license.html">Software License Agreement</a></div>
-       <div class="col-md-4"><a href="doc/translation.html">Translating and Customizing CUPS</a></div>
-       <div class="col-md-4"><a href="doc/cgi.html">Using CGI Programs</a></div>
-       <div class="col-md-4"><a href="doc/kerberos.html">Using Kerberos Authentication</a></div>
-       <div class="col-md-4"><a href="doc/network.html">Using Network Printers</a></div>
-</div>
-
-<h2>Man Pages</h2>
-
-<div class="row">
-       <div class="col-md-2"><a href="doc/man-cancel.html">cancel(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-classes.conf.html">classes.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-client.conf.html">client.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups.html">cups(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups-config.html">cups-config(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups-files.conf.html">cups-files.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups-lpd.html">cups-lpd(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups-snmp.html">cups-snmp(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsaccept.html">cupsaccept(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsctl.html">cupsctl(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsd.html">cupsd(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsd-helper.html">cupsd-helper(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsd-logs.html">cupsd-logs(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsd.conf.html">cupsd.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsenable.html">cupsenable(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupsfilter.html">cupsfilter(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-cupstestppd.html">cupstestppd(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-ippeveprinter.html">ippeveprinter(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-ippevepcl.html">ippevepcl/ps(7)</a></div>
-       <div class="col-md-2"><a href="doc/man-ippfind.html">ippfind(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-ipptool.html">ipptool(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-ipptoolfile.html">ipptoolfile(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-lp.html">lp(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpadmin.html">lpadmin(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpc.html">lpc(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpinfo.html">lpinfo(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpmove.html">lpmove(8)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpoptions.html">lpoptions(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpq.html">lpq(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpr.html">lpr(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-lprm.html">lprm(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-lpstat.html">lpstat(1)</a></div>
-       <div class="col-md-2"><a href="doc/man-mailto.conf.html">mailto.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-notifier.html">notifier(7)</a></div>
-       <div class="col-md-2"><a href="doc/man-printers.conf.html">printers.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-cups-snmp.conf.html">snmp.conf(5)</a></div>
-       <div class="col-md-2"><a href="doc/man-subscriptions.conf.html">subscriptions.conf(5)</a></div>
-</div>
-
-<h2>Programming</h2>
-
-<div class="row">
-       <div class="col-md-4"><a href="doc/cupspm.html">CUPS Programming Manual (HTML)</a></div>
-       <div class="col-md-4"><a href="doc/cupspm.epub">CUPS Programming Manual (EPUB)</a></div>
-       <div class="col-md-4"><a href="doc/api-admin.html">Administrative APIs</a></div>
-</div>
-
-<h2>References</h2>
-
-<div class="row">
-       <div class="col-md-4"><a href="doc/spec-design.html">CUPS Design Description</a></div>
-       <div class="col-md-4"><a href="doc/spec-ipp.html">CUPS Implementation of IPP</a></div>
-       <div class="col-md-4"><a href="doc/spec-ppd.html">CUPS PPD Extensions</a></div>
-       <div class="col-md-4"><a href="doc/spec-raster.html">CUPS Raster Format</a></div>
-       <div class="col-md-4"><a href="doc/spec-stp.html">CUPS Software Test Plan</a></div>
-</div>
diff --git a/faq.html b/faq.html
deleted file mode 100644 (file)
index d36fced..0000000
--- a/faq.html
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Frequently Asked Questions - OpenPrinting CUPS
-layout: default
----
-
-<div class="jumbotron">
-  <h1>Frequently Asked Questions</h1>
-</div>
-
-<h2><a name="LOGIN">What Username and Password Do I Use?</a></h2>
-
-<p>If you are asked for a username and password when accessing the CUPS web interface (localhost:631), use your login name and password. This is the same information you use to access your computer every day, unlock your computer's screen saver, install new software, etc.</p>
-
-<p>Common variations:</p>
-
-<blockquote>Q: I want to add a printer but was asked to enter a name and password. Which name and password do I use?<br>&nbsp;<br>
-<em>A: Use the username and password for your computer.</em></blockquote>
-
-<blockquote>Q: I am trying to add a printer through the CUPS GUI. But when I enter my CUPS.org username and password it just keeps asking me for my username and password! How can I use the CUPS GUI?<br>&nbsp;<br>
-<em>A: Do not try to use your CUPS.org username and password. They will not work. Use the username and password for your computer.</em></blockquote>
-
-<blockquote>Q: The CUPS web interface keeps asking me for a password, but I don't have one on this computer. How can I use the web interface?<br>&nbsp;<br>
-<em>A: If you have setup your computer to not require a password or have a blank or empty password, then the CUPS web interface will not work for you. CUPS requires a login username and password to allow you to make changes through the web interface.</em></blockquote>
-
-<h2><a name="UNICODEPASS">Why Can't I Use a Password Like こんにちは?</a></h2>
-
-<p>Unicode passwords are poorly supported by web browsers, the Hypertext Transfer Protocol (HTTP), and by UNIX in general. Many browsers simply truncate password characters at 8 bits (!) and there is no way to know which character set is being used by the Pluggable Authentication Module (PAM) provided by the operating system. Thus, there is no way to reliably support Unicode passwords today.</p>
-
-<p>The Internet Engineering Task Force (IETF) is working on updates to HTTP that will allow servers to advertise support for UTF-8 passwords - assuming that browsers adopt the updates and PAM allows or supports UTF-8 passwords, we may be able to support Unicode passwords in the future.</p>
index 0ea43d22b3a9f3c451dbde8a1af82254bf91ca66..0d18edcdf7901aeecb8dd29710780841d83ba114 100644 (file)
 title: OpenPrinting CUPS
 layout: default
 ---
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col col-md-9">
+          <h1>OpenPrinting CUPS</h1>
+          <p>OpenPrinting CUPS is the standards-based, open source printing system developed by <a class="jumbolink" href="https://openprinting.github.io/" target="_blank">OpenPrinting</a> for Linux® and other Unix®-like operating systems. CUPS uses <a href="https://www.pwg.org/ipp/everywhere.html" target="_blank">IPP Everywhere™</a> to support printing to local and network printers.</p>
+          <p style="line-height: 2;">
+            <a class="btn btn-primary btn-large" href="{{site.github.repository_url}}/releases"><i class="bi bi-download"></i> Download CUPS</a>
+            <a class="btn btn-auto btn-large" href="#DOCUMENTATION"><i class="bi bi-book"></i> Documentation</a>
+          </p>
+        </div>
+        <div class="col col-md-3">
+          <img class="logo-mascot">
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col col-section">
+          <h2>Introduction</h2>
+          <p>OpenPrinting CUPS is a standards-based, open source printing system for Linux® and other Unix®-like operating systems.  CUPS supports printing to:</p>
+          <ul>
+            <li><a href="https://support.apple.com/en-us/HT201311" target="_blank">AirPrint™</a> and <a href="https://www.pwg.org/ipp/everywhere.html" blank="_blank">IPP Everywhere™</a> printers,</li>
+            <li>Network and local (USB) printers with Printer Applications, and</li>
+            <li>Network and local (USB) printers with (legacy) PPD-based printer drivers.</li>
+          </ul>
+          <p>CUPS provides the System V ("lp") and Berkeley ("lpr") command-line interfaces, a configurable web interface, a C API, and common print filters, drivers, and backends for printing. The <a href="https://github.com/openprinting/cups-filters" target="_blank">cups-filters</a> project provides additional filters and drivers.</p>
+          <p>CUPS is licensed under the <a href="doc/license.html" target="_blank">Apache License Version 2.0</a> with an exception to allow linking against GNU GPL2-only software.</p>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row py-3">
+        <div class="col col-normal">
+          <h2>Setting Up Printer Queues</h2>
 
-<div class="jumbotron">
-  <h1>OpenPrinting CUPS</h1>
-  <p>OpenPrinting CUPS is the standards-based, open source printing system developed by <a class="jumbolink" href="https://openprinting.github.io/">OpenPrinting</a> for Linux<sup>&reg;</sup> and other operating systems. CUPS uses the Internet Printing Protocol (IPP) to support printing to local and network printers.</p>
-  <p class="cups-buttons">
-    <a class="btn btn-primary btn-large" href="{{site.github.repository_url}}/releases">Download CUPS</a>
-    <a class="btn btn-bright btn-large" href="{{site.github.repository_url}}">Github Repository</a>
-    <a class="btn btn-bright btn-large" href="doc/license.html">License</a>
-    <a class="btn btn-bright btn-large" href="{{site.github.issues_url}}">Reporting Bugs</a>
-    <a class="btn btn-bright btn-large" href="faq.html">Frequently Asked Questions</a>
-  </p>
-</div>
-
-{% for post in site.posts offset: 0 limit: 8 %}
-<h2><small class="float-right muted">{{ post.date | date_to_string }}</small>{{post.title}}</h2>
-{{ post.excerpt }}
-{% if post.excerpt != post.content %}
-<p><a class="btn btn-default btn-xs" href=".{{ post.url }}">Read</a></p>
-{% endif %}
-{% endfor %}
+          <p>CUPS includes a web-based administration tool that allows you to manage printers, classes, and jobs on your server.  Open <a href="http://localhost:631/admin/" target="_blank">http://localhost:631/admin/</a> in your browser to access the printer administration tools. 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.</p>
+          <p>The "lpadmin" command is used to manage printers from the command-line. For example, the following command creates a print queue called "myprinter" for an IPP Everywhere printer at address "11.22.33.44":
+          <pre>lpadmin -p myprinter -E -v "ipp://11.22.33.44/ipp/print" -m everywhere</pre>
+          <p>You can run the "lpinfo" command to list all of the available drivers ("lpinfo -m") or printers ("lpinfo -v").</p>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row py-3">
+        <div class="col col-normal">
+          <h2>Printing Files</h2>
+
+          <p>CUPS provides both the System V ("lp") and Berkeley ("lpr") commands for printing:</p>
+
+          <pre>lp filename
+lpr filename</pre>
+
+          <p>Both the "lp" and "lpr" commands support printing options for the driver:</p>
+
+          <pre>lp -o media=A4 -o resolution=600dpi filename
+lpr -o media=A4 -o resolution=600dpi filename</pre>
+
+          <p>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.</p>
+
+          <p>If you have an application that generates output specifically for your printer
+          then you need to use the "-o raw" or "-l" options:</p>
+
+          <pre>lp -o raw filename
+lpr -l filename</pre>
+
+          <p>This will prevent the filters from misinterpreting your print file.
+          <span id="DOCUMENTATION">&nbsp;</span></p>
+        </div>
+      </div>
+    </div>
+    <div class="container-fluid">
+      <div class="row">
+        <div class="col col-md-12 col-section">
+          <h1>Documentation</h1>
+        </div>
+        <div class="col col-md-12">
+          <h2>Getting Started</h2>
+        </div>
+        <div class="col col-md-4"><a href="doc/admin.html">Command-Line Printer Administration</a></div>
+        <div class="col col-md-4"><a href="doc/options.html">Command-Line Printing and Options</a></div>
+        <div class="col col-md-4"><a href="doc/firewalls.html">Firewalls</a></div>
+        <div class="col col-md-4"><a href="doc/glossary.html">Glossary</a></div>
+        <div class="col col-md-4"><a href="doc/encryption.html">Managing Encryption Policies</a></div>
+        <div class="col col-md-4"><a href="doc/policies.html">Managing Operation Policies</a></div>
+        <div class="col col-md-4"><a href="doc/overview.html">Overview of CUPS</a></div>
+        <div class="col col-md-4"><a href="doc/accounting.html">Printer Accounting Basics</a></div>
+        <div class="col col-md-4"><a href="doc/sharing.html">Printer Sharing</a></div>
+        <div class="col col-md-4"><a href="doc/relnotes.html">Release Notes</a></div>
+        <div class="col col-md-4"><a href="doc/reporting-bugs.html">Reporting Bugs</a></div>
+        <div class="col col-md-4"><a href="doc/security.html">Server Security</a></div>
+        <div class="col col-md-4"><a href="doc/license.html">Software License Agreement</a></div>
+        <div class="col col-md-4"><a href="doc/translation.html">Translating and Customizing CUPS</a></div>
+        <div class="col col-md-4"><a href="doc/cgi.html">Using CGI Programs</a></div>
+        <div class="col col-md-4"><a href="doc/kerberos.html">Using Kerberos Authentication</a></div>
+        <div class="col col-md-4"><a href="doc/network.html">Using Network Printers</a></div>
+        <div class="col col-md-12">
+          <h2 class="mt-3">Man Pages</h2>
+        </div>
+        <div class="col col-md-3"><a href="doc/man-cancel.html">cancel(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-classes.conf.html">classes.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-client.conf.html">client.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups.html">cups(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups-config.html">cups-config(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups-files.conf.html">cups-files.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups-lpd.html">cups-lpd(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups-snmp.html">cups-snmp(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsaccept.html">cupsaccept(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsctl.html">cupsctl(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsd.html">cupsd(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsd-helper.html">cupsd-helper(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsd-logs.html">cupsd-logs(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsd.conf.html">cupsd.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsenable.html">cupsenable(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupsfilter.html">cupsfilter(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cupstestppd.html">cupstestppd(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-ippeveprinter.html">ippeveprinter(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-ippevepcl.html">ippevepcl/ps(7)</a></div>
+        <div class="col col-md-3"><a href="doc/man-ippfind.html">ippfind(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-ipptool.html">ipptool(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-ipptoolfile.html">ipptoolfile(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lp.html">lp(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpadmin.html">lpadmin(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpc.html">lpc(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpinfo.html">lpinfo(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpmove.html">lpmove(8)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpoptions.html">lpoptions(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpq.html">lpq(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpr.html">lpr(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lprm.html">lprm(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-lpstat.html">lpstat(1)</a></div>
+        <div class="col col-md-3"><a href="doc/man-mailto.conf.html">mailto.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-notifier.html">notifier(7)</a></div>
+        <div class="col col-md-3"><a href="doc/man-printers.conf.html">printers.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-cups-snmp.conf.html">snmp.conf(5)</a></div>
+        <div class="col col-md-3"><a href="doc/man-subscriptions.conf.html">subscriptions.conf(5)</a></div>
+        <div class="col col-md-12">
+          <h2 class="mt-3">Programming</h2>
+        </div>
+        <div class="col col-md-4"><a href="doc/cupspm.html">CUPS Programming Manual (HTML)</a></div>
+        <div class="col col-md-4"><a href="doc/cupspm.epub">CUPS Programming Manual (EPUB)</a></div>
+        <div class="col col-md-4"><a href="doc/api-admin.html">Administrative APIs</a></div>
+        <div class="col col-md-12">
+          <h2 class="mt-3">References</h2>
+        </div>
+        <div class="col col-md-4"><a href="doc/spec-design.html">CUPS Design Description</a></div>
+        <div class="col col-md-4"><a href="doc/spec-ipp.html">CUPS Implementation of IPP</a></div>
+        <div class="col col-md-4"><a href="doc/spec-ppd.html">CUPS PPD Extensions</a></div>
+        <div class="col col-md-4"><a href="doc/spec-raster.html">CUPS Raster Format</a></div>
+        <div class="col col-md-4"><a href="doc/spec-stp.html">CUPS Software Test Plan</a></div>
+      </div>
+    </div>