#!/bin/bash
# 和 aaden-cli 其他地方一样用 -S 喂密码：aaden 没有免密 sudo、又没有终端时（被装机脚本或 set-device-id 调用）裸 sudo 会直接失败
sudoS() { echo "Innerken322." | sudo -S -p '' "$@"; }

sudoS npm config set prefix /usr/local
cd || exit
# 用 curl 下载并按 S3 ETag（单段上传 = MD5）校验，对了再装。以前用 axel：家目录里有旧的 ngrok.N 残留时
# 它把文件存成 ngrok.21 之类，后面 cp ngrok 找不到文件，坏掉的 /etc/aaden/ngrok 一直没换掉
# （10-08 的 1233：ngrok 启动即 SEGV，systemd 重启了 64 万次）。
sudoS rm -rf ngrok ngrok.st
rm -f ngrok.[0-9]* 2>/dev/null
NGROK_URL="https://aaden-storage.s3.eu-central-1.amazonaws.com/ngrok"
NGROK_TMP=$(mktemp)
curl -fsSL "$NGROK_URL" -o "$NGROK_TMP" --max-time 300
NGROK_WANT=$(curl -sfI "$NGROK_URL" --max-time 30 | awk 'tolower($1)=="etag:"{print $2}' | tr -d '"\r')
NGROK_GOT=$(md5sum "$NGROK_TMP" | cut -d' ' -f1)
if [ -s "$NGROK_TMP" ] && { [ -z "$NGROK_WANT" ] || [ "$NGROK_GOT" = "$NGROK_WANT" ]; }; then
  sudoS install -m 755 "$NGROK_TMP" /etc/aaden/ngrok
  echo "ngrok 已重新安装（md5 $NGROK_GOT）"
else
  echo "ngrok 下载校验失败（下载 $NGROK_GOT / 期望 $NGROK_WANT），保留原文件"
fi
rm -f "$NGROK_TMP"

DeviceId=$(cat /var/www/html/Resource/config/config.ini | grep -e DeviceId | cut -d = -f 2 | grep '[1-9]*' | sed 's/"//g')
aaden-cli update-ngrok-config $DeviceId

ServiceFileName=/etc/systemd/system/aaden-ngrok-v3.service

sudoS touch $ServiceFileName
sudoS chmod 777 $ServiceFileName
echo -e "
[Unit]
Description=Ngrok Service v3 For Aaden

[Service]
Type=simple
Restart=always
RestartSec=15
User=root

ExecStart=/etc/aaden/ngrok -config=/etc/aaden/ngrok-config.yml start-all --log=/etc/aaden/ngrok.log

[Install]
WantedBy=multi-user.target
" >$ServiceFileName
sudoS rm /etc/systemd/system/aaden-ngrok.service
sudoS rm /etc/systemd/system/aaden-ngrok-2.service

sudoS systemctl daemon-reload
sudoS systemctl start aaden-ngrok-v3.service
sudoS systemctl enable aaden-ngrok-v3.service
sudoS systemctl stop aaden-ngrok.service
sudoS systemctl stop aaden-ngrok-2.service
sudoS systemctl disable aaden-ngrok.service
sudoS systemctl disable aaden-ngrok-2.service

sudoS service aaden-ngrok-v3 restart



ServiceFileName=/etc/avahi/services/aaden.service
sudoS touch $ServiceFileName
sudoS chmod 777 $ServiceFileName
echo -e "
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h AadenOS CORE</name>
<service>
<type>_aadencore._tcp</type>
<port>80</port>
</service>
</service-group>
" >$ServiceFileName

sudoS service avahi-daemon restart

echo "ngrok 修复脚本执行完毕。请直接检查ngrok是否正常开启。如果开启，请无视这里的任何报错。"


