[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
 }