Commit ee71be36 authored by Daniel Stan's avatar Daniel Stan

impression: ajoute 2dir backend pour tester

parent cbefd1a8
#!/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" ##############################################
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment