[Dbconfig-common-devel] dbconfig-common/internal pgsql,1.8,1.9
seanius@haydn.debian.org
seanius@haydn.debian.org
Update of /cvsroot/dbconfig-common/dbconfig-common/internal
In directory haydn:/org/alioth.debian.org/chroot/home/users/seanius/tmp/cvs-serv19414/internal
Modified Files:
pgsql
Log Message:
just about ready for an upload to unstable(!)
Index: pgsql
===================================================================
RCS file: /cvsroot/dbconfig-common/dbconfig-common/internal/pgsql,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- pgsql 8 Jun 2005 05:46:52 -0000 1.8
+++ pgsql 11 Jul 2005 04:23:01 -0000 1.9
@@ -10,28 +10,52 @@
_dbc_psql_local_username(){
# determine proper local system user as whom to run commands.
- # - ident/localhost: $dbc_dbadmin
+ # - if _dbc_asuser set and ident/localhost, $dbc_dbuser
+ # - else ident/localhost: $dbc_dbadmin
# - all others: no change (root)
- if [ "$dbc_authmethod_admin" = "ident" -a ! "$dbc_dbserver" ]; then
+ if [ "$_dbc_asuser" ]; then
+ if [ "$dbc_authmethod_user" = "ident" -a ! "$dbc_dbserver" ]; then
+ echo $dbc_dbuser
+ else
+ echo root
+ fi
+ elif [ "$dbc_authmethod_admin" = "ident" -a ! "$dbc_dbserver" ]; then
echo $dbc_dbadmin
else
echo root
fi
}
+_dbc_psql_remote_username(){
+ # determine proper remote user for connection requests
+ # - if _dbc_asuser set: $dbc_dbuser
+ # - else: $dbc_dbadmin
+ if [ "$_dbc_asuser" ]; then
+ echo $dbc_dbuser
+ else
+ echo $dbc_dbadmin
+ fi
+}
+
_dbc_psql_cmd_setup(){
- local localuser
+ local localuser remoteuser remotepass
localuser=`_dbc_psql_local_username`
+ remoteuser=`_dbc_psql_remote_username`
_dbc_pgsql_tmpdir=`mktemp -dt dbconfig-common.psql_home.XXXXXX`
if [ $? -ne 0 ]; then return 1; fi
if [ "$dbc_authmethod_admin" = "password" ]; then
touch "${_dbc_pgsql_tmpdir}/.pgpass"
chmod 600 ${_dbc_pgsql_tmpdir}/.pgpass
+ if [ "$remoteuser" = "$dbc_dbadmin" ]; then
+ remotepass="$dbc_dbadmpass"
+ else
+ remotepass="$dbc_dbpass"
+ fi
cat << EOF > ${_dbc_pgsql_tmpdir}/.pgpass
-*:*:*:$dbc_dbadmin:$dbc_dbadmpass
+*:*:*:$remoteuser:$remotepass
EOF
fi
- if [ "$localuser" ]; then
+ if [ "$localuser" -a "$localuser" != "root" ]; then
chown -R "$localuser" $_dbc_pgsql_tmpdir
fi
}
@@ -46,10 +70,12 @@
_dbc_psql(){
local extra retval PGSSLMODE localuser
localuser=`_dbc_psql_local_username`
+ remoteuser=`_dbc_psql_remote_username`
_dbc_pgsql_tmpdir=`mktemp -dt dbconfig-common.psql_home.XXXXXX`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
+ extra="$extra -U '$remoteuser'"
if [ "$dbc_ssl" ]; then PGSSLMODE="require"; fi
if [ "$dbc_dbserver" ]; then extra="$extra -h '$dbc_dbserver'"; fi
if [ "$dbc_dbport" ]; then extra="$extra -p '$dbc_dbport'"; fi
@@ -59,7 +85,7 @@
}
_dbc_createdb(){
- local extra retval PGSSLMODE localuser
+ local extra retval PGSSLMODE localuser _dbc_asuser
localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
@@ -74,7 +100,7 @@
}
_dbc_dropdb(){
- local extra retval PGSSLMODE localuser
+ local extra retval PGSSLMODE localuser _dbc_asuser
localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
@@ -89,7 +115,7 @@
}
_dbc_createuser(){
- local extra dbc_dbname retval PGSSLMODE localuser
+ local extra dbc_dbname retval PGSSLMODE localuser _dbc_asuser
localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
@@ -109,7 +135,7 @@
}
_dbc_dropuser(){
- local extra retval PGSSLMODE localuser
+ local extra retval PGSSLMODE localuser _dbc_asuser
localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
@@ -124,7 +150,7 @@
}
_dbc_pg_dump(){
- local extra retval PGSSLMODE localuser
+ local extra retval PGSSLMODE localuser _dbc_asuser
localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
@@ -142,7 +168,7 @@
## check that we can actually connect to the specified postgres server
##
_dbc_pgsql_check_connect(){
- local constat extra
+ local constat extra _dbc_asuser
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
constat="bad"
if ! _dbc_psql $extra template1 < /dev/null; then
@@ -157,16 +183,21 @@
## note this is done without passing any sensitive info on the cmdline
##
dbc_pgsql_exec_file(){
- local l_sqlfile
+ local l_sqlfile retval
l_sqlfile=$1
+ # do dbc_asuser check here XXX
+
if [ ! "$l_sqlfile" ]; then
dbc_error="no file supplied to execute"
dbc_log="no file supplied to execute"
return 1
fi
- _dbc_psql $extra $dbc_dbname < "$l_sqlfile"
+ #_dbc_psql $extra $dbc_dbname < "$l_sqlfile"
+ _dbc_psql $dbc_dbname < "$l_sqlfile"
+ retval=$?
+ return $retval
}
##
@@ -191,7 +222,7 @@
## check for the existance of a specified database
##
_dbc_pgsql_check_database(){
- local dbc_dbname
+ local dbc_dbname _dbc_asuser
dbc_dbname=$1
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
_dbc_psql $extra $dbc_dbname </dev/null 2>/dev/null
@@ -205,7 +236,7 @@
## not only does the user exist, but that it should be able to connect
##
dbc_pgsql_check_user(){
- local dbc_dbname l_retval
+ local dbc_dbname l_retval _dbc_asuser
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
extra="$extra" dbc_dbname=template1 _dbc_pgsql_exec_command "ALTER USER \"$dbc_dbuser\""
l_retval=$?