# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_printers.sh,v 1.9 2005-10-09 21:29:41 niro Exp $ # configures printing on the host via mysql db settings get_printer_settings() { local i all count prn_ids settings DB_PRINTER # first get all printer names prn_ids=$(mysqldo "select id from cfg_printers where serial='${ALX_SERIAL}'") # set counter equal to numbers of printers declare -i count=0 for i in ${prn_ids} do # now get the other settings und put them in arrays ALX_PRINTER_NAME[${count}]=$(mysqldo "select printer_name from cfg_printers where serial='${ALX_SERIAL}' and id='${i}'") ALX_PORT[${count}]=$(mysqldo "select port from cfg_printers where serial='${ALX_SERIAL}' and id='${i}'") ALX_IP[${count}]=$(mysqldo "select ip from cfg_printers where serial='${ALX_SERIAL}' and id='${i}'") ALX_SHARE[${count}]=$(mysqldo "select share from cfg_printers where serial='${ALX_SERIAL}' and id='${i}'") (( count++ )) done # export all settings export ALX_COUNT=${count} export ALX_PRINTER_NAME export ALX_PORT export ALX_IP export ALX_SHARE } config_printing() { local port # first of all get the vars get_printer_settings # first of all delete all printers, by wiping /etc/cups/printers.conf # please note that cups must be restarted or reloaded or stopped [ -n "$(pidof cupsd)" ] && /etc/init.d/cups stop &> /dev/null :> /etc/cups/printers.conf for (( i=0; i < ALX_COUNT; i++ )) do # get real port settings case ${ALX_PORT[${i}]} in lpt1) port="parallel:/dev/lp0" ;; com1) port="serial:/dev/ttyS0?baud=9600+bits=8+parity=none+flow=none" ;; com2) port="serial:/dev/ttyS1?baud=9600+bits=8+parity=none+flow=none" ;; usb1) port="usb:/dev/usb/lp0" ;; usb2) port="usb:/dev/usb/lp1" ;; lpd) port="lpd://${ALX_IP[${i}]}/${ALX_SHARE[${i}]}" ;; socket) port="socket://${ALX_IP[${i}]}:${ALX_SHARE[${i}]}" ;; esac # now add new printers (writing printers.conf) echo "" >> /etc/cups/printers.conf echo "Info ${ALX_PRINTER_NAME[${i}]}" >> /etc/cups/printers.conf echo "DeviceURI ${port}" >> /etc/cups/printers.conf echo "State Idle" >> /etc/cups/printers.conf echo "Accepting Yes" >> /etc/cups/printers.conf echo "JobSheets none none" >> /etc/cups/printers.conf echo "QuotaPeriod 0" >> /etc/cups/printers.conf echo "PageLimit 0" >> /etc/cups/printers.conf echo "KLimit 0" >> /etc/cups/printers.conf echo "" >> /etc/cups/printers.conf done # setup lpd print-services echo "printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd" > /etc/inetd.conf # start samba and cups if ALX_COUNT > 0 if [[ ${ALX_COUNT} != 0 ]] then rc-config add inetd &> /dev/null rc-config add cups &> /dev/null rc-config add samba &> /dev/null else rc-config del inetd &> /dev/null rc-config del cups &> /dev/null rc-config del samba &> /dev/null fi }