WechatOnCloud/bridge/s6/woc-bridge/run

28 lines
1.0 KiB
Plaintext
Raw Normal View History

#!/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}