#!/bin/sh

########################### 【自定义配置区，只改这里】###########################
ET_IP="10.20.0.32/24"
LAN_REAL="10.10.10.0/24"
LAN_MAP="10.77.78.0/24"
LISTEN_PORT="11020"
RELAY_ADDR="nlbcloud.xin"
RELAY_PORT="53201"
NETWORK_SECRET="aa123456"
NETWORK_NAME="net01"

EASYTIER_BIN="/usr/bin/easytier-core"
LOG_FILE="/var/log/easytier.log"
TUN_IF="easytier0"
LAN_IF="br-lan"
##############################################################################

exec >>${LOG_FILE} 2>&1

sysctl -w net.ipv4.ip_forward=1

killall -9 easytier-core 2>/dev/null
sleep 2

start_easytier(){
    echo "========================"
    echo "ET_IP        = ${ET_IP}"
    echo "LAN_REAL     = ${LAN_REAL}"
    echo "LAN_MAP      = ${LAN_MAP}"
    echo "RELAY_ADDR   = ${RELAY_ADDR}"
    echo "RELAY_PORT   = ${RELAY_PORT}"
    echo "MAPPING_ARG  = ${LAN_REAL}->${LAN_MAP}"
    echo "========================"

    # 重点：ash下不要加外层双引号！直接 ${LAN_REAL}->${LAN_MAP}
    sh -c "
        ${EASYTIER_BIN} \
--network-name '${NETWORK_NAME}' \
--network-secret '${NETWORK_SECRET}' \
--ipv4 '${ET_IP}' \
-l tcp://0.0.0.0:${LISTEN_PORT} \
-l udp://0.0.0.0:${LISTEN_PORT} \
-p tcp://${RELAY_ADDR}:${RELAY_PORT} \
-p udp://${RELAY_ADDR}:${RELAY_PORT} \
-n ${LAN_REAL}->${LAN_MAP} \
--need-p2p \
--latency-first
    "
}

while true
do
    if ! pidof easytier-core >/dev/null ;then
        echo "[$(date)] easytier未运行，开始启动"
        start_easytier
        echo "[$(date)] easytier已退出，休眠10s重试"
    fi
    sleep 10
done