81 lines
2.8 KiB
Markdown
81 lines
2.8 KiB
Markdown
|
# Octoleo Joomla Docker fix
|
||
|
|
||
|
We add some changes to the official Joomla Docker images, this document helps us remember what these changes are.
|
||
|
|
||
|
### Our own README
|
||
|
|
||
|
We have our own readme document, that replace the Joomla official readme, here in this repo its called [joomla-readme.md](https://git.vdm.dev/octoleo/octojdoc/src/joomla-readme.md)
|
||
|
|
||
|
### Changes to entrypoint.sh
|
||
|
|
||
|
We have added some code to the entrypoint, the updated version is here in this repo, and is called [joomla-entrypoint.sh](https://git.vdm.dev/octoleo/octojdoc/src/joomla-entrypoint.sh), the code is marked with `####### OCTOLEO ##` and also listed below.
|
||
|
|
||
|
The Extra Functions
|
||
|
```
|
||
|
validate_url() {
|
||
|
if [[ $1 =~ ^http(s)?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/.*)?$ ]]; then
|
||
|
return 0
|
||
|
else
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
```
|
||
|
|
||
|
The Extra Install actions
|
||
|
```
|
||
|
# Install any extensions found in the extensions urls env
|
||
|
if [[ -n "${JOOMLA_EXTENSIONS_URLS}" && "${#JOOMLA_EXTENSIONS_URLS}" -gt 2 ]]; then
|
||
|
IFS=';' read -ra ADDR <<< "$JOOMLA_EXTENSIONS_URLS"
|
||
|
for extension_url in "${ADDR[@]}"; do
|
||
|
# Validate each URL
|
||
|
if validate_url "$extension_url"; then
|
||
|
# Try to install the Joomla extension from the URL
|
||
|
if php cli/joomla.php extension:install --url "${extension_url}"; then
|
||
|
echo >&2 "Successfully installed ${extension_url}"
|
||
|
else
|
||
|
echo >&2 "Failed to install ${extension_url}"
|
||
|
fi
|
||
|
else
|
||
|
echo >&2 "Invalid URL: ${extension_url}"
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
# Extract the hostname and port from JOOMLA_SMTP_HOST if it includes ':'
|
||
|
if [[ -n "${JOOMLA_SMTP_HOST}" && "${JOOMLA_SMTP_HOST}" == *:* ]]; then
|
||
|
IFS=':' read -r hostname port <<< "${JOOMLA_SMTP_HOST}"
|
||
|
JOOMLA_SMTP_HOST=$hostname
|
||
|
JOOMLA_SMTP_HOST_PORT=$port
|
||
|
fi
|
||
|
# Update configuration.php if JOOMLA_SMTP_HOST is set and longer than 2 characters
|
||
|
if [[ -n "${JOOMLA_SMTP_HOST}" && "${#JOOMLA_SMTP_HOST}" -gt 2 ]]; then
|
||
|
chmod +w configuration.php
|
||
|
sed -i "s/public \$mailer = 'mail';/public \$mailer = 'smtp';/g" configuration.php
|
||
|
sed -i "s/public \$smtphost = 'localhost';/public \$smtphost = '${JOOMLA_SMTP_HOST}';/g" configuration.php
|
||
|
fi
|
||
|
# Update the SMTP port in configuration.php if JOOMLA_SMTP_HOST_PORT is set
|
||
|
if [[ -n "${JOOMLA_SMTP_HOST_PORT}" ]]; then
|
||
|
sed -i "s/public \$smtpport = 25;/public \$smtpport = ${JOOMLA_SMTP_HOST_PORT};/g" configuration.php
|
||
|
fi
|
||
|
# fix the ownership
|
||
|
if [ "$uid" = '0' ] && [ "$(stat -c '%u:%g' configuration.php)" != "$user:$group" ]; then
|
||
|
# Set configuration to correct owner
|
||
|
if ! chown -R "$user:$group" .; then
|
||
|
echo >&2
|
||
|
echo >&2 "Error: Ownership of configuration.php failed to be corrected."
|
||
|
fi
|
||
|
# Set configuration to correct permissions
|
||
|
if ! chmod 444 configuration.php; then
|
||
|
echo >&2
|
||
|
echo >&2 "Error: Permissions of configuration.php failed to be corrected."
|
||
|
fi
|
||
|
fi
|
||
|
```
|
||
|
|
||
|
### License
|
||
|
|
||
|
```
|
||
|
Copyright (C) 2024 Llewellyn van der Merwe. All rights reserved.
|
||
|
Licensed under the GNU General Public License version 2 or later; see LICENSE.txt
|
||
|
```
|
||
|
|