Navigation Menu

Skip to content

Commit

Permalink
use config file settings to configure database
Browse files Browse the repository at this point in the history
Let the database configuration scripts get the configuration parameter from the director config file.
Now, the scripts try to get there values in following order:
  1. environment variable (db_name, db_user, db_password)
  2. director config file
  3. fallback value (from configure)

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>
  • Loading branch information
joergsteffens authored and Marco van Wieringen committed Mar 27, 2014
1 parent a686d2c commit d985475
Show file tree
Hide file tree
Showing 10 changed files with 98 additions and 37 deletions.
1 change: 0 additions & 1 deletion debian/control
Expand Up @@ -340,4 +340,3 @@ Description: Backup Archiving Recovery Open Sourced - storage-python-plugin
data across a network of computers of different kinds.
.
This package provides the python plugin for the storage daemon.

99 changes: 79 additions & 20 deletions scripts/bareos-config-lib.sh.in
@@ -1,5 +1,6 @@
#!/bin/sh

CONFIG_LIB=@scriptdir@/bareos-config-lib.sh
DIR_CFG=@sysconfdir@
CFG_DIR=${DIR_CFG}/bareos-dir.conf
DIR_SCRIPTS=@scriptdir@
Expand Down Expand Up @@ -52,6 +53,24 @@ is_function()
# fi
# }

warn()
{
echo "Warning: $@" >&2
}

error()
{
echo "Error: $@" >&2
}

get_config_lib_file()
{
# can be used in following way:
# LIB=`bareos-config get_config_lib_file`
# . $LIB
echo "${CONFIG_LIB}"
}

get_user_fd()
{
echo "${FILE_DAEMON_USER}"
Expand Down Expand Up @@ -190,33 +209,72 @@ setup_sd_user()
exit 1
}

get_database_driver()
get_config_param()
{
if ! [ -r "${CFG_DIR}" ]; then
return
#
# get parameter values from a Bareos configuration file
#

# configuration file
CFG_FILE="$1"
# section, currently ignored
SECTION="$2"
# name of the section, currently ignored
NAME="$3"
# parameter to get from config file
PARAM="$4"
# default value, if parameter is not found
DEFAULT="$5"

if ! [ -r "${CFG_FILE}" ]; then
warn "failed to get parameter ${SECTION} ${NAME} ${PARAM}: can't read ${CFG_FILE}"
# if default value is given, return it anyway
[ "$DEFAULT" ] && echo "$DEFAULT"
return 1
fi

# get dbdriver, that is defined in director configuration.
# If string is still set to default, return nothing
DBDRIVER=`egrep -i '^[ ]*dbdriver[ ]*=' ${CFG_DIR} |\
# get parameter from configuration file
VALUE=`egrep -i "^[ ]*${PARAM}[ ]*=" ${CFG_FILE} |\
cut -d'=' -f2 | \
sed -e 's/[ ]*"//' -e 's/"//' | \
grep -v "XXX_REPLACE_WITH_DATABASE_DRIVER_XXX"`
sed -e 's/[ ]*"//' -e 's/"//'`
[ "$VALUE" ] || VALUE="$DEFAULT"
echo "$VALUE"
}

echo "$DBDRIVER"
get_database_param()
{
PARAM="$1"
DEFAULT="$2"
get_config_param "${CFG_DIR}" "catalog" "MyCatalog" "$PARAM" "$DEFAULT"
return $?
}

get_database_driver()
{
DEFAULT="$1"
get_database_param "dbdriver" "$DEFAULT" | grep -v "XXX_REPLACE_WITH_DATABASE_DRIVER_XXX"
return $?
}

get_database_name()
{
if ! [ -r "${CFG_DIR}" ]; then
return
fi
DEFAULT="$1"
get_database_param "dbname" "$DEFAULT"
return $?
}

# get dbname, that is defined in director configuration.
DBNAME=`egrep -i '^[ ]*dbname[ ]*=' ${CFG_DIR} |\
cut -d'=' -f2 | \
sed -e 's/[ ]*"//' -e 's/"//'`
echo "$DBNAME"
get_database_user()
{
DEFAULT="$1"
get_database_param "dbuser" "$DEFAULT"
return $?
}

get_database_password()
{
DEFAULT="$1"
get_database_param "dbpassword" "$DEFAULT"
return $?
}

