#!/bin/sh

########################################################################
#             Copyright 2010-2012 Lexmark International, Inc.          #
#                        All rights reserved                           #
########################################################################
#
# This filter is a helper script to provide dynamic username & hostname 
# for Fax and Print & Hold print jobs.    
#
# 03/04/2020 :- Added the support of Job Accounting feature
########################################################################
#
#-------------------------
#-- BEGIN: System Commands
#-------------------------
PRINT_CMD="/bin/echo"
SED_CMD="/bin/sed"
HOSTNAME="/bin/hostname"
if [ -x "/bin/awk" ];then AWK_CMD="/bin/awk" ; else AWK_CMD="/usr/bin/awk" ; fi

myhost=`${HOSTNAME}`
myuser=$2
#myjob=`echo "$3" | sed -e 's|&|\\\&|g' | sed -e "s|\"|'|g"`
myjob=`echo "$3" | awk -F'\' -v OFS="\\\\\\\\\\\\" '$1=$1' | sed -e 's|&|\\\&|g' | sed -e "s|\"|'|g" | sed -e 's|\/|\\\/|g'`
mycopies=$4

# Job accounting feature support added for Linux UPD
isJA=0
echo $5 | grep -w "EnableJA" >/dev/null 2>&1
if [ $? -eq 0 ]; then
	isJA=1
	for i in `echo $5`
	do
		echo $i | grep "JAUSERID" >/dev/null
		if [ $? -eq 0 ]; then
			echo $i | grep "JALoggedInUserName" >/dev/null
			if [ $? -eq 0 ]; then
				jaUser=${myuser}
			else
				echo $i | grep -i "custom\." >/dev/null
				if [ $? -eq 0 ]; then
					jaUser=`echo $i | awk -F"." '{print $NF}'`
				else
					jaUser=`echo $i | awk -F"=" '{print $NF}'`
				fi
			fi
			continue
		fi
		echo $i | grep "JAACCTNUM" >/dev/null
		if [ $? -eq 0 ]; then
			echo $i | grep -i "custom\." >/dev/null
			if [ $? -eq 0 ]; then
				jaAcc=`echo $i | awk -F"." '{print $NF}'`
			else
				jaAcc=`echo $i | awk -F"=" '{print $NF}'`
			fi
			continue
		fi
		echo $i | grep "JADEPTNUM" >/dev/null
		if [ $? -eq 0 ]; then
			echo $i | grep -i "custom\." >/dev/null
			if [ $? -eq 0 ]; then
				jaDep=`echo $i | awk -F"." '{print $NF}'`
			else
				jaDep=`echo $i | awk -F"=" '{print $NF}'`
			fi
			continue
		fi
	done
fi

#-- Uncomment line below for debugging purposes.  If fax-pnh-filter.debug is created in /tmp, 
#-- then that means that this fax-pnh-filter was successfully called.
#${PRINT_CMD} user=$myuser job=$myjob >> /tmp/fax-pnh-filter.debug

# For Job accounting feature: Adding Job Accounting related PJLs
if [ $isJA -eq 1 ]; then
	${SED_CMD} -e "s/STATIONID = GETMYHOST/STATIONID = \"${myhost}\"/g" -e "s/PJL SET USERNAME = GEYMYUSERNAME/PJL SET USERNAME = \"${myuser}\"/g" -e "s/PJL SET JOBNAME = GETMYJOBNAME/PJL SET JOBNAME = \"${myjob}\"/g" -e "s/PJL SET QTY = GETMYCOPIES/PJL SET QTY = ${mycopies}/g" -e "s/PJL LJOBINFO USERID = GEYMYUSERNAME HOSTID = GETMYHOST/PJL LJOBINFO USERID = \"${myuser}\" HOSTID = \"${myhost}\"/g" -e "5 i @PJL SET LJOBCREDUSERNAME = \"${jaUser}\"\n@PJL SET LJOBCREDACCOUNTID = ${jaAcc}\n@PJL SET LJOBCREDDEPTID = ${jaDep}"

elif [ $isPnH -eq 1 ]; then
	${SED_CMD} -e "s/STATIONID = GETMYHOST/STATIONID = \"${myhost}\"/g" -e "s/PJL SET USERNAME = GEYMYUSERNAME/PJL SET USERNAME = \"${myuser}\"/g" -e "s/PJL SET JOBNAME = GETMYJOBNAME/PJL SET JOBNAME = \"${myjob}\"/g" -e "s/PJL SET QTY = GETMYCOPIES/PJL SET QTY = ${mycopies}/g" -e "s/PJL LJOBINFO USERID = GEYMYUSERNAME HOSTID = GETMYHOST/PJL LJOBINFO USERID = \"${myuser}\" HOSTID = \"${myhost}\"/g"

else
        ${SED_CMD} -e "3 i @PJL SET JOBNAME = \"${myjob}\""
fi
