From 7ce8d165c0d5495167a1ff6e1d1d9446d756b017 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Sun, 25 Aug 2024 15:44:23 +0200 Subject: [PATCH 01/10] URL encode variables that go into a MySQL credentials URI See for reference: - https://dev.mysql.com/doc/refman/8.0/en/connecting-using-uri-or-key-value-pairs.html#connecting-using-uri - https://symfony.com/doc/current/doctrine.html but note that we must use `rawurlencode` instead of `urlencode` which differ in how they encode a space (as tested). Fixes: #2651 Closes: #2502 as this is likely fixed but I couldn't reproduce it --- webapp/config/load_db_secrets.php | 6 +++++- webapp/config/packages/doctrine.yaml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/webapp/config/load_db_secrets.php b/webapp/config/load_db_secrets.php index ea4ca11b83..c3a8b3dfb5 100644 --- a/webapp/config/load_db_secrets.php +++ b/webapp/config/load_db_secrets.php @@ -36,7 +36,11 @@ function get_db_url(): string break; } - return sprintf('mysql://%s:%s@%s:%d/%s?serverVersion=5.7.0', $user, $pass, $host, $port ?? 3306, $db); + return sprintf( + 'mysql://%s:%s@%s:%d/%s?serverVersion=5.7.0', + rawurlencode($user), rawurlencode($pass), rawurlencode($host), + $port ?? 3306, rawurlencode($db) + ); } function get_app_secret(): string diff --git a/webapp/config/packages/doctrine.yaml b/webapp/config/packages/doctrine.yaml index 89bf0223b3..b919a7bd43 100644 --- a/webapp/config/packages/doctrine.yaml +++ b/webapp/config/packages/doctrine.yaml @@ -7,7 +7,7 @@ doctrine: charset: utf8mb4 collate: utf8mb4_unicode_ci - url: '%env(resolve:DATABASE_URL)%' + url: '%env(DATABASE_URL)%' profiling_collect_backtrace: '%kernel.debug%' types: tinyint: App\Doctrine\DBAL\Types\TinyIntType From 49357f1089a7f07cef5a770079696aff755289f2 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Fri, 22 Nov 2024 18:12:28 +0100 Subject: [PATCH 02/10] Fixes for supporting passwords with weird characters Use URL encoding in DATABASE_URL and return mysql_options as an array (via ugly global variable), so each element in it can be separately added to the command line using `@` for expansion. Because of changing the script to bash, also reverts some of the changes in 483200a7feb22f28b64c9fda72c. --- sql/dj_setup_database.in | 46 ++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/sql/dj_setup_database.in b/sql/dj_setup_database.in index fc803939c3..5c4ff1f183 100755 --- a/sql/dj_setup_database.in +++ b/sql/dj_setup_database.in @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # @configure_input@ # This script allows one to perform DOMjudge database setup actions. @@ -52,30 +52,47 @@ not have to pass any of the options above. EOF } +urlencode() +{ + php -r "echo rawurlencode('$1');" +} + +# This is global variable to be able to return the output from +# mysql_options() below as an array, which is not possible otherwise. +declare -a _mysql_options + mysql_options() { + local user pass + _mysql_options=() + # shellcheck disable=SC2153 if [ -n "$DBUSER" ]; then - _user="-u $DBUSER" - else - _user="${DBA_USER:+-u ${DBA_USER}}" + _mysql_options+=('-u' "$DBUSER") + elif [ -n "$DBA_USER" ]; then + _mysql_options+=('-u' "$DBA_USER") fi # shellcheck disable=SC2153 if [ -n "$PASSWD" ]; then - _pass="-p$PASSWD" - else - [ -n "$PROMPT_PASSWD" ] && _pass="-p" - [ -n "$DBA_PASSWD" ] && _pass="-p$DBA_PASSWD" + _mysql_options+=("-p$PASSWD") + elif [ -n "$DBA_PASSWD" ]; then + _mysql_options+=("-p$DBA_PASSWD") + elif [ -n "$PROMPT_PASSWD" ]; then + _mysql_options+=('-p') fi - [ -z "$USE_SOCKET" ] && port="-P$DBPORT" - echo $_user ${_pass:+"$_pass"} -h "$DBHOST" ${port:+"$port"} + _mysql_options+=('-h' "$DBHOST") + + if [ -z "$USE_SOCKET" ]; then + _mysql_options+=("-P$DBPORT") + fi } # Wrapper around mysql command to allow setting options, user, etc. mysql() { - command mysql $(mysql_options) --silent --skip-column-names "$@" + mysql_options + command mysql "${_mysql_options[@]}" --silent --skip-column-names "$@" } # Quick shell hack to get a key from an INI file. @@ -126,10 +143,13 @@ symfony_console() fi if [ -n "$DBA_USER" ]; then + user=$(urlencode "${DBA_USER}") + host=$(urlencode "${domjudge_DBHOST}") + db=$(urlencode "${domjudge_DBNAME}") if [ -n "$DBA_PASSWD" ]; then - DATABASE_URL=mysql://${DBA_USER}:${DBA_PASSWD}@${domjudge_DBHOST}:${domjudge_DBPORT}/${domjudge_DBNAME} + DATABASE_URL="mysql://$user:$(urlencode "${DBA_PASSWD}")@$host:${domjudge_DBPORT}/$db" else - DATABASE_URL=mysql://${DBA_USER}@${domjudge_DBHOST}:${domjudge_DBPORT}/${domjudge_DBNAME} + DATABASE_URL="mysql://$user@$host:${domjudge_DBPORT}/$db" fi fi fi From f832b11a673f8e5442fe588bc1ed315a90e0db7f Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Mon, 25 Nov 2024 11:22:44 +0100 Subject: [PATCH 03/10] Set a more grep-able mysql root password in CI jobs, drop domjudge user The domjudge mysql user should be created by our setup scripts, so that we test these and need to set the password only in one place. Also don't explicitly pass root user/password to dj_setup_database script. It will infer it from `~/.my.cnf`. Rename mysql_root to mysql_log helper to clarify behaviour. --- .github/jobs/baseinstall.sh | 54 +++++++++++++------------- .github/jobs/ci_settings.sh | 9 +---- .github/workflows/database-upgrade.yml | 8 ++-- .github/workflows/integration.yml | 6 +-- .github/workflows/webstandard.yml | 4 +- 5 files changed, 34 insertions(+), 47 deletions(-) mode change 100644 => 100755 .github/jobs/ci_settings.sh diff --git a/.github/jobs/baseinstall.sh b/.github/jobs/baseinstall.sh index ce7e90e613..46b99b3d24 100755 --- a/.github/jobs/baseinstall.sh +++ b/.github/jobs/baseinstall.sh @@ -11,7 +11,7 @@ export APP_ENV="${4:-prod}" # In the test environment, we need to use a different database [ "$APP_ENV" = "prod" ] && DATABASE_NAME=domjudge || DATABASE_NAME=domjudge_test -MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root} +MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-mysql_root_password} set -euxo pipefail @@ -67,31 +67,29 @@ password=${MYSQL_ROOT_PASSWORD} EOF cat ~/.my.cnf -mysql_root "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" -mysql_root "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';" -mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';" -mysql_root "FLUSH PRIVILEGES;" +mysql_log "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" +mysql_log "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';" +mysql_log "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';" +mysql_log "FLUSH PRIVILEGES;" +echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret # Show some MySQL debugging -mysql_root "show databases" -mysql_root "SELECT CURRENT_USER();" -mysql_root "SELECT USER();" -mysql_root "SELECT user,host FROM mysql.user" -mysql_root "SET GLOBAL max_allowed_packet=1073741824" -mysql_root "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'" -mysql_root "SHOW VARIABLES LIKE '%_timeout'" -echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret -mysql_user "SELECT CURRENT_USER();" -mysql_user "SELECT USER();" +mysql_log "show databases" +mysql_log "SELECT CURRENT_USER();" +mysql_log "SELECT USER();" +mysql_log "SELECT user,host FROM mysql.user" +mysql_log "SET GLOBAL max_allowed_packet=1073741824" +mysql_log "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'" +mysql_log "SHOW VARIABLES LIKE '%_timeout'" section_end if [ "${db}" = "install" ]; then section_start "Install DOMjudge database" - /opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} bare-install + /opt/domjudge/domserver/bin/dj_setup_database bare-install section_end elif [ "${db}" = "upgrade" ]; then section_start "Upgrade DOMjudge database" - /opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} upgrade + /opt/domjudge/domserver/bin/dj_setup_database upgrade section_end fi @@ -131,31 +129,31 @@ if [ "${db}" = "install" ]; then section_start "Install the example data" if [ "$version" = "unit" ]; then # Make sure admin has no team associated so we will not insert submissions during unit tests. - mysql_root "UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME + mysql_log "UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME fi - /opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} install-examples | tee -a "$ARTIFACTS/mysql.txt" + /opt/domjudge/domserver/bin/dj_setup_database install-examples | tee -a "$ARTIFACTS/mysql.txt" section_end fi section_start "Setup user" # We're using the admin user in all possible roles -mysql_root "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME +mysql_log "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME if [ "$version" = "team" ]; then # Add team to admin user - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME - mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME + mysql_log "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME elif [ "$version" = "jury" ]; then # Add jury to admin user - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME elif [ "$version" = "balloon" ]; then # Add balloon to admin user - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME elif [ "$version" = "admin" ]; then # Add admin to admin user - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME elif [ "$version" = "all" ] || [ "$version" = "unit" ]; then - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME - mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME - mysql_root "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME + mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME + mysql_log "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME fi section_end diff --git a/.github/jobs/ci_settings.sh b/.github/jobs/ci_settings.sh old mode 100644 new mode 100755 index 391996752b..b807178e67 --- a/.github/jobs/ci_settings.sh +++ b/.github/jobs/ci_settings.sh @@ -24,14 +24,9 @@ section_end_internal () { trace_on } -mysql_root () { +mysql_log () { # shellcheck disable=SC2086 - echo "$1" | mysql -uroot -proot ${2:-} | tee -a "$ARTIFACTS"/mysql.txt -} - -mysql_user () { - # shellcheck disable=SC2086 - echo "$1" | mysql -udomjudge -pdomjudge ${2:-} | tee -a "$ARTIFACTS"/mysql.txt + echo "$1" | mysql ${2:-} | tee -a "$ARTIFACTS"/mysql.txt } show_phpinfo() { diff --git a/.github/workflows/database-upgrade.yml b/.github/workflows/database-upgrade.yml index 47b6a14ed1..c0015ced2c 100644 --- a/.github/workflows/database-upgrade.yml +++ b/.github/workflows/database-upgrade.yml @@ -18,19 +18,17 @@ jobs: ports: - 3306:3306 env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge + MYSQL_ROOT_PASSWORD: mysql_root_password options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v4 - name: Import Database - run: mysql -hsqlserver -uroot -proot < .github/jobs/data/dj733.sql + run: mysql -hsqlserver -uroot -pmysql_root_password < .github/jobs/data/dj733.sql - name: Upgrade DOMjudge run: .github/jobs/baseinstall.sh default upgrade - name: Setting initial Admin Password run: echo "pass" > /opt/domjudge/domserver/etc/initial_admin_password.secret - name: Check for Errors in the Upgrade - run: mysql -hsqlserver -uroot -proot -e "SHOW TABLES FROM domjudge;" + run: mysql -hsqlserver -uroot -pmysql_root_password -e "SHOW TABLES FROM domjudge;" - name: Check for Errors in DOMjudge Webinterface run: .github/jobs/webstandard.sh none admin diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index e6921fa834..39b3a09914 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -19,9 +19,7 @@ jobs: ports: - 3306:3306 env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge + MYSQL_ROOT_PASSWORD: mysql_root_password options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v4 @@ -81,7 +79,7 @@ jobs: done - name: dump the db if: ${{ !cancelled() }} - run: mysqldump -uroot -proot --quick --max_allowed_packet=1024M domjudge > /tmp/db.sql + run: mysqldump -uroot -pmysql_root_password --quick --max_allowed_packet=1024M domjudge > /tmp/db.sql - name: Upload database dump for debugging if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 diff --git a/.github/workflows/webstandard.yml b/.github/workflows/webstandard.yml index 23e0760cab..ca46ac7658 100644 --- a/.github/workflows/webstandard.yml +++ b/.github/workflows/webstandard.yml @@ -17,9 +17,7 @@ jobs: ports: - 3306:3306 env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge + MYSQL_ROOT_PASSWORD: mysql_root_password options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 strategy: matrix: From 32e2ec56c20c9eafe350b5e3a3488bf08f027a77 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Sun, 25 Aug 2024 22:09:37 +0200 Subject: [PATCH 04/10] Test plenty of weird characters in CI job MySQL password --- .github/jobs/baseinstall.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/jobs/baseinstall.sh b/.github/jobs/baseinstall.sh index 46b99b3d24..b97512f9be 100755 --- a/.github/jobs/baseinstall.sh +++ b/.github/jobs/baseinstall.sh @@ -71,7 +71,7 @@ mysql_log "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SE mysql_log "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';" mysql_log "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';" mysql_log "FLUSH PRIVILEGES;" -echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret +echo 'unused:sqlserver:$DATABASE_NAME:domjudge:domjudge_db-pw+% #$*)@(!/;,.:3306' > /opt/domjudge/domserver/etc/dbpasswords.secret # Show some MySQL debugging mysql_log "show databases" @@ -89,6 +89,7 @@ if [ "${db}" = "install" ]; then section_end elif [ "${db}" = "upgrade" ]; then section_start "Upgrade DOMjudge database" + /opt/domjudge/domserver/bin/dj_setup_database update-password /opt/domjudge/domserver/bin/dj_setup_database upgrade section_end fi From f216b06074803afe9e782fd77b65080f5807b47f Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Sat, 23 Nov 2024 10:45:26 +0100 Subject: [PATCH 05/10] Use our standard script to create database --- .github/jobs/baseinstall.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/jobs/baseinstall.sh b/.github/jobs/baseinstall.sh index b97512f9be..d0eec0fed2 100755 --- a/.github/jobs/baseinstall.sh +++ b/.github/jobs/baseinstall.sh @@ -67,12 +67,10 @@ password=${MYSQL_ROOT_PASSWORD} EOF cat ~/.my.cnf -mysql_log "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" -mysql_log "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';" -mysql_log "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';" -mysql_log "FLUSH PRIVILEGES;" echo 'unused:sqlserver:$DATABASE_NAME:domjudge:domjudge_db-pw+% #$*)@(!/;,.:3306' > /opt/domjudge/domserver/etc/dbpasswords.secret +/opt/domjudge/domserver/bin/dj_setup_database create-db-users + # Show some MySQL debugging mysql_log "show databases" mysql_log "SELECT CURRENT_USER();" From cc8f0e53a328b4e18e0f9dbea68be28ff5534dc0 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Sat, 5 Jul 2025 21:57:54 +0200 Subject: [PATCH 06/10] Call read_dbpasswords outside of update_passwords function This is consistent with all the other functions. --- sql/dj_setup_database.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/dj_setup_database.in b/sql/dj_setup_database.in index 5c4ff1f183..ce12e33588 100755 --- a/sql/dj_setup_database.in +++ b/sql/dj_setup_database.in @@ -256,7 +256,6 @@ remove_db_users() update_password() { - read_dbpasswords ( echo "ALTER USER '$domjudge_DBUSER'@'localhost' IDENTIFIED BY '$domjudge_PASSWD';" echo "FLUSH PRIVILEGES;" @@ -351,6 +350,7 @@ create-db-users) ;; update-password) + read_dbpasswords update_password ;; From 1882b264ccee47211894b70080a52d34bf58eee1 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Sun, 24 Nov 2024 16:04:45 +0100 Subject: [PATCH 07/10] DEBUG --- sql/dj_setup_database.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/dj_setup_database.in b/sql/dj_setup_database.in index ce12e33588..ee39ff5f9d 100755 --- a/sql/dj_setup_database.in +++ b/sql/dj_setup_database.in @@ -6,6 +6,8 @@ set -e +set -x + BINDIR="@domserver_bindir@" ETCDIR="@domserver_etcdir@" WEBAPPDIR="@domserver_webappdir@" From 428621d05dd3504fe4d1088f24072b0533314693 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Mon, 25 Nov 2024 12:43:25 +0100 Subject: [PATCH 08/10] Don't pass DBUSER/PASSWD to symfony_console, always construct URL --- sql/dj_setup_database.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sql/dj_setup_database.in b/sql/dj_setup_database.in index ee39ff5f9d..f905bef194 100755 --- a/sql/dj_setup_database.in +++ b/sql/dj_setup_database.in @@ -154,6 +154,8 @@ symfony_console() DATABASE_URL="mysql://$user@$host:${domjudge_DBPORT}/$db" fi fi + else + DATABASE_URL="mysql://$DBUSER:$(urlencode "${DB_PASSWD}")@$host:${domjudge_DBPORT}/$db" fi if [ -n "$DATABASE_URL" ]; then @@ -268,7 +270,7 @@ update_password() install_examples() { - DBUSER=$domjudge_DBUSER PASSWD=$domjudge_PASSWD symfony_console domjudge:load-example-data + symfony_console domjudge:load-example-data "$EXAMPLEPROBDIR"/generate-contest-yaml ( cd "$EXAMPLEPROBDIR" && yes y | "$BINDIR"/import-contest ) } @@ -342,8 +344,8 @@ install-loadtest) read_dbpasswords create_db_users symfony_console doctrine:migrations:migrate -n - DBUSER=$domjudge_DBUSER PASSWD=$domjudge_PASSWD symfony_console domjudge:load-default-data - DBUSER=$domjudge_DBUSER PASSWD=$domjudge_PASSWD symfony_console domjudge:load-gatling-data + symfony_console domjudge:load-default-data + symfony_console domjudge:load-gatling-data ;; create-db-users) @@ -360,7 +362,7 @@ bare-install|install) read_dbpasswords create_db_users symfony_console doctrine:migrations:migrate -n - DBUSER=$domjudge_DBUSER PASSWD=$domjudge_PASSWD symfony_console domjudge:load-default-data + symfony_console domjudge:load-default-data if [ "$1" = "install" ]; then install_examples verbose "SQL structure and default/example data installed." @@ -384,9 +386,8 @@ upgrade) fi symfony_console doctrine:migrations:migrate -n - DBUSER=$domjudge_DBUSER PASSWD=$domjudge_PASSWD symfony_console domjudge:load-default-data - symfony_console domjudge:refresh-cache + symfony_console domjudge:load-default-data verbose "DOMjudge database upgrade completed." ;; From b7e0ca27e457e036dd8f59e278f780b0a6c26737 Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Mon, 25 Nov 2024 20:45:31 +0100 Subject: [PATCH 09/10] DEBUG simple password --- .github/jobs/baseinstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/baseinstall.sh b/.github/jobs/baseinstall.sh index d0eec0fed2..b02866c11d 100755 --- a/.github/jobs/baseinstall.sh +++ b/.github/jobs/baseinstall.sh @@ -67,7 +67,7 @@ password=${MYSQL_ROOT_PASSWORD} EOF cat ~/.my.cnf -echo 'unused:sqlserver:$DATABASE_NAME:domjudge:domjudge_db-pw+% #$*)@(!/;,.:3306' > /opt/domjudge/domserver/etc/dbpasswords.secret +echo 'unused:sqlserver:$DATABASE_NAME:domjudge:djdb-pw:3306' > /opt/domjudge/domserver/etc/dbpasswords.secret /opt/domjudge/domserver/bin/dj_setup_database create-db-users From ba598f9fe6317917d0eaac5f69545632927d1f6d Mon Sep 17 00:00:00 2001 From: Jaap Eldering Date: Tue, 26 Nov 2024 23:27:38 +0100 Subject: [PATCH 10/10] Set a more grep-able admin password --- .github/jobs/baseinstall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/jobs/baseinstall.sh b/.github/jobs/baseinstall.sh index b02866c11d..32331313d3 100755 --- a/.github/jobs/baseinstall.sh +++ b/.github/jobs/baseinstall.sh @@ -29,8 +29,8 @@ cd .. section_end section_start "Set simple admin password" -echo "password" > ./etc/initial_admin_password.secret -echo "default login admin password password" > ~/.netrc +echo "admin_password" > ./etc/initial_admin_password.secret +echo "default login admin password admin_password" > ~/.netrc section_end section_start "Install domserver"