mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-30 07:18:09 +02:00
Why - Fix flaky first-run installs and make config edits idempotent. - Prepare LDAP support and allow optional inline CSP for UI. - Improve observability and guard against broken configuration.php. What - config/main.yml: enable features.ldap; add CSP flags (allow inline style/script elem); minor spacing. - tasks/: split into 01_install (wait for core, absolute CLI path), 02_debug (toggle $debug/$error_reporting safely), 03_patch (patch DB creds in configuration.php), 04_ldap (configure plugin via helper), 05_assert (optional php -l). - templates/Dockerfile.j2: conditionally install/compile php-ldap (fallback to docker-php-ext-install with libsasl2-dev). - templates/cli-ldap.php.j2: idempotently enable & configure Authentication - LDAP from env. - templates/docker-compose.yml.j2: build custom image when LDAP is enabled; mount cli-ldap.php; pull_policy: never. - templates/env.j2: add site/admin vars, MariaDB connector/env, full LDAP env. - vars/main.yml: default to MariaDB (mysqli), add JOOMLA_* vars incl. JOOMLA_CONFIG_FILE. Notes - LDAP path implemented but NOT yet tested end-to-end. - Ref: https://chatgpt.com/share/68b068a8-2aa4-800f-8cd1-56383561a9a8.
46 lines
2.0 KiB
YAML
46 lines
2.0 KiB
YAML
- name: "Toggle Joomla debug flags safely (configuration.php)"
|
|
command:
|
|
argv:
|
|
- docker
|
|
- exec
|
|
- -e
|
|
- "J_MODE_DEBUG={{ MODE_DEBUG | default(false) | bool | ternary('1','0') }}"
|
|
- -e
|
|
- "J_ERR_LEVEL={{ MODE_DEBUG | default(false) | bool | ternary('maximum','default') }}"
|
|
- "{{ JOOMLA_CONTAINER }}"
|
|
- php
|
|
- -r
|
|
- |
|
|
$f = '{{ JOOMLA_CONFIG_FILE }}';
|
|
if (!file_exists($f)) { fwrite(STDERR, "configuration.php missing\n"); exit(1); }
|
|
$c = file_get_contents($f);
|
|
$changed = 0;
|
|
|
|
$debug = getenv('J_MODE_DEBUG') === '1';
|
|
$err = getenv('J_ERR_LEVEL') ?: 'default';
|
|
|
|
// Clean up previously broken lines
|
|
$c = preg_replace('/^\s*public\s+1\s*=.*?;$/m', '', $c, -1, $nBad1); $changed += $nBad1;
|
|
$c = preg_replace('/^\s*public\s*=\s*maximum;$/m', '', $c, -1, $nBad2); $changed += $nBad2;
|
|
|
|
// Ensure: public $debug = true|false;
|
|
$lineDebug = "public \$debug = " . ($debug ? 'true' : 'false') . ";";
|
|
if (preg_match('/public\s*\$debug\s*=\s*[^;]*;/', $c)) {
|
|
$c = preg_replace('/public\s*\$debug\s*=\s*[^;]*;/', $lineDebug, $c, 1, $n); $changed += $n;
|
|
} else {
|
|
$c = preg_replace("/\n\}\s*$/", "\n\t".$lineDebug."\n}\n", $c, 1, $n); $changed += $n;
|
|
}
|
|
|
|
// Ensure: public $error_reporting = 'maximum'|'default';
|
|
$lineErr = "public \$error_reporting = '" . str_replace("'", "\\'", $err) . "';";
|
|
if (preg_match('/public\s*\$error_reporting\s*=\s*[^;]*;/', $c)) {
|
|
$c = preg_replace('/public\s*\$error_reporting\s*=\s*[^;]*;/', $lineErr, $c, 1, $n); $changed += $n;
|
|
} else {
|
|
$c = preg_replace("/\n\}\s*$/", "\n\t".$lineErr."\n}\n", $c, 1, $n); $changed += $n;
|
|
}
|
|
|
|
if ($changed) { file_put_contents($f, $c); echo "changed"; } else { echo "ok"; }
|
|
register: j_cfg_debug
|
|
changed_when: (j_cfg_debug.stdout | trim) == "changed"
|
|
failed_when: j_cfg_debug.rc != 0
|