From 44148ba4a3a39136282c8f9251c17efa4e10b878 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Apr 2026 10:03:01 +0000 Subject: [PATCH] Fix password string handling without Go binaries using PGPASSWORD env var and psql variable interpolation Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/6baec41e-95d9-4966-8cf8-4b12727139fd Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com> --- Containers/nextcloud/start.sh | 2 +- Containers/postgresql/healthcheck.sh | 4 ++-- Containers/postgresql/init-user-db.sh | 5 +++-- Containers/postgresql/start.sh | 7 ++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Containers/nextcloud/start.sh b/Containers/nextcloud/start.sh index a5f38534..51d1f346 100644 --- a/Containers/nextcloud/start.sh +++ b/Containers/nextcloud/start.sh @@ -25,7 +25,7 @@ fi # Fix false database connection on old instances if [ -f "/var/www/html/config/config.php" ]; then sleep 2 - while ! sudo -E -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" -c "select now()"; do + while ! sudo -E -u www-data env PGPASSWORD="$POSTGRES_PASSWORD" psql -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()"; do echo "Waiting for the database to start..." sleep 5 done diff --git a/Containers/postgresql/healthcheck.sh b/Containers/postgresql/healthcheck.sh index 9f303a3a..7d40f4f0 100644 --- a/Containers/postgresql/healthcheck.sh +++ b/Containers/postgresql/healthcheck.sh @@ -2,6 +2,6 @@ test -f "/mnt/data/backup-is-running" && exit 0 -psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:11000/$POSTGRES_DB" -c "select now()" && exit 0 +PGPASSWORD="$POSTGRES_PASSWORD" psql -h 127.0.0.1 -p 11000 -U "oc_$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()" && exit 0 -psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:5432/$POSTGRES_DB" -c "select now()" || exit 1 +PGPASSWORD="$POSTGRES_PASSWORD" psql -h 127.0.0.1 -p 5432 -U "oc_$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()" || exit 1 diff --git a/Containers/postgresql/init-user-db.sh b/Containers/postgresql/init-user-db.sh index cfd3827a..b17ed7f1 100644 --- a/Containers/postgresql/init-user-db.sh +++ b/Containers/postgresql/init-user-db.sh @@ -3,8 +3,9 @@ set -ex touch "$DUMP_DIR/initialization.failed" -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB; +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" \ + -v "pg_new_password=$POSTGRES_PASSWORD" <<-EOSQL + CREATE USER "oc_$POSTGRES_USER" WITH PASSWORD :'pg_new_password' CREATEDB; ALTER DATABASE "$POSTGRES_DB" OWNER TO "oc_$POSTGRES_USER"; GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB" TO "oc_$POSTGRES_USER"; GRANT ALL PRIVILEGES ON SCHEMA public TO "oc_$POSTGRES_USER"; diff --git a/Containers/postgresql/start.sh b/Containers/postgresql/start.sh index 551bb10e..1cb33193 100644 --- a/Containers/postgresql/start.sh +++ b/Containers/postgresql/start.sh @@ -85,7 +85,7 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO exec docker-entrypoint.sh postgres & # Wait for creation - while ! psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1:11000/$POSTGRES_DB" -c "select now()"; do + while ! psql -h 127.0.0.1 -p 11000 -U "oc_$POSTGRES_USER" -d "$POSTGRES_DB" -c "select now()"; do echo "Waiting for the database to start." sleep 5 done @@ -107,8 +107,9 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO exit 1 elif [ "$DB_OWNER" != "oc_$POSTGRES_USER" ]; then DIFFERENT_DB_OWNER=1 - psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - CREATE USER "$DB_OWNER" WITH PASSWORD '$POSTGRES_PASSWORD' CREATEDB; + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" \ + -v "pg_new_password=$POSTGRES_PASSWORD" <<-EOSQL + CREATE USER "$DB_OWNER" WITH PASSWORD :'pg_new_password' CREATEDB; ALTER DATABASE "$POSTGRES_DB" OWNER TO "$DB_OWNER"; GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB" TO "$DB_OWNER"; GRANT ALL PRIVILEGES ON SCHEMA public TO "$DB_OWNER";