Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/include/daemon.global.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2811 - (show annotations) (download)
Fri Apr 7 07:31:40 2017 UTC (7 years ago) by niro
File size: 6678 byte(s)
-removed obsolete functions
1 # $Id$
2
3 # loads client classes from $MCORE_LIBDIR
4 load_classes()
5 {
6 local class
7 local classtype
8
9 case $1 in
10 client|control) classtype="$1" ;;
11 *) die "Unknown classes type '$1'" ;;
12 esac
13
14 # client specific
15 for class in $(find ${MCORE_LIBDIR}/include -type f -name \*.${classtype}.class)
16 do
17 include ${class} || eecho "error loading ${class}"
18 done
19 }
20
21 # restarts the whole service via remote cmd
22 restart_service()
23 {
24 local pid
25 for pid in $(pidof sslsvd)
26 do
27 kill -SIGHUP ${pid}
28 done
29 }
30
31 # stops the whole service via remote cmd
32 stop_service()
33 {
34 local pid
35 for pid in $(pidof sslsvd)
36 do
37 kill -SIGTERM ${pid}
38 done
39 }
40
41 # run_class $method $caller $argv1 $argv2 ... $argvN
42 run_class()
43 {
44 local method="${GLOBAL_ARGV[0]}"
45 local caller="${GLOBAL_ARGV[1]}"
46 local class
47 local cmd
48 local i
49 local count
50
51 if valid_session
52 then
53 class="${caller%.*}"
54 cmd="${caller#*.}"
55
56 # copy GLOBAL_ARGV to CLASS_ARGV array without method and caller.class
57 unset CLASS_ARGV
58 count="${#GLOBAL_ARGV[*]}"
59 for (( i=2; i<count; i++ ))
60 do
61 CLASS_ARGV[${i}-2]="${GLOBAL_ARGV[${i}]}"
62 done
63
64 # decho "method=${method}"
65 # decho "caller=${caller}"
66 # decho "class=${class}"
67 # decho "cmd=${cmd}"
68 # decho "class argv=$(printf '\"%s\" ' ${CLASS_ARGV[*]}; printf '\n')"
69
70 # check if class.cmd exist
71 if [[ ! -z $(typeset -f "${method}"_"${class}"_"${cmd}") ]]
72 then
73 "${method}"_"${class}"_"${cmd}"
74 else
75 eecho "unknown method '${method}' . class '${class}' . cmd '${cmd}'"
76 fi
77 else
78 invalid_session
79 fi
80 }
81
82 run_push_config()
83 {
84 local serial="$1"
85 local config
86
87 if [[ -z ${serial} ]]
88 then
89 eecho "missing serial"
90 return 1
91 fi
92
93 for config in $(NOCOLORS=1 print_push_config)
94 do
95 if [[ -n $(typeset -f push_config_${config}) ]]
96 then
97 decho "running: 'push_config_${config} ${serial}'"
98 push_config_"${config}" "${serial}"
99 else
100 decho "no function 'push_config_${config}' for '${config}' found."
101 fi
102 done
103 }
104
105 run_push_firstboot()
106 {
107 local serial="$1"
108 local config
109
110 if [[ -z ${serial} ]]
111 then
112 eecho "missing serial"
113 return 1
114 fi
115
116 for config in $(NOCOLORS=1 print_push_firstboot)
117 do
118 if [[ -n $(typeset -f push_firstboot_${config}) ]]
119 then
120 decho "running: 'push_firstboot_${config} ${serial}'"
121 push_firstboot_"${config}" "${serial}"
122 else
123 decho "no function 'push_firstboot_${config}' for '${config}' found."
124 fi
125 done
126 }
127
128 help_topics()
129 {
130 local i
131 local topics
132
133 topics=$(typeset -f | grep '^help_' | sed 's:help_\(.*\)\ .*():\1:' | sed 's:_:\.:' | sort)
134 mecho "Global commands:"
135 mecho "\timport - import settings to database"
136 mecho "\tget - shows current value for a settings"
137 mecho "\tset - sets value for a setting"
138 mecho "\tauth - authenticate to the daemon"
139 mecho "\tcertauth - authenticate to the daemon via fingerprint"
140 mecho "\tprovide - shows provides of a system"
141 mecho "\trequire - verify plugin requirements"
142 mecho "\treload - reloads all client classes plugins"
143 mecho "\trestart - restarts the daemon"
144 mecho "\tstop - stops the daemon"
145 mecho "\tnocolors - disable colors, useful for the webclient"
146 mecho "\tcolors - enable colors"
147 mecho "\tquiet - do not print any unecessary messages"
148 mecho "\thelp - shows help"
149 mecho "\tversion - prints version of the daemon"
150 mecho "\tquit - quits the connection to the server"
151 mecho
152 mecho "Help topics:"
153 for i in ${topics}
154 do
155 # excludes
156 case ${i} in
157 help_topics|topics) continue ;;
158 esac
159
160 mecho "\t${i}"
161 done
162 mecho
163 mecho "Type 'help [topic]' for more information about every topic."
164 }
165
166 require()
167 {
168 local requires="$@"
169 local i
170
171 for i in ${requires}
172 do
173 # check for duplicate require
174 if no_duplicate "${REQUIRE}" "${i}"
175 then
176 export REQUIRE="${REQUIRE} ${i}"
177 else
178 decho "duplicate require '${i}' detected!"
179 fi
180 done
181 }
182
183 verify_requirements()
184 {
185 local req
186 local prov
187 local missing
188 local sorted
189
190 for req in ${REQUIRE}
191 do
192 # scan PROVIDE for dupes
193 # if a dupe is found, then requirement is fullfilled
194 # else add to missing
195 if no_duplicate "${PROVIDE}" "${req}"
196 then
197 missing="${missing} ${req}"
198 fi
199 done
200
201 # sort them alpabetically
202 sorted=$(for i in ${REQUIRE}; do echo "${i}"; done | sort)
203
204 # show missing and set the right retval
205 if [[ -z ${missing} ]]
206 then
207 # do not escape, or CRLFS get printed to screen too
208 rvecho ${sorted}
209 return 0
210 else
211 for req in ${sorted}
212 do
213 if no_duplicate "${missing}" "$req"
214 then
215 # print normal
216 rvecho -n "${req} "
217 else
218 # print missing
219 eecho -n "${req} "
220 fi
221 done
222 # print CRLF
223 echo
224 return 1
225 fi
226 }
227
228 provide()
229 {
230 local provides="$@"
231 local i
232
233 for i in ${provides}
234 do
235 # check for duplicate provides
236 if no_duplicate "${PROVIDE}" "${i}"
237 then
238 export PROVIDE="${PROVIDE} ${i}"
239 else
240 decho "duplicate provide '${i}' detected!"
241 fi
242 done
243 }
244
245 print_provide()
246 {
247 local sorted
248
249 # sort them alpabetically
250 sorted=$(for i in ${PROVIDE}; do echo "${i}"; done | sort)
251 # do not escape, or CRLFS get printed to screen too
252 rvecho ${sorted}
253 }
254
255 is_provided()
256 {
257 local feature="$1"
258 local i
259 local retval
260
261 retval=1
262 for i in $(print_provide)
263 do
264 if [[ ${i} = ${feature} ]]
265 then
266 retval=0
267 break
268 fi
269 done
270
271 return "${retval}"
272 }
273
274 push_config()
275 {
276 local push_configs="$@"
277 local i
278
279 for i in ${push_configs}
280 do
281 # check for duplicate provides
282 if no_duplicate "${PUSH_CONFIG}" "${i}"
283 then
284 export PUSH_CONFIG="${PUSH_CONFIG} ${i}"
285 else
286 decho "duplicate push_config '${i}' detected!"
287 fi
288 done
289 }
290
291 print_push_config()
292 {
293 local sorted
294
295 # sort them alpabetically
296 sorted=$(for i in ${PUSH_CONFIG}; do echo "${i}"; done | sort)
297 # do not escape, or CRLFS get printed to screen too
298 rvecho ${sorted}
299 }
300
301 push_firstboot()
302 {
303 local push_firstboots="$@"
304 local i
305
306 for i in ${push_firstboots}
307 do
308 # check for duplicate provides
309 if no_duplicate "${PUSH_FIRSTBOOT}" "${i}"
310 then
311 export PUSH_FIRSTBOOT="${PUSH_FIRSTBOOT} ${i}"
312 else
313 decho "duplicate push_firstboot '${i}' detected!"
314 fi
315 done
316 }
317
318 print_push_firstboot()
319 {
320 local sorted
321
322 # sort them alpabetically
323 sorted=$(for i in ${PUSH_FIRSTBOOT}; do echo "${i}"; done | sort)
324 # do not escape, or CRLFS get printed to screen too
325 rvecho ${sorted}
326 }
327
328 help_daemon_mroot()
329 {
330 mecho "get daemon.mroot"
331 mecho " Prints current MROOT variable."
332 mecho
333 mecho "set daemon.mroot [path]"
334 mecho " set MROOT variable to given path."
335 }
336
337 get_daemon_mroot()
338 {
339 rvecho "${MROOT}"
340 }
341
342 set_daemon_mroot()
343 {
344 local path=$1
345
346 if [[ -d ${path} ]]
347 then
348 export MROOT="${path}"
349 decho "MROOT='${MROOT}' is set."
350 else
351 eecho "Path '${path}' does not exist. MROOT not set."
352 fi
353 }
354
355 print_version()
356 {
357 echo "mcored-$(<${MCORE_LIBDIR}/VERSION)"
358 }