Skip to content

dipperの簡易要求仕様書 クローズ禁止。 #43

@smileygames

Description

@smileygames

1. 目的

dipper は、DDNS サービス(MyDNS / Cloudflare)に対して、
ホストのグローバル IP(IPv4 / IPv6)を更新通知する DDNS クライアントである。

更新は 不要な負荷を避けつつ
定期更新および IP 変更検知による更新を行うことを目的とする。


2. 対象範囲

  • IPv4 / IPv6 の取得および DDNS 更新
  • MyDNS / Cloudflare 対応
  • マルチドメイン対応
  • メール通知(任意)

3. 設定ファイル仕様(ユーザー要求)

3.1 IP 取得および DDNS 更新の有効化

  • IPV4
    • IPv4 取得処理の有効 / 無効
  • IPV4_DDNS
    • IPv4 を DDNS 更新対象にするか
    • IPV4=off の場合は無効
  • IPV6
    • IPv6 取得処理の有効 / 無効
  • IPV6_DDNS
    • IPv6 を DDNS 更新対象にするか
    • IPV6=off の場合は無効

要求
IPv4 / IPv6 の取得と、DDNS 更新対象の指定を独立して切り替えられること。


3.2 時間指定フォーマット

時間指定は suffix 形式とする。

  • s : 秒
  • m : 分
  • h : 時間
  • d : 日

3.3 各種処理周期

定期更新

  • UPDATE_TIME
    • 定期的に DDNS 更新を行う間隔
    • 最小値:3 分
    • 3 分未満は強制的に 3 分に補正

IP 変更チェック

  • DDNS_TIME
    • IP アドレス変化をチェックする間隔
    • 最小値:1 分
    • 1 分未満は強制的に 1 分に補正

IP キャッシュ更新

  • IP_CACHE_TIME
    • IP キャッシュをリフレッシュする間隔
    • 0 の場合は無効
    • 推奨:1 時間
    • 最小値:15 分
    • 15 分未満は強制的に 15 分に補正

エラー通知チェック

  • ERR_CHK_TIME
    • エラーメール送信を抑制するためのチェック間隔
    • 0 の場合は無効
    • 最小値:1 分
    • 1 分未満は強制的に 1 分に補正

3.4 メール通知

  • EMAIL_ADR
    • 通知先メールアドレス
    • 未設定の場合、通知機能は無効
  • EMAIL_UP_DDNS
    • 定期更新時の通知有無
  • EMAIL_CHK_DDNS
    • IP 変更検知時の通知有無

4. DDNS サービス別要求

4.1 MyDNS

要求
上位設定(IPV4 / IPV6 / *_DDNS)が off の場合、
ドメイン個別設定が on でも更新は行わないこと。


4.2 Cloudflare

  • マルチドメイン対応(配列指定)
    • CLOUDFLARE_API[]
    • CLOUDFLARE_ZONE[]
    • CLOUDFLARE_DOMAIN[]
    • CLOUDFLARE_IPV4[]
    • CLOUDFLARE_IPV6[]
  • CLOUDFLARE_DOMAIN は複数指定可(例:example.com,www.example.com)
  • API エンドポイント

要求
IPV6 または IPV6_DDNS が off の場合、
Cloudflare の IPv6 更新は行わないこと。


5. 動作要求(ブラックボックス観点)

  1. 有効設定に従って IPv4 / IPv6 を取得すること
  2. 指定間隔で IP 変更チェックを行うこと
  3. IP 変化があった場合、対象ドメインに DDNS 更新を行うこと
  4. 定期更新間隔で DDNS 更新を行うこと
  5. IP キャッシュ更新が有効な場合、キャッシュを更新すること
  6. エラー通知設定が有効な場合、通知を抑制しつつメール送信すること

6. 制約・安全要求

  • 短すぎる周期指定は安全下限に補正すること
  • DDNS サーバーへ不要な負荷をかけないこと
  • 上位設定は下位設定より常に優先されること

7. 非機能要求

  • Bash で解釈可能な設定ファイル形式であること
  • コメント例を基にマルチドメイン設定を追加できること

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions