#!/bin/sh # kit-connect postinst — run setup wizard, register with hub, set up config. # Idempotent — safe to run on upgrades too. PKG_DIR="/var/packages/kit-connect/target" LOG_TAG="kit-connect" log() { logger -t "$LOG_TAG" -p local0.warn "$*"; } mkdir -p /etc/kit-connect /etc/busrouter "$PKG_DIR/var" # ── Fix permissions (synopkg doesn't preserve +x from tar) ────── chmod +x "$PKG_DIR/bin/"*.sh 2>/dev/null || true chmod +x "$PKG_DIR/bin/tailscale" "$PKG_DIR/bin/tailscaled" 2>/dev/null || true chmod +x "$PKG_DIR/wizard.sh" 2>/dev/null || true chmod 600 "$PKG_DIR/bin/connect_id_ed25519" 2>/dev/null || true # ── Install bundled Tailscale binaries if system doesn't have them ── if [ ! -f /usr/local/bin/tailscale ] && [ -f "$PKG_DIR/bin/tailscale" ]; then log "Installing bundled Tailscale binaries..." cp "$PKG_DIR/bin/tailscale" /usr/local/bin/tailscale cp "$PKG_DIR/bin/tailscaled" /usr/local/bin/tailscaled chmod +x /usr/local/bin/tailscale /usr/local/bin/tailscaled log "Tailscale binaries installed to /usr/local/bin" fi # Run the Keylink IT setup wizard (non-interactive) # This detects device ID, writes config, registers with hub, starts Tailscale. if [ -x "$PKG_DIR/wizard.sh" ]; then log "Running Keylink IT fleet setup wizard..." "$PKG_DIR/wizard.sh" --auto 2>&1 | while read -r line; do log "$line"; done else # Fallback: minimal config DEVICE_ID=$(cat /etc/busrouter/device-id 2>/dev/null || hostname 2>/dev/null || echo "unknown") echo "$DEVICE_ID" > /etc/busrouter/device-id CONF="/etc/kit-connect/connect.conf" if [ ! -f "$CONF" ]; then cp "$PKG_DIR/conf/connect.conf" "$CONF" 2>/dev/null || touch "$CONF" fi sed -i "s/^DEVICE_ID=.*/DEVICE_ID=${DEVICE_ID}/" "$CONF" 2>/dev/null sed -i "s/^TAILSCALE_HOSTNAME=.*/TAILSCALE_HOSTNAME=${DEVICE_ID}/" "$CONF" 2>/dev/null # Try hub registration curl -s --connect-timeout 10 "http://162.243.83.36:8080/api/register/${DEVICE_ID}" 2>/dev/null || true fi log "postinst complete — device_id=$(cat /etc/busrouter/device-id 2>/dev/null || echo unknown)" exit 0