無料ツール
MIT ライセンスの小さなツールが二つあります。どちらも有料製品の一部を切り出したものです。ダウンロードして、読んで、そのまま使えます。
webhooksig: Go 向け Webhook 署名検証
標準ライブラリだけで動きます。GitHub 形式、Stripe 形式(リプレイ対策の許容時間つき)、Standard Webhooks の署名を、定数時間比較で検証します。
key, _ := webhooksig.ParseStandardSecret(os.Getenv("WEBHOOK_SECRET")) // "whsec_<base64>"
err := webhooksig.VerifyStandard(key, body,
r.Header.Get("webhook-id"), r.Header.Get("webhook-timestamp"), r.Header.Get("webhook-signature"),
time.Now(), 5*time.Minute)
go test -race でテスト済みです。ボディの改ざん、誤ったシークレット、不正な形式のヘッダー、古い・未来のタイムスタンプ、ヘッダーに複数の署名が入るケース、Standard Webhooks 公式 Go ライブラリの既知解テストベクターを確認しています。
vps-restore-test: restic のバックアップは本当にリストアできるか
最新の restic スナップショットを一時ディレクトリにリストアして、中身を確認する bash スクリプトです。確認するのは、リストアが成功すること、ディレクトリが空でないこと、SQLite のダンプが整合性チェックを通ること、Postgres のダンプが読めること、任意で指定した自前のコマンドが成功すること、サンプルに対する restic check が通ることです。どれかが失敗すると ゼロ以外のコードで終了するので、cron で気づけます。
Debian 12 のコンテナで、正常なバックアップ、間違ったリポジトリ、ダンプが欠けたスナップショットを使ってテストしています。
もっと使いたい方へ
有料の VPS Deploy & Backup Kit には、データベースを整合性のある状態でダンプして世代管理するバックアップスクリプト、ロールバック付きの blue/green デプロイ、失敗アラートが入っています。Go Webhook Receiver Starter は、webhooksig の周りにキュー、重複排除、リトライ、運用ツールを足したものです。