get_databases_installed()
Expand Down Expand Up @@ -282,9 +340,10 @@ get_translated_sql_file()
fi

db_type="${db_type:-`get_database_driver_default`}"
db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_password="${db_password:-@db_password@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
# if $db_password is defined but empty, an empty password will be used ("-" instead of ":-")
db_password="${db_password-`get_database_password @db_password@`}"
db_version=`get_database_version`

case ${db_type} in
Expand Down
4 changes: 2 additions & 2 deletions src/cats/create_bareos_database.in
Expand Up @@ -29,8 +29,8 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
dir_user=`get_user_dir`
dir_group=`get_group_dir`
default_db_type=`get_database_driver_default`
Expand Down
3 changes: 2 additions & 1 deletion src/cats/ddl/grants/mysql-readonly.sql
@@ -1,5 +1,6 @@
USE mysql
-- read-only access for third party applications
GRANT SELECT ON TABLE @DB_NAME@.* TO @DB_USER@@localhost @DB_PASS@;
GRANT SELECT ON TABLE @DB_NAME@.* TO @DB_USER@@"%" @DB_PASS@;
GRANT SELECT ON TABLE @DB_NAME@.* TO @DB_USER@@'127.0.0.1' @DB_PASS@;
GRANT SELECT ON TABLE @DB_NAME@.* TO @DB_USER@@'::1' @DB_PASS@;
FLUSH PRIVILEGES;
5 changes: 3 additions & 2 deletions src/cats/ddl/grants/mysql.sql
@@ -1,4 +1,5 @@
USE mysql
GRANT ALL PRIVILEGES ON @DB_NAME@.* TO @DB_USER@@localhost @DB_PASS@;
GRANT ALL PRIVILEGES ON @DB_NAME@.* TO @DB_USER@@"%" @DB_PASS@;
GRANT ALL PRIVILEGES ON TABLE @DB_NAME@.* TO @DB_USER@@localhost @DB_PASS@;
GRANT ALL PRIVILEGES ON TABLE @DB_NAME@.* TO @DB_USER@@'127.0.0.1' @DB_PASS@;
GRANT ALL PRIVILEGES ON TABLE @DB_NAME@.* TO @DB_USER@@'::1' @DB_PASS@;
FLUSH PRIVILEGES;
4 changes: 2 additions & 2 deletions src/cats/drop_bareos_database.in
Expand Up @@ -28,8 +28,8 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
default_db_type=`get_database_driver_default`
working_dir=`get_working_dir`

Expand Down
4 changes: 2 additions & 2 deletions src/cats/drop_bareos_tables.in
Expand Up @@ -29,8 +29,8 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
db_version=`get_database_version`
bareos_sql_ddl=`get_database_ddl_dir`
temp_sql_schema="/tmp/drops.sql.$$"
Expand Down
7 changes: 4 additions & 3 deletions src/cats/grant_bareos_privileges.in
Expand Up @@ -29,9 +29,10 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_password="${db_password:-@db_password@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
# if $db_password is defined but empty, an empty password will be used ("-" instead of ":-")
db_password="${db_password-`get_database_password @db_password@`}"
db_version=`get_database_version`
bareos_sql_ddl=`get_database_ddl_dir`
temp_sql_grants="/tmp/grants.sql.$$"
Expand Down
4 changes: 2 additions & 2 deletions src/cats/make_bareos_tables.in
Expand Up @@ -29,8 +29,8 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
db_version=`get_database_version`
bareos_sql_ddl=`get_database_ddl_dir`
temp_sql_schema="/tmp/creates.sql.$$"
Expand Down
4 changes: 2 additions & 2 deletions src/cats/update_bareos_tables.in
Expand Up @@ -28,8 +28,8 @@
#
. @scriptdir@/bareos-config-lib.sh

db_name="${db_name:-@db_name@}"
db_user="${db_user:-@db_user@}"
db_name="${db_name:-`get_database_name @db_name@`}"
db_user="${db_user:-`get_database_user @db_user@`}"
db_version=`get_database_version`
bareos_sql_ddl=`get_database_ddl_dir`
temp_sql_schema="/tmp/tables.sql.$$"
Expand Down

0 comments on commit d985475

Please sign in to comment.