1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
#! /bin/sh
set -e
if [ "$1" = configure ]; then
# Set up lpadmin group.
if [ -z "`getent group lpadmin`" ]; then
addgroup --system lpadmin
fi
for i in /etc/cups/classes.conf /etc/cups/printers.conf
do
if [ -f $i ] && ! dpkg-statoverride --list $i > /dev/null; then
chown root:lp $i; chmod 600 $i
fi
done
# symlink snakeoil SSL certificate if present
if [ -e /etc/ssl/certs/ssl-cert-snakeoil.pem -a \
-e /etc/ssl/private/ssl-cert-snakeoil.key -a \
-n "`getent group ssl-cert`" -a ! -e /etc/cups/ssl/server.crt \
-a ! -e /etc/cups/ssl/server.key -a ! -h /etc/cups/ssl/server.crt \
-a ! -h /etc/cups/ssl/server.key ]; then
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/cups/ssl/server.crt
ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/cups/ssl/server.key
fi
# Clear cache if we upgrade to 1.4.x
if dpkg --compare-versions "$2" lt-nl "1.4.1-5"; then
rm /var/cache/cups/* 2> /dev/null || :
fi
# Clear PPD cache if we upgrade to 1.5.x
if dpkg --compare-versions "$2" lt-nl "1.5.0-3"; then
rm /var/cache/cups/ppds.dat 2> /dev/null || :
fi
# Manage printcap file and associated symlinks
if [ -e /etc/cups/cupsd.conf ]; then
if [ -e /etc/printcap.cups ]; then
rm -f /etc/printcap.cups
fi
if [ -L /etc/printcap -a ! -e /etc/printcap ]; then
rm -f /etc/printcap
fi
printcap_file=`egrep '^Printcap ' /etc/cups/cupsd.conf | awk '{print $2}' | tail -n 1`
if [ -z "$printcap_file" ]; then
printcap_file=/var/run/cups/printcap
fi
if [ ! -e /etc/printcap -a -e $printcap_file ]; then
ln -s $printcap_file /etc/printcap
fi
fi
# Create default cupsd.conf if it doesn't exist
if [ ! -r /etc/cups/cupsd.conf ]; then
if dpkg --compare-versions "$2" le "1.6.1" && [ -e /etc/cups/cupsd.conf.conffile-bak ]; then
# Move cupsd.conf back as it is now a non-conffile
mv /etc/cups/cupsd.conf.conffile-bak /etc/cups/cupsd.conf
else
cp /usr/share/cups/cupsd.conf.default /etc/cups/cupsd.conf
fi
fi
# Remove lines from cupsd.conf which got obsolete in CUPS 1.6.x and would
# prevent the CUPS daemon from starting due to being invalid now.
if dpkg --compare-versions "$2" le "1.6.4"; then
# Backup pre-1.6 cupsd.conf for cups-browsed upgrade path
cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.pre16-bak
cat /etc/cups/cupsd.conf | grep -Eiv '^\s*Browse(Order|Allow|Deny|Poll|RemoteProtocols)' > /etc/cups/cupsd.conf.new
if [ -r /etc/cups/cupsd.conf.new ]; then
if ! diff -q /etc/cups/cupsd.conf /etc/cups/cupsd.conf.new > /dev/null 2>&1; then
mv -f /etc/cups/cupsd.conf.new /etc/cups/cupsd.conf
else
rm /etc/cups/cupsd.conf.new
fi
fi
# Also the argument "cups" for BrowseLocalProtocols is obsolete. Remove the
# argument and put "dnssd" if there are no arguments left.
cat /etc/cups/cupsd.conf | perl -p -e 's/^(\s*BrowseLocalProtocols.*?)\s+cups/$1/i; s/^(\s*BrowseLocalProtocols)(\s*)$/$1 dnssd$2/i' > /etc/cups/cupsd.conf.new
if [ -r /etc/cups/cupsd.conf.new ]; then
if ! diff -q /etc/cups/cupsd.conf /etc/cups/cupsd.conf.new > /dev/null 2>&1; then
mv -f /etc/cups/cupsd.conf.new /etc/cups/cupsd.conf
else
rm /etc/cups/cupsd.conf.new
fi
fi
fi
if dpkg --compare-versions "$2" le "1.7.1-9~" && [ -x /usr/sbin/logrotate ]; then
rotatemax=$(grep '^\s*rotate' /etc/logrotate.d/cups-daemon | sed -e 's/^\s*rotate\s*\(\d*\)/\1/g')
for logfiletype in access_log error_log cups-pdf_log error_log page_log; do
for biggest_non_gzipped in $(seq $rotatemax -1 1); do
if [ -f /var/log/cups/$logfiletype.$biggest_non_gzipped ]; then
max=$((rotatemax-biggest_non_gzipped))
for i in $(seq 1 $max); do
new=$((i+biggest_non_gzipped))
if [ -f /var/log/cups/$logfiletype.$i.gz ]; then
mv /var/log/cups/$logfiletype.$i.gz /var/log/cups/$logfiletype.$new.gz
fi
done
for i in $(seq 1 $biggest_non_gzipped); do
if [ -f /var/log/cups/$logfiletype.$i ]; then
gzip -f /var/log/cups/$logfiletype.$i
fi
done
break;
fi
done
done
fi
# Remove cups.path leftover symlink
if dpkg --compare-versions "$2" lt "1.7.4-3~" ; then
rm -f /etc/systemd/system/multi-user.target.wants/cups.path
fi
fi
#DEBHELPER#
exit 0
|