Imprimiendo con YSoft en macOS Ventura
Por George Gonzalez
- Lectura en 4 minutos - 684 palabrasCUPS ha cambiado!
Y puede que muchos no lo hayan notado.
Uno de los retos de integrar un nuevo sistema operativo es el probar la compatibilidad con todas las aplicaciones usadas en la empresa.
A veces sabemos que esperar, por ejemplo con un cambio de arquitectura como de Intel a Apple Silicon, o de KEXT a System Extensions. Pero son los cambios silenciosos los que pueden causar el mayor daño. Por ejemplo los cambios no documentados a APIs o códigos de cifrado.
Cuando el sistema de YSoft\Safeq es utilizado, este instala una aplicación en /Applications ademas de otros archivos de soporte en /usr/libexec/cups/backend y /usr/local/lib. Uno de estos es el binario sqport.
Las impresoras creadas con Safeq aparecen de esta manera:
lpstat -v
sqport://DNSNAME/QUEUE
Durante las pruebas en Ventura Beta, al imprimir el usuario recibía un mensaje genérico de CUPS: Backend Failed en la impresora local y el trabajo de impresión nunca se transmitía a la servidora de impresión.
Al abrir la Consola, era aparente que el binario sqport estaba fallando. Después de contactar a los ingenieros de YSoft ellos prontamente pudieron desarrollar una version actualizada compatible con Ventura. Lamentablemente esto no solucionó nuestros problemas.
El error del backend continuó , y todavía no podíamos imprimir. Lo que si notamos fue que la nueva version de YSoft proveía registros en la consola mas verbosos. Eso nos permitió ver que al principio de la conexión con la servidora de impresión ocurrían errores de StartTLS. Esto nos hizo examinar mas de cerca la conversación de red y los protocolos de cifrado que se estaban utilizando.
default 14:48:31.231846-0500 sqport Crafting ui connector
default 14:48:31.233844-0500 sqport Connected to SafeQ service
default 14:48:31.233920-0500 sqport Crefted
default 14:48:31.234045-0500 sqport Received file with name: Untitled
default 14:48:31.234163-0500 sqport Configuration found
default 14:48:31.234260-0500 sqport SQBackendBroker sendJob
default 14:48:31.234297-0500 sqport DHCPPrintRoamingEnabled is disabled
default 14:48:31.234324-0500 sqport Loading failover configuration
default 14:48:31.234441-0500 sqport Using server address from CUPS
default 14:48:31.234688-0500 sqport Delivering job to server: <REMOVED>
default 14:48:31.235378-0500 sqport Connecting...
default 14:48:31.235428-0500 sqport Connected
default 14:48:31.236411-0500 sqport networkd_settings_read_from_file initialized networkd settings by reading plist directly
default 14:48:31.237164-0500 sqport networkd_settings_read_from_file initialized networkd settings by reading plist directly
default 14:48:31.562671-0500 sqport socket:didConnectToHost:<REMOVED> port:<REMOVED>
default 14:48:31.563158-0500 sqport Sending command Check:
default 14:48:31.563236-0500 sqport Sending command ProtocolLevel:4
default 14:48:31.563322-0500 sqport Connected to SafeQ
default 14:48:31.563379-0500 sqport Sending command Get-Encryption:TLS
default 14:48:32.178272-0500 sqport Line response: %%%SafeQ-Encryption:OK
default 14:48:32.178764-0500 sqport Encrypted connection confirmed.
default 14:48:32.179069-0500 sqport Requesting StartTLS with options:
{
kCFStreamSSLValidatesCertificateChain = 0;
}
default 14:48:32.194672-0500 sqport *** Assertion failure in -[GCDAsyncSocket ssl_startTLS], GCDAsyncSocket.m:7257
default 14:48:32.196171-0500 sqport *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Security option unavailable - kCFStreamSSLValidatesCertificateChain - You must use manual trust evaluation'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff801fe9cb3 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff801b3a10a objc_exception_throw + 48
2 Foundation 0x00007ff802dc7fb0 -[NSCalendarDate initWithCoder:] + 0
3 sqport 0x00000001022b35a9 -[GCDAsyncSocket ssl_startTLS] + 4931
4 sqport 0x00000001022b1f2f __27-[GCDAsyncSocket startTLS:]_block_invoke + 130
5 libdispatch.dylib 0x00007ff801d167fb _dispatch_call_block_and_release + 12
6 libdispatch.dylib 0x00007ff801d17a44 _dispatch_client_callout + 8
7 libdispatch.dylib 0x00007ff801d1dac4 _dispatch_lane_serial_drain + 694
8 libdispatch.dylib <…>
default 14:48:32.196455-0500 kernel AMFI: Denying core dump for pid 5465 (sqport)
default 14:48:32.196568-0500 kernel sqport[5465] Corpse allowed 1 of 5
default 14:48:32.801192-0500 ReportCrash Formulating fatal 309 report for corpse[5465] sqport
Siguiendo esta linea de investigación nos llevó a la solución final.
Actualizacion: He recibido mucho interes sobre este tema. Queria adicionar este detalle, la version de SafeQ que funciona para mi en Ventura es 4.18.
Lecciones aprendidas:
- Probar cada Beta, y cada programa y función con cada beta.
- Tenga un plan de respaldo. En mi caso, teníamos una solución temporaria para la impresión en menos de una hora después de encontrar el problema.
- Tenga buenas relaciones y contactos con sus partners. Tanto Apple como YSoft respondieron a nuestras preguntas el mismo día.
- Comunique, mantenga a el liderazgo y los usuarios al día.
Cierto es que el imprimir en papel en estos tiempos de trabajo remoto y equipos distribuidos puede que no sea tan esencial como lo era antes, pero la clave es que el actualizar el sistema operativo no nos debería dejar en una situación peor que antes de hacerlo.
-G.G