#!/bin/sh
# alien added permissions fixup code
chown 'lp:lp' '/var/opt/novell/log/iprint'
chmod '755' '/var/opt/novell/log/iprint'
chown 'lp:lp' '/var/opt/novell/log/iprint/client'
chmod '755' '/var/opt/novell/log/iprint/client'

##
## First, modify cupsd.conf to allow local access to /admin:
##
DATE=$(date +%Y%m%d)
TMP_DIR=/tmp
TMP_FILE="$(mktemp ${TMP_DIR}/.cupsd.conf.XXXXXX)"
TMP_FILE2="$(mktemp ${TMP_DIR}/usr.sbin.cupsd.XXXXXX)"
EDIT_TAG="Edited by Novell-iPrint:"
CONF_FILE="/etc/cups/cupsd.conf"
APP_ARMOR_CONF_FILE="/etc/apparmor.d/usr.sbin.cupsd"
BACKUP_FILE=${CONF_FILE}.bak.${DATE}.$$
APP_ARMOR_BACKUP_FILE=${APP_ARMOR_CONF_FILE}.bak.${DATE}.$$
# Modify CONF_FILE for 'high' security model for /admin section
if [ -f ${CONF_FILE} ]; then
   sed -e "/^ *< *Location *\/admin/,/^ *< *\/Location *>/{          # Work only in the '<Location /admin>' block
         /^.*Location/!d;                                            # Delete all but the location directives
         s@\(^ *< *Location.*$\)@\1\n# ${EDIT_TAG} ${DATE}\n#\n# Security setting: high\n# Original configuration backed up to ${BACKUP_FILE}\n#\n\nAuthType Basic\nAuthClass Group\nAuthGroupName lpadmin\n\n## Restrict access to local domain\nOrder Deny,Allow\nDeny From All\nAllow From 127.0.0.1\n#Encryption Required@;
      }" ${CONF_FILE} >  "${TMP_FILE}"
   # Replace the CONF_FILE with our modified version
   if ! cp "${CONF_FILE}" "${BACKUP_FILE}"; then
      echo "Error: Failed to create backup of $(basename ${CONF_FILE})"
      echo "Add 'Allow From 127.0.0.1' for all users to <Location /admin> section manualy."
   elif ! mv "${TMP_FILE}" ${CONF_FILE}; then
      echo "Error: Failed to modify $(basename ${CONF_FILE})"
      echo "Add 'Allow From 127.0.0.1' for all users to <Location /admin> section manualy."
   fi
   rm -f "${TMP_FILE}"
else
   echo "${CONF_FILE}: No such file or directory or already modified by Novell iPrint"
fi
# Modify apparmor configuration:
if [ -f ${APP_ARMOR_CONF_FILE} ]; then
   sed -e "s#^ *  /usr/lib/cups/backend/usb ixr,#  /usr/lib/cups/backend/usb ixr,\n  /usr/lib/cups/backend/iprint ixr,\n  /etc/opt/novell/iprint/** rix,\n#" ${APP_ARMOR_CONF_FILE} >  "${TMP_FILE}"
   # Replace the CONF_FILE with our modified version
   if ! cp "${APP_ARMOR_CONF_FILE}" "${APP_ARMOR_BACKUP_FILE}"; then
      echo "Error: Failed to create backup of $(basename ${APP_ARMOR_CONF_FILE})"
      echo "add /usr/lib/iprint/backend/iprint with ixr ACL manually!"
   elif ! mv "${TMP_FILE2}" ${APP_ARMOR_CONF_FILE}; then
      echo "Error: Failed to modify $(basename ${APP_ARMOR_CONF_FILE})"
      echo "add /usr/lib/iprint/backend/iprint with ixr ACL manually!"
   fi 
   rm -f "${TMP_FILE2}"
else
   echo "${APP_ARMOR_CONF_FILE}: No such file or directory or already modified by Novell iPrint"
fi
if [ -f /usr/lib/libcups.so.2 ] && [ ! -f /usr/lib/libcups.so ]; then ln -s /usr/lib/libcups.so.2 /usr/lib/libcups.so; fi
/sbin/ldconfig
# Restart cups
# only if it is running ...
if [ -x /etc/init.d/cups ]; then
  /etc/init.d/cups restart
elif [ -x /etc/init.d/cupsys ]; then
  /etc/init.d/cupsys restart
fi

# Start print-listener
#if [ -x /opt/novell/iprint/bin/iprint-listener ]; then 
#	/opt/novell/iprint/bin/iprint-listener &
#fi
