Skip to content

Releases: Liplus-Project/dipper_ai

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 09 Mar 14:13
839ba8c

Changelog

  • 839ba8c feat: add goreleaser for multi-platform binary releases (#58)

v1.5.0

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 14:22
ae2a995

Breaking Change

systemd oneshot+timer → 常駐デーモン方式へ変更

DDNS_TIME と UPDATE_TIME が任意の組み合わせで正しく動作するよう、アーキテクチャを変更しました。

インストール済みの場合は install.sh を再実行してください。
旧タイマーユニット(dipper_ai.timer)は install.sh が自動削除します。

変更内容

  • dipper_ai daemon コマンドで常駐起動(systemd が lifecycle 管理)
  • 2本の goroutine ticker が DDNS_TIME / UPDATE_TIME を独立管理
  • dipper_ai keepalive コマンドを追加(手動 keepalive 用)
  • systemd/dipper_ai.service: Type=simple、Restart=on-failure
  • systemd/dipper_ai.timer 削除
  • scripts/install.sh 大幅シンプル化

v1.4.1

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 13:37
fe70af7

Changes

  • feat(config): suffix duration format for time-gate keys (#51)
    • Accepted formats: 1d, 2h, 5m, 30s, plain integer (minutes, backward-compatible)
    • install.sh: systemd timer interval parsed from DDNS_TIME with same format
    • Negative values are silently clamped to the configured minimum
  • fix(config): treat negative durations as below-minimum rather than error

v1.4.0 — check モード acceptance テスト・バイナリ DNS/IP 注入機構

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 13:09
1098497

変更内容

テスト強化

  • check モードのバイナリ受入テスト追加 (#48, #20)
    • DIPPER_AI_FAKE_IP_V4/V6: IP 取得結果を固定(dig 不要)
    • DIPPER_AI_FAKE_DNS: DNS ルックアップ結果を注入(domain=ip,... 形式)
    • 新テスト:
      • TestBinary_Check_AllMatch_SilentExit — 全一致 → exit 0 / 無音
      • TestBinary_Check_Mismatch_TriggersUpdate — 不整合 → ローカルサーバーに更新発火
      • TestBinary_Check_PartialMismatch_OnlyStaleUpdated — 部分不整合 → 該当ドメインのみ更新

これらの環境変数は テスト専用。本番環境では設定しないこと。

アップデート手順

cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh

v1.3.3 — 無更新時のログを無音化

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 12:50
c90b15c

変更内容

改善

  • update / check: 無更新時のログを完全無音化 (#44, #45)
    • IP 変化なし・更新なしの場合は一切ログを出力しない。
    • systemd journal がノイズで埋まる問題を解消。
    • 更新が発生したときのみ IPv4/IPv6 アドレスと更新ドメイン一覧を出力。
    • エラーは引き続き常時出力。

アップデート手順

cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh

v1.3.2 — DDNS_TIME に連動した systemd タイマー間隔設定

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 12:34
6b89cfa

変更内容

バグ修正 / 仕様実装

  • install.sh: DDNS_TIME に合わせて systemd タイマー間隔を動的設定 (#36, #42)
    • 以前は OnUnitActiveSec=5min が固定値のため、DDNS_TIME=1 等の設定が実際の動作に反映されなかった。
    • install.shuser.conf から DDNS_TIME を読み取り、systemd タイマーの OnUnitActiveSec を自動的に設定するよう変更。
    • DDNS_TIME=0(無効/デフォルト)の場合は 5 分をフォールバックとして使用。

ドキュメント更新

  • docs/Installation.mdDDNS_TIME とタイマー間隔の対応を追記。

アップデート手順

cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh

DDNS_TIME を変更した場合も sudo bash scripts/install.sh を再実行することでタイマー間隔が更新されます。

v1.3.1 — check: ミスマッチドメインのみ DDNS 更新

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 12:27
0ca5a74

変更内容

バグ修正

  • check モード: 一部ドメインの DNS 不整合で全ドメインが更新される問題を修正 (#40, #41)
    • 以前は check でいずれか 1 ドメインが不整合だった場合、全ドメインのキャッシュがリセットされ、変更のないドメインにも DDNS API リクエストが送られていた。
    • DNS 不整合が確認されたドメインのみキャッシュをリセット。正常なドメインは Update() がスキップする。

アップデート手順

cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh

v1.3.0 — check ゲート削除・DNS 検証を毎回実行

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 12:08
482dc61

変更内容

バグ修正

  • check モード: DNS 検証ゲートを削除 (#38, #39)
    • 以前は UPDATE_TIME(デフォルト 1440 分)を check ゲートとして流用していたため、DNS レコードを手動で変更しても最大 1 日間修正されなかった。
    • ゲートを廃止し、systemd タイマー(5 分間隔)がレート制限の役割を担う。
    • これにより DNS レコードの不整合は次回タイマー起動時(最大 5 分以内)に検出・修正される。

テスト

  • acceptance テスト TestBinary_Check_GatedExitZeroTestBinary_Check_NoProviders_ExitZero に置き換え(ゲートが存在しないため)

アップデート手順

cd dipper_ai
git pull
go build -o dipper_ai ./cmd/dipper_ai
sudo bash scripts/install.sh

v1.2.0 — per-domain IP cache + MyDNS-only keepalive

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 11:24
da799ae

変更内容

リファクタリング: per-domain IP キャッシュ設計 (issue #32)

internal/state/state.go

  • ReadDomainCache / WriteDomainCache / ResetDomainCache を追加
  • プロバイダ×ドメイン単位でキャッシュ管理(cache_mydns_0_ipv4 等)

internal/mode/update.go

  • DDNS_TIME: 全体レートリミッター(0=無制限)
  • UPDATE_TIME: MyDNS keepalive ゲート(MyDNS のみ適用)
  • Cloudflare: keepalive なし — IP 変化時のみ更新
  • 変更があったドメインのみ DDNS 更新(per-domain)
  • anyIPChange / anyKeepAlive を個別追跡してメール通知に反映

internal/mode/check.go

  • DNS ミスマッチ検出時に per-domain キャッシュをリセット
  • gate_ddns 削除で Update() の DDNS_TIME 遮断を回避

破壊的変更

  • ip_ipv4 / ip_ipv6 グローバル IP キャッシュを廃止、cache_* per-domain キャッシュに移行
  • 既存の state/ ディレクトリはそのまま利用可能(初回実行時に自動再構築)

v1.1.1 — DDNS_TIME デフォルト修正

Choose a tag to compare

@liplus-lin-lay liplus-lin-lay released this 05 Mar 10:50
da752b5

バグ修正

DDNS_TIME デフォルト値を 0 に変更

IP が変化していないのに毎回 DDNS 更新が走る問題を修正。

変更前: DDNS_TIME 未設定 → 1分ごとにキープアライブ(IP変化なしでも毎回更新)
変更後: DDNS_TIME 未設定(= 0) → IP変化時のみ更新

MyDNS のような定期 keepalive が必要なサービスを使う場合は user.conf で明示設定してください:

DDNS_TIME=60   # 60分ごとにキープアライブ

Closes