41 lines
1.6 KiB
Bash
Executable File
41 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
CONFIG=/data/options.json
|
|
|
|
read_option() {
|
|
local key="$1" default_value="${2-}"
|
|
if [[ -f "$CONFIG" ]]; then
|
|
jq -r --arg key "$key" --arg default "$default_value" \
|
|
'if has($key) and .[$key] != null then .[$key] else $default end' "$CONFIG"
|
|
else
|
|
printf '%s\n' "$default_value"
|
|
fi
|
|
}
|
|
|
|
GREE_INTERFACE="$(read_option gree_interface '')"
|
|
DISCOVERY_BROADCAST="$(read_option discovery_broadcast '255.255.255.255:7000')"
|
|
SIMULATE="$(read_option simulate 'false')"
|
|
AUTO_SEED="$(read_option auto_seed 'false')"
|
|
POLL_INTERVAL="$(read_option poll_interval_seconds '15')"
|
|
ZONE_INTERVAL="$(read_option zone_interval_seconds '5')"
|
|
DISCOVERY_TIMEOUT="$(read_option discovery_timeout_ms '3000')"
|
|
APP_TOKEN="$(read_option app_token '')"
|
|
LOG_LEVEL="$(read_option log_level 'info')"
|
|
|
|
export GREE_CONTROLLER_BIND="0.0.0.0:8787"
|
|
export GREE_CONTROLLER_DATABASE="/data/gree-controller.db"
|
|
export GREE_CONTROLLER_GREE_INTERFACE="$GREE_INTERFACE"
|
|
export GREE_CONTROLLER_DISCOVERY_BROADCAST="$DISCOVERY_BROADCAST"
|
|
export GREE_CONTROLLER_SIMULATE="$SIMULATE"
|
|
export GREE_CONTROLLER_AUTO_SEED="$AUTO_SEED"
|
|
export GREE_CONTROLLER_POLL_INTERVAL_SECONDS="$POLL_INTERVAL"
|
|
export GREE_CONTROLLER_ZONE_INTERVAL_SECONDS="$ZONE_INTERVAL"
|
|
export GREE_CONTROLLER_DISCOVERY_TIMEOUT_MS="$DISCOVERY_TIMEOUT"
|
|
export GREE_CONTROLLER_APP_TOKEN="$APP_TOKEN"
|
|
export RUST_LOG="gree_controller=${LOG_LEVEL},tower_http=${LOG_LEVEL}"
|
|
|
|
printf 'GREE Controller: interface=%s discovery=%s database=%s\n' \
|
|
"${GREE_INTERFACE:-auto}" "$DISCOVERY_BROADCAST" "$GREE_CONTROLLER_DATABASE"
|
|
exec /usr/local/bin/gree-controller
|