X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=sh-lib;h=5d0ac5bb884bd359de8120dc6c7e43cea0fe113c;hb=refs%2Ftags%2Fgrml0.9;hp=79f0ae6eaece8c2faf510c3457b8a0f0f98c9e51;hpb=82236a90db1ea678898ab889fd505ac4edad9be5;p=grml-shlib.git diff --git a/sh-lib b/sh-lib index 79f0ae6..5d0ac5b 100644 --- a/sh-lib +++ b/sh-lib @@ -177,6 +177,10 @@ function warnLog # ### +## +# ATTENTION... THIS FUNCTINOS IS A BIG SECURITY HOLE +# this function will be changed in future release +## # i don't want to write exit status controle stuff every time function execute { @@ -186,6 +190,7 @@ function execute local ret_='' + # NOT A GOOD IDEA eval "$to_exec_" ret_=$? @@ -246,7 +251,7 @@ function isNotExistent if [ -e "$file_to_test_" ]; then if [ -z "$message_" ]; then - $error_function_ "file does allready exist \"$file_to_test_\"" 67 + $error_function_ "file does already exist \"$file_to_test_\"" 67 else $error_function_ "$message_" fi @@ -306,6 +311,16 @@ function checkRoot checkId 0 "$1" "$2" } +function isGrml +{ + if [ -f /etc/grml_version ] ; then + dprint "isGrml(): this seems to be a grml system" + return 0 + else + dprint "isGrml(): this is not a grml system" + return 1 + fi +} function runsFromHd { @@ -347,18 +362,32 @@ function secureInput function relToAbs { local relpath_="$1" - - local D_='' - local B_='' local abspath_='' - local end_path_='' - D_=`dirname "$relpath_"` - B_=`basename "$relpath_"` - abspath_=`cd "$D_" 2>/dev/null && pwd || echo "$D_"`/$B_ - end_path_=`echo "$abspath_" |tr --squeeze-repeats /` - dprint "relToAbs(): \"$relpath_\" => \"$end_path_\"" - echo "$end_path_" + abspath_="`readlink -f \"$relpath_\"`" || \ + warn "relToAbs(): Problems getting absolute path" "$?" || return 1 + dprint "relToAbs(): \"$relpath_\" => \"$abspath_\"" + echo "$abspath_" +} + + +# Trim off white-space characters +# white-space in the "C" and "POSIX" locales are: +# space +# form-feed ('\f') +# newline ('\n') +# carriage return ('\r') +# horizontal tab ('\t') +# vertical tab ('\v') +function stringTrim +{ + local str_="$1" + local result_="" + + result_="`echo "$str_" | sed -e 's/^\s*//' -e 's/\s*$//'`" || \ + warn "stringTrim(): Problems stripping of blanks" || return 1 + dprint "stringTrim(): \"$str_\" => \"$result_\"" + echo "$result_" } # Simple shell grep @@ -551,7 +580,7 @@ function netGetNameservers fi setCLang - ns_=`awk '/^nameserver/{printf "%s ",$2}' $file_` + ns_=`awk '/^nameserver/{printf "%s ",$2}' $file_ |xargs echo` restoreLang if [ -z "$ns_" ]; then if [ -z "$message_" ]; then @@ -574,51 +603,50 @@ function _touchService local action_="${1:-"start"}" local service_="$2" local error_function_=${3:-"eprint"} # function to call on error + local message_="$4" # user supplied error message local i="" + local known_action_='false' for i in "start" "stop" "restart" "reload" "force-reload"; do if [[ $i == $action_ ]]; then + known_action_='true' break fi - $error_function_ "unknown action: \"$action\"" - return 1 done + $known_action_ || warn "_touchService(): unknown action \"$action_\"" + - service_="${INITD_DIR__}/$service_" - if [ ! -e "$service_" ]; then - $error_function_ "service does not exist: \"$service_\"" + local service_path_="" + service_path_="${INITD_DIR__}/$service_" + if [ ! -e "$service_path_" ]; then + warn "_touchService(): service does not exist: \"$service_\"" return 1 fi - if [ ! -x "$service_" ]; then - $error_function_ "service is not executable: \"$service_\"" + if [ ! -x "$service_path_" ]; then + warn "_touchService(): service is not executable: \"$service_\"" fi - "$service_" "$action_" -} - -function _createServiceFunctions -{ - for i in "start" "stop" "restart" "reload" "force-reload"; do - eval "\ -function ${i}Service -{ - local service_=\"\$1\" - local error_function_=\${2:-\"eprint\"} # function to call on error - local message_=\"\$3\" # user supplied error message - - local ret_=\"\" - _touchService ${i} \"\$service_\" - ret_=\$? - if [[ \$ret_ != 0 ]]; then - if [ -z \"\$message_\" ]; then - \"\$error_function_\" \"Problems ${i}ing service \"\$service_\"\" \$ret_ + local ret_="" + "$service_path_" "$action_" + ret_=$? + if [[ $ret_ != 0 ]]; then + if [ -z "$message_" ]; then + "$error_function_" "Problems ${action_}ing service \"$service_\"" $ret_ else - \"\$error_function_\" \"\$message_\" \$ret_ + "$error_function_" "$message_" $ret_ fi return 1 fi -}" + dprint "_touchService(): successfully started service \"$service_\"" + return 0 +} + +function _createServiceFunctions +{ + for i in "start" "stop" "restart" "reload"; do + eval "function ${i}Service { _touchService ${i} \"\$1\" \"\$2\" \"\$3\"; }" done + eval "function forceReloadService { _touchService force-reload \"\$1\" \"\$2\" \"\$3\"; }" } _createServiceFunctions # }}} @@ -711,7 +739,7 @@ function _setDebugLevel local debug_="${DEBUG:-0}" VERBOSE__="$debug_" } -_checkBootParam +_setDebugLevel # }}} # END OF FILE