#!/bin/sh
#
# S99ssh - HiBy R3 Pro II: dropbear SSH 服务 + ADB 持久自启
#
# 设计要点：
#   * dropbear 为静态 musl 二进制（/usr/sbin/dropbear），仅 pubkey 认证
#     （编译时已去掉 password auth，无需 /etc/passwd 写密码）。
#   * /root 位于只读 squashfs，authorized_keys 放可写 UBIFS 卷：
#       /usr/data/ssh/.ssh/authorized_keys
#     并用 bind-mount 把 /usr/data/ssh 挂到 /root（/root 在固件中是空目录），
#     dropbear 按 passwd 的 pw_dir=/root 查找 ~/.ssh/authorized_keys。
#   * host key 首次开机用 dropbearkey 生成到 /usr/data/ssh/
#     （dropbear -R 的运行时生成路径是只读的 /etc/dropbear，不可用）。
#   * 日志：/usr/data/ssh.log（= /data/ssh.log）。
#   * 顺带删除 /usr/data/disableadb，使 ADB 在 USB 连接时持久自启
#     （etc/init.d/adb/S440adb 检查该文件存在则不起 adb）。
#
case "$1" in
  start)
    echo "Starting dropbear sshd ..."

    # ADB 持久自启：清掉禁用标记
    rm -f /usr/data/disableadb

    # UBIFS 未挂好/不可写则放弃（避免在只读 squashfs 上瞎写）
    [ -d /usr/data ] && [ -w /usr/data ] || {
        echo "S99ssh: /usr/data not writable, abort" > /dev/console 2>&1
        exit 0
    }

    mkdir -p /usr/data/ssh/.ssh
    chmod 700 /usr/data/ssh
    chmod 700 /usr/data/ssh/.ssh

    # 首次开机：从只读模板写入 authorized_keys
    if [ ! -f /usr/data/ssh/.ssh/authorized_keys ] && [ -f /etc/dropbear/authorized_keys ]; then
        cp /etc/dropbear/authorized_keys /usr/data/ssh/.ssh/authorized_keys
    fi
    chmod 600 /usr/data/ssh/.ssh/authorized_keys 2>/dev/null

    # /root 只读 -> bind 可写的 ssh 工作目录过去
    mount --bind /usr/data/ssh /root 2>/dev/null

    # MeowAPPs 应用加载器: 把看门狗复制到可写卷 (cave exec 路径 /usr/data/meow_watchdog)
    if [ -f /usr/bin/meow_watchdog ]; then
        cp -f /usr/bin/meow_watchdog /usr/data/meow_watchdog 2>/dev/null
        chmod 755 /usr/data/meow_watchdog 2>/dev/null
    fi

    # 首次开机：生成 ed25519 host key
    if [ ! -f /usr/data/ssh/dropbear_ed25519_host_key ]; then
        /usr/sbin/dropbearkey -t ed25519 -f /usr/data/ssh/dropbear_ed25519_host_key \
            >> /usr/data/ssh.log 2>&1
        chmod 600 /usr/data/ssh/dropbear_ed25519_host_key
    fi

    # 启动 dropbear：仅 pubkey 认证，禁用端口转发
    /usr/sbin/dropbear -j -k \
        -r /usr/data/ssh/dropbear_ed25519_host_key \
        -p 22 \
        -P /usr/data/ssh/dropbear.pid \
        >> /usr/data/ssh.log 2>&1 &
    ;;

  stop)
    killall dropbear 2>/dev/null
    sleep 1
    umount /root 2>/dev/null
    ;;

  *)
    echo "Usage: $0 {start|stop}"
    exit 1
    ;;
esac

exit 0
