[MeshCore] Outbound 2FA claim: WS dispatch + HTTP verify

オープン
#361 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
30/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
静か
技術スタック
python
領域
api, backend

調査の方向性

Start with dispatch_node_command in Meshflow/common/feeder_ws.py, using the existing apply_mc_channel_config dispatch as the pattern, and read normalize_claim_key in Meshflow/nodes/claim_authorization.py alongside notify_node_claim_accepted in Meshflow/nodes/ws_notify.py. Done means the initiate route sends a send_mc_claim_dm command, the new verify route accepts a claim key and sets the claim as accepted, and openapi.yaml and node-claims-meshcore.md are updated. The bot side (meshflow-bot#120) is a stated blocker, so this is not startable end to end yet.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Parent (UI user flow)

Part of meshflow-ui#291 — Claim MeshCore node / feeder onboarding epic.

Repo Issue
UI meshflow-ui#303
Bot meshflow-bot#120

Meshtastic inbound DM claim stays unchanged (node-claims-meshtastic.md).

Replaces the fragile inbound MeshCore flow in node-claims-meshcore.md. Basic MC claim shipped in meshflow-ui#292 (closed).

Problem

MeshCore DMs require the recipient in the radio contact list (usually populated via RF adverts). Users claiming from the web UI cannot reliably DM a feeder with the claim key. The API already knows the target node's mc_pubkey / prefix from telemetry; a feeder should DM the user with the code; the user types the code back in the UI.

Architecture

sequenceDiagram
  participant UI as meshflow-ui
  participant API as meshflow-api
  participant WS as ws/nodes (feeder)
  participant Bot as meshflow-bot (MC)
  participant Radio as MeshCore device

  UI->>API: POST observed-nodes/{id}/claim/ (existing)
  API->>API: Create NodeOwnerClaim + claim_key
  API->>WS: node_command send_mc_claim_dm
  WS->>Bot: command JSON
  Bot->>Radio: add contact + send DM(claim_key)
  Radio->>User: DM with claim key
  UI->>API: POST observed-nodes/{id}/claim/verify/ { claim_key }
  API->>API: Match pending claim, set accepted_at + claimed_by
  API->>UI: node_claim_accepted (HTTP + ws/claims/)

Scope (meshflow-api)

1. Initiate claim (POST …/claim/)
  • For protocol=MESHCORE only: after creating NodeOwnerClaim, resolve target identity (mc_pubkey, fallback mc_pubkey_prefix) from ObservedNode.
  • Select feeder ManagedNode (optional feeder_managed_node_id from UI; else eligible connected MC feeder).
  • Dispatch via dispatch_node_command (apply_mc_channel_config pattern).
2. WS command send_mc_claim_dm
{
  "type": "send_mc_claim_dm",
  "target_mc_pubkey": "<64-hex or null>",
  "target_mc_pubkey_prefix": "<12-hex or null>",
  "message": "<claim_key>"
}
3. Verify claim (POST …/claim/verify/)
4. Docs + tests

Depends on

  • Bot #120 — MC send + WS (blocker today).
  • UI #303.
主要言語
Python
スター
1
フォーク
0
平均マージ
23時間 9分
マージ済み PR(30日)
15

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pskillen/meshflow-api のほかの issue

pskillen/meshflow-api の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。