[MeshCore] Outbound 2FA claim: WS dispatch + HTTP verify
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
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 の本文から書いたものです。
説明
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=MESHCOREonly: after creatingNodeOwnerClaim, resolve target identity (mc_pubkey, fallbackmc_pubkey_prefix) fromObservedNode. - Select feeder
ManagedNode(optionalfeeder_managed_node_idfrom UI; else eligible connected MC feeder). - Dispatch via
dispatch_node_command(apply_mc_channel_configpattern).
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/)
- Body
{ "claim_key": "…" }; normalize likenormalize_claim_key. - Emit
node_claim_authorized+notify_node_claim_accepted. - Keep inbound
try_accept_node_claimon ingest as fallback until outbound is stable.
4. Docs + tests
- Update node-claims-meshcore.md.
-
openapi.yamlfor verify route.
Depends on
- 主要言語
- Python
- スター
- 1
- フォーク
- 0
- 平均マージ
- 23時間 9分
- マージ済み PR(30日)
- 15
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pskillen/meshflow-api のほかの issue
-
enhancement meshtastic-2.8
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
pskillen/meshflow-api#459 ·
メンテナーはふだん 1 日以内に返信
-
bug tech-debt
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
pskillen/meshflow-api#480 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 半日 初心者へのやさしさ 55/100
pskillen/meshflow-api#479 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
pskillen/meshflow-api#478 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 73/100
pskillen/meshflow-api#472 ·
メンテナーはふだん 1 日以内に返信
pskillen/meshflow-api の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
huggingface/accelerate#4511 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
pylint-dev/pylint#11791 ·
メンテナーはふだん 1 日以内に返信
-
Rasterio granule reads never retry, so one 503 (Service Unavailable) fails the whole request対応中かも @chuckwondo が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
developmentseed/titiler-cmr#305 ·
メンテナーはふだん 1 日以内に返信
-
community enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信