コンテンツにスキップ

webhook を受け付けるCGIの簡単なサンプル

BraveGATEのアップリンクデータのwebhook を受け付けるCGIのサンプルです。 Linux 上のapache,nginx 等のCGIとして動作します。

あくまでサンプルですので、各種設定・セキュリティ等は各自の環境に合わせて設定を行なって下さい。

単純に受け取ったJSONを整形して、保存するのみの機能です。

#!/bin/bash

# 途中でerrorが発生したら終了する
set -e -o pipefail

# BASE_DIRは、環境に合わせて書き換えて下さい。
BASE_DIR="/data/BraveGATE/webhook/test"

# 現在時刻をマイクロ秒まで取得
NOW=$(date +%Y%m%d_%H%M%S_%3N)

# webhookはPOSTのみ
if [ "${REQUEST_METHOD}" = "POST" ]; then
    TEMP_FILE=$(mktemp)
    # 一時ファイル後始末
    trap "rm -f $TEMP_FILE" EXIT
    DATA=`dd bs=${CONTENT_LENGTH}`

# jq で整形して、一時ファイルに保存
  echo $DATA | jq . > $TEMP_FILE
  cp $TEMP_FILE $BASE_DIR/$NOW.json

  echo -ne "Content-Type: text/plain\r\n\r\n"
  echo -ne "OK"
else
  echo -ne "Content-Type: text/plain\r\n\r\n"
  echo -ne "none"
fi

shell script(bash) で記述されているため、値を取り出してのdir振り分けや、ユーザー環境やテストの目的など合わせて自由に改変を行なって下さい。

受信するjson の整形にjq のコマンドが必要となります。