[Dbconfig-common-devel] dbconfig-common/internal pgsql,1.6,1.7
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-serv28317
Modified Files:
pgsql
Log Message:
bugfix: su to $dbc_dbadmin if connecting to localhost via ident authentication,
instead of postgres. for all others, don't change userid (stay as
root).
Index: pgsql
===================================================================
RCS file: /cvsroot/dbconfig-common/dbconfig-common/internal/pgsql,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- pgsql 18 May 2005 19:49:38 -0000 1.6
+++ pgsql 7 Jun 2005 19:46:28 -0000 1.7
@@ -8,16 +8,32 @@
# get some common functions
. /usr/share/dbconfig-common/internal/common
+_dbc_psql_local_username(){
+ # determine proper local system user as whom to run commands.
+ # - ident/localhost: $dbc_dbadmin
+ # - all others: no change (root)
+ if [ "$dbc_authmethod_admin" = "ident" -a ! "$dbc_dbserver" ]; then
+ echo $dbc_dbadmin
+ else
+ echo root
+ fi
+}
+
_dbc_psql_cmd_setup(){
+ local localuser
+ localuser=`_dbc_psql_local_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
cat << EOF > ${_dbc_pgsql_tmpdir}/.pgpass
*:*:*:$dbc_dbadmin:$dbc_dbadmpass
EOF
- chown postgres $_dbc_pgsql_tmpdir
- chown postgres ${_dbc_pgsql_tmpdir}/.pgpass
- chmod 600 ${_dbc_pgsql_tmpdir}/.pgpass
+ if [ "$localuser" ]; then
+ chown "$dbc_dbadmin" $_dbc_pgsql_tmpdir
+ chown "$dbc_dbadmin" ${_dbc_pgsql_tmpdir}/.pgpass
+ fi
fi
}
@@ -29,20 +45,23 @@
}
_dbc_psql(){
- local extra retval PGSSLMODE
+ local extra retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
+ _dbc_pgsql_tmpdir=`mktemp -dt dbconfig-common.psql_home.XXXXXX`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
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
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' psql --set "ON_ERROR_STOP=1" -q $extra $*" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' psql --set "ON_ERROR_STOP=1" -q $extra $*" 2>&1` || retval=$?
_dbc_psql_cmd_cleanup
return $retval
}
_dbc_createdb(){
- local extra retval PGSSLMODE
+ local extra retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
@@ -50,13 +69,14 @@
if [ "$dbc_dbserver" ]; then extra="$extra -h '$dbc_dbserver'"; fi
if [ "$dbc_dbport" ]; then extra="$extra -p '$dbc_dbport'"; fi
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' createdb -q -O $dbc_dbuser $extra $*" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' createdb -q -O $dbc_dbuser $extra $*" 2>&1` || retval=$?
_dbc_psql_cmd_cleanup
return $retval
}
_dbc_dropdb(){
- local extra retval PGSSLMODE
+ local extra retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
@@ -64,13 +84,14 @@
if [ "$dbc_dbserver" ]; then extra="$extra -h '$dbc_dbserver'"; fi
if [ "$dbc_dbport" ]; then extra="$extra -p '$dbc_dbport'"; fi
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' dropdb -q $extra $*" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' dropdb -q $extra $*" 2>&1` || retval=$?
_dbc_psql_cmd_cleanup
return $retval
}
_dbc_createuser(){
- local extra dbc_dbname retval PGSSLMODE
+ local extra dbc_dbname retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
@@ -82,14 +103,15 @@
extra="$extra" dbc_dbname="template1" _dbc_pgsql_exec_command "CREATE USER \"$dbc_dbuser\" WITH PASSWORD '$dbc_dbpass'"
retval=$?
else
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' createuser -A -D -q $extra $dbc_dbuser" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' createuser -A -D -q $extra $dbc_dbuser" 2>&1` || retval=$?
fi
_dbc_psql_cmd_cleanup
return $retval
}
_dbc_dropuser(){
- local extra retval PGSSLMODE
+ local extra retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
@@ -97,13 +119,14 @@
if [ "$dbc_dbserver" ]; then extra="$extra -h '$dbc_dbserver'"; fi
if [ "$dbc_dbport" ]; then extra="$extra -p '$dbc_dbport'"; fi
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' dropuser -q $extra $*" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' dropuser -q $extra $*" 2>&1` || retval=$?
_dbc_psql_cmd_cleanup
return $retval
}
_dbc_pg_dump(){
- local extra retval PGSSLMODE
+ local extra retval PGSSLMODE localuser
+ localuser=`_dbc_psql_local_username`
PGSSLMODE="prefer"
retval=0
_dbc_psql_cmd_setup
@@ -111,7 +134,7 @@
if [ "$dbc_dbserver" ]; then extra="$extra -h '$dbc_dbserver'"; fi
if [ "$dbc_dbport" ]; then extra="$extra -p '$dbc_dbport'"; fi
if [ "$dbc_dbadmin" ]; then extra="$extra -U '$dbc_dbadmin'"; fi
- dbc_error=`su - postgres -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' pg_dump $extra $*" 2>&1` || retval=$?
+ dbc_error=`su - $dbc_dbadmin -c "env HOME='$_dbc_pgsql_tmpdir' PGSSLMODE='$PGSSLMODE' pg_dump $extra $*" 2>&1` || retval=$?
_dbc_psql_cmd_cleanup
return $retval
}