RHEL-25805 [pappl] rebase pappl to 1.4.6
Resolves: RHEL-25805
This commit is contained in:
parent
78d025c616
commit
50fabbc98d
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@
|
||||
/pappl-1.4.2.tar.gz
|
||||
/pappl-1.4.3.tar.gz
|
||||
/pappl-1.4.4.tar.gz
|
||||
/pappl-1.4.6.tar.gz
|
||||
|
@ -0,0 +1,59 @@
|
||||
From 3f1c329fddc0490e2fc5b97925268db5875e4dfe Mon Sep 17 00:00:00 2001
|
||||
From: Michael R Sweet <msweet@msweet.org>
|
||||
Date: Thu, 2 May 2024 16:42:15 -0400
|
||||
Subject: [PATCH] Fix port number user input when adding a printer (Issue #360)
|
||||
|
||||
---
|
||||
CHANGES.md | 2 ++
|
||||
pappl/system-webif.c | 16 ++++++++++++----
|
||||
2 files changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/pappl/system-webif.c b/pappl/system-webif.c
|
||||
index 0b8bf6f..93de51a 100644
|
||||
--- a/pappl/system-webif.c
|
||||
+++ b/pappl/system-webif.c
|
||||
@@ -365,18 +365,21 @@ _papplSystemWebAddPrinter(
|
||||
device_uri[1024] = "", // Device URI
|
||||
*device_id = NULL, // Device ID
|
||||
hostname[256] = "", // Hostname
|
||||
+ hostvalue[256], // Hostname[:port]
|
||||
*ptr; // Pointer into string
|
||||
int port = 0; // Default port for Socket printing
|
||||
_pappl_system_dev_t devdata; // Device callback data
|
||||
static const char *hostname_pattern = // IP address or hostname pattern
|
||||
// Hostname per RFC 1123
|
||||
- "(^\\s*((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?)*\\.?)\\s*$)"
|
||||
+ "^((\\s*((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?)*\\.?)\\s*)"
|
||||
"|"
|
||||
// IPv4 address
|
||||
- "(^\\s*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\s*$)"
|
||||
+ "(\\s*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\s*)"
|
||||
"|"
|
||||
// IPv6 address
|
||||
- "(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$)";
|
||||
+ "(\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*)"
|
||||
+ // Optional port number
|
||||
+ ")(|:[0-9]+)$";
|
||||
|
||||
|
||||
if (!papplClientHTMLAuthorize(client))
|
||||
@@ -523,10 +526,15 @@ _papplSystemWebAddPrinter(
|
||||
|
||||
papplDeviceList(PAPPL_DEVTYPE_ALL, system_device_cb, &devdata, papplLogDevice, system);
|
||||
|
||||
+ if (port)
|
||||
+ snprintf(hostvalue, sizeof(hostvalue), "%s:%d", hostname, port);
|
||||
+ else
|
||||
+ papplCopyString(hostvalue, hostname, sizeof(hostvalue));
|
||||
+
|
||||
papplClientHTMLPrintf(client,
|
||||
"<option value=\"socket\">%s</option></tr>\n"
|
||||
" <tr><th><label for=\"hostname\">%s:</label></th><td><input type=\"text\" name=\"hostname\" id=\"hostname\" placeholder=\"%s\" pattern=\"%s\" value=\"%s\" disabled=\"disabled\"></td></tr>\n"
|
||||
- " <tr><th><label for=\"driver_name\">%s:</label></th><td><select name=\"driver_name\">", papplClientGetLocString(client, _PAPPL_LOC("Network Printer")), papplClientGetLocString(client, _PAPPL_LOC("Hostname/IP Address")), papplClientGetLocString(client, _PAPPL_LOC("IP address or hostname")), hostname_pattern, hostname, papplClientGetLocString(client, _PAPPL_LOC("Driver Name")));
|
||||
+ " <tr><th><label for=\"driver_name\">%s:</label></th><td><select name=\"driver_name\">", papplClientGetLocString(client, _PAPPL_LOC("Network Printer")), papplClientGetLocString(client, _PAPPL_LOC("Hostname/IP Address")), papplClientGetLocString(client, _PAPPL_LOC("IP address or hostname")), hostname_pattern, hostvalue, papplClientGetLocString(client, _PAPPL_LOC("Driver Name")));
|
||||
|
||||
if (system->autoadd_cb)
|
||||
papplClientHTMLPrintf(client, "<option value=\"auto\">%s</option>", papplClientGetLocString(client, _PAPPL_LOC("Auto-Detect Driver")));
|
||||
--
|
||||
2.45.2
|
||||
|
102
0001-List-raw-sockets-during-printers-subcommand-if-avail.patch
Normal file
102
0001-List-raw-sockets-during-printers-subcommand-if-avail.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From 539d471a9a484fa8f6bc894064704adae7829d34 Mon Sep 17 00:00:00 2001
|
||||
From: Zdenek Dohnal <zdohnal@redhat.com>
|
||||
Date: Tue, 13 Feb 2024 17:52:27 +0100
|
||||
Subject: [PATCH] List raw sockets during `printers` subcommand if available
|
||||
|
||||
Provide a way how to show path to raw socket via CLI without 3rd part
|
||||
tools.
|
||||
---
|
||||
pappl/mainloop-subcommands.c | 47 ++++++++++++++++++++++++++++++++++--
|
||||
pappl/printer-ipp.c | 11 +++++++++
|
||||
2 files changed, 56 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pappl/mainloop-subcommands.c b/pappl/mainloop-subcommands.c
|
||||
index 9df19b8..ee581b7 100644
|
||||
--- a/pappl/mainloop-subcommands.c
|
||||
+++ b/pappl/mainloop-subcommands.c
|
||||
@@ -1198,6 +1198,11 @@ _papplMainloopShowPrinters(
|
||||
ipp_t *request, // IPP request
|
||||
*response; // IPP response
|
||||
ipp_attribute_t *attr; // Current attribute
|
||||
+ ipp_tag_t value_tag; // Value tag of IPP attribute
|
||||
+ const char *printer_name, // Printer name
|
||||
+ *printer_uri, // Printer URI
|
||||
+ *attr_name, // Attribute name
|
||||
+ *socket_uri; // Socket URI
|
||||
|
||||
|
||||
(void)num_options;
|
||||
@@ -1213,8 +1218,46 @@ _papplMainloopShowPrinters(
|
||||
|
||||
response = cupsDoRequest(http, request, "/ipp/system");
|
||||
|
||||
- for (attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME); attr; attr = ippFindNextAttribute(response, "printer-name", IPP_TAG_NAME))
|
||||
- puts(ippGetString(attr, 0, NULL));
|
||||
+ for (attr = ippFirstAttribute(response); attr; attr = ippNextAttribute(response))
|
||||
+ {
|
||||
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
|
||||
+ attr = ippNextAttribute(response);
|
||||
+
|
||||
+ if (attr == NULL)
|
||||
+ break;
|
||||
+
|
||||
+ value_tag = IPP_TAG_CUPS_INVALID;
|
||||
+ printer_name = NULL;
|
||||
+ printer_uri = NULL;
|
||||
+ attr_name = NULL;
|
||||
+ socket_uri = NULL;
|
||||
+
|
||||
+ for (; attr && ippGetGroupTag(attr) == IPP_TAG_PRINTER; attr = ippNextAttribute(response))
|
||||
+ {
|
||||
+ value_tag = ippGetValueTag(attr);
|
||||
+
|
||||
+ if (value_tag != IPP_TAG_NAME &&
|
||||
+ value_tag != IPP_TAG_URI)
|
||||
+ continue;
|
||||
+
|
||||
+ attr_name = ippGetName(attr);
|
||||
+
|
||||
+ if (value_tag == IPP_TAG_NAME && !strcmp(attr_name, "printer-name"))
|
||||
+ printer_name = ippGetString(attr, 0, NULL);
|
||||
+
|
||||
+ if (value_tag == IPP_TAG_URI && !strcmp(attr_name, "smi55357-printer-socket-uri-supported"))
|
||||
+ socket_uri = ippGetString(attr, 0, NULL);
|
||||
+
|
||||
+ if (value_tag == IPP_TAG_URI && !strcmp(attr_name, "printer-uri-supported"))
|
||||
+ printer_uri = ippGetString(attr, 0, NULL);
|
||||
+ }
|
||||
+
|
||||
+ if (printer_name && printer_uri)
|
||||
+ printf("%s - printer - %s\n", printer_name, printer_uri);
|
||||
+
|
||||
+ if (printer_name && socket_uri)
|
||||
+ printf("%s - raw socket - %s\n", printer_name, socket_uri);
|
||||
+ }
|
||||
|
||||
ippDelete(response);
|
||||
httpClose(http);
|
||||
diff --git a/pappl/printer-ipp.c b/pappl/printer-ipp.c
|
||||
index 551eddc..0d473aa 100644
|
||||
--- a/pappl/printer-ipp.c
|
||||
+++ b/pappl/printer-ipp.c
|
||||
@@ -626,6 +626,17 @@ _papplPrinterCopyAttributesNoLock(
|
||||
ippAddStrings(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", 2, NULL, uri_authentication_none);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (printer->raw_active)
|
||||
+ {
|
||||
+ if (!ra || cupsArrayFind(ra, "smi55357-printer-socket-uri-supported"))
|
||||
+ {
|
||||
+ char socket_uri[1024]; // Buffer for socket URI
|
||||
+
|
||||
+ httpAssembleURI(HTTP_URI_CODING_ALL, socket_uri, sizeof(socket_uri), "socket", NULL, client->host_field, 9099 + printer->printer_id, NULL);
|
||||
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "smi55357-printer-socket-uri-supported", NULL, socket_uri);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@ -1,50 +0,0 @@
|
||||
From 0a880d5a3fd8d924d570d47e91cd2b521b0dc2e9 Mon Sep 17 00:00:00 2001
|
||||
From: Zdenek Dohnal <zdohnal@redhat.com>
|
||||
Date: Thu, 11 Jan 2024 15:40:09 +0100
|
||||
Subject: [PATCH] device-network.c: Fix crash in `pappl_dnssd_list()` with
|
||||
Avahi
|
||||
|
||||
If PAPPL testsuite runs in isolated environment, e.g. in mock, we cannot
|
||||
generate Avahi client, because Avahi is not running. This causes
|
||||
`_papplDNSSDInit()` to return NULL, which is later sent into
|
||||
`avahi_service_browser_new()`, which uses `assert()` for this argument
|
||||
and make the binary crash if the input is NULL.
|
||||
|
||||
The crash makes the testsuite fail during the build, which is useful
|
||||
sanity check before the package is built.
|
||||
---
|
||||
pappl/device-network.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pappl/device-network.c b/pappl/device-network.c
|
||||
index 108db3a..e866edd 100644
|
||||
--- a/pappl/device-network.c
|
||||
+++ b/pappl/device-network.c
|
||||
@@ -443,6 +443,7 @@ pappl_dnssd_list(
|
||||
DNSServiceRef pdl_ref; // Browse reference for _pdl-datastream._tcp
|
||||
# else
|
||||
AvahiServiceBrowser *pdl_ref; // Browse reference for _pdl-datastream._tcp
|
||||
+ _pappl_dns_sd_t dnssd; // DNS-SD service
|
||||
# endif // HAVE_MDNSRESPONDER
|
||||
|
||||
|
||||
@@ -467,7 +468,15 @@ pappl_dnssd_list(
|
||||
_PAPPL_DEBUG("pappl_dnssd_find: pdl_ref=%p (after)\n", pdl_ref);
|
||||
|
||||
# else
|
||||
- if ((pdl_ref = avahi_service_browser_new(_papplDNSSDInit(NULL), AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_pdl-datastream._tcp", NULL, 0, pappl_dnssd_browse_cb, devices)) == NULL)
|
||||
+ if ((dnssd = _papplDNSSDInit(NULL)) == NULL)
|
||||
+ {
|
||||
+ _papplDeviceError(err_cb, err_data, "Unable to create DNSSD service.");
|
||||
+ cupsArrayDelete(devices);
|
||||
+ _papplDNSSDUnlock();
|
||||
+ return (ret);
|
||||
+ }
|
||||
+
|
||||
+ if ((pdl_ref = avahi_service_browser_new(dnssd, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_pdl-datastream._tcp", NULL, 0, pappl_dnssd_browse_cb, devices)) == NULL)
|
||||
{
|
||||
_papplDeviceError(err_cb, err_data, "Unable to create service browser.");
|
||||
cupsArrayDelete(devices);
|
||||
--
|
||||
2.43.0
|
||||
|
15
pappl.spec
15
pappl.spec
@ -9,14 +9,18 @@
|
||||
|
||||
Summary: Printer Application Framework (PAPPL)
|
||||
Name: pappl
|
||||
Version: 1.4.4
|
||||
Release: 4%{?dist}
|
||||
Version: 1.4.6
|
||||
Release: 1%{?dist}
|
||||
License: Apache-2.0 WITH LLVM-exception
|
||||
Source: https://github.com/michaelrsweet/pappl/releases/download/v%{version}/pappl-%{version}.tar.gz
|
||||
Url: https://www.msweet.org/pappl
|
||||
|
||||
# https://github.com/michaelrsweet/pappl/pull/320
|
||||
Patch001: 0001-device-network.c-Fix-crash-in-pappl_dnssd_list-with-.patch
|
||||
# Add listing raw sockets
|
||||
# https://github.com/michaelrsweet/pappl/pull/341
|
||||
Patch001: 0001-List-raw-sockets-during-printers-subcommand-if-avail.patch
|
||||
# https://github.com/michaelrsweet/pappl/commit/3f1c329fdd
|
||||
Patch002: 0001-Fix-port-number-user-input-when-adding-a-printer-Iss.patch
|
||||
|
||||
|
||||
BuildRequires: avahi-devel
|
||||
BuildRequires: cups-devel
|
||||
@ -105,6 +109,9 @@ make test
|
||||
%{_mandir}/man3/pappl-system.3.gz
|
||||
|
||||
%changelog
|
||||
* Wed Jul 17 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1.4.6-1
|
||||
- RHEL-25805 [pappl] rebase pappl to 1.4.6
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.4.4-4
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (pappl-1.4.4.tar.gz) = 59351f0cbe72ee8109d89b74e4f7623f87128c548944529ec1e63556a0c516b22cb46eaf8e87a63b4a55d2e08d93866565c1e60e0b9eee3fe99277d8b56edd5d
|
||||
SHA512 (pappl-1.4.6.tar.gz) = 4130502470401340f2f9b52ddd723f52be5049017d6e218c63581739454f31342ed9898e6aabf823f61a758b545377ef83aa6bd91f613f5255e4531ee0d7023f
|
||||
|
Loading…
Reference in New Issue
Block a user