mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-03-29 10:10:06 +00:00
* docker entrypoint: DRY store log backup
Don't Repeat Yourself
Set a variable for the full path to the source file.
Create the backup path by appending an extension from `date` output.
Also fixed quoting and switched to an `if` block.
Clean up block level variables.
* docker entrypoint: use ISO 8601 format
The previous format discards information about the local time zone.
* docker entrypoint: always use UTC
Now the format always ends in +00:00, and we can ignore that part again.
* docker entrypoint: provide the date format again
* docker entrypoint: remove time zone from the date format
* docker entrypoint: use an unambiguous date format
Present a leading zero before the month:
YYYY-0MM-DD
Both YYYY-MM-DD and YYYY-DD-MM are used by people and can be confusing in the beginning of the month.
* docker entrypoint: use appropriate quoting
Without avoiding field splitting a password containing a space changes the number of arguments being set.
* docker entrypoint: use explicit braces for custom variables
Make the intentions clear and don't assume the user knows the special cases for when variables won't be extended.
Example:
word=animal
words=mistake
echo "$words vs $word vs ${word}s"
* docker entrypoint-xftp-server: braces and quoting
* docker entrypoint-xftp-server: backup block
* docker entrypoints: explain date format in a comment
* switched from long to short option to date for POSIX
* docker entrypoint-smp-server: explain date format
* docker entrypoint-xftp-server: explain date format
* docker entrypoints: further explain format
I fixed the case to match the date format letters.
Also, use words to explain since I don't want everyone to need to read about date formats to understand.
* docker entrypoints: only quote letters
I was either going to quote the dashes too or stop quoting the colons.
Having less quotes was more readable.
* Revert "docker entrypoint: use an unambiguous date format"
This reverts commit ba2a93bad9.
* docker entrypoints: remove %F
* docker entrypoint-smp-server: remove %F
Used part of the explicit ISO 8601 format,
provided by the coreutils date invocation guide.
* docker entrypoint-xftp-server: remove %F
Used part of the explicit ISO 8601 format,
provided by the coreutils date invocation guide.
49 lines
1.3 KiB
Bash
Executable File
49 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
confd='/etc/opt/simplex'
|
|
logd='/var/opt/simplex/'
|
|
|
|
# Check if server has been initialized
|
|
if [ ! -f "${confd}/smp-server.ini" ]; then
|
|
# If not, determine ip or domain
|
|
case "${ADDR}" in
|
|
'') printf 'Please specify $ADDR environment variable.\n'; exit 1 ;;
|
|
*[a-zA-Z]*)
|
|
case "${ADDR}" in
|
|
*:*) set -- --ip "${ADDR}" ;;
|
|
*) set -- -n "${ADDR}" ;;
|
|
esac
|
|
;;
|
|
*) set -- --ip "${ADDR}" ;;
|
|
esac
|
|
|
|
# Optionally, set password
|
|
case "${PASS}" in
|
|
'') set -- "$@" --no-password ;;
|
|
*) set -- "$@" --password "${PASS}" ;;
|
|
esac
|
|
|
|
# And init certificates and configs
|
|
smp-server init -y -l "$@"
|
|
fi
|
|
|
|
# Backup store log just in case
|
|
#
|
|
# Uses the UTC (universal) time zone and this
|
|
# format: YYYY-mm-dd'T'HH:MM:SS
|
|
# year, month, day, letter T, hour, minute, second
|
|
#
|
|
# This is the ISO 8601 format without the time zone at the end.
|
|
#
|
|
_file="${logd}/smp-server-store.log"
|
|
if [ -f "${_file}" ]; then
|
|
_backup_extension="$(date -u '+%Y-%m-%dT%H:%M:%S')"
|
|
cp -v -p "${_file}" "${_file}.${_backup_extension:-date-failed}"
|
|
unset -v _backup_extension
|
|
fi
|
|
unset -v _file
|
|
|
|
# Finally, run smp-sever. Notice that "exec" here is important:
|
|
# smp-server replaces our helper script, so that it can catch INT signal
|
|
exec smp-server start +RTS -N -RTS
|
|
|