#!/bin/bash
##############################################################################
# Copyright (c) Members of the EGEE Collaboration. 2008.
# See http://www.eu-egee.org/partners/ for details on the copyright
# holders.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS
# OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##############################################################################
#
# NAME :        config_lfc_mysql
#
# DESCRIPTION : This function configures MySQL
#
# AUTHORS :     Akos.Frohner@cern.ch
#
# YAIM MODULE:  glite-yaim-lfc
#
##############################################################################

config_lfc_mysql_check () {
 requires $1 LFC_DB_HOST LFC_DB LFC_HOST LFC_DB_PASSWORD VOS GLITE_LOCATION LCG_LOCATION
 retcode=$?
 return ${retcode}
}


function config_lfc_mysql () {

####@ Check that the LFC DB password doesn't contain "@"

badpassword=`echo "${LFC_DB_PASSWORD}" | grep "@"`
echo "$badpassword"
if [ "x${badpassword}x" != "xx" ]; then
	yaimlog ERROR "The LFC database user password cannot contain the \"@\" character. Exiting."
	return 1
fi

if [ "x${LFC_HOST}x" == "x${LFC_DB_HOST}x" ]; then
 start_mysql || return 1
 set_mysql_passwd || return 1
 mysql --pass="$MYSQL_PASSWORD" -h $LFC_DB_HOST \
       --exec "GRANT ALL PRIVILEGES ON ${LFC_DB}.* TO 'lfc'@'localhost' IDENTIFIED BY '$LFC_DB_PASSWORD' WITH GRANT OPTION" || return 1
else
  yaimlog INFO "mysql database machine not local, not checking or setting the mysql root password"
fi

mysql --pass="$MYSQL_PASSWORD" -h $LFC_DB_HOST \
      --exec "GRANT ALL PRIVILEGES ON ${LFC_DB}.* TO 'lfc'@'$LFC_HOST' IDENTIFIED BY '$LFC_DB_PASSWORD' WITH GRANT OPTION" || return 1

LFC_SQL="${LCG_LOCATION}/share/LFC/create_lfc_tables_mysql.sql"
if [ -e "/usr/share/lcgdm/create_lfc_tables_mysql.sql" ]; then
	LFC_SQL="${LCG_LOCATION}/share/lcgdm/create_lfc_tables_mysql.sql"
fi

if ( ! mysql --pass="$MYSQL_PASSWORD" -h $LFC_DB_HOST -e "use $LFC_DB;" > /dev/null 2>&1 ); then
        SCRIPT_FILE=`mktemp /tmp/config_lfc_mysql.XXXXXX`
	sed -e "s/CREATE DATABASE cns_db;/CREATE DATABASE $LFC_DB;/" \
	    -e "s/USE cns_db;/USE $LFC_DB;/" \
		${LFC_SQL} \
		> $SCRIPT_FILE
	mysql -u lfc --password="$LFC_DB_PASSWORD" -h $LFC_DB_HOST < $SCRIPT_FILE
  if [ $? -ne 0 ]; then
    yaimlog ERROR "Couldn't initialize the database!"
    return 1
  fi
  # cleanup
  rm -f $SCRIPT_FILE
  unset SCRIPT_FILE
fi

echo "lfc/${LFC_DB_PASSWORD}@${LFC_DB_HOST}/${LFC_DB}" > ${LCG_LOCATION}/etc/NSCONFIG
chown ${LFCMGR_USER}:${LFCMGR_GROUP} ${LCG_LOCATION}/etc/NSCONFIG
chmod 660 ${LCG_LOCATION}/etc/NSCONFIG

return 0

}
