impression: ajoute 2dir backend pour tester
This commit is contained in:
parent
cbefd1a8e7
commit
ee71be3634
1 changed files with 148 additions and 0 deletions
148
impression/2dir_backend
Executable file
148
impression/2dir_backend
Executable file
|
@ -0,0 +1,148 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# /usr/lib/cups/backend/2dir
|
||||
#
|
||||
# (c) September 2007 Kurt Pfeifle <pfeifle@kde.org>
|
||||
# <kurt.pfeifle@infotec.com>
|
||||
# Network printing consultant Linux/Unix/Windows/Samba/CUPS
|
||||
#
|
||||
# License: GNU GPLv2 or GPLv3 (your choice)
|
||||
# Warranty: None at all; you may need to fix included defects on your own.
|
||||
#
|
||||
|
||||
backend=${0}
|
||||
jobid=${1}
|
||||
cupsuser=${2}
|
||||
jobtitle=${3}
|
||||
jobcopies=${4}
|
||||
joboptions=${5}
|
||||
jobfile=${6}
|
||||
printtime=$(date +%Y-%b-%d-%H-%M-%S)
|
||||
|
||||
# the following messages should appear in /var/log/cups/error_log,
|
||||
# depending on what "LogLevel" setting your cupsd.conf carries:
|
||||
echo "INFO: backend=${backend}" 1>&2
|
||||
echo "INFO: jobid=${jobid}" 1>&2
|
||||
echo "INFO: cupsuser=${cupsuser}" 1>&2
|
||||
echo "INFO: jobtitle=${jobtitle}" 1>&2
|
||||
echo "INFO: jobcopies=${jobcopies}" 1>&2
|
||||
echo "INFO: joboptions=${joboptions}" 1>&2
|
||||
echo "INFO: jobfile=${jobfile}" 1>&2
|
||||
echo "INFO: printtime=${printtime}" 1>&2
|
||||
echo "EMERG: This is a \"emergency\" level log message" 1>&2
|
||||
echo "ALERT: This is a \"alert\" level log message" 1>&2
|
||||
echo "CRIT: This is a \"critical\" level log message" 1>&2
|
||||
echo "ERROR: This is a \"error\" level log message" 1>&2
|
||||
echo "WARN: This is a \"warn\" level log message" 1>&2
|
||||
echo "NOTICE: This is a \"notice\" level log message" 1>&2
|
||||
echo "INFO: This is a \"info\" level log message" 1>&2
|
||||
echo "INFO: This is a 2nd \"info\" level log message" 1>&2
|
||||
echo "INFO: This is a 3rd \"info\" level log message" 1>&2
|
||||
echo "DEBUG: This is a \"debug\" level log message" 1>&2
|
||||
|
||||
|
||||
# we are free to compose the output filename written by the 2dir backend
|
||||
# in whatever way we like... However, we must be careful when using the
|
||||
# $jobtitle part -- the job may originate from a web browser and contain
|
||||
# slashes and all kinds of illegal or problematic characters. Therefore
|
||||
# we prefer to radically convert every "weird" character to an underscore
|
||||
# for our current purpose...
|
||||
|
||||
sanitized_jobtitle="$(echo ${jobtitle} | tr [[:blank:]:/%\&=+?\\\\#\'\`\´\*] _)"
|
||||
|
||||
# the following lines would do (nearly) the same as the above, but slower
|
||||
# -- yet better readable (and the above may be in need of some fixing still):
|
||||
#sanitized_jobtitle="$(echo ${jobtitle} \
|
||||
# |tr [:blank:] _ \
|
||||
# |tr : _ \
|
||||
# |tr \"\ \" _ \
|
||||
# |tr / _ \
|
||||
# |tr % _ \
|
||||
# |tr \' _ \
|
||||
# |tr \` _ \
|
||||
# |tr \´ _ \
|
||||
# |tr \' _ \
|
||||
# |tr \& _ \
|
||||
# |tr \* _ \
|
||||
# |tr \# _ \
|
||||
# |tr = _ \
|
||||
# |tr + _ \
|
||||
# |tr ? _ \
|
||||
# |tr \\\\ _ )"
|
||||
## # last line to get rid of "backslashes"...
|
||||
|
||||
# now for our final job output name:
|
||||
outname=${jobid}_${printtime}_${sanitized_jobtitle}
|
||||
# we include the $printtime part to have a uniq name in case the same job
|
||||
# is tested with different settings to be kept for comparing. It is also
|
||||
# useful for aligning debug efforts to CUPS' error_log entries.
|
||||
|
||||
|
||||
# we will read the output directory from the printers $DEVICE_URI environment
|
||||
# variable that should look s.th. like "2dir:/path/to/a/directory" and write
|
||||
# our printfile as $outname there....
|
||||
|
||||
# Now do the real work:
|
||||
case ${#} in
|
||||
0)
|
||||
# this case is for "backend discovery mode"
|
||||
echo "file 2dir \"KDEPrint Devel Dept.\" \"2dir backend to test CUPS and help KDEPrint development\""
|
||||
exit 0
|
||||
;;
|
||||
5)
|
||||
if [ ! -e ${DEVICE_URI#2dir:} ]; then
|
||||
mkdir -p ${DEVICE_URI#2dir:}
|
||||
# You may want to change this to 777 to allow you
|
||||
# to periodically delete the generated files:
|
||||
chmod 755 ${DEVICE_URI#2dir:}
|
||||
# WARNING! WARNING! WARNING! Don't use these file permissions
|
||||
# on a production print server! This is for development convenience
|
||||
# only! WARNING, security risk!
|
||||
fi
|
||||
|
||||
# backend needs to read from stdin if number of arguments is 5
|
||||
cat - > ${DEVICE_URI#2dir:}/${outname}
|
||||
|
||||
# Make sure everyone can read it
|
||||
chmod 644 ${DEVICE_URI#2dir:}/${outname}
|
||||
# WARNING! WARNING! WARNING! Don't use these file permissions
|
||||
# on a production print server! This is for development convenience
|
||||
# only! WARNING, security risk!
|
||||
;;
|
||||
6)
|
||||
if [ ! -e ${DEVICE_URI#2dir:} ]; then
|
||||
mkdir -p ${DEVICE_URI#2dir:}
|
||||
# You may want to change this to 777 to allow you
|
||||
# to periodically delete the generated files:
|
||||
chmod 755 ${DEVICE_URI#2dir:}
|
||||
# WARNING! WARNING! WARNING! Don't use these file permissions
|
||||
# on a production print server! This is for development convenience
|
||||
# only! WARNING, security risk!
|
||||
fi
|
||||
|
||||
# backend needs to read from file if number of arguments is 6
|
||||
cat ${6} > ${DEVICE_URI#2dir:}/${outname}
|
||||
|
||||
# Make sure everyone can read it
|
||||
chmod 644 ${DEVICE_URI#2dir:}/${outname}
|
||||
;;
|
||||
1|2|3|4|*)
|
||||
# these cases are unsupported
|
||||
echo " "
|
||||
echo " Usage: 2dir job-id user title copies options [file]"
|
||||
echo " "
|
||||
echo " (Install as CUPS backend in /usr/lib/cups/backend/2dir)"
|
||||
echo " (Use as 'device URI' like \"2dir:/path/to/writeable/directory\" for printer installation.)"
|
||||
exit 0
|
||||
esac
|
||||
|
||||
echo 1>&2
|
||||
|
||||
# we reach this line only if we actually "printed something"
|
||||
echo "NOTICE: processed Job ${jobid} to file ${DEVICE_URI#2dir:}/${outname}" 1>&2
|
||||
echo "NOTICE: End of \"${0}\" run...." 1>&2
|
||||
echo "NOTICE: ---------------------------------------------------------" 1>&2
|
||||
echo 1>&2
|
||||
exit 0
|
||||
|
||||
################# end "2dir" ##############################################
|
Loading…
Add table
Add a link
Reference in a new issue