
C2 用 Git Web フックトンネル
# 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 アカウントとしてログインします。
次の手順に従ってアプリトークンを生成します: https://github.com/settings/tokens/new
git_app_token: '86c0ec38b90909c4fbb1cf7f4e20c8f7f451' を config/client.yml と config/server.yml 内で更新します。
サーバーとクライアントでエージェント 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/' ディレクティブで指定されたフックルートです。
Content-type: application/json を設定します。
「デフォルトでは、ペイロード配信時に SSL 証明書を検証します。」デモでは無効にし、本番では有効にします(letsencrypt)。
すべてのイベントを受信することもできますが、「Choose Let me select individual events.(個別のイベントを選択)」を選択しても構いません。
OC は最低でも "Issue comment" と "Issues" が必要です。
Webhook 作成時には、上記の Payload URL で octohook サーバーを起動してください。「Active」に設定すると、「このフックがトリガーされたときにイベント詳細を配信します」という ping 登録リクエストが OC サーバーに送信されます。
Webhooks に「緑のチェックマーク」が表示されれば登録完了です。表示されない場合はパラメータを確認し、ping を「redeliver」してください。
必要に応じて他の Webhook の設定も繰り返します(双方向 RTM と swarm(将来))。
python octohook.py ./config/server.yml
python octohook.py ./config/client.yml