用于 C2 的 Git Web Hook 隧道
# apt-get update && apt-get upgrade -y
# apt-get install python3-pip git -y
# pip install --upgrade pip
# pip install virtualenv
# virtualenv -p python venv
# . venv/bin/activate
# git clone https://github.com/dsnezhkov/octohook
# pip install prompt_toolkit PyGithub bottle pygments pyaml delegator.py
或者
pip install -r doc/requirements.txt
以 GitHub 服务账号登录。
按以下方式生成应用令牌(app token): https://github.com/settings/tokens/new
在 config/client.yml 和 config/server.yml 中更新 git_app_token: '86c0ec38b90909c4fbb1cf7f4e20c8f7f451'
在服务端和客户端设置你的 agent id 例如:agentid: 'b932e9f5'
生成 keys/server.pem
先运行的客户端或服务端会创建仓库 git_repo_name: 'rendezvous'
设置初始 webhook: https://github.com/your-id/rendezvous/settings/hooks/new
设置 Payload URL: https://IP-or-HOST:PORT/route/,其中 IP 是你的 OC Web 服务的 IP,PORT 是其监听端口,而 /route/ 是配置文件中 hook_route: '/server/' 指令所指定的 hook 路由。
设置:Content-type: application/json
“默认情况下,我们在投递 payload 时会验证 SSL 证书。”演示时可禁用,生产环境请启用(letsencrypt)
你可以选择接收所有事件,也可以仅选择“Choose Let me select individual events.”(让我选择单个事件)。
OC 至少需要:“Issue comment”、“Issues”。
创建 Webhook 时,请确保你在上述 Payload URL 上启动了 octohook 服务器。如果设置为“Active”(“We will deliver event details when this hook is triggered.”),则会向 OC 服务器发送一个 ping 注册请求。
当你在 webhooks 中看到“绿色对勾”(Green checkmark)时,即表示已注册。如果没有,请检查你的参数,然后“redeliver”该 ping。
如有需要,可对其他 webhook 重复上述设置(双向 RTM 和 swarm(未来))。
python octohook.py ./config/server.yml
python octohook.py ./config/client.yml