Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/modules/lprng/printing.client.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2655 - (show annotations) (download)
Tue Nov 10 15:13:53 2015 UTC (8 years, 5 months ago) by niro
File size: 3405 byte(s)
-install missing kernel modules as well
1 # $Id$
2
3 provide printing lprng
4 require basic-kernel
5
6 help_printing_printer()
7 {
8 mecho "get printing.printer"
9 mecho " Shows all configured printers."
10 mecho
11 mecho "set printing.addprinter [action] [name] [port] [ip] [share]"
12 mecho " Adds or deletes a printer."
13 mecho " Actions:"
14 mecho " add - adds given printer"
15 mecho " del - deletes given printer"
16 mecho
17 mecho " name - name of the printer"
18 mecho " port - printing port (lpt1, usb1, com1 ... lptN, usbN, comN"
19 # mecho " ip - ip of the remote printer - optional"
20 # mecho " share - share/port name of the remote printer - optional"
21 }
22
23 helper_addprinter()
24 {
25 local name="$1"
26 local port="$2"
27 # local ip="$3"
28 # local share="$4"
29
30 [[ -z ${name} ]] && help_printing_printer && return 1
31 [[ -z ${port} ]] && help_printing_printer && return 1
32
33 [[ ! -d ${MROOT}@@SYSCONFDIR@@/printcap.d ]] && install -d ${MROOT}@@SYSCONFDIR@@/printcap.d
34
35 case ${port} in
36 lpt[0-9]*) port="/dev/lp$(( ${port/lpt/}-1 ))" ;;
37 com[0-9]*) port="/dev/ttyS$(( ${port/com/}-1 ))" ;;
38 usb[0-9]*) port="/dev/usb/lp$(( ${port/usb/}-1 ))" ;;
39 #lpd) port="lpd://${ip}/${share}" ;;
40 #socket) port="socket://${ip}:${share}" ;;
41 esac
42
43 CONFIG="${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf"
44 clearconfig
45 addconfig "${name}|${name}"
46 addconfig " :lp=${port}"
47 addconfig " :sd=/var/spool/lpd/${name}"
48 addconfig " :lf=/var/log/lprng/${name}"
49
50 # regenerate printcap
51 helper_generate_printcap
52 }
53
54 helper_delprinter()
55 {
56 local name="$1"
57
58 [[ -z ${name} ]] && help_printing_printer && return 1
59
60 if [[ -f ${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf ]]
61 then
62 rm ${MROOT}@@SYSCONFDIR@@/printcap.d/${name}.conf
63 fi
64
65 if [[ -d ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${name} ]]
66 then
67 rm -rf ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${name}
68 fi
69
70 if [[ -d ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${name} ]]
71 then
72 rm -rf ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${name}
73 fi
74
75 # regenerate printcap
76 helper_generate_printcap
77 }
78
79 set_printing_printer()
80 {
81 local action="${CLASS_ARGV[0]}"
82 local name="${CLASS_ARGV[1]}"
83 local port="${CLASS_ARGV[2]}"
84 # local ip="${CLASS_ARGV[3]}"
85 # local share="${CLASS_ARGV[4]}"
86
87 case "${action}" in
88 # add) helper_addprinter "${name}" "${port}" "${ip}" "${share}" ;;
89 add) helper_addprinter "${name}" "${port}";;
90 del) helper_delprinter "${name}" ;;
91 *) help_printing_printer && return 1 ;;
92 esac
93 }
94
95 get_printing_printer()
96 {
97 list_files_in_directory ${MROOT}@@SYSCONFDIR@@/printcap.d
98 }
99
100 helper_generate_printcap()
101 {
102 local i
103 local prn
104
105 # install required kernel modules as well
106 if is_provided basic-kernel
107 then
108 mcore-kernel-modules --add --module lp
109 mcore-kernel-modules --add --module usblp
110 fi
111
112 CONFIG="${MROOT}@@SYSCONFDIR@@/printcap"
113 clearconfig
114
115 for i in $(find ${MROOT}@@SYSCONFDIR@@/printcap.d -type f -name \*.conf)
116 do
117 mecho "adding ${i}"
118 addconfig "#--- added by mcored ---"
119 cat ${i} >> ${CONFIG}
120 addconfig "#-----------------------"
121 addconfig
122
123 prn=$(basename ${i} .conf)
124
125 # install spooler directories
126 install -o @@LPRNG_SPOOLER_USER@@ -g @@LPRNG_SPOOLER_USER@@ -m0700 -d ${MROOT}@@LOCALSTATEDIR@@/spool/lpd/${prn}
127
128 # create empty log files
129 install -d ${MROOT}@@LOCALSTATEDIR@@/log/lprng
130 touch ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn}
131 chown @@LPRNG_SPOOLER_USER@@:@@LPRNG_SPOOLER_USER@@ ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn}
132 chmod 0600 ${MROOT}@@LOCALSTATEDIR@@/log/lprng/${prn}
133 done
134 }