合言葉共有

要件
ログインの有無 True
合言葉共有トグル True
パスワード(合言葉) string
エンドポイント /v1/files/watchword
メソッド POST

概要

「合言葉」を介して、サーバーにファイルを保存せずブラウザ間で直接ファイルを転送する機能です。同一LAN内・インターネット越し(異なるネットワーク間)の双方に対応しています。

解決する問題: 共有リンクの発行や権限設定の手間を省き、口頭で「合言葉」を伝えるだけでセキュアな受け渡しを可能にします。

プライバシー: 機密ファイルはデバイス間(Peer-to-Peer)で完結するため、サーバーに実体やログが残りません。

フロント→バックに必要なデータ

キー 値の情報
ファイル名 string
ファイル形式 string
ファイルサイズ integer
MIME形式 string
送信者ID string
受信者ID string
ファイルハッシュ string
チャンクサイズ integer
共有有効期限(任意) datetime
ダウンロード可 boolean

バック→フロントに必要なデータ

キー 値の種類
合言葉 String

合言葉は サーバー側で自動生成(8 文字英数字)。クライアントからの指定は不可(A2)。

実装メモ

項目 方針
receiver_id メタデータとして保存・監査用。WS join 時の ID 照合は MVP では行わない(A1)
filehash sha256:<64hex> 形式(A6)
chunk_size 既定 16384、最大 65536(A5)
expire_at min(expire_at, now+10min) で Valkey TTL を設定(A4)

WebSocket シグナリングの詳細は WebSocketシグナリング を参照。

実装要件

必要なコンポーネント

コンポーネント 技術 備考
シグナリング Rust (Axum) + WebSocket SDPオファー/ICE候補の中継
ルーム管理 Valkey 合言葉をキーにルーム状態管理・TTL付き
P2P転送 WebRTC DataChannel バイナリ直接転送(サーバー経由なし)

詳細: WebRTCシグナリング