#!/bin/bash
#
# test_mysql_variables
#
# Steuerung ueber Environment:
#   ULSNAME: ULS-Hostname
#   ULSSECTION: Section im ULS
#   MYSQL_SOCKET: Socket zur DB - wenn Socket gesetzt, wird Host und Port ignoriert
#   MYSQL_HOST: oder Host
#   MYSQL_PORT: und Port, wenn abweichend von 3306
#   MYSQL_USER: User zur DB
#   MYSQL_PASSWORD: Password zur DB
#   MYSQL_VARIABLES_CONF: optionale Datei mit Konfiguration ueber Umfang
#
###################################################################################
#
if [[ -z "$MYSQL_USER" ]]
 then
  if [[ -f /etc/uls/mysql.conf ]]
   then
    . /etc/uls/mysql.conf
  else
    echo "/etc/uls/mysql.conf not found."
    exit 0
  fi
fi
#
unset D S U
#
while getopts d:Su:? op
 do
  case "$op" in
    d) D="-d $OPTARG";;
    S) S="-S";;
    u) U="-u $OPTARG";;
    *) echo "usage: $0 [-d storepath] [-S|-u ulsserver]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1 ))
#
. `dirname $0`/uls_header $1
#
callmysql()
{ if [[ -n "$MYSQL_SOCKET" ]]
   then
    mysql $2 -B -S "$MYSQL_SOCKET" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  elif [[ -n "$MYSQL_PORT" ]]
   then
    mysql $2 -B -h "$MYSQL_HOST" -P "$MYSQL_PORT"  -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  else
    mysql $2 -B -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  fi
}
#
CONF="${MYSQL_VARIABLES_CONF:-/etc/uls/mysql_variables.conf}"
if [[ ! -f "$CONF" ]]
 then
  echo "Config file $CONF not found."
  exit 0
fi
#
export LANG=C
export LC_CTYPE=en_US.UTF-8
#
( L=`callmysql "select @@character_set_client" -N`
  echo "L;;;;;;$L;"
  echo "D;$DT;${ULSNAME:-${ULSHOSTNAME:-`hostname`}};${ULSSECTION:-MySQL};"
  ( callmysql "show /*!50000 GLOBAL */ variables" -N
    echo "MAGIC7348576"
    grep -v '^ *#' "$CONF"
  ) | awk '
BEGIN { C = 0 }
/MAGIC7348576/ { C++ }
NF >= 2 { if( C == 1 )
          { for( a in w )
            { if( a ~ "^"$2"$" )
              { if( w[a] ~ "^[-+]?[0-9]+$" )
                  print "V;;;;Variables:" $1 ";" a ";" w[a] ";#"
                else
                  print "V;;;;Variables:" $1 ";" a ";" w[a] "; "
              }
            }
          }
          else
            w[$1] = $2
        }
') | send_test_tab $D $S $U
