73 lines
2.3 KiB
Bash
73 lines
2.3 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
UCI_CONFIG="rmm-agent"
|
|
SHELL_CONFIG="/etc/rmm-agent.conf"
|
|
|
|
uci_get() {
|
|
uci -q get "$UCI_CONFIG.main.$1" 2>/dev/null || true
|
|
}
|
|
|
|
shell_get() {
|
|
key="$1"
|
|
[ -f "$SHELL_CONFIG" ] || return 0
|
|
sed -n "s/^${key}=\"\(.*\)\"$/\1/p" "$SHELL_CONFIG" | tail -n 1
|
|
}
|
|
|
|
escape_value() {
|
|
printf '%s' "$1" | tr -d '\r\n' | sed 's/[\\`"$]/\\&/g'
|
|
}
|
|
|
|
device_id="$(shell_get DEVICE_ID)"
|
|
device_token="$(shell_get DEVICE_TOKEN)"
|
|
if [ "$(uci_get migration_complete)" != "1" ]; then
|
|
legacy_url="$(shell_get SERVER_URL)"
|
|
if [ -n "$device_id" ] && [ -n "$device_token" ]; then
|
|
[ -z "$legacy_url" ] || uci -q set "$UCI_CONFIG.main.server_url=$legacy_url"
|
|
case "$legacy_url" in http://*) uci -q set "$UCI_CONFIG.main.allow_insecure_http=1" ;; esac
|
|
uci -q set "$UCI_CONFIG.main.enabled=1"
|
|
fi
|
|
uci -q set "$UCI_CONFIG.main.migration_complete=1"
|
|
uci -q commit "$UCI_CONFIG"
|
|
fi
|
|
|
|
server_url="$(uci_get server_url)"
|
|
allow_insecure="$(uci_get allow_insecure_http)"
|
|
case "$server_url" in
|
|
https://*) ;;
|
|
http://*) [ "$allow_insecure" = "1" ] || exit 1 ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
|
|
if [ "$(uci_get reset_identity)" = "1" ]; then
|
|
device_id=""
|
|
device_token=""
|
|
uci -q set "$UCI_CONFIG.main.reset_identity=0"
|
|
uci -q commit "$UCI_CONFIG"
|
|
fi
|
|
|
|
enrollment_token="$(uci_get enrollment_token)"
|
|
if [ -n "$device_id" ] && [ -n "$device_token" ]; then
|
|
enrollment_token=""
|
|
uci -q delete "$UCI_CONFIG.main.enrollment_token"
|
|
uci -q commit "$UCI_CONFIG"
|
|
fi
|
|
|
|
umask 077
|
|
temporary="${SHELL_CONFIG}.tmp"
|
|
{
|
|
printf 'SERVER_URL="%s"\n' "$(escape_value "$server_url")"
|
|
printf 'ENROLLMENT_TOKEN="%s"\n' "$(escape_value "$enrollment_token")"
|
|
printf 'INTERVAL_SECONDS="%s"\n' "$(escape_value "$(uci_get interval_seconds)")"
|
|
printf 'CHECK_TARGETS="%s"\n' "$(escape_value "$(uci_get check_targets)")"
|
|
printf 'DIRECT_DNS_ENABLED="%s"\n' "$(escape_value "$(uci_get direct_dns_enabled)")"
|
|
printf 'DNS_UPDATE_INTERVAL_SECONDS="%s"\n' "$(escape_value "$(uci_get dns_update_interval_seconds)")"
|
|
printf 'PUBLIC_IPV4_URL="%s"\n' "$(escape_value "$(uci_get public_ipv4_url)")"
|
|
printf 'PUBLIC_IPV6_URL="%s"\n' "$(escape_value "$(uci_get public_ipv6_url)")"
|
|
printf 'TUNNEL_IDENTITY_FILE="%s"\n' "$(escape_value "$(uci_get tunnel_identity_file)")"
|
|
printf 'DEVICE_ID="%s"\n' "$(escape_value "$device_id")"
|
|
printf 'DEVICE_TOKEN="%s"\n' "$(escape_value "$device_token")"
|
|
} > "$temporary"
|
|
chmod 0600 "$temporary"
|
|
mv "$temporary" "$SHELL_CONFIG"
|