--- mcore-src/trunk/mcore-tools/daemon/include/daemon.global.class 2011/02/02 20:20:24 1248 +++ mcore-src/trunk/mcore-tools/src/include/daemon.global.class.in 2015/09/17 07:39:31 2558 @@ -1,56 +1,124 @@ # $Id$ -# import_resource $table $serial $resource $value -import_resource() +# loads client classes from $MCORE_LIBDIR +load_classes() { - local table="$1" - local serial="$2" - local resource="$3" - local value="$4" + local class + local classtype - if [[ ${DEBUG} = 1 ]] - then - echo "${table}->${resource}=${value}" >> /root/lala.log - echo "mysqldo \"update ${table} set ${resource}='${value}' where serial=${serial};\"" >> /root/lala.log - fi + case $1 in + client|control) classtype="$1" ;; + *) die "Unknown classes type '$1'" ;; + esac - mysql_insert "${table}",serial="${serial}","${resource}"="${value}" + # client specific + for class in $(find ${MCORE_LIBDIR}/include -type f -name \*.${classtype}.class) + do + include ${class} || eecho "error loading ${class}" + done } +# restarts the whole service via remote cmd +restart_service() +{ + local pid + for pid in $(pidof sslsvd) + do + kill -SIGHUP ${pid} + done +} + +# stops the whole service via remote cmd +stop_service() +{ + local pid + for pid in $(pidof sslsvd) + do + kill -SIGTERM ${pid} + done +} + +# # import_resource $table $serial $resource $value +# import_resource() +# { +# local table="$1" +# local serial="$2" +# local resource="$3" +# local value="$4" +# +# if [[ ${DEBUG} = 1 ]] +# then +# echo "${table}->${resource}=${value}" >> /root/lala.log +# echo "mysqldo \"update ${table} set ${resource}='${value}' where serial=${serial};\"" >> /root/lala.log +# fi +# +# mysql_insert "${table}",serial="${serial}","${resource}"="${value}" +# } + # run_class $method $caller $argv1 $argv2 ... $argvN run_class() { - local method="$1" - local caller="$2" + local method="${GLOBAL_ARGV[0]}" + local caller="${GLOBAL_ARGV[1]}" local class local cmd - local argv + local i + local count - if validate_session + if valid_session then class="${caller%.*}" cmd="${caller#*.}" - argv="${@/${caller}/}" # remove caller - argv="${argv/${method}/}" # remove method -# echo "method=${method}" -# echo "caller=${caller}" -# echo "class=${class}" -# echo "cmd=${cmd}" -# echo "argv=${argv}" + # copy GLOBAL_ARGV to CLASS_ARGV array without method and caller.class + unset CLASS_ARGV + count="${#GLOBAL_ARGV[*]}" + for (( i=2; i> ${CONFIG} -} + for req in ${REQUIRE} + do + # scan PROVIDE for dupes + # if a dupe is found, then requirement is fullfilled + # else add to missing + if no_duplicate "${PROVIDE}" "${req}" + then + missing="${missing} ${req}" + fi + done -clearconfig() -{ - if [[ -z ${CONFIG} ]] + # sort them alpabetically + sorted=$(for i in ${REQUIRE}; do echo "${i}"; done | sort) + + # show missing and set the right retval + if [[ -z ${missing} ]] then - echo "You must define \$CONFIG varibale first!" + # do not escape, or CRLFS get printed to screen too + rvecho ${sorted} + return 0 + else + for req in ${sorted} + do + if no_duplicate "${missing}" "$req" + then + # print normal + rvecho -n "${req} " + else + # print missing + eecho -n "${req} " + fi + done + # print CRLF + echo return 1 fi - - : > ${CONFIG} } -require() +provide() { - local requires="$@" + local provides="$@" local i - for i in ${requires} + for i in ${provides} do - export REQUIRE="${REQUIRE} ${i}" + # check for duplicate provides + if no_duplicate "${PROVIDE}" "${i}" + then + export PROVIDE="${PROVIDE} ${i}" + else + decho "duplicate provide '${i}' detected!" + fi done } -not_provided() +print_provide() +{ + local sorted + + # sort them alpabetically + sorted=$(for i in ${PROVIDE}; do echo "${i}"; done | sort) + # do not escape, or CRLFS get printed to screen too + rvecho ${sorted} +} + +is_provided() { + local feature="$1" local i - local item="$1" + local retval - for i in ${PROVIDE} + retval=1 + for i in $(print_provide) do - [[ ${i} = ${item} ]] && return 1 + if [[ ${i} = ${feature} ]] + then + retval=0 + break + fi done - return 0 + return "${retval}" } -provide() +push_config() { - local provides="$@" + local push_configs="$@" local i - for i in ${provides} + for i in ${push_configs} do # check for duplicate provides - if not_provided "${i}" + if no_duplicate "${PUSH_CONFIG}" "${i}" then - export PROVIDE="${PROVIDE} ${i}" + export PUSH_CONFIG="${PUSH_CONFIG} ${i}" else - [[ ${DEBUG} = 1 ]] && echo "duplicate provide '${i}' detected!" + decho "duplicate push_config '${i}' detected!" fi done } -print_provide() +print_push_config() { local sorted # sort them alpabetically - sorted=$(for i in ${PROVIDE}; do echo "${i}"; done | sort) + sorted=$(for i in ${PUSH_CONFIG}; do echo "${i}"; done | sort) # do not escape, or CRLFS get printed to screen too - mecho ${sorted} + rvecho ${sorted} +} + +help_daemon_mroot() +{ + mecho "get daemon.mroot" + mecho " Prints current MROOT variable." + mecho + mecho "set daemon.mroot [path]" + mecho " set MROOT variable to given path." +} + +get_daemon_mroot() +{ + rvecho "${MROOT}" } -mecho() +set_daemon_mroot() { - local COLCYAN="\033[1;36m" - local COLDEFAULT="\033[0m" - if [[ ${NOCOLORS} = true ]] + local path=$1 + + if [[ -d ${path} ]] then - COLCYAN="" - COLDEFAULT="" + export MROOT="${path}" + decho "MROOT='${MROOT}' is set." + else + eecho "Path '${path}' does not exist. MROOT not set." fi +} - echo -e "${COLCYAN}$@${COLDEFAULT}" +print_version() +{ + echo "mcored-$(<${MCORE_LIBDIR}/VERSION)" }