#!/usr/bin/with-contenv bash
# 设置 ptrace_scope=0，允许 bridge 进程读取微信进程内存
# 用于 SQLCipher 密钥自动提取（key_extractor.py 读 /proc/<pid>/mem）

PTRACE_SCOPE="/proc/sys/kernel/yama/ptrace_scope"

# 检查容器是否拥有 SYS_PTRACE capability
# 通过 /proc/self/status 中的 CapEff 判断 bit 12 (CAP_SYS_PTRACE)
has_sys_ptrace() {
    local cap_eff
    cap_eff=$(awk '/^CapEff:/{print $2}' /proc/self/status 2>/dev/null)
    if [ -z "$cap_eff" ]; then
        return 1
    fi
    # CAP_SYS_PTRACE = 12，掩码 0x1000
    local mask
    mask=$((0x${cap_eff} & 0x1000))
    [ "$mask" -ne 0 ]
}

if [ -e "$PTRACE_SCOPE" ]; then
    # 文件存在：尝试写入 0
    if echo 0 > "$PTRACE_SCOPE" 2>/dev/null; then
        echo "woc-ptrace: ptrace_scope 已设置为 0" >&2
    else
        echo "woc-ptrace: 无法写入 ptrace_scope（可能需要 --privileged 或 SYS_PTRACE capability）" >&2
    fi
else
    # 文件不存在：YAMA 模块未加载（常见于 Docker Desktop WSL2 精简内核）
    if has_sys_ptrace; then
        echo "woc-ptrace: 宿主机未启用 YAMA（$PTRACE_SCOPE 不存在），但容器已持有 SYS_PTRACE，key 提取仍可尝试" >&2
    else
        echo "woc-ptrace: 宿主机未启用 YAMA（$PTRACE_SCOPE 不存在），且容器未持有 SYS_PTRACE；自动 key 提取可能不可用" >&2
    fi
fi
