#!/bin/bash
# 重启 ngrok 隧道。云端发现「设备还在上报、ngrok 却断了 30 分钟以上」时自动下发（RESTART_NGROK 命令），
# ERP「设备命令」里也能手动下发。输出整段回传云端，ERP 里能看到 ngrok 日志末尾。
# 退出码：ngrok 进程起来了 = 0，否则 1。
sudoS() { echo "Innerken322." | sudo -S -p '' "$@"; }
SVC=aaden-ngrok-v3
NGROK=/etc/aaden/ngrok
CONF=/etc/aaden/ngrok-config.yml
LOG=/etc/aaden/ngrok.log

if [ -d /run/systemd/system ] && [ -f "/etc/systemd/system/$SVC.service" ]; then
  echo "重启 systemd 服务 $SVC"
  sudoS systemctl restart "$SVC"
elif [ -x "$NGROK" ] && [ -f "$CONF" ]; then
  # 没有 systemd 的老 WSL：直接重启进程
  echo "没有 systemd 服务，直接重启 ngrok 进程"
  sudoS pkill -f "$NGROK " 2>/dev/null
  sleep 2
  sudoS sh -c "nohup $NGROK -config=$CONF start-all --log=$LOG >/dev/null 2>&1 &"
else
  echo "ngrok 没装好（缺 $NGROK 或 $CONF），跑完整修复 fix-ngrok"
  aaden-cli fix-ngrok
fi

report() {
  echo "--- 状态"
  [ -d /run/systemd/system ] && echo "systemd: $(systemctl is-active "$SVC" 2>&1)"
  echo "--- ngrok 配置"
  sudoS grep -E "server_addr|remote_port|hostname|subdomain" "$CONF" 2>/dev/null
  echo "--- $LOG 最后 15 行"
  sudoS tail -n 15 "$LOG" 2>/dev/null
  if [ -d /run/systemd/system ]; then
    echo "--- 服务日志"
    sudoS journalctl -u "$SVC" -n 15 --no-pager -q 2>/dev/null
  fi
  echo "--- ngrok 文件"
  echo "本机 md5 $(md5sum "$NGROK" 2>/dev/null | cut -d' ' -f1) / S3 $(curl -sfI https://aaden-storage.s3.eu-central-1.amazonaws.com/ngrok --max-time 15 | awk 'tolower($1)=="etag:"{print $2}' | tr -d '"\r')"
  echo "--- 进程"
  pgrep -a -f "$NGROK "
}

sleep 20
report && exit 0

# 重启了还起不来（10-08 的 1233：systemd 一直 activating、进程不在）多半是二进制或服务文件坏了：
# 跑一次完整修复（重新下载 ngrok、重写服务），再看一次
echo
echo "ngrok 进程不在，跑完整修复 fix-ngrok"
aaden-cli fix-ngrok
sleep 20
report && exit 0
echo "ngrok 进程仍然不在"
exit 1
