Skip to content

v1.72.0 公開ダッシュボード対応

Latest

Choose a tag to compare

@twsnmp twsnmp released this 30 Sep 19:36
· 5 commits to main since this release

twsnmpfc v1.72.0 リリースノート

v1.72.0 では、認証不要でマップ状態を安全に共有できる「マップダッシュボード公開機能」やマップ画像のダウンロード機能の追加、macOS 15(Sequoia)環境でのローカルネットワーク制限対応およびPINGタイムアウト障害の解消、依存ライブラリのセキュリティ脆弱性対応を実施しました。


🚀 主な新機能・機能改善

  • マップダッシュボード公開機能 (/dashboard/:key):
    • ランダムな秘密URLキーを利用して、認証不要でアクセス可能な読み取り専用のマップダッシュボード機能を追加しました。
    • マップ設定画面から公開の有効/無効切り替え、公開キーの自動生成、URLコピーが可能です。
    • 公開API(/public/api/map/:key)経由で提供されるため、IPアドレス、MACアドレス、各種通信ログ等の機密情報はサニタイズ(除外)され、外部に安全にマップの稼働状態のみを共有できます。
    • ダッシュボード上には状態別ノード数のKPIチップ、ズームコントロール(拡大/縮小/リセット/画面フィット)、再読み込みボタンを配置しています。
  • マップ画像ダウンロード機能:
    • マップ(および公開ダッシュボード)の表示状態を PNG 画像としてダウンロード・保存できる機能を追加しました。
  • SPAフォールバック対応:
    • /dashboard/:key などの動的URLに直接アクセスしたりブラウザで再読み込みした際に 404 エラーとなる問題を解消するため、バックエンドで index.html にフォールバックして Vue Router 側で解決できるように対応しました。

🐛 バグ修正・安定性向上

  • macOS 15(Sequoia)のローカルネットワークアクセス制限対応:
    • macOS 15 以降で導入されたローカルネットワークアクセス制限に対応するため、macOS 向けバイナリビルド時に Info.plist(NSLocalNetworkUsageDescription)を埋め込むよう改善しました。
  • PINGタイムアウト障害の解消とネットワークトラフィック平滑化:
    • PING の送受信処理を goroutine 分離し、独立受信ループ・先行パケットドレイン・高精度タイマーを採用して、macOS 環境や高負荷環境で発生していた PING タイムアウト障害を解消しました。
    • ARP 解決用に応答待ちを行わない軽量送信 API(SendPing)を追加しました。
    • ARP Watch のバースト一括送信(5秒間隔)を廃止し、200ms 間隔の平滑送信に変更しました。
    • 自動発見(Discover)の並行度抑制(最大16並行)、80ms ペーサーによるレートリミット、ポートスキャン並行度制限(最大2並行)を導入しました。
    • 自動発見で新規登録されるポーリングの次回実行時刻を分散(ジッター付与)させ、初回負荷集中を防止しました。
    • TCP ポーリングの即時クローズとリトライ待機処理の改善、ポーリングログの並行マップ競合を防止しました。

🔒 セキュリティ修正・依存ライブラリ更新

  • github.com/labstack/echo/v4 を v4.15.3 に更新(CVE-2026-55677 対応)
  • google.golang.org/grpc を v1.83.2 に更新
  • go.opentelemetry.io/otel/sdk を v1.45.0 に更新
  • github.com/klauspost/compress を v1.18.7 に更新