Imported Upstream version 2.2.1 17/92817/1 upstream/2.2.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 19 Oct 2016 01:13:13 +0000 (10:13 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 19 Oct 2016 01:13:23 +0000 (10:13 +0900)
Change-Id: If15a6d5bb3fb4bba5863645a36e057f09179b4d7
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
28 files changed:
CHANGES.txt
CREDITS.txt
INSTALL.txt
README.txt
backend/ieee1284.c
configure
configure.ac
cups/cups.h
cups/hash.c
cups/http-addrlist.c
cups/tls-gnutls.c
doc/Makefile
doc/help/encryption.html [new file with mode: 0644]
doc/help/network.html
doc/help/security.html
locale/cups_de.po
man/backend.man
man/client.conf.man.in
man/cups-files.conf.man.in
man/cups-lpd.man.in
man/cupsd.conf.man.in
packaging/cups.list.in
packaging/cups.spec
packaging/cups.spec.in
scheduler/auth.c
scheduler/conf.c
scheduler/conf.h
test/run-stp-tests.sh

index ff4f188..1b3dcde 100644 (file)
@@ -1,6 +1,19 @@
-CHANGES.txt - 2.2.0 - 2016-09-13
+CHANGES.txt - 2.2.1 - 2016-10-03
 --------------------------------
 
+CHANGES IN CUPS V2.2.1
+
+       - Added "CreateSelfSignedCerts" directive for cups-files.conf to
+          control whether the scheduler automatically creates its own
+          self-signed X.509 certificates for TLS connections (Issue #4876)
+        - http*Connect did not handle partial failures (Issue #4870)
+        - Addressed some build warnings on Linux (Issue #4881)
+        - cupsHashData did not use the correct hashing algorithm
+          (<rdar://problem/28209220>)
+        - Updated man pages (PR #4885)
+        - Updated localizations (PR #4877, PR #4886)
+
+
 CHANGES IN CUPS V2.2.0
 
        - Normalized the TLS certificate validation code and added additional
index edd8ff0..04cb814 100644 (file)
@@ -41,6 +41,7 @@ like to thank the following individuals for their contributions:
     Petter Reinholdtsen            - HP-UX compiler stuff.
     Juan Pablo González Riopedre   - Spanish localization.
     Giovanni Scafora               - Italian localization.
+    Joachim Schwender              - German localization.
     Opher Shachar                  - Hebrew localization.
     Stuart Stevens                 - HP JetDirect IPP information.
     Andrea Suatoni                 - IRIX desktop integration and testing.
index a9b86cd..f498d87 100644 (file)
@@ -1,4 +1,4 @@
-INSTALL - CUPS v2.2.0 - 2016-09-13
+INSTALL - CUPS v2.2.1 - 2016-10-03
 ----------------------------------
 
 This file describes how to compile and install CUPS from source code. For more
index ddad00f..9cea07f 100644 (file)
@@ -1,4 +1,4 @@
-README - CUPS v2.2.0 - 2016-09-13
+README - CUPS v2.2.1 - 2016-10-03
 ---------------------------------
 
 Looking for compile instructions?  Read the file "INSTALL.txt" instead...
index c77403b..0488174 100644 (file)
@@ -88,7 +88,7 @@ backendGetDeviceID(
     *device_id = '\0';
 
 #  ifdef __linux
-    if (ioctl(fd, LPIOC_GET_DEVICE_ID(device_id_size), device_id))
+    if (ioctl(fd, LPIOC_GET_DEVICE_ID((unsigned)device_id_size), device_id))
     {
      /*
       * Linux has to implement things differently for every device it seems.
index f084324..ad5f12b 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for CUPS 2.2.0.
+# Generated by GNU Autoconf 2.68 for CUPS 2.2.1.
 #
 # Report bugs to <https://github.com/apple/cups/issues>.
 #
@@ -560,8 +560,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='CUPS'
 PACKAGE_TARNAME='cups'
-PACKAGE_VERSION='2.2.0'
-PACKAGE_STRING='CUPS 2.2.0'
+PACKAGE_VERSION='2.2.1'
+PACKAGE_STRING='CUPS 2.2.1'
 PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
 PACKAGE_URL='https://www.cups.org/'
 
@@ -1448,7 +1448,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures CUPS 2.2.0 to adapt to many kinds of systems.
+\`configure' configures CUPS 2.2.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1509,7 +1509,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of CUPS 2.2.0:";;
+     short | recursive ) echo "Configuration of CUPS 2.2.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1689,7 +1689,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-CUPS configure 2.2.0
+CUPS configure 2.2.1
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2153,7 +2153,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by CUPS $as_me 2.2.0, which was
+It was created by CUPS $as_me 2.2.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2527,7 +2527,7 @@ esac
 ac_config_headers="$ac_config_headers config.h"
 
 
-CUPS_VERSION="2.2.0"
+CUPS_VERSION="2.2.1"
 CUPS_REVISION=""
 CUPS_BUILD="cups-$CUPS_VERSION"
 
@@ -10755,7 +10755,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by CUPS $as_me 2.2.0, which was
+This file was extended by CUPS $as_me 2.2.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10818,7 +10818,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-CUPS config.status 2.2.0
+CUPS config.status 2.2.1
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
index a96b623..b00ed4b 100644 (file)
@@ -15,7 +15,7 @@ dnl We need at least autoconf 2.60...
 AC_PREREQ(2.60)
 
 dnl Package name and version...
-AC_INIT([CUPS], [2.2.0], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
+AC_INIT([CUPS], [2.2.1], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
 
 sinclude(config-scripts/cups-opsys.m4)
 sinclude(config-scripts/cups-common.m4)
index c9bea80..cef5697 100644 (file)
@@ -47,10 +47,10 @@ extern "C" {
  * Constants...
  */
 
-#  define CUPS_VERSION                 2.0200
+#  define CUPS_VERSION                 2.0201
 #  define CUPS_VERSION_MAJOR           2
 #  define CUPS_VERSION_MINOR           2
-#  define CUPS_VERSION_PATCH           0
+#  define CUPS_VERSION_PATCH           1
 
 #  define CUPS_BC_FD                   3
                                        /* Back-channel file descriptor for
index 6b7b6da..d52807e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Hashing function for CUPS.
  *
- * Copyright 2015 by Apple Inc.
+ * Copyright 2015-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -53,7 +53,7 @@ cupsHashData(const char    *algorithm,        /* I - Algorithm name */
   }
 
 #ifdef __APPLE__
-  if (strcmp(algorithm, "sha"))
+  if (!strcmp(algorithm, "sha"))
   {
    /*
     * SHA-1...
@@ -70,7 +70,7 @@ cupsHashData(const char    *algorithm,        /* I - Algorithm name */
 
     return (CC_SHA1_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-224"))
+  else if (!strcmp(algorithm, "sha2-224"))
   {
     CC_SHA256_CTX      ctx;            /* SHA-224 context */
 
@@ -83,7 +83,7 @@ cupsHashData(const char    *algorithm,        /* I - Algorithm name */
 
     return (CC_SHA224_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-256"))
+  else if (!strcmp(algorithm, "sha2-256"))
   {
     CC_SHA256_CTX      ctx;            /* SHA-256 context */
 
@@ -96,7 +96,7 @@ cupsHashData(const char    *algorithm,        /* I - Algorithm name */
 
     return (CC_SHA256_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-384"))
+  else if (!strcmp(algorithm, "sha2-384"))
   {
     CC_SHA512_CTX      ctx;            /* SHA-384 context */
 
@@ -109,7 +109,7 @@ cupsHashData(const char    *algorithm,      /* I - Algorithm name */
 
     return (CC_SHA384_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-512"))
+  else if (!strcmp(algorithm, "sha2-512"))
   {
     CC_SHA512_CTX      ctx;            /* SHA-512 context */
 
@@ -122,7 +122,7 @@ cupsHashData(const char    *algorithm,      /* I - Algorithm name */
 
     return (CC_SHA512_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-512_224"))
+  else if (!strcmp(algorithm, "sha2-512_224"))
   {
     CC_SHA512_CTX      ctx;            /* SHA-512 context */
     unsigned char      temp[CC_SHA512_DIGEST_LENGTH];
@@ -143,7 +143,7 @@ cupsHashData(const char    *algorithm,      /* I - Algorithm name */
 
     return (CC_SHA224_DIGEST_LENGTH);
   }
-  else if (strcmp(algorithm, "sha2-512_256"))
+  else if (!strcmp(algorithm, "sha2-512_256"))
   {
     CC_SHA512_CTX      ctx;            /* SHA-512 context */
     unsigned char      temp[CC_SHA512_DIGEST_LENGTH];
@@ -171,22 +171,22 @@ cupsHashData(const char    *algorithm,    /* I - Algorithm name */
   unsigned char        temp[64];               /* Temporary hash buffer */
   size_t       tempsize = 0;           /* Truncate to this size? */
 
-  if (strcmp(algorithm, "sha"))
+  if (!strcmp(algorithm, "sha"))
     alg = GNUTLS_DIG_SHA1;
-  else if (strcmp(algorithm, "sha2-224"))
+  else if (!strcmp(algorithm, "sha2-224"))
     alg = GNUTLS_DIG_SHA224;
-  else if (strcmp(algorithm, "sha2-256"))
+  else if (!strcmp(algorithm, "sha2-256"))
     alg = GNUTLS_DIG_SHA256;
-  else if (strcmp(algorithm, "sha2-384"))
+  else if (!strcmp(algorithm, "sha2-384"))
     alg = GNUTLS_DIG_SHA384;
-  else if (strcmp(algorithm, "sha2-512"))
+  else if (!strcmp(algorithm, "sha2-512"))
     alg = GNUTLS_DIG_SHA512;
-  else if (strcmp(algorithm, "sha2-512_224"))
+  else if (!strcmp(algorithm, "sha2-512_224"))
   {
     alg      = GNUTLS_DIG_SHA512;
     tempsize = 28;
   }
-  else if (strcmp(algorithm, "sha2-512_256"))
+  else if (!strcmp(algorithm, "sha2-512_256"))
   {
     alg      = GNUTLS_DIG_SHA512;
     tempsize = 32;
index 6e2ad81..e9ef53e 100644 (file)
@@ -304,6 +304,8 @@ httpAddrConnect2(
 
     if (result > 0)
     {
+      http_addrlist_t *connaddr = NULL;        /* Connected address, if any */
+
       for (i = 0; i < nfds; i ++)
       {
 #  ifdef HAVE_POLL
@@ -314,7 +316,7 @@ httpAddrConnect2(
 #  endif /* HAVE_POLL */
        {
          *sock    = fds[i];
-         addrlist = addrs[i];
+         connaddr = addrs[i];
 
 #  ifdef DEBUG
          len   = sizeof(peer);
@@ -322,11 +324,29 @@ httpAddrConnect2(
            DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...", httpAddrString(&peer, temp, sizeof(temp)), httpAddrPort(&peer)));
 #  endif /* DEBUG */
        }
-       else
+#  ifdef HAVE_POLL
+       else if (pfds[i].revents & (POLLERR | POLLHUP))
+#  else
+       else if (FD_ISSET(fds[i], &error))
+#  endif /* HAVE_POLL */
+        {
+         /*
+          * Error on socket, remove from the "pool"...
+          */
+
          httpAddrClose(NULL, fds[i]);
+          nfds --;
+          if (i < nfds)
+          {
+            memmove(fds + i, fds + i + 1, (size_t)(nfds - i) * (sizeof(fds[0])));
+            memmove(addrs + i, addrs + i + 1, (size_t)(nfds - i) * (sizeof(addrs[0])));
+          }
+          i --;
+        }
       }
 
-      return (addrlist);
+      if (connaddr)
+        return (connaddr);
     }
 #endif /* O_NONBLOCK */
 
index d5e639e..9941e51 100644 (file)
@@ -1371,34 +1371,46 @@ _httpTLSStart(http_t *http)             /* I - Connection to server */
     if (hostname[0])
     {
      /*
-      * First look for CA certs...
+      * First look in the CUPS keystore...
       */
 
-      snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostname);
-      snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostname);
-
-      if ((access(crtfile, R_OK) || access(keyfile, R_OK)) && (hostptr = strchr(hostname, '.')) != NULL)
-      {
-       /*
-        * Try just domain name...
-       */
-
-        hostptr ++;
-       if (strchr(hostptr, '.'))
-       {
-         snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
-         snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
-       }
-      }
+      http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, hostname, "crt");
+      http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, hostname, "key");
 
       if (access(crtfile, R_OK) || access(keyfile, R_OK))
       {
        /*
-        * Then look in the CUPS keystore...
-       */
-
-       http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, hostname, "crt");
-       http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, hostname, "key");
+        * No CUPS-managed certs, look for CA certs...
+        */
+
+        char cacrtfile[1024], cakeyfile[1024]; /* CA cert files */
+
+        snprintf(cacrtfile, sizeof(cacrtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostname);
+        snprintf(cakeyfile, sizeof(cakeyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostname);
+
+        if ((access(cacrtfile, R_OK) || access(cakeyfile, R_OK)) && (hostptr = strchr(hostname, '.')) != NULL)
+        {
+         /*
+          * Try just domain name...
+          */
+
+          hostptr ++;
+          if (strchr(hostptr, '.'))
+          {
+            snprintf(cacrtfile, sizeof(cacrtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
+            snprintf(cakeyfile, sizeof(cakeyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
+          }
+        }
+
+        if (!access(cacrtfile, R_OK) && !access(cakeyfile, R_OK))
+        {
+         /*
+          * Use the CA certs...
+          */
+
+          strlcpy(crtfile, cacrtfile, sizeof(crtfile));
+          strlcpy(keyfile, cakeyfile, sizeof(keyfile));
+        }
       }
 
       have_creds = !access(crtfile, R_OK) && !access(keyfile, R_OK);
@@ -1406,34 +1418,46 @@ _httpTLSStart(http_t *http)             /* I - Connection to server */
     else if (tls_common_name)
     {
      /*
-      * First look for CA certs...
+      * First look in the CUPS keystore...
       */
 
-      snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", tls_common_name);
-      snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", tls_common_name);
-
-      if ((access(crtfile, R_OK) || access(keyfile, R_OK)) && (hostptr = strchr(tls_common_name, '.')) != NULL)
-      {
-       /*
-        * Try just domain name...
-       */
-
-        hostptr ++;
-       if (strchr(hostptr, '.'))
-       {
-         snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
-         snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
-       }
-      }
+      http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, tls_common_name, "crt");
+      http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, tls_common_name, "key");
 
       if (access(crtfile, R_OK) || access(keyfile, R_OK))
       {
        /*
-        * Then look in the CUPS keystore...
-       */
-
-       http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, tls_common_name, "crt");
-       http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, tls_common_name, "key");
+        * No CUPS-managed certs, look for CA certs...
+        */
+
+        char cacrtfile[1024], cakeyfile[1024]; /* CA cert files */
+
+        snprintf(cacrtfile, sizeof(cacrtfile), "/etc/letsencrypt/live/%s/fullchain.pem", tls_common_name);
+        snprintf(cakeyfile, sizeof(cakeyfile), "/etc/letsencrypt/live/%s/privkey.pem", tls_common_name);
+
+        if ((access(cacrtfile, R_OK) || access(cakeyfile, R_OK)) && (hostptr = strchr(tls_common_name, '.')) != NULL)
+        {
+         /*
+          * Try just domain name...
+          */
+
+          hostptr ++;
+          if (strchr(hostptr, '.'))
+          {
+            snprintf(cacrtfile, sizeof(cacrtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
+            snprintf(cakeyfile, sizeof(cakeyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
+          }
+        }
+
+        if (!access(cacrtfile, R_OK) && !access(cakeyfile, R_OK))
+        {
+         /*
+          * Use the CA certs...
+          */
+
+          strlcpy(crtfile, cacrtfile, sizeof(crtfile));
+          strlcpy(keyfile, cakeyfile, sizeof(keyfile));
+        }
       }
 
       have_creds = !access(crtfile, R_OK) && !access(keyfile, R_OK);
index dc5add4..de4a9f6 100644 (file)
@@ -54,6 +54,7 @@ HELPFILES     =       \
                        help/api-ppd.html \
                        help/api-raster.html \
                        help/cgi.html \
+                       help/encryption.html \
                        help/glossary.html \
                        help/kerberos.html \
                        help/license.html \
diff --git a/doc/help/encryption.html b/doc/help/encryption.html
new file mode 100644 (file)
index 0000000..3dfa87e
--- /dev/null
@@ -0,0 +1,55 @@
+<!doctype html>
+<html>
+<!-- SECTION: Getting Started -->
+  <head>
+    <title>Managing Encryption</title>
+    <link rel="STYLESHEET" type="text/css" href="../cups-printable.css">
+  </head>
+  <body>
+    <h1 class="title">Managing Encryption</h1>
+    <p>CUPS supports TLS encryption in two ways:</p>
+    <ol>
+      <li>Using HTTPS (always on) as soon as a connection is established, and</li>
+      <li>Using HTTP Upgrade to TLS (opportunistic) after the connection is established.</li>
+    </ol>
+    <p>CUPS supports self-signed, CA-signed, and enterprise certificates, with configurable certificate validation, cipher suite, and SSL/TLS version policies.</p>
+    <p>Out of the box, CUPS uses a Trust On First Use ("TOFU") certificate validation policy like the popular Secure Shell (ssh) software, requires TLS/1.0 or higher, only allows secure cipher suites, and automatically creates a "self-signed" certificate and private key for the scheduler so that remote administration operations and printer sharing are encrypted by default.</p>
+
+    <h2>Configuring Client TLS Policies</h2>
+    <p>The <a href="man-client.conf.html"><var>client.conf</var></a> file controls the client TLS policies. The default policy is:</p>
+    <pre class="command">
+AllowAnyRoot Yes
+AllowExpiredCerts No
+Encryption IfRequested
+SSLOptions None
+TrustOnFirstUse Yes
+ValidateCerts No
+</pre>
+    <p>A client can be configured to only communicate with trusted TLS/1.1+ servers and printers by copying the corresponding certificates to the client (<a href="#PLATFORM">see below</a>) and using the following policy in the <var>client.conf</var> file or macOS<sup>&reg;</sup> printing preferences:</p>
+    <pre class="command">
+AllowAnyRoot No
+AllowExpiredCerts No
+Encryption Required
+SSLOptions DenyTLS1.0
+TrustOnFirstUse No
+ValidateCerts Yes
+</pre>
+    <p>Similarly, if a client needs to support an older server that only supports SSL/3.0 and RC4 cipher suites you can use the following policy option:</p>
+    <pre class="command">
+SSLOptions AllowRC4 AllowSSL3
+</pre>
+
+    <h2>Configuring Server TLS Policies</h2>
+    <p>Two directives in the <a href="man-cups-files.conf.html"><var>cups-files.conf</var></a> file control the server (scheduler) TLS policies - <a href="man-cups-files.conf.html#CreateSelfSignedCerts"><code>CreateSelfSignedCerts</code></a> and <a href="man-cups-files.conf.html#ServerKeychain"><code>ServerKeychain</code></a>. The default policy creates self-signed certificates as needed.</p>
+    <p>The <a href="man-cupsd.conf.html#DefaultEncryption"><code>DefaultEncryption</code></a> and <a href="man-cupsd.conf.html#Encryption"><code>Encryption</code></a> directives in the <a href="man-cupsd.conf.html"><var>cupsd.conf</var></a> file control whether encryption is used. The default configuration requires encryption for remote access whenever authentication is required.</p>
+
+    <h2><a name="PLATFORM">Platform Differences</a></h2>
+    <h3>macOS<sup>&reg;</sup></h3>
+    <p>On macOS, client configuration settings for ordinary users are stored in the <var>~/Library/Preferences/org.cups.PrintingPrefs.plist</var> file. System-wide and user certificates are stored in the system and login keychains, with private CUPS keychains being used for self-signed and CUPS-managed certificates.</p>
+    <h3>Windows<sup>&reg;</sup></h3>
+    <p>On Windows, client configuration settings are controlled by the SSL/TLS Group Policy settings and certificate stores.</p>
+    <h3>Other Platforms</h3>
+    <p>Other platforms only use the <var>client.conf</var> file and PEM-encoded certificates (<i>hostname</i>.crt) and private keys (<i>hostname</i>.key) in the <var>/etc/cups/ssl</var> and <var>~/.cups/ssl</var> directories. If present, the <var>/etc/cups/ssl/site.crt</var> file defines a site-wide CA certificate that is used to validate server and printer certificates. Certificates for known servers and printers are stored by CUPS in the corresponding <var>ssl</var> directory so they can be validated for subsequent connections.</p>
+    <p>CUPS also supports certificates created and managed by the popular <a href="https://letsencrypt.org/">Let's Encrypt</a> certificate service, which are stored in the <var>/etc/letsencrypt/live</var> directory.</p>
+  </body>
+</html>
index 6af2a9c..64f1aa7 100644 (file)
@@ -435,7 +435,7 @@ CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp 2>&amp;1 | tee snmp.log
 (setenv CUPS_DEBUG_LEVEL 2; /usr/lib/cups/backend/snmp) |&amp; tee snmp.log
 </PRE>
 
-<P>On MacmacOS you'll find the SNMP backend in /usr/libexec/cups/backend instead:</P>
+<P>On macOS you'll find the SNMP backend in /usr/libexec/cups/backend instead:</P>
 
 <PRE CLASS="command">
 CUPS_DEBUG_LEVEL=2 /usr/libexec/cups/backend/snmp 2>&amp;1 | tee snmp.log
index d5d22e2..6bd2fdf 100644 (file)
@@ -33,7 +33,7 @@ server.</P>
 
        <P><B>Recommendation:</B> Enable encryption to hide the
        username and password information - this is the default on
-       MacmacOS and systems with GNU TLS or OpenSSL installed.</P></LI>
+       macOS and systems with GNU TLS installed.</P></LI>
 
        <LI>Local certificate authentication passes 128-bit
        "certificates" that identify an authenticated user.
index 928f8f9..2442631 100644 (file)
@@ -30,7 +30,7 @@ msgstr ""
 "Project-Id-Version: CUPS 2.0\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
 "POT-Creation-Date: 2016-08-30 16:00-0400\n"
-"PO-Revision-Date: 2016-04-22 12:25+0100\n"
+"PO-Revision-Date: 2016-09-17 18:45+0200\n"
 "Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: German\n"
@@ -50,7 +50,7 @@ msgstr "\t%d Einträge"
 
 #, c-format
 msgid "\t%s"
-msgstr ""
+msgstr "\t%s"
 
 msgid "\tAfter fault: continue"
 msgstr "\tNach einem Fehler: fortfahren"
@@ -159,7 +159,7 @@ msgid "                          Ignore specific warnings."
 msgstr "                          Ignoriere bestimmte Warnungen."
 
 msgid "                          Issue warnings instead of errors."
-msgstr "                          Gebe Warnungen anstelle fon Fehlern aus."
+msgstr "                          Gebe Warnungen anstelle von Fehlern aus."
 
 msgid "                REF: Page 15, section 3.1."
 msgstr "                REF: Seite 15, Kap. 3.1."
@@ -387,7 +387,7 @@ msgstr "      %s  Ungültiger Wert für cupsPreFilter \"%s\"."
 
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
-msgstr ""
+msgstr "      %s  Ungültiger Wert für cupsUIConstraints %s: \"%s\""
 
 #, c-format
 msgid "      %s  Bad language \"%s\"."
@@ -415,11 +415,11 @@ msgstr "      %s  Leere cupsUIConstraints %s"
 
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
-msgstr ""
+msgstr "      %s  Fehlende \"%s\" Übersetzung für Option %s, Auswahl %s."
 
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
-msgstr ""
+msgstr "      %s  Fehlende \"%s\" Übersetzung für Option %s."
 
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
@@ -489,7 +489,7 @@ msgstr ""
 
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
-msgstr ""
+msgstr "      %s  cupsUIResolver %s verursacht eine Schleife."
 
 #, c-format
 msgid ""
@@ -720,7 +720,7 @@ msgid "    %d ERRORS FOUND"
 msgstr ""
 
 msgid "    -h       Show program usage"
-msgstr ""
+msgstr "    -h       Zeige Verwendungshinweis"
 
 #, c-format
 msgid ""
@@ -789,7 +789,7 @@ msgid "    Too many %%EndDocument comments."
 msgstr ""
 
 msgid "    Warning: file contains binary data."
-msgstr ""
+msgstr "    Warnung: Datei enthält Binärdaten."
 
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
@@ -800,10 +800,10 @@ msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr ""
 
 msgid "  ! expression            Unary NOT of expression."
-msgstr ""
+msgstr "  ! Ausdruck            Unäre Negation des Ausdrucks."
 
 msgid "  ( expressions )         Group expressions."
-msgstr ""
+msgstr "  ( Ausdruck )         Gruppierung von Ausdrücken."
 
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr "  --[no-]debug-logging    Ein-/Abschalten von Fehlersuche-Protokoll."
@@ -830,7 +830,7 @@ msgstr "  --crlf                  Zeilenenden mit CR+LF (Windows)"
 
 msgid "  --domain regex          Match domain to regular expression."
 msgstr ""
-"  --domain regex          Prüfe die Domäne aud Übereinstimmung mit regulärem "
+"  --domain regex          Prüfe die Domäne auf Übereinstimmung mit regulärem "
 "Ausdruck"
 
 msgid ""
@@ -853,7 +853,7 @@ msgstr ""
 "Regulärem Audruck"
 
 msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
-msgstr ""
+msgstr "  --lf                    Zeilenenden mit LF (UNIX/Linux/macOS)."
 
 msgid "  --list-filters          List filters that will be used."
 msgstr "  --list-filters          Liste die Filter auf die benutzt werden."
@@ -927,7 +927,7 @@ msgid "  -6                      Connect using IPv6."
 msgstr "  -6                      Verbinde unter Verwendung von IPv6."
 
 msgid "  -C                      Send requests using chunking (default)."
-msgstr ""
+msgstr "  -C                      Sende Anfragen mit Blockbildung (Voreinstellung)."
 
 msgid "  -D                      Remove the input file when finished."
 msgstr "  -D                      Lösche die Eingabe nach Beenden."
@@ -961,7 +961,7 @@ msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
 
 msgid "  -L                      Send requests using content-length."
-msgstr ""
+msgstr "  -L                      Send Anfragen unter Benutzung der Content-length Headers."
 
 msgid ""
 "  -P filename.plist       Produce XML plist to a file and test report to "
@@ -978,7 +978,7 @@ msgstr ""
 
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
-"  -R root-Verz.           Legt ein alternatives Wurzelverzeichnis fest."
+"  -R Wurzelverz.           Legt ein alternatives Wurzelverzeichnis fest."
 
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      Teste mit SSL Verschlüsselung."
@@ -1024,7 +1024,7 @@ msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cups.conf            Setze die zu benutzende Datei cups.conf"
 
 msgid "  -d name=value           Set named variable to value."
-msgstr ""
+msgstr "  -d Name=Wert            Ordnet der Variablen »Name« den Wert zu."
 
 msgid "  -d output-dir           Specify the output directory."
 msgstr "  -d AusgabeVerz.         Angabe des Ausgabeverzeichnisses."
@@ -1060,11 +1060,12 @@ msgid "  -h server[:port]        Specify server address."
 msgstr "  -h server[:port]        Spezifiziere die Server-Adresse."
 
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
-msgstr ""
+msgstr "  -i mime/type            Legt den MIME-typ der Eingabe fest (sonst selbsterkennend)."
 
 msgid ""
 "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
+"  -i Sekunden             Wiederhole die letzte Datei im gegebenen Intervall."
 
 msgid ""
 "  -j job-id[,N]           Filter file N from the specified job (default is "
@@ -1089,6 +1090,7 @@ msgstr "  -m                      Verwende den ModellNamen als Dateinamen."
 msgid ""
 "  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
+"  -m mime/type            Legt den MIME-typ der Ausgabe fest (sonst application/pdf)."
 
 msgid "  -n copies               Set number of copies."
 msgstr "  -n copies               Lege die Anzahl der Kopien fest."
@@ -1096,9 +1098,10 @@ msgstr "  -n copies               Lege die Anzahl der Kopien fest."
 msgid ""
 "  -n count                Repeat the last file the given number of times."
 msgstr ""
+"  -n Anzahl               Wiederhole die letzte Datei »Anzahl« male."
 
 msgid "  -n regex                Match service name to regular expression."
-msgstr ""
+msgstr "  -n regex                Prüfe den Dienstnamen gegen den regulären Ausdruck »regex«."
 
 msgid ""
 "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
@@ -1107,7 +1110,7 @@ msgstr ""
 "drv)."
 
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
-msgstr ""
+msgstr "  -o Dateiname.ppd[.gz]   Legt den Dateinamen der Ausgabe fest (sonst stdout)."
 
 msgid "  -o name=value           Set option(s)."
 msgstr "  -o Name=Wert            Legt Optionen fest."
@@ -2043,16 +2046,16 @@ msgid "2 inches/sec."
 msgstr "2 inch/s"
 
 msgid "2-Hole Punch (Landscape)"
-msgstr ""
+msgstr "2-fach Lochung (Querformat)"
 
 msgid "2-Hole Punch (Portrait)"
-msgstr ""
+msgstr "2-fach Lochung (Hochformat)"
 
 msgid "2-Hole Punch (Reverse Landscape)"
-msgstr ""
+msgstr "2-fach Lochung (gedrehtes Querformat)"
 
 msgid "2-Hole Punch (Reverse Portrait)"
-msgstr ""
+msgstr "2-fach Lochung (gedrehtes Hochformat)"
 
 msgid "2-Sided Printing"
 msgstr "Doppelseitig drucken"
@@ -2169,16 +2172,16 @@ msgid "3 x 5"
 msgstr "3×5"
 
 msgid "3-Hole Punch (Landscape)"
-msgstr ""
+msgstr "3-fach Lochung (Querformat)"
 
 msgid "3-Hole Punch (Portrait)"
-msgstr ""
+msgstr "3-Fach Lochung (Hochformat)"
 
 msgid "3-Hole Punch (Reverse Landscape)"
-msgstr ""
+msgstr "3-fach Lochung (gedrehtes Querformat)"
 
 msgid "3-Hole Punch (Reverse Portrait)"
-msgstr ""
+msgstr "2-fach Lochung (gedrehtes Hochformat)"
 
 msgid "3.00x1.00\""
 msgstr "3,00×1,00inch"
@@ -2247,16 +2250,16 @@ msgid "4 inches/sec."
 msgstr "4 inch/s"
 
 msgid "4-Hole Punch (Landscape)"
-msgstr ""
+msgstr "4-fach Lochung (Querformat)"
 
 msgid "4-Hole Punch (Portrait)"
-msgstr ""
+msgstr "4-fach Lochung (Hochformat)"
 
 msgid "4-Hole Punch (Reverse Landscape)"
-msgstr ""
+msgstr "4-fach Lochung (gedrehtes Querformat)"
 
 msgid "4-Hole Punch (Reverse Portrait)"
-msgstr ""
+msgstr "4-fach Lochung (gedrehtes Hochformat)"
 
 msgid "4.00x1.00\""
 msgstr "4,00×1,00 inch"
@@ -2675,7 +2678,7 @@ msgid "Bad PPD cache file."
 msgstr "Ungültige PPD Cache Datei."
 
 msgid "Bad PPD file."
-msgstr ""
+msgstr "Ungültige PPD Datei"
 
 msgid "Bad Request"
 msgstr "Ungültige Anfrage"
@@ -2898,10 +2901,10 @@ msgid "Coat"
 msgstr ""
 
 msgid "Coated Envelope"
-msgstr ""
+msgstr "Beschichteter Umschlag"
 
 msgid "Coated Paper"
-msgstr ""
+msgstr "Beschichtetes Papier"
 
 msgid "Color"
 msgstr "Farbe"
@@ -2961,7 +2964,7 @@ msgid "Credentials do not validate against site CA certificate."
 msgstr ""
 
 msgid "Credentials have expired."
-msgstr ""
+msgstr "Berechtigung ist abgelaufen"
 
 msgid "Custom"
 msgstr "Eigene"
@@ -2982,7 +2985,7 @@ msgid "Cutter"
 msgstr "Abschneider"
 
 msgid "DVD"
-msgstr ""
+msgstr "DVD"
 
 msgid "Dark"
 msgstr "Dunkel"
@@ -3068,7 +3071,7 @@ msgid "Double Wall Cardboard"
 msgstr ""
 
 msgid "Draft"
-msgstr ""
+msgstr "Entwurf"
 
 msgid "Dry Film"
 msgstr ""
@@ -3118,10 +3121,10 @@ msgstr ""
 "Kerberos-Ticket haben."
 
 msgid "Envelope"
-msgstr ""
+msgstr "Umschlag"
 
 msgid "Envelope #10"
-msgstr ""
+msgstr "US Umschlag 10"
 
 msgid "Envelope #11"
 msgstr "US Umschlag 11"
@@ -3184,7 +3187,7 @@ msgid "Envelope Choukei 4 Long Edge"
 msgstr ""
 
 msgid "Envelope DL"
-msgstr ""
+msgstr "Umschlag DL"
 
 msgid "Envelope Feed"
 msgstr "Umschlagzuführung"
@@ -3193,7 +3196,7 @@ msgid "Envelope Invite"
 msgstr ""
 
 msgid "Envelope Italian"
-msgstr ""
+msgstr "Umschlag italienisch"
 
 msgid "Envelope Kaku2"
 msgstr ""
@@ -3280,7 +3283,7 @@ msgid "Envelope You4 Long Edge"
 msgstr ""
 
 msgid "Environment Variables:"
-msgstr ""
+msgstr "Umgebungsvariablen:"
 
 msgid "Epson"
 msgstr "Epson"
@@ -3340,7 +3343,7 @@ msgid "Expressions:"
 msgstr "Ausdrücke:"
 
 msgid "FAIL"
-msgstr ""
+msgstr "FEHLER"
 
 msgid "Fabric"
 msgstr ""
@@ -3378,7 +3381,7 @@ msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Dateirechte \"%s\" OK (0%o/uid=%d/gid=%d)."
 
 msgid "File Folder"
-msgstr ""
+msgstr "Dateiverzeichnis"
 
 #, c-format
 msgid ""
@@ -3387,7 +3390,7 @@ msgid ""
 msgstr ""
 
 msgid "Film"
-msgstr ""
+msgstr "Film"
 
 msgid "Fine Envelope"
 msgstr ""
@@ -3397,7 +3400,7 @@ msgid "Finished page %d."
 msgstr "Seite %d fertiggestellt."
 
 msgid "Finishing"
-msgstr ""
+msgstr "Endverarbeitung"
 
 msgid "Flexo Base"
 msgstr ""
@@ -3463,7 +3466,7 @@ msgid "Glossy Paper"
 msgstr "Glanzpapier"
 
 msgid "Glossy Photo Paper"
-msgstr ""
+msgstr "Fotoglanzpapier"
 
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Drucker-URI Attribut empfangen aber keine Auftrags-ID."
@@ -3490,31 +3493,31 @@ msgid "Hanging Folder"
 msgstr "Hängeordner"
 
 msgid "Hash buffer too small."
-msgstr ""
+msgstr "Hash Puffer zu klein."
 
 msgid "Heavyweight Envelope"
-msgstr ""
+msgstr "Schwerer Umschlag"
 
 msgid "Heavyweight Paper"
-msgstr ""
+msgstr "Schweres Papier"
 
 msgid "Help file not in index."
 msgstr "Hilfedatei nicht im Index."
 
 msgid "High"
-msgstr ""
+msgstr "Hoch"
 
 msgid "High Gloss Fabric"
 msgstr ""
 
 msgid "High Gloss Labels"
-msgstr ""
+msgstr "Hochglanzetiketten"
 
 msgid "High Gloss Optical Disc"
 msgstr ""
 
 msgid "High Gloss Photo Paper"
-msgstr ""
+msgstr "Hochglanzfotopapier"
 
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "IPP 1setOf Attribut mit inkompatiblen Werte-Markierung."
@@ -3532,7 +3535,7 @@ msgid "IPP boolean value not 1 byte."
 msgstr ""
 
 msgid "IPP date value not 11 bytes."
-msgstr ""
+msgstr "IPP-Datenwert nicht 11 Bytes."
 
 msgid "IPP endCollection value not 0 bytes."
 msgstr ""
@@ -3547,10 +3550,10 @@ msgid "IPP integer value not 4 bytes."
 msgstr "IPP Integer-Wert nicht 4 Bytes."
 
 msgid "IPP language length overflows value."
-msgstr ""
+msgstr "IPP Sprachlänge übersteigt Wert."
 
 msgid "IPP language length too large."
-msgstr ""
+msgstr "IPP-Sprachlänge zu groß."
 
 msgid "IPP member name is not empty."
 msgstr ""
@@ -3562,7 +3565,7 @@ msgid "IPP memberName with no attribute."
 msgstr ""
 
 msgid "IPP name larger than 32767 bytes."
-msgstr ""
+msgstr "IPP Name länger als 32767 Byte"
 
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
@@ -3583,10 +3586,10 @@ msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
 msgid "IPP value larger than 32767 bytes."
-msgstr "IPP Wert länger als 32767 byte"
+msgstr "IPP-Wert länger als 32767 Bytes."
 
 msgid "ISOLatin1"
-msgstr "UTF-8"
+msgstr "ISOLatin1"
 
 msgid "Illegal control character"
 msgstr "Ungültiges Steuerungszeichen"
@@ -3610,10 +3613,10 @@ msgid "Imaging Cylinder"
 msgstr ""
 
 msgid "Inkjet Envelope"
-msgstr ""
+msgstr "Tintenstrahl-Umschäge"
 
 msgid "Inkjet Labels"
-msgstr ""
+msgstr "Tintenstrahl-Etiketten"
 
 msgid "Installable Options"
 msgstr "Installationsoptionen"
@@ -3649,7 +3652,7 @@ msgid "Invalid media size."
 msgstr "Ungültige Mediengrösse."
 
 msgid "Invalid ppd-name value."
-msgstr ""
+msgstr "Ungültgier Wert ppd-name"
 
 #, c-format
 msgid "Invalid printer command \"%s\"."
@@ -3774,32 +3777,32 @@ msgid "Label Printer"
 msgstr "Etikettendrucker"
 
 msgid "Label Top"
-msgstr "Etikett (oben)"
+msgstr "Etikett oben"
 
 msgid "Labels"
-msgstr ""
+msgstr "Etiketten"
 
 msgid "Laminate"
-msgstr ""
+msgstr "Laminieren"
 
 msgid "Laminating Foil"
-msgstr ""
+msgstr "Laminierfolie"
 
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "Sprache \"%s\" nicht unterstützt."
 
 msgid "Large Address"
-msgstr "Adresse gross"
+msgstr "Große Adresse"
 
 msgid "Large Capacity"
-msgstr ""
+msgstr "Hohe Kapazität"
 
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Serie PCL 4/5"
 
 msgid "Left"
-msgstr ""
+msgstr "Links"
 
 msgid "Left Gate Fold"
 msgstr ""
@@ -3808,13 +3811,13 @@ msgid "Letter Fold"
 msgstr ""
 
 msgid "Letter Oversize"
-msgstr "Letter Übergrösse"
+msgstr "Letter Übergröße"
 
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
 msgid "Letterhead"
-msgstr ""
+msgstr "Briefkopf"
 
 msgid "Light"
 msgstr "Leicht"
@@ -3835,7 +3838,7 @@ msgid "Load paper."
 msgstr "Lade Papier."
 
 msgid "Local printer created."
-msgstr ""
+msgstr "Lokalen Drucker erzeugt."
 
 msgid "Long-Edge (Portrait)"
 msgstr "Lange Kante (Hochformat)"
@@ -3945,10 +3948,10 @@ msgstr ""
 
 #, c-format
 msgid "Missing required attribute \"%s\"."
-msgstr ""
+msgstr "Erforderliches Attribut \"%s\" fehlt."
 
 msgid "Missing required attributes."
-msgstr ""
+msgstr "Erforderliche Attribute fehlen."
 
 msgid "Missing resource in URI"
 msgstr "Fehlende Resource in URI"
@@ -4005,7 +4008,7 @@ msgid "Multi Part Form"
 msgstr ""
 
 msgid "Multipurpose"
-msgstr ""
+msgstr "Mehrzweck"
 
 msgid "NULL PPD file pointer"
 msgstr "NULL PPD File Pointer"
@@ -4032,7 +4035,7 @@ msgid "No Content"
 msgstr "Kein Inhalt"
 
 msgid "No Finishing"
-msgstr ""
+msgstr "Keine Endverarbeitung"
 
 msgid "No PPD name"
 msgstr "Kein PPD Name"
@@ -4182,7 +4185,7 @@ msgid "Online Help"
 msgstr "Online-Hilfe"
 
 msgid "Only local users can create a local printer."
-msgstr ""
+msgstr "Nur lokale Benutzer können lokale Drucker erzeugen."
 
 #, c-format
 msgid "Open of %s failed: %s"
@@ -4198,7 +4201,7 @@ msgid "Operation Policy"
 msgstr "Nutzungsrichtlinien"
 
 msgid "Optical Disc"
-msgstr ""
+msgstr "Optische Disk"
 
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
@@ -4262,7 +4265,7 @@ msgid "Packet does not start with SEQUENCE"
 msgstr "Paket beginnt nicht mit SEQUENCE"
 
 msgid "Paper"
-msgstr ""
+msgstr "Papier"
 
 msgid "Paper jam."
 msgstr "Papierstau."
@@ -4303,31 +4306,31 @@ msgid "Peel-Off"
 msgstr "Aufkleber"
 
 msgid "Permanent Labels"
-msgstr ""
+msgstr "Permanentetiketten"
 
 msgid "Photo"
 msgstr "Foto"
 
 msgid "Photo Film"
-msgstr ""
+msgstr "Fotofilm"
 
 msgid "Photo Labels"
 msgstr "Foto-Etiketten"
 
 msgid "Photo Paper"
-msgstr ""
+msgstr "Fotopapier"
 
 msgid "Photographic Archival"
 msgstr ""
 
 msgid "Plain Envelope"
-msgstr ""
+msgstr "Standardumschläge"
 
 msgid "Plain Paper"
 msgstr "Standardpapier"
 
 msgid "Plastic"
-msgstr ""
+msgstr "Kunststoff"
 
 msgid "Plastic Archival"
 msgstr ""
@@ -4357,7 +4360,7 @@ msgid "Policies"
 msgstr "Richtlinien "
 
 msgid "Polyester"
-msgstr ""
+msgstr "Polyester"
 
 msgid "Port Monitor"
 msgstr "Port-Monitor"
@@ -4387,10 +4390,10 @@ msgid "Preparing to print."
 msgstr "Vorbereitung zum Druck."
 
 msgid "Preprinted Envelope"
-msgstr ""
+msgstr "Vorbedruckte Umschläge"
 
 msgid "Preprinted Paper"
-msgstr ""
+msgstr "Vorbedrucktes Papier"
 
 msgid "Print Density"
 msgstr "Druckdichte"
@@ -4402,7 +4405,7 @@ msgid "Print Mode"
 msgstr "Druckmodus"
 
 msgid "Print Quality"
-msgstr ""
+msgstr "Druckqualität"
 
 msgid "Print Rate"
 msgstr "Druckrate"
@@ -4436,7 +4439,7 @@ msgstr "Der Druckauftrag wurde nicht angenommen."
 
 #, c-format
 msgid "Printer \"%s\" already exists."
-msgstr ""
+msgstr "Drucker \"%s\" existiert bereits."
 
 msgid "Printer Added"
 msgstr "Drucker hinzugefügt"
@@ -4473,10 +4476,10 @@ msgid "Printing page %d, %u%% complete."
 msgstr "Drucke Seite %d, %u%% fertig."
 
 msgid "Punch"
-msgstr ""
+msgstr "Locher"
 
 msgid "Punched Paper"
-msgstr ""
+msgstr "Gelochtes Papier"
 
 msgid "Quarto"
 msgstr "US Quarto"
@@ -4523,43 +4526,43 @@ msgid "Rewind"
 msgstr "Zurückdrehen"
 
 msgid "Right"
-msgstr ""
+msgstr "Rechts"
 
 msgid "Right Gate Fold"
 msgstr ""
 
 msgid "Roll"
-msgstr ""
+msgstr "Rolle"
 
 msgid "Roll 1"
-msgstr ""
+msgstr "Rolle 1"
 
 msgid "Roll 10"
-msgstr ""
+msgstr "Rolle 10"
 
 msgid "Roll 2"
-msgstr ""
+msgstr "Rolle 2"
 
 msgid "Roll 3"
-msgstr ""
+msgstr "Rolle 3"
 
 msgid "Roll 4"
-msgstr ""
+msgstr "Rolle 4"
 
 msgid "Roll 5"
-msgstr ""
+msgstr "Rolle 5"
 
 msgid "Roll 6"
-msgstr ""
+msgstr "Rolle 6"
 
 msgid "Roll 7"
-msgstr ""
+msgstr "Rolle 7"
 
 msgid "Roll 8"
-msgstr ""
+msgstr "Rolle 8"
 
 msgid "Roll 9"
-msgstr ""
+msgstr "Rolle 9"
 
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
@@ -4575,7 +4578,7 @@ msgid "Saddle Stitch"
 msgstr ""
 
 msgid "Satin Labels"
-msgstr ""
+msgstr "Satinetiketten"
 
 msgid "Satin Optical Disc"
 msgstr ""
@@ -4590,7 +4593,7 @@ msgid "Screen Paged"
 msgstr ""
 
 msgid "Security Labels"
-msgstr ""
+msgstr "Sicherheitsetiketten"
 
 msgid "See Other"
 msgstr "Siehe auch"
@@ -4599,10 +4602,10 @@ msgid "See remote printer."
 msgstr ""
 
 msgid "Self Adhesive"
-msgstr ""
+msgstr "Selbstklebend"
 
 msgid "Self Adhesive Film"
-msgstr ""
+msgstr "Selbstklebender Film"
 
 msgid "Self-signed credentials are blocked."
 msgstr ""
@@ -4671,22 +4674,22 @@ msgid "Single Face"
 msgstr ""
 
 msgid "Single Punch (Landscape)"
-msgstr ""
+msgstr "Einfachlochung (Querformat)"
 
 msgid "Single Punch (Portrait)"
-msgstr ""
+msgstr "Einfachlochung (Hochformat)"
 
 msgid "Single Punch (Reverse Landscape)"
-msgstr ""
+msgstr "Einfachlochung (gedrehtes Querformat)"
 
 msgid "Single Punch (Reverse Portrait)"
-msgstr ""
+msgstr "Einfachlochung (gedrehtes Hochformat)"
 
 msgid "Single Staple (Landscape)"
-msgstr ""
+msgstr "Einfachheftung (Querformat)"
 
 msgid "Single Staple (Portrait)"
-msgstr ""
+msgstr "Einfachheftung (Hochformat)"
 
 msgid "Single Staple (Reverse Landscape)"
 msgstr ""
@@ -4711,22 +4714,22 @@ msgid "Standard"
 msgstr "Standard"
 
 msgid "Staple"
-msgstr ""
+msgstr "Heftung"
 
 msgid "Staple Edge"
-msgstr ""
+msgstr "Randheftung"
 
 msgid "Staple Edge (Landscape)"
-msgstr ""
+msgstr "Randheftung (Querformat)"
 
 msgid "Staple Edge (Portrait)"
-msgstr ""
+msgstr "Randheftung (Hochformat)"
 
 msgid "Staple Edge (Reverse Landscape)"
-msgstr ""
+msgstr "Randheftung (gedrehtes Querformat)"
 
 msgid "Staple Edge (Reverse Portrait)"
-msgstr ""
+msgstr "Randheftung (gedrehtes Hochformat)"
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
@@ -4771,7 +4774,7 @@ msgid "Super B/A3"
 msgstr "Super B/A3"
 
 msgid "Switching Protocols"
-msgstr "Protokoll wechseln"
+msgstr "Protokolle wechseln"
 
 msgid "Tab Stock"
 msgstr ""
@@ -4868,37 +4871,37 @@ msgstr ""
 "mehr."
 
 msgid "The printer did not respond."
-msgstr "Der Drucker hat nicht geantwortet"
+msgstr "Der Drucker hat nicht geantwortet."
 
 msgid "The printer is in use."
-msgstr "Der Drucker ist beschäftigt"
+msgstr "Der Drucker ist beschäftigt."
 
 msgid "The printer is low on ink."
-msgstr "Der Drucker hat niedrigen Tintenstand"
+msgstr "Der Drucker hat niedrigen Tintenstand."
 
 msgid "The printer is low on toner."
-msgstr "Der Drucker hat niedrigen Tonerstand"
+msgstr "Der Drucker hat niedrigen Tonerstand."
 
 msgid "The printer is not connected."
-msgstr "Der Drucker ist nicht verbunden"
+msgstr "Der Drucker ist nicht verbunden."
 
 msgid "The printer is not responding."
-msgstr "Der Drucker antwortet nicht"
+msgstr "Der Drucker antwortet nicht."
 
 msgid "The printer is now connected."
-msgstr "Der Drucker ist jetzt verbunden"
+msgstr "Der Drucker ist jetzt verbunden."
 
 msgid "The printer is now online."
-msgstr "Der Drucker ist jetzt online"
+msgstr "Der Drucker ist jetzt online."
 
 msgid "The printer is offline."
-msgstr "Der Drucker ist offline"
+msgstr "Der Drucker ist offline."
 
 msgid "The printer is unreachable at this time."
-msgstr "Der Drucker ist derzeit nicht erreichbar"
+msgstr "Der Drucker ist derzeit nicht erreichbar."
 
 msgid "The printer may be out of ink."
-msgstr "Der Drucker hat mochlicherweise keine Tinte mehr"
+msgstr "Der Drucker hat mochlicherweise keine Tinte mehr."
 
 msgid "The printer may be out of toner."
 msgstr "Der Drucker könnte zu wenig Toner haben."
@@ -4923,16 +4926,16 @@ msgid "The printer's cover is open."
 msgstr "Die Druckerabdeckung ist offen."
 
 msgid "The printer's door is open."
-msgstr "Die Klappe des Druckers ist offen"
+msgstr "Die Klappe des Druckers ist offen."
 
 msgid "The printer's interlock is open."
 msgstr "Die Sicherheitsverriegelung des Druckers ist offen."
 
 msgid "The printer's waste bin is almost full."
-msgstr "Der Resttonerbehälter des Druckers ist fast voll"
+msgstr "Der Resttonerbehälter des Druckers ist fast voll."
 
 msgid "The printer's waste bin is full."
-msgstr "Der Resttonerbehälter des Druckers ist voll"
+msgstr "Der Resttonerbehälter des Druckers ist voll."
 
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
@@ -4992,7 +4995,7 @@ msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Zu viele printer-state-reasons Werte (%d > %d)."
 
 msgid "Top"
-msgstr ""
+msgstr "Oben"
 
 msgid "Tractor"
 msgstr ""
@@ -5010,40 +5013,40 @@ msgid "Tray 1"
 msgstr "Fach 1"
 
 msgid "Tray 10"
-msgstr ""
+msgstr "Fach 10"
 
 msgid "Tray 11"
-msgstr ""
+msgstr "Fach 11"
 
 msgid "Tray 12"
-msgstr ""
+msgstr "Fach 12"
 
 msgid "Tray 13"
-msgstr ""
+msgstr "Fach 13"
 
 msgid "Tray 14"
-msgstr ""
+msgstr "Fach 14"
 
 msgid "Tray 15"
-msgstr ""
+msgstr "Fach 15"
 
 msgid "Tray 16"
-msgstr ""
+msgstr "Fach 16"
 
 msgid "Tray 17"
-msgstr ""
+msgstr "Fach 17"
 
 msgid "Tray 18"
-msgstr ""
+msgstr "Fach 18"
 
 msgid "Tray 19"
-msgstr ""
+msgstr "Fach 19"
 
 msgid "Tray 2"
 msgstr "Fach 2"
 
 msgid "Tray 20"
-msgstr ""
+msgstr "Fach 20"
 
 msgid "Tray 3"
 msgstr "Fach 3"
@@ -5052,31 +5055,31 @@ msgid "Tray 4"
 msgstr "Fach 4"
 
 msgid "Tray 5"
-msgstr ""
+msgstr "Fach 5"
 
 msgid "Tray 6"
-msgstr ""
+msgstr "Fach 6"
 
 msgid "Tray 7"
-msgstr ""
+msgstr "Fach 7"
 
 msgid "Tray 8"
-msgstr ""
+msgstr "Fach 8"
 
 msgid "Tray 9"
-msgstr ""
+msgstr "Fach 9"
 
 msgid "Triple Staple (Landscape)"
-msgstr ""
+msgstr "Dreifachheftung (Querformat)"
 
 msgid "Triple Staple (Portrait)"
-msgstr ""
+msgstr "Dreifachheftung (Hochformat)"
 
 msgid "Triple Staple (Reverse Landscape)"
-msgstr ""
+msgstr "Dreifachheftung (gedrehtes Querformat)"
 
 msgid "Triple Staple (Reverse Portrait)"
-msgstr ""
+msgstr "Dreifachheftung (gedrehtes Hochformat)"
 
 msgid "Triple Wall Cardboard"
 msgstr ""
@@ -5191,7 +5194,7 @@ msgstr ""
 
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
-msgstr ""
+msgstr "Die CUPS Druckertreiberdateien (%d) können nicht kopiert werden."
 
 #, c-format
 msgid "Unable to copy PPD file - %s"
@@ -5216,22 +5219,22 @@ msgid "Unable to create printer-uri"
 msgstr "Drucker-URI kann nicht erzeugt werden"
 
 msgid "Unable to create printer."
-msgstr ""
+msgstr "Drucker kann nicht erzeugt werden."
 
 msgid "Unable to create server credentials."
 msgstr "Die Server-Anmeldedaten können nicht erzeugt werden."
 
 msgid "Unable to create temporary file"
-msgstr "Temporäre Datei konntenicht erstellt werden :"
+msgstr "Temporäre Datei konntenicht erstellt werden"
 
 msgid "Unable to delete class"
-msgstr "Die Klasse konnte nicht gelöscht werden :"
+msgstr "Die Klasse konnte nicht gelöscht werden"
 
 msgid "Unable to delete printer"
-msgstr "Der Drucker konnte nicht gelöscht werden :"
+msgstr "Der Drucker konnte nicht gelöscht werden"
 
 msgid "Unable to do maintenance command"
-msgstr "Wartungsbefehl konnte nicht ausgeführt werden :"
+msgstr "Wartungsbefehl konnte nicht ausgeführt werden"
 
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr "cupsd.conf Dateien grösser als 1MB können nicht bearbeitet werden"
@@ -5362,10 +5365,10 @@ msgid "Unable to print test page"
 msgstr "Die Testseite kann nicht gedruckt werden"
 
 msgid "Unable to read print data."
-msgstr ""
+msgstr "Druckdaten können nicht gelesen werden."
 
 msgid "Unable to rename job document file."
-msgstr ""
+msgstr "Auftragsdatei kann nicht umbenannt werden."
 
 msgid "Unable to resolve printer-uri."
 msgstr "Drucker-URI kann nicht aufgelöst werden."
@@ -5435,7 +5438,7 @@ msgid "Unknown format character: \"%c\"."
 msgstr "Unbekanntes Formatzeichen: »%c«."
 
 msgid "Unknown hash algorithm."
-msgstr ""
+msgstr "Unbekannter Hashalgorithmus."
 
 msgid "Unknown media size name."
 msgstr "Unbekannter Name der Mediengrösse."
@@ -5467,7 +5470,7 @@ msgid "Unknown request version."
 msgstr "Unbekannte Anfrageversion"
 
 msgid "Unknown scheme in URI"
-msgstr ""
+msgstr "Unbekanntes Schema in URI"
 
 msgid "Unknown service name."
 msgstr "Unbekannter Dienstname."
@@ -5515,11 +5518,11 @@ msgstr "Nicht unterstützter Medienwert."
 
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
-msgstr ""
+msgstr "Nicht unterstützter number-up Wert %d, verwende number-up=1."
 
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr ""
+msgstr "Nicht unterstützter number-up-layout Wert %d, verwende number-up-layout=lrtb."
 
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
@@ -5560,10 +5563,10 @@ msgid "Usage: %s job-id user title copies options [file]"
 msgstr "Verwendung: %s Auftrags-ID Benutzer Titel Kopien Optionen [Datei]"
 
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
-msgstr ""
+msgstr "Verwendung: cupsaddsmb [Optionen] Drucker1 ... DruckerN"
 
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
-msgstr ""
+msgstr "Verwendung: cupsctl [Optionen] [Parameter=Wert ... ParameterN=WertN]"
 
 msgid "Usage: cupsd [options]"
 msgstr "Verwendung: cupsd [Optionen]"
@@ -5588,7 +5591,7 @@ msgid ""
 msgstr ""
 
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
-msgstr ""
+msgstr "Verwendung: ipptool [Optionen] URI Dateiname [ ... DateinameN ]"
 
 msgid "Usage: lpmove job/src dest"
 msgstr "Verwendung: lpmove Auftragsquelle Auftragsziel"
@@ -5665,7 +5668,7 @@ msgid "Wet Film"
 msgstr ""
 
 msgid "Windowed Envelope"
-msgstr ""
+msgstr "Fensterumschlag"
 
 msgid "Yes"
 msgstr "Ja"
@@ -5732,21 +5735,21 @@ msgstr ""
 "cupsd: Start auf Anforderung nicht einkompiliert, starte im normalen Modus."
 
 msgid "cupsd: Relative cups-files.conf filename not allowed."
-msgstr ""
+msgstr "cupsd: Relativer Dateiname für cups-files.conf nicht zulässig."
 
 msgid "cupsd: Unable to get current directory."
-msgstr ""
+msgstr "cupsd: Aktuelles Verzeichnis kann nicht ermittelt werden."
 
 msgid "cupsd: Unable to get path to cups-files.conf file."
-msgstr ""
+msgstr "cupsd: Pfad zur Datei cups-files.conf kann nicht ermittelt werden."
 
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
-msgstr ""
+msgstr "cupsd: Unbekanntes Argument \"%s\" - Abbruch."
 
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
-msgstr ""
+msgstr "cupsd: Unbekannte Option \"%s\" - Abbruch."
 
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
@@ -5901,14 +5904,14 @@ msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
 msgid "job-printer-uri attribute missing."
-msgstr ""
+msgstr "job-printer-uri Attribut fehlt."
 
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: Klassenname darf nur druckbare Zeichen enthalten."
 
 #, c-format
 msgid "lpadmin: Expected PPD after \"-%c\" option."
-msgstr ""
+msgstr "lpadmin: Nach der \"-%c\" Option PPD erwartet."
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
@@ -5979,7 +5982,7 @@ msgid "lpadmin: Unable to connect to server: %s"
 msgstr "lpadmin: Kann nicht mit dem Server %s verbinden."
 
 msgid "lpadmin: Unable to create temporary file"
-msgstr ""
+msgstr "lpadmin: Temporäre Datei kann nicht angelegt werden"
 
 msgid ""
 "lpadmin: Unable to delete option:\n"
@@ -6021,7 +6024,7 @@ msgid "lpadmin: Unknown option \"%c\"."
 msgstr "lpadmin: Unbekannte Option »%c«."
 
 msgid "lpadmin: Warning - content type list ignored."
-msgstr ""
+msgstr "lpadmin: Warnung - Inhaltstypliste ignoriert."
 
 msgid "lpc> "
 msgstr "lpc> "
@@ -6030,7 +6033,7 @@ msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
 msgstr ""
 
 msgid "lpinfo: Expected language after \"--language\"."
-msgstr ""
+msgstr "lpinfo: Sprache nach \"--language\" erwartet."
 
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
 msgstr ""
@@ -6064,11 +6067,11 @@ msgstr "lpoptions: Hinzufügen von Drucker oder Instanz nicht möglich: %s"
 
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr "lpoptions: Keine PPD Datei für %s: %s verfügbar"
+msgstr "lpoptions: Keine PPD-Datei für %s: %s verfügbar"
 
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
-msgstr "lpoptions: Keine PPD Datei für %s verfügbar."
+msgstr "lpoptions: Keine PPD-Datei für %s verfügbar."
 
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: Unbekannter Drucker oder Klasse."
@@ -6471,7 +6474,7 @@ msgstr "ppdc: Schreibe: %s."
 
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
-msgstr ""
+msgstr "ppdc: Schreibe PPD-Dateien in Verzeichnis \"%s\"."
 
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
@@ -6479,7 +6482,7 @@ msgstr ""
 
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
-msgstr ""
+msgstr "ppdmerge: PPD-Datei %s wird ignoriert."
 
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
@@ -6491,7 +6494,7 @@ msgstr "Drucker %s ist deaktiviert seit %s"
 
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
-msgstr "Drucker %s ist im Leerlauf. Aktiviert seit %s"
+msgstr "Drucker %s ist im Leerlauf.  Aktiviert seit %s"
 
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
@@ -6503,7 +6506,7 @@ msgstr "Drucker %s/%s deaktiviert seit %s"
 
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
-msgstr "Drucker %s/%s ist im Leerlauf. Aktiviert seit %s"
+msgstr "Drucker %s/%s ist im Leerlauf.  Aktiviert seit %s"
 
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
index e5bf2a3..b467819 100644 (file)
@@ -69,7 +69,7 @@ Back-channel data from the device should be relayed to the job filters using the
 Backends are responsible for reading side-channel requests using the
 .BR cupsSideChannelRead ()
 function and responding with the
-.BR cupsSideChannelWrite()
+.BR cupsSideChannelWrite ()
 function. The
 .B CUPS_SC_FD
 constant defines the file descriptor that should be monitored for incoming requests.
@@ -170,7 +170,7 @@ The device URI associated with the printer.
 .SH FILES
 .I /etc/cups/cups-files.conf
 .SH NOTES
-CUPS backends are not generally design to be run directly by the user. Aside from the device URI issue (
+CUPS backends are not generally designed to be run directly by the user. Aside from the device URI issue (
 .I argv[0]
 and
 .B DEVICE_URI
index 8f5082a..a623fc0 100644 (file)
@@ -51,7 +51,7 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
 .TP 5
 \fBServerName \fI/domain/socket\fR
 Specifies the address and optionally the port to use when connecting to the server.
-\fBNote: This directive it not supported on macOS 10.7 or later.\fR
+\fBNote: This directive is not supported on macOS 10.7 or later.\fR
 .TP 5
 \fBServerName \fIhostname-or-ip-address\fR[\fI:port\fR]\fB/version=1.1\fR
 Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier.
index df001fb..8e62184 100644 (file)
@@ -10,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH cups-files.conf 5 "CUPS" "20 June 2016" "Apple Inc."
+.TH cups-files.conf 5 "CUPS" "19 September 2016" "Apple Inc."
 .SH NAME
 cups\-files.conf \- file and directory configuration file for cups
 .SH DESCRIPTION
@@ -54,6 +54,13 @@ The default is "0644" on macOS and "0640" on all other operating systems.
 \fBNote:\fR The permissions for the \fIprinters.conf\fR file are currently masked to only allow access from the scheduler user (typically root).
 This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system.
 There is no way to disable this security feature.
+.\"#CreateSelfSignedCerts
+.TP 5
+\fBCreateSelfSignedCerts yes\fR
+.TP 5
+\fBCreateSelfSignedCerts no\fR
+Specifies whether the scheduler automatically creates self-signed certificates for client connections using TLS.
+The default is yes.
 .\"#DataDir
 .TP 5
 \fBDataDir \fIpath\fR
index 42f2453..3b9b410 100644 (file)
@@ -104,7 +104,7 @@ CUPS includes configuration files for
 .BR launchd (8),
 .BR systemd (8),
 and
-.BR xinetd(8).
+.BR xinetd (8).
 Simply enable the
 .B cups-lpd
 service using the corresponding control program.
index d4b2f8c..4cede48 100644 (file)
@@ -231,14 +231,14 @@ The default is "30".
 .\"#LimitIPP
 .TP 5
 \fB<Limit \fIoperation \fR...\fB> \fR... \fB</Limit>\fR
-Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS".
+Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATION NAMES".
 .\"#Limit
 .TP 5
 \fB<Limit \fImethod \fR...\fB> \fR... \fB</Limit>\fR
 .\"#LimitExcept
 .TP 5
 \fB<LimitExcept \fImethod \fR...\fB> \fR... \fB</LimitExcept>\fR
-Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS".
+Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHOD NAMES".
 .\"#LimitRequestBody
 .TP 5
 \fBLimitRequestBody \fIsize\fR
@@ -689,7 +689,7 @@ The resource for the named printer class
 The path for all jobs (hold-job, release-job, etc.)
 .TP 5
 /jobs/id
-The path for the specified job.
+The path for the specified job
 .TP 5
 /printers
 The path for all printers
index 16ba1d6..91c57b4 100644 (file)
@@ -569,6 +569,7 @@ f 0444 root sys $DOCDIR/apple-touch-icon.png doc/apple-touch-icon.png
 d 0755 root sys $DOCDIR/help -
 f 0444 root sys $DOCDIR/help/accounting.html doc/help/accounting.html
 f 0444 root sys $DOCDIR/help/cgi.html doc/help/cgi.html
+f 0444 root sys $DOCDIR/help/encryption.html doc/help/encryption.html
 f 0444 root sys $DOCDIR/help/glossary.html doc/help/glossary.html
 f 0444 root sys $DOCDIR/help/kerberos.html doc/help/kerberos.html
 f 0444 root sys $DOCDIR/help/license.html doc/help/license.html
index a66c3e7..9dc64bb 100644 (file)
 
 Summary: CUPS
 Name: cups
-Version: 2.2.0
+Version: 2.2.1
 Release: 0
 Epoch: 1
 License: GPL
 Group: System Environment/Daemons
-Source: https://github.com/apple/cups/releases/download/release-2.2.0/cups-2.2.0-source.tar.gz
+Source: https://github.com/apple/cups/releases/download/release-2.2.1/cups-2.2.1-source.tar.gz
 Url: http://www.cups.org
 Packager: Anonymous <anonymous@foo.com>
 Vendor: Apple Inc.
@@ -251,6 +251,7 @@ rm -rf $RPM_BUILD_ROOT
 %dir /usr/share/doc/cups/help
 /usr/share/doc/cups/help/accounting.html
 /usr/share/doc/cups/help/cgi.html
+/usr/share/doc/cups/help/encryption.html
 /usr/share/doc/cups/help/glossary.html
 /usr/share/doc/cups/help/kerberos.html
 /usr/share/doc/cups/help/license.html
index 6606635..0290833 100644 (file)
@@ -251,6 +251,7 @@ rm -rf $RPM_BUILD_ROOT
 %dir /usr/share/doc/cups/help
 /usr/share/doc/cups/help/accounting.html
 /usr/share/doc/cups/help/cgi.html
+/usr/share/doc/cups/help/encryption.html
 /usr/share/doc/cups/help/glossary.html
 /usr/share/doc/cups/help/kerberos.html
 /usr/share/doc/cups/help/license.html
index fca183b..a73a1e0 100644 (file)
@@ -1179,14 +1179,22 @@ cupsdCheckGroup(
 #ifdef HAVE_GETGROUPLIST
     if (user)
     {
-      int      ngroups,                /* Number of groups */
-               groups[2048];           /* Groups that user belongs to */
+      int      ngroups;                /* Number of groups */
+#  ifdef __APPLE__
+      int      groups[2048];           /* Groups that user belongs to */
+#  else
+      gid_t    groups[2048];           /* Groups that user belongs to */
+#  endif /* __APPLE__ */
 
       ngroups = (int)(sizeof(groups) / sizeof(groups[0]));
+#  ifdef __APPLE__
       getgrouplist(username, (int)user->pw_gid, groups, &ngroups);
+#  else
+      getgrouplist(username, user->pw_gid, groups, &ngroups);
+#endif /* __APPLE__ */
 
       for (i = 0; i < ngroups; i ++)
-        if ((int)group->gr_gid == groups[i])
+        if (group->gr_gid == groups[i])
          return (1);
     }
 #endif /* HAVE_GETGROUPLIST */
index 088501e..8110cb4 100644 (file)
@@ -138,6 +138,9 @@ static const cupsd_var_t    cupsfiles_vars[] =
   { "AccessLog",               &AccessLog,             CUPSD_VARTYPE_STRING },
   { "CacheDir",                        &CacheDir,              CUPSD_VARTYPE_STRING },
   { "ConfigFilePerm",          &ConfigFilePerm,        CUPSD_VARTYPE_PERM },
+#ifdef HAVE_SSL
+  { "CreateSelfSignedCerts",   &CreateSelfSignedCerts, CUPSD_VARTYPE_BOOLEAN },
+#endif /* HAVE_SSL */
   { "DataDir",                 &DataDir,               CUPSD_VARTYPE_STRING },
   { "DocumentRoot",            &DocumentRoot,          CUPSD_VARTYPE_STRING },
   { "ErrorLog",                        &ErrorLog,              CUPSD_VARTYPE_STRING },
@@ -739,6 +742,7 @@ cupsdReadConfiguration(void)
   FatalErrors              = parse_fatal_errors(CUPS_DEFAULT_FATAL_ERRORS);
   default_auth_type        = CUPSD_AUTH_BASIC;
 #ifdef HAVE_SSL
+  CreateSelfSignedCerts    = TRUE;
   DefaultEncryption        = HTTP_ENCRYPT_REQUIRED;
 #endif /* HAVE_SSL */
   DirtyCleanInterval       = DEFAULT_KEEPALIVE;
@@ -1181,7 +1185,9 @@ cupsdReadConfiguration(void)
     cupsdSetStringf(&ServerKeychain, "%s/%s", ServerRoot, ServerKeychain);
 
   cupsdLogMessage(CUPSD_LOG_DEBUG, "Using keychain \"%s\" for server name \"%s\".", ServerKeychain, ServerName);
-  cupsSetServerCredentials(ServerKeychain, ServerName, 1);
+  if (!CreateSelfSignedCerts)
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "Self-signed TLS certificate generation is disabled.");
+  cupsSetServerCredentials(ServerKeychain, ServerName, CreateSelfSignedCerts);
 #endif /* HAVE_SSL */
 
  /*
index 80250d9..585ba92 100644 (file)
@@ -240,6 +240,8 @@ VAR const char              **MimeTypes             VALUE(NULL);
                                        /* Array of MIME types */
 
 #ifdef HAVE_SSL
+VAR int                        CreateSelfSignedCerts   VALUE(TRUE);
+                                       /* Automatically create self-signed certs? */
 VAR char               *ServerKeychain         VALUE(NULL);
                                        /* Keychain holding cert + key */
 #endif /* HAVE_SSL */
index 1e9b514..ee5a2cb 100755 (executable)
@@ -141,8 +141,7 @@ esac
 
 echo ""
 echo "Now you can choose whether to create a SSL/TLS encryption key and"
-echo "certificate for testing; these tests currently require the OpenSSL"
-echo "tools:"
+echo "certificate for testing:"
 echo ""
 echo "0 - Do not do SSL/TLS encryption tests"
 echo "1 - Test but do not require encryption"