# $Id$ provide printing lprng require basic-kernel help_printing_printer() { mecho "get printing.printer" mecho " Shows all configured printers." mecho mecho "set printing.addprinter [action] [name] [port] [ip] [share]" mecho " Adds or deletes a printer." mecho " Actions:" mecho " add - adds given printer" mecho " del - deletes given printer" mecho mecho " name - name of the printer" mecho " port - printing port (lpt1, usb1, com1 ... lptN, usbN, comN" # mecho " ip - ip of the remote printer - optional" # mecho " share - share/port name of the remote printer - optional" } helper_addprinter() { local name="$1" local port="$2" # local ip="$3" # local share="$4" [[ -z ${name} ]] && help_printing_printer && return 1 [[ -z ${port} ]] && help_printing_printer && return 1 [[ ! -d ${MROOT}@@SYSCONFDIR@@/printcap.d ]] && install -d ${MROOT}@@SYSCONFDIR@@/printcap.d case ${port} in lpt[0-9]*) port="/dev/lp$(( ${port/lpt/}-1 ))" ;; com[0-9]*) port="/dev/ttyS$(( ${port/com/}-1 ))" ;; usb[0-9]*) port="/dev/usb/lp$(( ${port/usb/}-1 ))" ;; #lpd) port="lpd://${ip}/${share}" ;; #socket) port="socket://${ip}:${share}" ;; esac CONFIG="${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf" clearconfig addconfig "${name}|${name}" addconfig " :lp=${port}" addconfig " :sd=/var/spool/lpd/${name}" addconfig " :lf=/var/log/lprng/${name}" # regenerate printcap helper_generate_printcap } helper_delprinter() { local name="$1" [[ -z ${name} ]] && help_printing_printer && return 1 if [[ -f ${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf ]] then rm ${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf fi if [[ -d ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${name} ]] then rm -rf ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${name} fi if [[ -d ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${name} ]] then rm -rf ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${name} fi # regenerate printcap helper_generate_printcap } set_printing_printer() { local action="${CLASS_ARGV[0]}" local name="${CLASS_ARGV[1]}" local port="${CLASS_ARGV[2]}" # local ip="${CLASS_ARGV[3]}" # local share="${CLASS_ARGV[4]}" case "${action}" in # add) helper_addprinter "${name}" "${port}" "${ip}" "${share}" ;; add) helper_addprinter "${name}" "${port}";; del) helper_delprinter "${name}" ;; *) help_printing_printer && return 1 ;; esac } get_printing_printer() { list_files_in_directory ${MROOT}@@SYSCONFDIR@@/printcap.d } helper_generate_printcap() { local i local prn # install required kernel modules as well if is_provided basic-kernel then mcore-kernel-modules --add --module lp mcore-kernel-modules --add --module usblp fi CONFIG="${MROOT}@@SYSCONFDIR@@/printcap" clearconfig for i in $(find ${MROOT}@@SYSCONFDIR@@/printcap.d -type f -name \*.conf) do mecho "adding ${i}" addconfig "#--- added by mcored ---" cat ${i} >> ${CONFIG} addconfig "#-----------------------" addconfig prn=$(basename ${i} .conf) # install spooler directories install -o @@LPRNG_SPOOLER_USER@@ -g @@LPRNG_SPOOLER_USER@@ -m0700 -d ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${prn} # create empty log files install -d ${MROOT}@@LOCALSTATEDIR@@/log/lprng touch ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn} chown @@LPRNG_SPOOLER_USER@@:@@LPRNG_SPOOLER_USER@@ ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn} chmod 0600 ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn} done }