nQ
Programmers Information
revision 2 - June 2002.
Programmers Information - LPR
Windows NT provides a simple LPR client:-
Sends a print job to a network printer
Usage: lpr -S server -P printer [-C class]
[-J job] [-o option] [-x] [-d] filename
Options:
-S server Name or ip address of the host providing lpd service
-P printer Name of the print queue
-C class Job classification for use on the burst page
-J job Job name to print on the burst page
-o option Indicates type of the file (by default assumes a text file)
Use "-o l" for binary (e.g. postscript) files
-x Compatibility with SunOS 4.1.x and prior
-d Send data file first
The syntax shown betrays the UNIX origins of the LPR/LPD process. In the nPortal spooler, a printer or queue is implemented as a sub-directory of the spooler root directory. The following command assumes our spooler is running on 195.72.138.22
lpr -S195.72.138.22 -Pa -Cyup -JJOBBY -ol t.ppg
Programmers Information - Control File Format
The LPR/LPD protocol transfers a file called "t.ppg" to a data file in the spooler folder "c:\spool\dfA083REDGHOST" (for example) and creates a control file with the following content.
cfA083REDGHOST
!195.72.138.19
HREDGHOST
PAdministrator
Cyup
JJOBBY
LAdministrator
ldfA083REDGHOST
UdfA083REDGHOST
Nt.ppg
Most users need not be concerned about the content of this control file but during this data files' life within the spooler, the control file and the data file travel around together. Each line of the control file consists of a single character (the command code) followed by a parameter. The nQ spooler may add some private command codes but if the data file is to be sent on to a external computer by LPR, only the parameters that strictly conform to the LPR/LPD protocol are used to reconstruct the LPR interface. Only a sub-set of commands are supported but they are usually enough to print or transmit a binary file.
Programmers Information - Control file parameters
Command Code
|
Size
|
Usage
|
Rule Symbol
|
Status
|
H
|
<=31
|
Responsible host
|
LPRH
|
Name of computer that sent the job
|
P
|
<=31
|
Responsible user
|
LPRP
USER
|
User login name
|
C
|
<=31
|
Class for banner page
|
LPRC
|
Mostly used to describe the data type.
-C parameter on NT LPR client.
|
J
|
<=99
|
Job name
|
LPRJ
|
-J parameter on NT LPR client
|
L
|
<=99
|
Print banner page
|
LPRL
|
User name for banner page. Class and Job entries must come first.
|
l
|
<=99
|
Filename
|
LPRLOWERL
|
Enagage binary file transfer
|
f
|
<=99
|
Filename
|
LPRF
|
Print formatted file. Usage deprecated.
|
U
|
<=99
|
Filename
|
LPRU
|
Unlink after printing. Nportal always deletes the data file after processing.
|
;
|
<16k
|
Status
|
COMMENT
|
Displayed by spooler active server page interface. Internal to nPortal.
|
f
|
<=99
|
Filename
|
LPRF
|
Print formatted file. Usage deprecated.
|
!
|
formatted IP
|
IP address
|
IP
|
Client host IP
|
Programmers Information - Plug-in programs
A plugin process (free-standing program) is launched by the rule table RUN action. The full path to the relevent data file is passed as the only command line parameter. The corresponding command file can be deduced by replacing "DF" with "CF" in the filename. The spooler thread will camp on the plugin thread process until the program exits. During this time the plugin has "carte blanche". When the plug-in program exits the data file is deleted and the control file status is updated. The default behaviour may be changed by using the program exit code to supply a new printer folder in which the job is to be reproduced. e.g.
procedure nQPromote(s:string);
begin
Halt(GlobalAddAtom(Pchar(s)));
end;
In this pascal example, nQPromote('NQ!PCLJOB') would stop the plugin and cause the job to be moved to the spooler PCLJOB directory. This is intended to support ad hoc data recognition programs or job step processes.
The complete CONTROL and DATAFILE is moved both may have been modified by the plug-in.
Note:- The "NQ!" preamble is a signature added for reasons of security.
Exit codes less than $c000 (i.e. Numbers that cannot represent atoms) are reported in the active server page status field. e.g. halt(3)
Other methods are available to submit local jobs to the spooler. An entry may be fabricated by first creating a datafile with a unique name conforming to the above format. The control file should then be written to a temporary file and then renamed into the appropriate CF filename.
e.g.
C:\spool\sinbox>type cfa2741local
Nlph.ggg
CINBOX_lph.ggg
HFile
!-
UdfA2741Local
A simple minded program may create a file in the configured scan directory. e.g. Writing a file called ALPHA.TXT will create an entry in the same folder with the class INBOX_ALPHA.TXT. Data separation is achieved by testing the filename e.g. IF lprc contains INBOX_ALPHA.
Print capture
|
The nQ Port Monitor re-directs print files sent to a windows printer driver to the nQLPD spooling system. Any
printer driver can be configured to use the nQ Port Monitor.
If the printer driver is shared then remote users may send files directly to the nQ spooler. A captured printer port
will bypass the printer driver services.
|
To install the nQ port monitor on Windows 95 or 98
- Run the program SETUP98. This will copy the required DLL to the system directory and install the port monitor
called nQ:
- Install a new printer on the machine hosting the nQLPD spooler. Any driver may be selected. GENERIC / TEXT ONLY
is sufficient for most applications.
- To engage the new port monitor select the DETAILS tab from the printer Properties Choose
the NQ: Port Monitor. Click APPLY and OK
- To make the printer visible to other users of The Network Neighborhood. Select the SHARING tab from the
printer PROPERTIES.
Programmers Information - Notes
The following actions are defined.
DUPLICATE
| Clones copies of the queue entry to a list of printer folders |
RUN
|
Execute a names plug-in |
TELNET | Stream data to a cooperating program |
LPR | Forward data to a remote LPD process (Most networked printers support this protocol |
DELETE | Delete the named job entry |
RedTitan Technology 2000, 2001, 2002,2003,2004,2010