#!/perl/bin/perl package Printit; use strict; sub printit { my $jobsdir = "/socket/jobs"; my $errorcode=0; my ($theserver,$thehost,$thequ, $tosend) = @_; if ($thequ !~ /\//) { # command to print stored logo substr($tosend, 2, 0) = chr(28) . chr(112) . chr(1) . chr(0); my ($status,$cmd,$cmd1,$seqno); my $thishost = $thehost; $thishost =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; my $cltadr = pack('C4',$1,$2,$3,$4); my $lpduser = "avo"; my $svr = $theserver; $svr =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; my $svradr = pack('C4',$1,$2,$3,$4); my $queue = $thequ; my $size = length($tosend); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $seqno = $min * 60; $seqno = $seqno + $sec +100; # must have at least 3 digits $seqno = $seqno - int($seqno/1000) * 1000; socket (SOC, 2, 1, 6) || ($errorcode=1); #die "socket: $!"; my $dest = pack('S n a4 x8',2,515,$svradr); connect (SOC, $dest) || ($errorcode=1); #die "connect: $!"; $cmd = "\002" . $queue . "\012"; send(SOC,$cmd,0) || ($errorcode=1); #die "send request $!"; recv(SOC,$status,1,0); if ($status ne "\000"){$errorcode=1} #{die "server refuses after: send request $!";}; $cmd = "\003" . $size . " dfA" . $seqno . "" . $thishost . "\012"; # RDF send(SOC,$cmd,0) || ($errorcode=1); #die "send data header $!"; recv(SOC,$status,1,0); if ($status ne "\000"){$errorcode=1} #{die "server refuses after: send data header $!";}; send(SOC,$tosend,0); send(SOC,"\000",0) || ($errorcode=1); #die "send end of data $!"; recv(SOC,$status,1,0); if ($status ne "\000"){$errorcode=1} #{die "server refuses after: send end of data $!";}; my $jobname = "AVOTO"; $cmd1 = "H" . $thishost . "\012" . "C" . $thishost . "\012" . "L" . $lpduser . "\012" . "P" . $lpduser . "\012" . "M" . $lpduser . "\012" . "J" . $jobname . "\012" . "N" . $jobname . "\012" . "fdfA" . $seqno . "" . $thishost . "\012" . "UdfA" . $seqno . "" . $thishost . "\012"; $cmd = "\002" . length($cmd1) . " cfA" . $seqno . "" . $thishost . "\012"; send(SOC,$cmd,0) || ($errorcode=1); #die "send control header $!"; # RCF recv(SOC,$status,1,0); if ($status ne "\000"){$errorcode=1} #{die "server refuses after: send control header $!";}; $cmd1 = $cmd1 . "\000"; send(SOC, $cmd1,0) || ($errorcode=1); #die "send control $!"; recv(SOC,$status,1,0); if ($status ne "\000"){$errorcode=1} #{die "server refuses after: send control $!";}; close SOC || ($errorcode=1); #die "close: $!"; } else { #MPrinter detected # command to print stored logo substr($tosend, 2, 0) = chr(28) . chr(112) . chr(1) . chr(0); my ($ip,$que) = split (/\//, $thequ); opendir (RDIR, "$jobsdir/$ip/$que"); my @currentjobs = grep {/job$|bad$/} readdir(RDIR); closedir (RDIR); #print join (",",@currentjobs); my $totalcount = scalar @currentjobs; $totalcount++; #print "> $jobsdir/$ip/$que/j_$totalcount"."_.job"; if (! -d "$jobsdir/$ip") { mkdir "$jobsdir/$ip" } if (! -d "$jobsdir/$ip/$que") { mkdir "$jobsdir/$ip/$que" } open (OFILE1, "> $jobsdir/$ip/$que/j_$totalcount"."_.job") || die " can not open: $!"; binmode (OFILE1); print OFILE1 $tosend; close(OFILE1); } return $errorcode; } 1;