#!/bin/sh

# 仅在首次启动时执行（/etc/uci-defaults机制）

# 获取当前 OpenWrt/ImmortalWrt 的主版本号
get_openwrt_version() {
    local version=""
    if [ -f /etc/openwrt_release ]; then
        # 提取形如 25.12 或 23.05 的前两位数字版本
        version=$(grep "DISTRIB_RELEASE" /etc/openwrt_release | cut -d"'" -f2 | cut -d'.' -f1,2)
    fi
    echo "$version"
}

# 比较版本号是否大于或等于 25.12
# 返回 0 表示 >= 25.12，返回 1 表示较旧版本
is_version_25_12_or_newer() {
    local current_ver=$(get_openwrt_version)
    
    # 如果没获取到版本号，保守起见当做旧版本处理
    [ -z "$current_ver" ] && return 1

    # 使用 awk 进行浮点数版本比较
    awk -v cur="$current_ver" 'BEGIN { if (cur >= 25.12) exit 0; else exit 1 }'
}

# 修改 LAN 口 IP 地址
update_lan_ip(){
    local NEW_LAN_IP="$1"

    # 检查 network 配置是否存在
    if [ -f /etc/config/network ]; then

        # 检查 lan 接口是否存在
        if uci get network.lan >/dev/null 2>&1; then

            # 设置为静态 IP 协议
            uci set network.lan.proto='static'

            # 根据版本号执行不同的设置逻辑
            if is_version_25_12_or_newer; then
                # 25.12+ 版本：合并为 CIDR 格式，并清除可能残留的旧 netmask
                uci set network.lan.ipaddr="${NEW_LAN_IP}/24"
                uci del network.lan.netmask >/dev/null 2>&1
            else
                # 25.12 以下旧版本：拆分为 ipaddr 和 netmask
                uci set network.lan.ipaddr="${NEW_LAN_IP}"
                uci set network.lan.netmask="255.255.255.0"
            fi

            # 保存配置
            uci commit network
        fi
    fi

    # 重启网络服务
    if [ -x /etc/init.d/network ]; then
        /etc/init.d/network restart
    fi
}

# 启用 LAN IP 修改（根据具体需求解除注释）
# update_lan_ip "192.168.50.100"

exit 0