Samba, CUPS, SysV interface files

Scott Merrill smerrill at finelinegraphics.com
Fri Feb 3 18:32:01 UTC 2006


Hello.

On our RHEL3 server we run Xinet FullPress (http://www.xinet.com/), a print 
industry application that provides AppleTalk protocol support for Mac 
clients, as well as OPI image replacement and some print queue stuff.

Creating a print queue in FullPress creates a spooler that is presented to Mac 
clients, as well as a CUPS printer that is exposed via Samba.  For each queue 
created by FullPress, a file is created in /etc/cups/interfaces/ that in turn 
calls a script created by FullPress in /var/adm/appletalk/model/.

I _can_ print from Mac clients via AppleTalk to a FullPress created printer.
I _can_ print from the CUPS web-based admin tool to a FullPress created 
printer.
I _cannot_ print from a Windows client PC to a FullPress created printer.

For testing purposes, I executed the following command manually:
`lpadmin -p sdm -E -i /etc/cups/interfaces/HP5000 -v file:/dev/null`
(where HP5000 is the interface file created by FullPress pointing to the 
script /var/adm/appletalk/model/HP5000)
I can print a CUPS test pages to the "sdm" printer from the CUPS web-based 
admin tool.  I cannot print a Windows test page to the "sdm" printer from a 
PC.

I cranked the CUPS log level up to debug.  When I print a CUPS test page, I 
see that the interface file is being invoked:
D [03/Feb/2006:12:50:45 -0500] AcceptClient() 8 from localhost:631.
D [03/Feb/2006:12:50:45 -0500] ReadClient() 8 POST /printers/sdm HTTP/1.1
D [03/Feb/2006:12:50:45 -0500] print_job: request file type is
application/postscript.
D [03/Feb/2006:12:50:45 -0500] check_quotas: requesting-user-name = ''
D [03/Feb/2006:12:50:45 -0500] print_job: requesting-user-name = ''
D [03/Feb/2006:12:50:45 -0500] Adding default job-sheets values
"none,none"...
I [03/Feb/2006:12:50:45 -0500] Job 38 queued on 'sdm' by ''.
D [03/Feb/2006:12:50:45 -0500] Job 38 hold_until = 0
D [03/Feb/2006:12:50:45 -0500] StartJob(38, 0x967b0e0)
D [03/Feb/2006:12:50:45 -0500] StartJob() id = 38, file = 0/1
D [03/Feb/2006:12:50:45 -0500] job-sheets=none,none
D [03/Feb/2006:12:50:45 -0500] banner_page = 0
D [03/Feb/2006:12:50:45 -0500] StartJob: argv = "sdm","38","","Test
Page","1","","/var/spool/cups/d00038-001"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[0]="PATH=/usr/lib/cups/filter:/bin:/usr/bin"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[1]="SOFTWARE=CUPS/1.1"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[2]="USER=root"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[3]="CHARSET=iso-8859-1"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[4]="LANG=en_US"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[5]=""
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[6]="PPD=/etc/cups/ppd/sdm.ppd"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[7]="CUPS_SERVERROOT=/etc/cups"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[8]="RIP_MAX_CACHE=8m"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[9]="TMPDIR=/var/spool/cups/tmp"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[10]="CONTENT_TYPE=application/postscript"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[11]="DEVICE_URI=file:/dev/null"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[12]="PRINTER=sdm"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[13]="CUPS_DATADIR=/usr/share/cups"
D [03/Feb/2006:12:50:45 -0500] StartJob:
envp[14]="CUPS_FONTPATH=/usr/share/cups/fonts"
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[15]=""
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[16]=""
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[17]=""
D [03/Feb/2006:12:50:45 -0500] StartJob: envp[18]=""
D [03/Feb/2006:12:50:45 -0500] StartJob: statusfds = 10, 11
D [03/Feb/2006:12:50:45 -0500] StartJob: filterfds[1] = 12, -1
D [03/Feb/2006:12:50:45 -0500] StartJob: filter = "/etc/cups/interfaces/sdm"
D [03/Feb/2006:12:50:45 -0500] StartJob: filterfds[0] = -1, 13
D [03/Feb/2006:12:50:45 -0500] start_process("/etc/cups/interfaces/sdm",
0xbffeae00, 0xbffea2b0, 12, 13, 11)
I [03/Feb/2006:12:50:45 -0500] Started filter /etc/cups/interfaces/sdm
(PID 26546) for job 38.
D [03/Feb/2006:12:50:45 -0500] ProcessIPPRequest: 8 status_code=0
D [03/Feb/2006:12:50:45 -0500] CloseClient() 8
D [03/Feb/2006:12:50:47 -0500] UpdateJob: job 38, file 0 is complete.
D [03/Feb/2006:12:50:47 -0500] CancelJob: id = 38
D [03/Feb/2006:12:50:47 -0500] StopJob: id = 38, force = 0
D [03/Feb/2006:12:50:47 -0500] StopJob: printer state is 3


When I print from a PC, I see that the interface file _is not_ being invoked:
D [03/Feb/2006:12:44:42 -0500] print_job: request file type is
application/vnd.cups-raw.
D [03/Feb/2006:12:44:42 -0500] check_quotas: requesting-user-name = '1702'
D [03/Feb/2006:12:44:42 -0500] print_job: requesting-user-name = '1702'
D [03/Feb/2006:12:44:42 -0500] Adding default job-sheets values
"none,none"...
I [03/Feb/2006:12:44:42 -0500] Job 37 queued on 'sdm' by '1702'.
D [03/Feb/2006:12:44:42 -0500] Job 37 hold_until = 0
D [03/Feb/2006:12:44:42 -0500] StartJob(37, 0x967b0e0)
D [03/Feb/2006:12:44:42 -0500] StartJob() id = 37, file = 0/1
D [03/Feb/2006:12:44:42 -0500] job-sheets=none,none
D [03/Feb/2006:12:44:42 -0500] banner_page = 0
D [03/Feb/2006:12:44:42 -0500] StartJob: argv =
"sdm","37","1702","smbprn.00000001 Test
Page","1","","/var/spool/cups/d00037-001"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[0]="PATH=/usr/lib/cups/filter:/bin:/usr/bin"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[1]="SOFTWARE=CUPS/1.1"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[2]="USER=root"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[3]="CHARSET=iso-8859-1"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[4]="LANG=en_US"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[5]=""
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[6]="PPD=/etc/cups/ppd/sdm.ppd"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[7]="CUPS_SERVERROOT=/etc/cups"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[8]="RIP_MAX_CACHE=8m"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[9]="TMPDIR=/var/spool/cups/tmp"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[10]="CONTENT_TYPE=application/vnd.cups-raw"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[11]="DEVICE_URI=file:/dev/null"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[12]="PRINTER=sdm"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[13]="CUPS_DATADIR=/usr/share/cups"
D [03/Feb/2006:12:44:42 -0500] StartJob:
envp[14]="CUPS_FONTPATH=/usr/share/cups/fonts"
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[15]=""
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[16]=""
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[17]=""
D [03/Feb/2006:12:44:42 -0500] StartJob: envp[18]=""
D [03/Feb/2006:12:44:42 -0500] StartJob: statusfds = 8, 9
D [03/Feb/2006:12:44:42 -0500] StartJob: filterfds[1] = 10, -1
D [03/Feb/2006:12:44:42 -0500] ProcessIPPRequest: 7 status_code=0
D [03/Feb/2006:12:44:42 -0500] UpdateJob: job 37, file 0 is complete.
D [03/Feb/2006:12:44:42 -0500] CancelJob: id = 37
D [03/Feb/2006:12:44:42 -0500] StopJob: id = 37, force = 0
D [03/Feb/2006:12:44:42 -0500] StopJob: printer state is 3
D [03/Feb/2006:12:44:42 -0500] CloseClient() 7

Can anyone shed some light on how to ensure the invocation of a SysV interface 
when printing to a CUPS printer through Samba?

Thanks!
Scott




More information about the redhat-list mailing list