Magellan Linux

Diff of /alx-src/trunk/tinyalxconfig-ng/functions/config_printers.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 482 by niro, Wed Jun 4 16:47:56 2008 UTC revision 483 by niro, Sat Jun 7 16:59:07 2008 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_printers.sh,v 1.1 2008-06-04 16:47:56 niro Exp $  # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_printers.sh,v 1.2 2008-06-07 16:59:07 niro Exp $
2  # configures printing on the host via mysql db settings  # configures printing on the host via mysql db settings
3    
4  get_printer_settings()  add_printcap()
5  {  {
6   local i all count prn_ids settings DB_PRINTER   echo "$@" >> /etc/printcap
   
  # 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  
7  }  }
8    
9  config_printing()  config_printing()
10  {  {
11     local printer_list
12   local port   local port
13    
14   # first of all get the vars   # first of all delete all printers - printcap and spooler dirs -
15   get_printer_settings   :> /etc/printcap
16     find /var/spool/lpd -type d | xargs rm -rf
  # 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  
17    
18   for (( i=0; i < ALX_COUNT; i++ ))   printer_list=$(mysqldo "select id from cfg_printers where serial='${ALX_SERIAL}'")
19     for printer in ${printer_list}
20   do   do
21     evaluate_table_xml cfg_printers "where serial='${ALX_SERIAL}' and id='${printer}'"
22    
23   # get real port settings   # get real port settings
24   case ${ALX_PORT[${i}]} in   case ${cfg_printers_port} in
25   lpt1)   lpt1) port="/dev/lp0" ;;
26   port="parallel:/dev/lp0"   com1) port="/dev/ttyS0" ;;
27   ;;   com2) port="/dev/ttyS1" ;;
  com1)  
  port="serial:/dev/ttyS0?baud=9600+bits=8+parity=none+flow=none"  
  ;;# echo "DEBUG: deleting samba+cups+inetd"  
  com2)  
  port="serial:/dev/ttyS1?baud=9600+bits=8+parity=none+flow=none"  
  ;;  
  lpd)  
  port="lpd://${ALX_IP[${i}]}/${ALX_SHARE[${i}]}"  
  ;;  
  socket)  
  port="socket://${ALX_IP[${i}]}:${ALX_SHARE[${i}]}"  
  ;;  
28   esac   esac
29    
30   # now add new printers (writing printers.conf)   # now add new printers (writing printers.conf)
31   echo "<Printer ${ALX_PRINTER_NAME[${i}]}>" >> /etc/cups/printers.conf   add_printcap "# alxconfig printer id=${printer} name=${cfg_printers_printer_name}"
32   echo "Info ${ALX_PRINTER_NAME[${i}]}" >> /etc/cups/printers.conf   # printer name
33   echo "DeviceURI ${port}" >> /etc/cups/printers.conf   add_printcap "${cfg_printers_printer_name}|ALX auto-configured printer id=${printer}"
34   echo "State Idle" >> /etc/cups/printers.conf   # port
35   echo "Accepting Yes" >> /etc/cups/printers.conf   add_printcap "   :lp=${port}"
36   echo "JobSheets none none" >> /etc/cups/printers.conf   # spooler dir
37   echo "QuotaPeriod 0" >> /etc/cups/printers.conf   add_printcap "   :sd=/var/spool/lpd/${printer}"
38   echo "PageLimit 0" >> /etc/cups/printers.conf   # error log
39   echo "KLimit 0" >> /etc/cups/printers.conf   add_printcap "   :lf=/var/log/lp-errs"
40   echo "</Printer>" >> /etc/cups/printers.conf   # page length
41     #add_printcap "   :pl=#66"
42     # page width
43     #add_printcap "   :pw=#80"
44     # cost per page
45     #add_printcap "   :pc=#150"
46     # maximum file size
47     #add_printcap "   :mx=#0"
48     # suppress page header
49     add_printcap "   :sh"
50     # empty line as spacer for the next one
51     add_printcap
52    
53     # now create the spooler dir
54     install -o lp -g lp -d /var/spool/lpd/${printer}
55     chmod 0700 /var/spool/lpd/${printer}
56   done   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  
57  }  }

Legend:
Removed from v.482  
changed lines
  Added in v.483