mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-03-29 10:10:06 +00:00
88 lines
2.2 KiB
Bash
Executable File
88 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -e
|
|
|
|
confd='/etc/opt/simplex'
|
|
cert_path='/certificates'
|
|
|
|
# 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
|
|
;;
|
|
|
|
# Determine domain or IPv6
|
|
*[a-zA-Z]*)
|
|
case "${ADDR}" in
|
|
# IPv6
|
|
*:*)
|
|
set -- --ip "${ADDR}"
|
|
;;
|
|
|
|
# Domain
|
|
*)
|
|
case "${ADDR}" in
|
|
# It's in domain format
|
|
*.*)
|
|
# Determine the base domain
|
|
ADDR_BASE="$(printf '%s' "$ADDR" | awk -F. '{print $(NF-1)"."$NF}')"
|
|
set -- --fqdn "${ADDR}" --own-domains="${ADDR_BASE}"
|
|
;;
|
|
|
|
# Incorrect domain
|
|
*)
|
|
printf 'Incorrect $ADDR environment variable. Please specify the correct one in format: smp1.example.org / example.org \n'
|
|
exit 1
|
|
;;
|
|
esac
|
|
esac
|
|
;;
|
|
|
|
# Assume everything else is IPv4
|
|
*)
|
|
set -- --ip "${ADDR}" ;;
|
|
esac
|
|
|
|
# Optionally, set password
|
|
case "${PASS}" in
|
|
# Empty value = no password
|
|
'')
|
|
set -- "$@" --no-password
|
|
;;
|
|
|
|
# Assume that everything else is a password
|
|
*)
|
|
set -- "$@" --password "${PASS}"
|
|
;;
|
|
esac
|
|
|
|
# And init certificates and configs
|
|
smp-server init --yes \
|
|
--store-log \
|
|
--daily-stats \
|
|
--source-code \
|
|
"$@" > /dev/null 2>&1
|
|
|
|
# Fix path to certificates
|
|
if [ -n "${WEB_MANUAL}" ]; then
|
|
sed -i -e 's|^[^#]*https: |#&|' \
|
|
-e 's|^[^#]*cert: |#&|' \
|
|
-e 's|^[^#]*key: |#&|' \
|
|
-e 's|^port:.*|port: 5223|' \
|
|
"${confd}/smp-server.ini"
|
|
else
|
|
sed -i -e "s|cert: /etc/opt/simplex/web.crt|cert: $cert_path/$ADDR.crt|" \
|
|
-e "s|key: /etc/opt/simplex/web.key|key: $cert_path/$ADDR.key|" \
|
|
"${confd}/smp-server.ini"
|
|
fi
|
|
fi
|
|
|
|
# Backup store log just in case
|
|
DOCKER=true /usr/local/bin/simplex-servers-stopscript smp-server
|
|
|
|
# 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
|