#!/bin/sh /etc/rc.common

# procd 服务脚本 for Larktun
# 安装路径：/etc/init.d/larktun
# 用法：/etc/init.d/larktun {start|stop|restart|enable|disable}

USE_PROCD=1
START=80

# 关闭向官方日志服务器上报
export TS_NO_LOGS_NO_SUPPORT=true

start_service() {
  local state_file
  local port
  local fw_mode
  local std_err std_out

  config_load larktun
  config_get_bool std_out  "settings" log_stdout 1
  config_get_bool std_err  "settings" log_stderr 1
  config_get port       "settings" port 41641
  config_get state_file "settings" state_file /etc/larktun/larktund.state
  config_get fw_mode    "settings" fw_mode nftables

  /usr/sbin/larktund --cleanup

  procd_open_instance
  procd_set_param command /usr/sbin/larktund

  # v1.48.1 起需用该环境变量选择 iptables / nftables，默认 nftables。
  procd_set_param env TS_DEBUG_FIREWALL_MODE="$fw_mode"
  procd_append_param env TS_NO_LOGS_NO_SUPPORT=true

  # 内存紧张设备可在此追加 GOGC=10 以更激进回收内存（用 CPU 换内存）：
  # procd_append_param env GOGC=10

  procd_append_param command --port "$port"
  procd_append_param command --state "$state_file"

  procd_set_param respawn
  procd_set_param stdout "$std_out"
  procd_set_param stderr "$std_err"
  procd_close_instance
}

stop_service() {
  /usr/sbin/larktund --cleanup
}
