summaryrefslogtreecommitdiff
path: root/run/run.sh
blob: 4ac4d05760176643d2cea9dd3712878c55fa7a29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash

set -eo pipefail

# set default environment variables
AUTH_SECTION="${AUTH_SECTION:-false}"
AUTH_SERVER="${AUTH_SERVER:-http://localhost:9001}"
CORE_SERVER="${CORE_SERVER:-http://localhost:8080}"
OUTPUT_PATH="${OUTPUT_PATH:-/etc/sota.toml}"
REGISTRY_SERVER="${REGISTRY_SERVER:-http://localhost:8083}"
TEMPLATE_PATH="${TEMPLATE_PATH:-/etc/sota.toml.template}"

# generate or use existing device vin
RAND=$(< /dev/urandom tr -dc A-HJ-NPR-Z0-9 | head -c 13 || [[ $? -eq 141 ]])
export DEVICE_VIN=${DEVICE_VIN:-"TEST${RAND}"}

# create or use existing device uuid
if [[ -z "${DEVICE_UUID}" ]]; then
    DEVICE_UUID=$(http post "${REGISTRY_SERVER}/api/v1/devices" \
                       deviceName="${DEVICE_VIN}" \
                       deviceId="${DEVICE_VIN}" \
                       deviceType=Vehicle \
                       --check-status --print=b \
                      | tr -d '"')
fi
export DEVICE_UUID

# create or use existing device credentials
if [[ -z "${AUTH_CLIENT_ID}" ]]; then
    CREDENTIALS=$(http post "${AUTH_SERVER}/clients" \
                       client_name="${DEVICE_VIN}" \
                       grant_types:='["client_credentials"]' \
                       --check-status --print=b)
    AUTH_CLIENT_ID=$(echo "${CREDENTIALS}" | jq -r .client_id)
    AUTH_CLIENT_SECRET=$(echo "${CREDENTIALS}" | jq -r .client_secret)
fi
export AUTH_CLIENT_ID
export AUTH_CLIENT_SECRET

# generate sota.toml config
echo "---START CONFIG---"
envsubst < "${TEMPLATE_PATH}" | tee "${OUTPUT_PATH}"
echo "---END CONFIG---"

# optionally remove auth section and/or quit
[[ "${AUTH_SECTION}" = false ]] && sed -i '/\[core\]/,$!d' "${OUTPUT_PATH}"
[[ "${CONFIG_ONLY}" = true ]] && exit 0

# set up dbus
eval "$(dbus-launch)"
export DBUS_SESSION_BUS_ADDRESS
export DBUS_SESSION_BUS_PID

# start client
RUST_LOG="${RUST_LOG:-debug}" sota_client --config="${OUTPUT_PATH}"