Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2809 - (hide annotations) (download)
Fri Apr 7 07:17:48 2017 UTC (7 years, 1 month ago) by niro
File size: 7718 byte(s)
-only convert ip addresses to dns names, not dns names itself
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 niro 2809 validate_ip_addr()
267     {
268     local ip="$1"
269     local retval=1
270     local _ifs
271    
272     if [[ ${ip} =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
273     then
274     _ifs=$IFS
275     IFS='.'
276     # convert to an array
277     ip=($ip)
278     IFS=$_ifs
279    
280     if [[ ${ip[0]} -le 255 ]] &&
281     [[ ${ip[1]} -le 255 ]] &&
282     [[ ${ip[2]} -le 255 ]] &&
283     [[ ${ip[3]} -le 255 ]]
284     then
285     retval=$?
286     fi
287     fi
288    
289     return ${retval}
290     }
291    
292 niro 2407 # get ip from dns name
293     dns_to_ip()
294     {
295 niro 2809 if ! validate_ip_addr $1
296     then
297     set -- $(getent hosts $1)
298     fi
299 niro 2407 echo $1
300     }
301 niro 2420
302     iface_for_ip()
303     {
304     set -- $(ip -o addr show to $1)
305     echo $2
306     }
307    
308     iface_for_mac()
309     {
310     local interface="" mac="$(echo $1 | sed 'y/ABCDEF/abcdef/')"
311     for interface in /sys/class/net/*; do
312     if [ $(cat $interface/address) = "$mac" ]; then
313     echo ${interface##*/}
314     fi
315     done
316     }
317    
318     mac_for_iface()
319     {
320     local iface="$1"
321     if [ -f /sys/class/net/${iface}/address ]
322     then
323     cat /sys/class/net/${iface}/address
324     fi
325     }
326 niro 2428
327     certificate_fingerprint()
328     {
329     local cert_fingerprint
330     local retval
331    
332     if [[ ! -f ${MCORE_CERT_FILE} ]]
333     then
334     eecho "MCORE_CERT_FILE '${MCORE_CERT_FILE}' does not exist."
335     return 1
336     fi
337    
338     cert_fingerprint=$(openssl x509 -noout -modulus -in "${MCORE_CERT_FILE}" | openssl sha1 | sed 's:(stdin)=\ ::')
339     retval="$?"
340    
341     if [[ ${retval} != 0 ]]
342     then
343     eecho "Error '${retval}' while generating cert_fingerprint."
344     return 1
345     fi
346    
347     if [[ -z ${cert_fingerprint} ]]
348     then
349     eecho "Error: cert_fingerprint is empty"
350     return 1
351     else
352     echo "${cert_fingerprint}"
353     fi
354     }
355    
356     key_fingerprint()
357     {
358     local key_fingerprint
359     local retval
360    
361     if [[ ! -f ${MCORE_KEY_FILE} ]]
362     then
363     eecho "MCORE_KEY_FILE '${MCORE_KEY_FILE}' does not exist."
364     return 1
365     fi
366    
367     key_fingerprint=$(openssl rsa -noout -modulus -in "${MCORE_KEY_FILE}" | openssl sha1 | sed 's:(stdin)=\ ::')
368     retval="$?"
369    
370     if [[ ${retval} != 0 ]]
371     then
372     eecho "Error '${retval}' while generating key_fingerprint."
373     return 1
374     fi
375    
376     if [[ -z ${key_fingerprint} ]]
377     then
378     eecho "Error: key_fingerprint is empty"
379     return 1
380     else
381     echo "${key_fingerprint}"
382     fi
383     }
384    
385 niro 2429 nsslsay()
386     {
387     nssl "${SSLSAY_IP}" "${SSLSAY_PORT}" << EOF
388     auth ${SSLSAY_USER} ${SSLSAY_PASS}
389     $@
390     quit
391     EOF
392     }
393    
394     nsslsay_fingerprint()
395     {
396     nssl "${SSLSAY_IP}" "${SSLSAY_PORT}" << EOF
397     certauth $(certificate_fingerprint)
398     $@
399     quit
400     EOF
401     }
402 niro 2485
403     nsslsay_queue_init()
404     {
405     SSLSAY_QUEUE=()
406     }
407    
408     nsslsay_queue_add()
409     {
410     SSLSAY_QUEUE+=( "$@" )
411     }
412    
413     nsslsay_queue_print()
414     {
415     local count
416     local i
417    
418     count="${#SSLSAY_QUEUE[*]}"
419     for ((i=0; i < count; i++))
420     do
421     echo "${SSLSAY_QUEUE[${i}]}"
422     done
423     }
424    
425     nsslsay_queue_run()
426     {
427     nsslsay "$(nsslsay_queue_print)"
428     }
429    
430     nsslsay_queue_run_fingerprint()
431     {
432     nsslsay_fingerprint "$(nsslsay_queue_print)"
433     }
434 niro 2767
435     # read_cmdline "$variable"
436     # eg: read_cmdline "lang="
437     # returns the value of the cmdline variable lang
438     # eg: read_cmdline "rd.info"
439     # returns bool 1 if the variable was defined
440     #
441     read_cmdline()
442     {
443     local variable="$1"
444     local retval
445     local i
446    
447     if [[ -z ${variable} ]]
448     then
449     eecho "no variable given"
450     return 1
451     fi
452    
453     if [ ! -e /proc/cmdline ]
454     then
455     eecho "read_cmdline(): /proc/cmdline does not exists"
456     return 1
457     fi
458    
459     for i in $(</proc/cmdline)
460     do
461     if [[ ${i} = ${variable}* ]]
462     then
463     case ${variable} in
464     *=*) retval="${i#*=}" ;;
465     *) retval=1 ;; # bool
466     esac
467     fi
468     done
469    
470     echo "${retval}"
471     return 0
472     }