クライアントはデスクトップの nostrmo で落ち着いている。開発者は中国人のようで、日本語がまともに入力できる。UI の英語はところどころ変だけど。

Reply to this note

Please Login to reply.

Discussion

nostrmo はキーボードショートカットを提供しておらず、デスクトップで使うには不便。Flutter で作られていて、モバイル向けが主眼だからだろうけど。

nostrmo に秘密鍵を直接持たせるのをやめて、同一マシン内の nowser に移してみた。nowser がローカルリレーを立ち上げて、nostrmo は NIP-46 で接続。今のところ問題なく動いている。同一マシン内のなんちゃってリモート接続ではなく、本当のリモート接続にしたときも安定して動くのかは知らん。

nowser は Add Remote App で接続アプリを追加できるけど、削除の方法がわからない。設定をミスって pending になっている接続も消せない。一度作った bunker:// URL の再取得方法もわからない。

nostr-rs-relay は NIP-46 の中継をサポートしてないな。

わかっていないことがわかった。NIP-46 における relay の役割は、NIP-01/NIP-16 の ephemeral events を扱えることだけで足りる。NIP-44 の暗号化は end-to-end なので relay は関与しない。つまり nostr-rs-relay は NIP-46 に対応していると言える。

bunklay というNIP-46 専用の relay 実装を見つけた。khatru にフィルタを加えただけの簡単な構成。

https://github.com/dezh-tech/ddsr/tree/main/bunklay

bunklay には nostr-rs-relay の pubkey_whitelist に相当する機能は見当たらない。そのくらいの変更なら自分でソースコードを編集しろということだろう。

nowser で登録済みの remote app を削除する方法がようやく分かった。Apps Manager のリストアイテムを左方向にドラッグすると赤いゴミ箱アイコンが表示されるので、それをクリックすればよい。

ソースコードを確認して Slidable が使われていることを把握し、続いて flutter_slidable のドキュメントを読んでようやく理解。デスクトップユーザーには厳しい UI。

https://github.com/haorendashu/nowser/blob/master/lib/router/apps/apps_router.dart#L57

https://pub.dev/packages/flutter_slidable

Nowser は利用者の鍵こそ flutter_secure_storage.dat に保存するが、bunker 関係の情報は nowser.db に 平文で保存している。

私の理解が正しければ、もし第三者が nowser.db にアクセスできたとすると、bunker URL が復元できて、remote app を装って Nowser に接続を試みられる。

Nowser 利用者が何かの間違いで接続を承認したら、第三者 (偽 remote app) は本物の remote app と同じ権限を得てしまう。

issue report を書いてみた。

https://github.com/haorendashu/nowser/issues/3

nowser 1.4.0 で修正されていた。issue report 自体は2件とも放置されているが。

https://github.com/haorendashu/nowser/releases/tag/1.4.0

時間差で issue report も閉じられた。英語がなかなか厳しい。

あかんな。Nowser 1.4.0 に切り替えたら、local relay を介したログイン時に Nostrmo がタイムアウトするようになった。wss://relay.primal.net/ を使うと少なくともログインは成功するのに。

issue report を書いたら、今度は一瞬で対応してくれた。

https://github.com/haorendashu/nowser/issues/5

local relay が動かない問題は Nowser 1.4.1 で解消されているはず。この投稿がうまくいけば。

nowser の UI 上で remote app を消しても SQL のテーブルでは一部が残ったままになる謎挙動。こちらも issue report を書いてみた。

https://github.com/haorendashu/nowser/issues/4

Windows 上の Nostrmo 3.4.0 がちょくちょく落ちるようになった。原因を突き止めるのがめんどくさそうで困ったな。

Windows Event Viewer を見ると、isar.dll が STATUS_STACK_BUFFER_OVERRUN (0xc0000409) で落ちていた。

誤って Nostrmo を二重起動している間に Isar DB が壊れた可能性が高い。Isar DB は複数プロセスで共有して使うことを想定していないらしい。

DB ファイルを削除して Nostrmo を再起動したら再び安定した。

Android/iOS だと通常は二重起動にはならないはずなので、デスクトップ版固有の罠っぽい。起動時に single instance チェックを入れるべきなのだろう。