Apache/2.4.7 (Ubuntu) Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) safemode : OFF MySQL: ON | Perl: ON | cURL: OFF | WGet: ON > / usr / share / dbconfig-common / dpkg / | server ip : 172.67.156.115 your ip : 108.162.242.40 H O M E |
Filename | /usr/share/dbconfig-common/dpkg/config |
Size | 13.74 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 27-Apr-2025 10:12 |
Last modified | 01-May-2012 03:18 |
Last accessed | 06-Jul-2025 20:18 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
###
### config hook
###
dbc_go(){
local f db happy default_dbtype host newhost port oldhosts authmethod_admin do_config _preconf_list _s _t STATE iformat ifile install_question migrating userdb_prio supported_dbtypes
. /usr/share/dbconfig-common/dpkg/common
_dbc_debug "(config) dbc_go() $@"
dbc_config $@
db_capb backup
# only do this on install/reconfigure
if [ "$dbc_command" != "configure" ] && [ "$dbc_command" != "reconfigure" ];
then
return 0
fi
##
## register all the dbconfig-common questions
##
## note that this can fail in the case that dbconfig-common is being
## installed at the same time as the dependant package and the latter
## is preconfigured before we are (no way to avoid this without being
## in base). in this case we gracefully exit and defer to the second
## time the config script is run by dpkg in the postinst. note if that
## "hack" in dpkg ever goes away we can still work around the issue so
## i think it's fair to avoid over-complicating things in the dependency
## chain.
##
if ! dbc_register_debconf; then
_dbc_debug "dbconfig-common not yet setup, deferring configuration."
return 0
fi
# make sure debconf is up to date with on-disk configuration
dbc_read_package_config
dbc_preseed_package_debconf
# Find out whether the database has been purged on a previous occasion. If
# so, we'll have to give the user a chance to re-install it.
db_get $dbc_package/purge
if [ "$RET" = true ]; then
dbc_command=reconfigure
fi
# check out if they're migrating from a non-dbc version
if [ "$dbc_oldversion" ] && [ "$dbc_first_version" ] && \
dpkg --compare-versions "$dbc_first_version" gt "$dbc_oldversion"; then
migrating="yes"
fi
# if this is a frontend app, then the user/db type questions get
# a raised priority
userdb_prio="low"
if [ "$dbc_frontend" ]; then
userdb_prio="medium"
need_adminpw="false"
else
userdb_prio="low"
fi
# and if they're upgrading from any previous version, we *may*
# not need to ask for an admin password. we can't tell at this
# point because the upgrade files are likely not unpacked at
# this point, so we will instead ask later in the postinst.
if [ "$dbc_oldversion" ] && [ "$dbc_command" != "reconfigure" ]; then
need_adminpw="false"
fi
# the first question we ask will differ depending on how we're invoked
if [ "$migrating" ]; then
install_question="$dbc_package/dbconfig-upgrade"
elif [ "$dbc_command" = "configure" ]; then
install_question="$dbc_package/dbconfig-install"
else
install_question="$dbc_package/dbconfig-reinstall"
# if we are reconfiguring (via dpkg-reconfigure), also leave a hint
# for our future postinst selves so we know we *should* run the code
# that would otherwise think we were upgrading
db_set $dbc_package/internal/reconfiguring true
fi
##
## start new dbc upgrade section
##
# if there is a previously existing version already installed
# *and* the maintainer has provided the first version that used
# dbconfig-common *and* this version is newer than the
# previously installed version... do the dbc import stuff.
if [ "$migrating" ]; then
dbc_migrate
fi
# and start our beautiful state-machine
# we start in STATE=1 (install_question) in all but one situation:
# - we're installing a frontend/readonly app
if [ ! "$dbc_frontend" ]; then
STATE=1
else
STATE=2
fi
while true; do
case "$STATE" in
# state 1 - ask if they want our help at all
1)
db_input high $install_question || true
;;
# state 2 - check to see if they do.
# - see if this is an upgrade newly supporting dbc
# - multidb support step 1
2)
db_get $install_question
if [ "$RET" != "true" ]; then
db_set $dbc_package/internal/skip-preseed true
return 0;
fi
db_set $dbc_package/dbconfig-install true
##
## start multidb section
##
# if the dbtype is hardcoded (using config.mysql, etc), use that
if [ "$dbc_hardcoded_dbtype" ]; then
dbc_dbtype=$dbc_hardcoded_dbtype
# else if the package supports multiple dbtypes, help them pick one
elif [ "$dbc_dbtypes" ]; then
# loop through the listed dbtypes, fall back to all those available
supported_dbtypes=$(echo $dbc_dbtypes | sed 's/,/ /g')
for db in $supported_dbtypes $dbc_all_supported_dbtypes; do
# if we're already happy, we're already done
if [ "$happy" ]; then
true
# else, if it's supported, installed and unpacked, we're happy
elif dbc_detect_supported_dbtype $db; then
# if it's installed, we're happy
if dbc_detect_installed_dbtype $db; then
happy="yes"
fi
# but in any case it's be the default even if not happy
default_dbtype=$db
fi
# otherwise, there's no default yet, which is okay
done
# now that we're done with that, actually do the debconf stuff
# if dbc_dbtype isn't already set (from conf file) then
# use the default as our best guess
if [ ! "$dbc_dbtype" ]; then
dbc_dbtype="$default_dbtype"
fi
db_set $dbc_package/database-type "$dbc_dbtype"
db_input high $dbc_package/database-type || true
fi
;;
# state 3 - multidb support part 2, pre-seeding, get conn. method
3)
if [ "$dbc_dbtypes" ]; then
db_get $dbc_package/database-type && dbc_dbtype="$RET"
# now that we have a dbtype, reload common to set other defaults
dbc_config $@
fi
# there's a bit more to do with rdbms that support authentication
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ ! "$dbc_dbadmin" ]; then
dbc_dbadmin="$dbc_default_admin";
fi
if [ ! "$dbc_dbuser" ]; then
dbc_dbuser="$dbc_default_dbuser"
fi
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ ! "$dbc_basepath" ]; then
dbc_basepath="$dbc_default_basepath";
fi
fi
if [ ! "$dbc_dbname" ]; then
dbc_dbname=`echo $dbc_package | tr -d +-.`;
fi
# pre-seed any already defined values into debconf as defaults
db_set $dbc_package/db/dbname "$dbc_dbname"
if [ "$dbc_upgrade" ]; then
db_set $dbc_package/dbconfig-upgrade "$dbc_upgrade"
fi
if [ "$dbc_remove" ]; then
db_set $dbc_package/dbconfig-remove "$dbc_remove"
fi
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_dbuser" ]; then
db_set $dbc_package/db/app-user "$dbc_dbuser"
fi
if [ "$dbc_dbpass" ]; then
db_set $dbc_package/$dbc_dbtype/app-pass "$dbc_dbpass"
db_fset $dbc_package/$dbc_dbtype/app-pass seen true
db_set $dbc_package/app-password-confirm "$dbc_dbpass"
db_fset $dbc_package/app-password-confirm seen true
fi
if [ "$dbc_dbadmin" ]; then
db_set $dbc_package/$dbc_dbtype/admin-user "$dbc_dbadmin"
fi
fi
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_dbserver" ]; then
db_set $dbc_package/remote/host "$dbc_dbserver"
fi
if [ "$dbc_dbport" ]; then
db_set $dbc_package/remote/port "$dbc_dbport"
fi
if [ "$dbc_ssl" = "true" ] && [ "$dbc_dbtype" = "pgsql" ]; then
db_set $dbc_package/pgsql/method "tcp/ip + ssl"
fi
db_input $dbc_remote_questions_priority $dbc_package/$dbc_dbtype/method || true
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ "$dbc_basepath" ]; then
db_set $dbc_package/db/basepath "$dbc_basepath"
fi
fi
;;
# state 4 - do stuff based on the connection method
4)
db_get $dbc_package/$dbc_dbtype/method && dbc_method="$RET"
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
# if package/method == tcp/ip or tcp/ip + ssl
if [ "$dbc_method" != "unix socket" ]; then
# look at the hosts used in any other dbconfig-using
# package, and create a list of hosts.
_preconf_list=` (
for f in /etc/dbconfig-common/*.conf; do
test -f $f || continue
eval \`dbconfig-generate-include --dbserver=_s $f | grep -v '^#'\`
[ "$_s" ] && echo $_s
done
) | sort | uniq`
# turn the list into a comma separated list if it exists
# and then substitute it into the list of available hosts
if [ "$_preconf_list" ]; then
_preconf_list=`echo $_preconf_list | sed -e 's/ /, /g'`
_preconf_list="new host, $_preconf_list"
db_subst $dbc_package/remote/host hosts "$_preconf_list"
# and then ask them for one
db_input high $dbc_package/remote/host || true
fi
# but if it is unix socket, forget all the host stuff
else
db_reset $dbc_package/remote/host || true
db_reset $dbc_package/remote/newhost || true
db_reset $dbc_package/remote/port || true
fi
fi
;;
# state 5 - get host / port info if necessary
5)
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_method" != "unix socket" ]; then
if [ "$_preconf_list" ]; then
db_get $dbc_package/remote/host
host=$RET
fi
# if they've chosen "new host" or the host list was empty
if [ ! "$host" ] || [ "$host" = "new host" ]; then
# prompt them for a new hostname
db_input high $dbc_package/remote/newhost || true
fi
fi
fi
;;
# state 6 - do stuff based on host/port selection
6)
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_method" != "unix socket" ]; then
if [ ! "$host" ] || [ "$host" = "new host" ]; then
db_get $dbc_package/remote/newhost
newhost="$RET"
# add the new host to the existing list of hosts
db_metaget $dbc_package/remote/host choices
oldhosts="$RET"
db_subst $dbc_package/remote/host hosts "$oldhosts, $newhost"
db_set $dbc_package/remote/host "$newhost"
db_fset $dbc_package/remote/host seen true
else
# set the "newhost" to the selected host, because
# the second time through the configure script we'll
# need this set
db_set $dbc_package/remote/newhost "$host"
fi
# on what port?
db_input $dbc_remote_questions_priority $dbc_package/remote/port || true
fi
fi
;;
# state 7 - pgsql specific auth stuff, part 1
7)
if [ "$dbc_dbtype" = "pgsql" ] && [ ! "$dbc_frontend" ]; then
# postgresql provides multiple auth types, and ssl
# get the admin auth method
db_input low $dbc_package/pgsql/authmethod-admin || true
fi
;;
# state 8 - pgsql auth stuff, part 2
8)
if [ "$dbc_dbtype" = "pgsql" ] && [ ! "$dbc_frontend" ]; then
db_get $dbc_package/pgsql/authmethod-admin && authmethod_admin="$RET"
# if we are using ident, we don't need passwords
if [ "$authmethod_admin" = "ident" ]; then
need_adminpw="false"
fi
# default the user auth method to the admin method
# ...but only if the answer hasn't already been specified.
if [ ! "${dbc_authmethod_user}" ]; then
db_set $dbc_package/pgsql/authmethod-user "$authmethod_admin"
fi
db_input medium $dbc_package/pgsql/authmethod-user || true
fi
;;
# state 9 - admin/app user/pass, dbname
9)
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
# who's the admin user
if [ ! "$dbc_frontend" ]; then
db_input $userdb_prio $dbc_package/$dbc_dbtype/admin-user || true
if [ "$need_adminpw" != "false" ]; then
dbc_get_admin_pass
fi
fi
db_input $userdb_prio $dbc_package/db/app-user || true
dbc_get_app_pass
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# check the path / permissions to install to
db_input low $dbc_package/db/basepath || true
fi
# get the name of the database to use
db_input $userdb_prio $dbc_package/db/dbname || true
;;
# * - end state
*)
break
;;
esac
if db_go; then
STATE=$(($STATE + 1))
else
STATE=$(($STATE - 1))
fi
if [ $STATE -lt 1 ]; then
exit 10
fi
done
db_set $dbc_package/internal/skip-preseed true
}
dbc_migrate() {
# if dbc_load_include is set, determine the format
# and location of the old config file
if [ "$dbc_load_include" ]; then
iformat=`echo $dbc_load_include | cut -d: -f1`
ifile=`echo $dbc_load_include | cut -d: -f2-`
fi
##
## if they want to import settings from a previous
## non-dbc version, do that and mark the questions
## skipped
##
if [ -z "$ifile" ] || [ ! -f "$ifile" ]; then
return
fi
dbc_logpart "migrating old settings into dbconfig-common: "
if [ "$dbc_debug" ]; then
_dbc_debug "dbconfig-load-include $dbc_load_include_args -f $iformat $ifile"
dbconfig-load-include $dbc_load_include_args -f $iformat $ifile
fi
eval `dbconfig-load-include $dbc_load_include_args -f $iformat $ifile`
if [ "$?" != "0" ]; then
dbc_logline "failed"
return
fi
# the load script needs to return at least a database type, if it's
# not a single-dbtype package
dbc_dbtype=${dbc_dbtype:-${dbc_hardcoded_dbtype:-}}
if [ -z "$dbc_dbtype" ]; then
dbc_logline "failed"
return
fi
# if the dbtype is hardcoded, reset it no matter what
# dbconfig-load-include tells us
if [ "$dbc_hardcoded_dbtype" ]; then
dbc_dbtype="$dbc_hardcoded_dbtype"
fi
for f in database-type $dbc_dbtype/method db/dbname; do
db_fset $dbc_package/$f seen true || true
done
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
for f in pgsql/authmethod-admin pgsql/authmethod-user $dbc_dbtype/admin-user db/app-user; do
db_fset $dbc_package/$f seen true || true
done
db_set $dbc_package/db/app-user "$dbc_dbuser"
db_set $dbc_package/$dbc_dbtype/app-pass "$dbc_dbpass"
db_set $dbc_package/password-confirm "$dbc_dbpass"
fi
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
for f in remote/host remote/newhost remote/port ; do
db_fset $dbc_package/$f seen true || true
done
db_set $dbc_package/remote/host "$dbc_dbserver"
db_set $dbc_package/remote/newhost "$dbc_dbserver"
db_set $dbc_package/remote/port "$dbc_dbport"
if [ "$dbc_dbserver" ]; then
db_set $dbc_package/$dbc_dbtype/method "tcp/ip"
fi
fi
db_set $dbc_package/database-type $dbc_dbtype
db_set $dbc_package/db/dbname "$dbc_dbname"
dbc_logline "done"
}
### config hook
###
dbc_go(){
local f db happy default_dbtype host newhost port oldhosts authmethod_admin do_config _preconf_list _s _t STATE iformat ifile install_question migrating userdb_prio supported_dbtypes
. /usr/share/dbconfig-common/dpkg/common
_dbc_debug "(config) dbc_go() $@"
dbc_config $@
db_capb backup
# only do this on install/reconfigure
if [ "$dbc_command" != "configure" ] && [ "$dbc_command" != "reconfigure" ];
then
return 0
fi
##
## register all the dbconfig-common questions
##
## note that this can fail in the case that dbconfig-common is being
## installed at the same time as the dependant package and the latter
## is preconfigured before we are (no way to avoid this without being
## in base). in this case we gracefully exit and defer to the second
## time the config script is run by dpkg in the postinst. note if that
## "hack" in dpkg ever goes away we can still work around the issue so
## i think it's fair to avoid over-complicating things in the dependency
## chain.
##
if ! dbc_register_debconf; then
_dbc_debug "dbconfig-common not yet setup, deferring configuration."
return 0
fi
# make sure debconf is up to date with on-disk configuration
dbc_read_package_config
dbc_preseed_package_debconf
# Find out whether the database has been purged on a previous occasion. If
# so, we'll have to give the user a chance to re-install it.
db_get $dbc_package/purge
if [ "$RET" = true ]; then
dbc_command=reconfigure
fi
# check out if they're migrating from a non-dbc version
if [ "$dbc_oldversion" ] && [ "$dbc_first_version" ] && \
dpkg --compare-versions "$dbc_first_version" gt "$dbc_oldversion"; then
migrating="yes"
fi
# if this is a frontend app, then the user/db type questions get
# a raised priority
userdb_prio="low"
if [ "$dbc_frontend" ]; then
userdb_prio="medium"
need_adminpw="false"
else
userdb_prio="low"
fi
# and if they're upgrading from any previous version, we *may*
# not need to ask for an admin password. we can't tell at this
# point because the upgrade files are likely not unpacked at
# this point, so we will instead ask later in the postinst.
if [ "$dbc_oldversion" ] && [ "$dbc_command" != "reconfigure" ]; then
need_adminpw="false"
fi
# the first question we ask will differ depending on how we're invoked
if [ "$migrating" ]; then
install_question="$dbc_package/dbconfig-upgrade"
elif [ "$dbc_command" = "configure" ]; then
install_question="$dbc_package/dbconfig-install"
else
install_question="$dbc_package/dbconfig-reinstall"
# if we are reconfiguring (via dpkg-reconfigure), also leave a hint
# for our future postinst selves so we know we *should* run the code
# that would otherwise think we were upgrading
db_set $dbc_package/internal/reconfiguring true
fi
##
## start new dbc upgrade section
##
# if there is a previously existing version already installed
# *and* the maintainer has provided the first version that used
# dbconfig-common *and* this version is newer than the
# previously installed version... do the dbc import stuff.
if [ "$migrating" ]; then
dbc_migrate
fi
# and start our beautiful state-machine
# we start in STATE=1 (install_question) in all but one situation:
# - we're installing a frontend/readonly app
if [ ! "$dbc_frontend" ]; then
STATE=1
else
STATE=2
fi
while true; do
case "$STATE" in
# state 1 - ask if they want our help at all
1)
db_input high $install_question || true
;;
# state 2 - check to see if they do.
# - see if this is an upgrade newly supporting dbc
# - multidb support step 1
2)
db_get $install_question
if [ "$RET" != "true" ]; then
db_set $dbc_package/internal/skip-preseed true
return 0;
fi
db_set $dbc_package/dbconfig-install true
##
## start multidb section
##
# if the dbtype is hardcoded (using config.mysql, etc), use that
if [ "$dbc_hardcoded_dbtype" ]; then
dbc_dbtype=$dbc_hardcoded_dbtype
# else if the package supports multiple dbtypes, help them pick one
elif [ "$dbc_dbtypes" ]; then
# loop through the listed dbtypes, fall back to all those available
supported_dbtypes=$(echo $dbc_dbtypes | sed 's/,/ /g')
for db in $supported_dbtypes $dbc_all_supported_dbtypes; do
# if we're already happy, we're already done
if [ "$happy" ]; then
true
# else, if it's supported, installed and unpacked, we're happy
elif dbc_detect_supported_dbtype $db; then
# if it's installed, we're happy
if dbc_detect_installed_dbtype $db; then
happy="yes"
fi
# but in any case it's be the default even if not happy
default_dbtype=$db
fi
# otherwise, there's no default yet, which is okay
done
# now that we're done with that, actually do the debconf stuff
# if dbc_dbtype isn't already set (from conf file) then
# use the default as our best guess
if [ ! "$dbc_dbtype" ]; then
dbc_dbtype="$default_dbtype"
fi
db_set $dbc_package/database-type "$dbc_dbtype"
db_input high $dbc_package/database-type || true
fi
;;
# state 3 - multidb support part 2, pre-seeding, get conn. method
3)
if [ "$dbc_dbtypes" ]; then
db_get $dbc_package/database-type && dbc_dbtype="$RET"
# now that we have a dbtype, reload common to set other defaults
dbc_config $@
fi
# there's a bit more to do with rdbms that support authentication
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ ! "$dbc_dbadmin" ]; then
dbc_dbadmin="$dbc_default_admin";
fi
if [ ! "$dbc_dbuser" ]; then
dbc_dbuser="$dbc_default_dbuser"
fi
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ ! "$dbc_basepath" ]; then
dbc_basepath="$dbc_default_basepath";
fi
fi
if [ ! "$dbc_dbname" ]; then
dbc_dbname=`echo $dbc_package | tr -d +-.`;
fi
# pre-seed any already defined values into debconf as defaults
db_set $dbc_package/db/dbname "$dbc_dbname"
if [ "$dbc_upgrade" ]; then
db_set $dbc_package/dbconfig-upgrade "$dbc_upgrade"
fi
if [ "$dbc_remove" ]; then
db_set $dbc_package/dbconfig-remove "$dbc_remove"
fi
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_dbuser" ]; then
db_set $dbc_package/db/app-user "$dbc_dbuser"
fi
if [ "$dbc_dbpass" ]; then
db_set $dbc_package/$dbc_dbtype/app-pass "$dbc_dbpass"
db_fset $dbc_package/$dbc_dbtype/app-pass seen true
db_set $dbc_package/app-password-confirm "$dbc_dbpass"
db_fset $dbc_package/app-password-confirm seen true
fi
if [ "$dbc_dbadmin" ]; then
db_set $dbc_package/$dbc_dbtype/admin-user "$dbc_dbadmin"
fi
fi
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_dbserver" ]; then
db_set $dbc_package/remote/host "$dbc_dbserver"
fi
if [ "$dbc_dbport" ]; then
db_set $dbc_package/remote/port "$dbc_dbport"
fi
if [ "$dbc_ssl" = "true" ] && [ "$dbc_dbtype" = "pgsql" ]; then
db_set $dbc_package/pgsql/method "tcp/ip + ssl"
fi
db_input $dbc_remote_questions_priority $dbc_package/$dbc_dbtype/method || true
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# if these haven't been specified, use defaults
if [ "$dbc_basepath" ]; then
db_set $dbc_package/db/basepath "$dbc_basepath"
fi
fi
;;
# state 4 - do stuff based on the connection method
4)
db_get $dbc_package/$dbc_dbtype/method && dbc_method="$RET"
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
# if package/method == tcp/ip or tcp/ip + ssl
if [ "$dbc_method" != "unix socket" ]; then
# look at the hosts used in any other dbconfig-using
# package, and create a list of hosts.
_preconf_list=` (
for f in /etc/dbconfig-common/*.conf; do
test -f $f || continue
eval \`dbconfig-generate-include --dbserver=_s $f | grep -v '^#'\`
[ "$_s" ] && echo $_s
done
) | sort | uniq`
# turn the list into a comma separated list if it exists
# and then substitute it into the list of available hosts
if [ "$_preconf_list" ]; then
_preconf_list=`echo $_preconf_list | sed -e 's/ /, /g'`
_preconf_list="new host, $_preconf_list"
db_subst $dbc_package/remote/host hosts "$_preconf_list"
# and then ask them for one
db_input high $dbc_package/remote/host || true
fi
# but if it is unix socket, forget all the host stuff
else
db_reset $dbc_package/remote/host || true
db_reset $dbc_package/remote/newhost || true
db_reset $dbc_package/remote/port || true
fi
fi
;;
# state 5 - get host / port info if necessary
5)
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_method" != "unix socket" ]; then
if [ "$_preconf_list" ]; then
db_get $dbc_package/remote/host
host=$RET
fi
# if they've chosen "new host" or the host list was empty
if [ ! "$host" ] || [ "$host" = "new host" ]; then
# prompt them for a new hostname
db_input high $dbc_package/remote/newhost || true
fi
fi
fi
;;
# state 6 - do stuff based on host/port selection
6)
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
if [ "$dbc_method" != "unix socket" ]; then
if [ ! "$host" ] || [ "$host" = "new host" ]; then
db_get $dbc_package/remote/newhost
newhost="$RET"
# add the new host to the existing list of hosts
db_metaget $dbc_package/remote/host choices
oldhosts="$RET"
db_subst $dbc_package/remote/host hosts "$oldhosts, $newhost"
db_set $dbc_package/remote/host "$newhost"
db_fset $dbc_package/remote/host seen true
else
# set the "newhost" to the selected host, because
# the second time through the configure script we'll
# need this set
db_set $dbc_package/remote/newhost "$host"
fi
# on what port?
db_input $dbc_remote_questions_priority $dbc_package/remote/port || true
fi
fi
;;
# state 7 - pgsql specific auth stuff, part 1
7)
if [ "$dbc_dbtype" = "pgsql" ] && [ ! "$dbc_frontend" ]; then
# postgresql provides multiple auth types, and ssl
# get the admin auth method
db_input low $dbc_package/pgsql/authmethod-admin || true
fi
;;
# state 8 - pgsql auth stuff, part 2
8)
if [ "$dbc_dbtype" = "pgsql" ] && [ ! "$dbc_frontend" ]; then
db_get $dbc_package/pgsql/authmethod-admin && authmethod_admin="$RET"
# if we are using ident, we don't need passwords
if [ "$authmethod_admin" = "ident" ]; then
need_adminpw="false"
fi
# default the user auth method to the admin method
# ...but only if the answer hasn't already been specified.
if [ ! "${dbc_authmethod_user}" ]; then
db_set $dbc_package/pgsql/authmethod-user "$authmethod_admin"
fi
db_input medium $dbc_package/pgsql/authmethod-user || true
fi
;;
# state 9 - admin/app user/pass, dbname
9)
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
# who's the admin user
if [ ! "$dbc_frontend" ]; then
db_input $userdb_prio $dbc_package/$dbc_dbtype/admin-user || true
if [ "$need_adminpw" != "false" ]; then
dbc_get_admin_pass
fi
fi
db_input $userdb_prio $dbc_package/db/app-user || true
dbc_get_app_pass
fi
if echo "$dbc_fs_dbtypes" | grep -q "$dbc_dbtype"; then
# check the path / permissions to install to
db_input low $dbc_package/db/basepath || true
fi
# get the name of the database to use
db_input $userdb_prio $dbc_package/db/dbname || true
;;
# * - end state
*)
break
;;
esac
if db_go; then
STATE=$(($STATE + 1))
else
STATE=$(($STATE - 1))
fi
if [ $STATE -lt 1 ]; then
exit 10
fi
done
db_set $dbc_package/internal/skip-preseed true
}
dbc_migrate() {
# if dbc_load_include is set, determine the format
# and location of the old config file
if [ "$dbc_load_include" ]; then
iformat=`echo $dbc_load_include | cut -d: -f1`
ifile=`echo $dbc_load_include | cut -d: -f2-`
fi
##
## if they want to import settings from a previous
## non-dbc version, do that and mark the questions
## skipped
##
if [ -z "$ifile" ] || [ ! -f "$ifile" ]; then
return
fi
dbc_logpart "migrating old settings into dbconfig-common: "
if [ "$dbc_debug" ]; then
_dbc_debug "dbconfig-load-include $dbc_load_include_args -f $iformat $ifile"
dbconfig-load-include $dbc_load_include_args -f $iformat $ifile
fi
eval `dbconfig-load-include $dbc_load_include_args -f $iformat $ifile`
if [ "$?" != "0" ]; then
dbc_logline "failed"
return
fi
# the load script needs to return at least a database type, if it's
# not a single-dbtype package
dbc_dbtype=${dbc_dbtype:-${dbc_hardcoded_dbtype:-}}
if [ -z "$dbc_dbtype" ]; then
dbc_logline "failed"
return
fi
# if the dbtype is hardcoded, reset it no matter what
# dbconfig-load-include tells us
if [ "$dbc_hardcoded_dbtype" ]; then
dbc_dbtype="$dbc_hardcoded_dbtype"
fi
for f in database-type $dbc_dbtype/method db/dbname; do
db_fset $dbc_package/$f seen true || true
done
if echo "$dbc_authenticated_dbtypes" | grep -q "$dbc_dbtype"; then
for f in pgsql/authmethod-admin pgsql/authmethod-user $dbc_dbtype/admin-user db/app-user; do
db_fset $dbc_package/$f seen true || true
done
db_set $dbc_package/db/app-user "$dbc_dbuser"
db_set $dbc_package/$dbc_dbtype/app-pass "$dbc_dbpass"
db_set $dbc_package/password-confirm "$dbc_dbpass"
fi
if echo "$dbc_remote_dbtypes" | grep -q "$dbc_dbtype"; then
for f in remote/host remote/newhost remote/port ; do
db_fset $dbc_package/$f seen true || true
done
db_set $dbc_package/remote/host "$dbc_dbserver"
db_set $dbc_package/remote/newhost "$dbc_dbserver"
db_set $dbc_package/remote/port "$dbc_dbport"
if [ "$dbc_dbserver" ]; then
db_set $dbc_package/$dbc_dbtype/method "tcp/ip"
fi
fi
db_set $dbc_package/database-type $dbc_dbtype
db_set $dbc_package/db/dbname "$dbc_dbname"
dbc_logline "done"
}