28 lines
1.0 KiB
Plaintext
28 lines
1.0 KiB
Plaintext
|
|
#!/usr/bin/with-contenv bash
|
|||
|
|
# 等待微信窗口出现,最多等 5 分钟;超时也启动 bridge(/api/status 会返回 not_running)
|
|||
|
|
WAITED=0
|
|||
|
|
MAX_WAIT=300
|
|||
|
|
while ! xdotool search --name "微信" >/dev/null 2>&1; do
|
|||
|
|
sleep 2
|
|||
|
|
WAITED=$((WAITED + 2))
|
|||
|
|
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
|
|||
|
|
echo "woc-bridge: 等待微信窗口超时(${WAITED}s),仍然启动 bridge" >&2
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
# 以 abc 用户身份运行(与微信同 X 会话,才能操作微信窗口)
|
|||
|
|
# s6-setuidgid 不接受 VAR=value 参数,须先用 s6-env 设环境变量再切用户
|
|||
|
|
|
|||
|
|
# 校验 ptrace 权限(key_extractor 读微信进程内存需要)
|
|||
|
|
if [ -w /proc/sys/kernel/yama/ptrace_scope ] 2>/dev/null; then
|
|||
|
|
echo 0 > /proc/sys/kernel/yama/ptrace_scope 2>/dev/null || true
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
exec s6-env DISPLAY=${DISPLAY:-:1} XAUTHORITY=/config/.Xauthority \
|
|||
|
|
s6-setuidgid abc \
|
|||
|
|
python3 /opt/woc-bridge/server.py \
|
|||
|
|
--listen 0.0.0.0:8088 \
|
|||
|
|
--wechat-db /config \
|
|||
|
|
--display ${DISPLAY:-:1}
|