You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeDMR/docker-configs/entrypoint-proxy

100 lines
3.6 KiB

#!/bin/sh
###############################################################################
# Copyright (C) 2020 Simon Adlem, G7RZU <g7rzu@gb7fr.org.uk>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
###############################################################################
cd /opt/freedmr
HDSTACK_COUNT="${HDSTACK:-}"
HDSTACK_BRIDGE="${HDSTACK_BRIDGE:-0}"
HDSTACK_OUTPUT_DIR="${HDSTACK_OUTPUT_DIR:-/dev/shm/freedmr-hdstack}"
HDSTACK_BRIDGE_CONFIG="${HDSTACK_BRIDGE_CONFIG:-/opt/freedmr/freedmr-bridge.cfg}"
HDSTACK_BRIDGE_RULES="${HDSTACK_BRIDGE_RULES:-/opt/freedmr/rules.py}"
if [ -z "$HDSTACK_COUNT" ]
then
CPU_COUNT=$(getconf _NPROCESSORS_ONLN 2>/dev/null)
case "$CPU_COUNT" in
''|*[!0-9]*) CPU_COUNT=2 ;;
esac
HDSTACK_COUNT=$((CPU_COUNT - 1))
if [ "$HDSTACK_COUNT" -lt 1 ]
then
HDSTACK_COUNT=1
elif [ "$HDSTACK_COUNT" -gt 5 ]
then
HDSTACK_COUNT=5
fi
fi
HDSTACK_BASEID="${HDSTACK_BASEID:-}"
if [ -z "$HDSTACK_BASEID" ]
then
HDSTACK_BASEID=$(awk -F: '
/^\[GLOBAL\]/ { in_global = 1; next }
/^\[/ { in_global = 0 }
in_global && $1 ~ /^[[:space:]]*SERVER_ID[[:space:]]*$/ {
gsub(/[[:space:]]/, "", $2)
print $2
exit
}
' /opt/freedmr/freedmr.cfg)
fi
if [ "$BRIDGE_SERVER" == 1 ]
then
echo 'Starting in Bridge mode...'
exec python /opt/freedmr/bridge.py -c freedmr.cfg -r rules.py
elif [ "$HDSTACK_COUNT" = 1 ]
then
echo 'Starting in FreeDMR mode...'
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
#python /opt/freedmr/hotspot_proxy_v2.py &
#python /opt/freedmr/playback.py -c loro.cfg &
#exec python /opt/freedmr/bridge_master.py -c freedmr.cfg
elif [ "$HDSTACK_COUNT" -ge 2 ] 2>/dev/null && [ "$HDSTACK_COUNT" -le 5 ] 2>/dev/null
then
if [ -z "$HDSTACK_BASEID" ]
then
echo 'HDSTACK_BASEID is required when HDSTACK is 2..5' >&2
exit 2
fi
echo "Starting HDStack with $HDSTACK_COUNT workers (base server ID $HDSTACK_BASEID, bridge $HDSTACK_BRIDGE)..."
python /opt/freedmr/hdstack_runtime.py \
--main-config /opt/freedmr/freedmr.cfg \
--bridge-config "$HDSTACK_BRIDGE_CONFIG" \
--bridge-rules "$HDSTACK_BRIDGE_RULES" \
--output-dir "$HDSTACK_OUTPUT_DIR" \
--instances "$HDSTACK_COUNT" \
--base-id "$HDSTACK_BASEID" \
--loro-config /opt/freedmr/loro.cfg \
--bridge-enabled "$HDSTACK_BRIDGE"
status=$?
if [ "$status" -ne 0 ]
then
exit "$status"
fi
exec /usr/bin/supervisord -c "$HDSTACK_OUTPUT_DIR/supervisord.conf"
else
echo 'HDSTACK must be omitted or set to an integer from 1 to 5' >&2
exit 2
fi

Powered by TurnKey Linux.