Magellan Linux

Annotation of /mcore-src/trunk/mcore-tools/src/include/common.global.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2767 - (hide annotations) (download)
Wed Feb 10 15:26:23 2016 UTC (8 years, 3 months ago) by niro
File size: 7306 byte(s)
-added the read_cmdline() function and updated system classes to get cmdline information of a client
1 niro 2140 # $Id$
2    
3     # message only echo | disabled in quiet mode
4     mecho()
5     {
6     local COLCYAN="\033[1;36m"
7     local COLDEFAULT="\033[0m"
8     local opts
9     local webcrlf
10    
11     # print nothing if quiet mode was requested
12 niro 2479 [[ ${QUIET} = 1 ]] && return
13 niro 2140
14 niro 2479 if [[ ${NOCOLORS} = 1 ]]
15 niro 2140 then
16     COLCYAN=""
17     COLDEFAULT=""
18     fi
19    
20 niro 2479 [[ ${WEBCRLF} = 1 ]] && webcrlf="<br>"
21 niro 2140
22     # respect -n
23     case $1 in
24     -n) shift; opts="n" ;;
25     esac
26    
27     echo -e${opts} "${COLCYAN}$@${COLDEFAULT}${webcrlf}"
28     }
29    
30     # prints error messages | enabled even in quiet mode
31     eecho()
32     {
33     local COLRED="\033[1;31m"
34     local COLDEFAULT="\033[0m"
35     local opts
36     local webcrlf
37    
38 niro 2479 if [[ ${NOCOLORS} = 1 ]]
39 niro 2140 then
40     COLRED=""
41     COLDEFAULT=""
42     fi
43    
44 niro 2479 [[ ${WEBCRLF} = 1 ]] && webcrlf="<br>"
45 niro 2140
46     # respect -n
47     case $1 in
48     -n) shift; opts="n" ;;
49     esac
50    
51 niro 2637 echo -e${opts} "${COLRED}$@${COLDEFAULT}${webcrlf}"
52 niro 2140 }
53    
54     # prints return values of get | enabled even in quiet mode
55     rvecho()
56     {
57     local COLPURPLE="\033[1;35m"
58     local COLDEFAULT="\033[0m"
59     local opts
60     local webcrlf
61    
62 niro 2479 if [[ ${NOCOLORS} = 1 ]]
63 niro 2140 then
64     COLPURPLE=""
65     COLDEFAULT=""
66     fi
67    
68 niro 2479 [[ ${WEBCRLF} = 1 ]] && webcrlf="<br>"
69 niro 2140
70     # respect -n
71     case $1 in
72     -n) shift; opts="n" ;;
73     esac
74    
75     echo -e${opts} "${COLPURPLE}$@${COLDEFAULT}${webcrlf}"
76     }
77    
78     # prints debug messages if requested | enabled even in quiet mode
79     decho()
80     {
81     # print nothing if debug mode was *not* requested
82     [[ ${DEBUG} != 1 ]] && return
83    
84     eecho "DEBUG: ${@}"
85     }
86    
87 niro 2257 # source a file with debug information
88     include()
89     {
90     local retval
91    
92     if [ -f $@ ]
93     then
94     decho "including '$@'"
95     source $@
96     retval=$?
97     else
98     decho "include: '$@' not found"
99     retval=1
100     fi
101    
102     return ${retval}
103     }
104    
105 niro 2140 # adds a line to a configuration file defined by the $CONFIG variable
106     # $CONFIG="/etc/conf.d/mcore" addconfig 'LIBDIR="/usr/lib"'
107     addconfig()
108     {
109     local opts
110    
111     if [[ -z ${CONFIG} ]]
112     then
113     eecho "You must define \$CONFIG varibale first!"
114     return 1
115     fi
116    
117     if [[ ! -d $(dirname ${CONFIG}) ]]
118     then
119     install -d $(dirname ${CONFIG})
120     fi
121    
122     # check for opts
123     case $1 in
124     -n) shift; opts=" -n" ;;
125     -e) shift; opts=" -e" ;;
126     esac
127    
128     echo ${opts} "$@" >> ${CONFIG}
129     }
130    
131     # creates or clears a configuration file defined by the $CONFIG variable
132     # CONFIG="/etc/conf.d/mcore" clearconfig
133     clearconfig()
134     {
135     if [[ -z ${CONFIG} ]]
136     then
137     eecho "You must define \$CONFIG varibale first!"
138     return 1
139     fi
140    
141     if [[ ! -d $(dirname ${CONFIG}) ]]
142     then
143     install -d $(dirname ${CONFIG})
144     fi
145     : > ${CONFIG}
146     }
147    
148     # root is not allowed to run progs in a user session with newer xorg-servers
149     # this wrapper runs a command in the xsession of the unpriv_user
150     x11runas()
151     {
152 niro 2632 if [[ -n $(pidof X) ]] || [[ -n $(pidof Xorg) ]] || [[ -n $(pidof Xorg.bin) ]]
153 niro 2140 then
154 niro 2351 su - "${MCORE_UNPRIV_USER}" -c "DISPLAY=${MCORE_XORG_DISPLAY} $@"
155 niro 2633 else
156     decho "x11runas(): No running X, Xorg or Xorg.bin process found"
157 niro 2140 fi
158     }
159    
160     # no_duplicate $list $item
161     no_duplicate()
162     {
163     local i
164     local list="$1"
165     local item="$2"
166    
167     for i in ${list}
168     do
169     [[ ${i} = ${item} ]] && return 1
170     done
171    
172     return 0
173     }
174    
175     # checks if given path is empty
176     path_not_empty()
177     {
178     local path="$1"
179     [[ -z ${path} ]] && eecho "path_not_empty(): no path given!" && return 1
180    
181     # return ERR if path does not exist
182     [[ ! -d ${path} ]] && return 1
183     # return ERR if path empty
184     [[ -z $(find "${path}" -mindepth 1 -maxdepth 1) ]] && return 1
185    
186     # every thing went ok, directory not empty
187     return 0
188     }
189    
190     # list all files in a given directory
191     list_files_in_directory()
192     {
193     local i
194     local retval
195     local path
196     local opts
197     local type
198    
199     # basic getops
200     for i in $*
201     do
202     case $1 in
203     -mindepth) shift; opts+=" -mindepth $1" ;;
204     -maxdepth) shift; opts+=" -maxdepth $1" ;;
205     -type) shift; type="$1" ;;
206     -name) shift; opts+=" -name $1" ;;
207     '') continue ;;
208     *) path="$1" ;;
209     esac
210     shift
211     done
212    
213     if [[ -z ${path} ]]
214     then
215     eecho "No path given."
216     return 1
217     fi
218    
219     if [[ ! -d ${path} ]]
220     then
221     eecho "Directory '${path}' does not exist."
222     return 1
223     fi
224    
225     # default to files
226     [[ -z ${type} ]] && type=f
227    
228     for i in $(find ${path} ${opts} -type ${type} -printf '%f\n' | sort)
229     do
230     if [[ -z ${retval} ]]
231     then
232     retval="${i}"
233     else
234     retval+=" ${i}"
235     fi
236     done
237    
238     rvecho "${retval}"
239     }
240    
241     # runs a command in the chroot of $MROOT
242     system_chroot()
243     {
244     local cmd="$@"
245     if [[ -z ${MROOT} ]]
246     then
247     echo "system_chroot(): \$MROOT was not set, doing nothing!"
248     return 1
249     fi
250     if [ ! -d ${MROOT} ]
251     then
252     eecho "system_chroot(): MROOT='${MROOT}' does not exist."
253     return 1
254     fi
255    
256     chroot ${MROOT} ${cmd}
257     }
258 niro 2407
259     # gets interface used to reach given ip
260     iface_for_remote_addr()
261     {
262     set -- $(ip -o route get to $1)
263     echo $5
264     }
265    
266     # get ip from dns name
267     dns_to_ip()
268     {
269     set -- $(getent hosts $1)
270     echo $1
271     }
272 niro 2420
273     iface_for_ip()
274     {
275     set -- $(ip -o addr show to $1)
276     echo $2
277     }
278    
279     iface_for_mac()
280     {
281     local interface="" mac="$(echo $1 | sed 'y/ABCDEF/abcdef/')"
282     for interface in /sys/class/net/*; do
283     if [ $(cat $interface/address) = "$mac" ]; then
284     echo ${interface##*/}
285     fi
286     done
287     }
288    
289     mac_for_iface()
290     {
291     local iface="$1"
292     if [ -f /sys/class/net/${iface}/address ]
293     then
294     cat /sys/class/net/${iface}/address
295     fi
296     }
297 niro 2428
298     certificate_fingerprint()
299     {
300     local cert_fingerprint
301     local retval
302    
303     if [[ ! -f ${MCORE_CERT_FILE} ]]
304     then
305     eecho "MCORE_CERT_FILE '${MCORE_CERT_FILE}' does not exist."
306     return 1
307     fi
308    
309     cert_fingerprint=$(openssl x509 -noout -modulus -in "${MCORE_CERT_FILE}" | openssl sha1 | sed 's:(stdin)=\ ::')
310     retval="$?"
311    
312     if [[ ${retval} != 0 ]]
313     then
314     eecho "Error '${retval}' while generating cert_fingerprint."
315     return 1
316     fi
317    
318     if [[ -z ${cert_fingerprint} ]]
319     then
320     eecho "Error: cert_fingerprint is empty"
321     return 1
322     else
323     echo "${cert_fingerprint}"
324     fi
325     }
326    
327     key_fingerprint()
328     {
329     local key_fingerprint
330     local retval
331    
332     if [[ ! -f ${MCORE_KEY_FILE} ]]
333     then
334     eecho "MCORE_KEY_FILE '${MCORE_KEY_FILE}' does not exist."
335     return 1
336     fi
337    
338     key_fingerprint=$(openssl rsa -noout -modulus -in "${MCORE_KEY_FILE}" | openssl sha1 | sed 's:(stdin)=\ ::')
339     retval="$?"
340    
341     if [[ ${retval} != 0 ]]
342     then
343     eecho "Error '${retval}' while generating key_fingerprint."
344     return 1
345     fi
346    
347     if [[ -z ${key_fingerprint} ]]
348     then
349     eecho "Error: key_fingerprint is empty"
350     return 1
351     else
352     echo "${key_fingerprint}"
353     fi
354     }
355    
356 niro 2429 nsslsay()
357     {
358     nssl "${SSLSAY_IP}" "${SSLSAY_PORT}" << EOF
359     auth ${SSLSAY_USER} ${SSLSAY_PASS}
360     $@
361     quit
362     EOF
363     }
364    
365     nsslsay_fingerprint()
366     {
367     nssl "${SSLSAY_IP}" "${SSLSAY_PORT}" << EOF
368     certauth $(certificate_fingerprint)
369     $@
370     quit
371     EOF
372     }
373 niro 2485
374     nsslsay_queue_init()
375     {
376     SSLSAY_QUEUE=()
377     }
378    
379     nsslsay_queue_add()
380     {
381     SSLSAY_QUEUE+=( "$@" )
382     }
383    
384     nsslsay_queue_print()
385     {
386     local count
387     local i
388    
389     count="${#SSLSAY_QUEUE[*]}"
390     for ((i=0; i < count; i++))
391     do
392     echo "${SSLSAY_QUEUE[${i}]}"
393     done
394     }
395    
396     nsslsay_queue_run()
397     {
398     nsslsay "$(nsslsay_queue_print)"
399     }
400    
401     nsslsay_queue_run_fingerprint()
402     {
403     nsslsay_fingerprint "$(nsslsay_queue_print)"
404     }
405 niro 2767
406     # read_cmdline "$variable"
407     # eg: read_cmdline "lang="
408     # returns the value of the cmdline variable lang
409     # eg: read_cmdline "rd.info"
410     # returns bool 1 if the variable was defined
411     #
412     read_cmdline()
413     {
414     local variable="$1"
415     local retval
416     local i
417    
418     if [[ -z ${variable} ]]
419     then
420     eecho "no variable given"
421     return 1
422     fi
423    
424     if [ ! -e /proc/cmdline ]
425     then
426     eecho "read_cmdline(): /proc/cmdline does not exists"
427     return 1
428     fi
429    
430     for i in $(</proc/cmdline)
431     do
432     if [[ ${i} = ${variable}* ]]
433     then
434     case ${variable} in
435     *=*) retval="${i#*=}" ;;
436     *) retval=1 ;; # bool
437     esac
438     fi
439     done
440    
441     echo "${retval}"
442     return 0
443     }