[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=$?