Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tateisu/protpushproxy
SNSサーバからWebPushを受け取りアプリに中継するプロトタイプ
https://github.com/tateisu/protpushproxy
Last synced: about 1 month ago
JSON representation
SNSサーバからWebPushを受け取りアプリに中継するプロトタイプ
- Host: GitHub
- URL: https://github.com/tateisu/protpushproxy
- Owner: tateisu
- License: apache-2.0
- Created: 2023-01-23T17:14:13.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-31T18:40:37.000Z (almost 2 years ago)
- Last Synced: 2024-10-07T07:41:32.833Z (3 months ago)
- Language: Kotlin
- Size: 394 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ProtPushProxy
SNSサーバ→アプリサーバ→プッシュサーバ→テストアプリの流れでプッシュメッセージの購読と受信を行うプロトタイプ。
## 構成
### PushReceiverApp
Android用のテストアプリ
- マストドンにOAuthログインする。
- UnifiedPushのディストリビューターを選ぶ。
- UPの中継URLをアプリサーバに登録する。### AppServer
アプリサーバ。
- アプリから中継URLを受け取ってDBに覚える。
- SNSサーバからWebPushメッセージを受け取り中継URL(プッシュサーバ)に投げる。
- Kotlin, Ktor, Exposed で書いた。### FcmV1Sender
- FCMの FCM V1 APIに適当なメッセージを投げるテストプログラム。## 仕様
### アプリがアプリサーバに送る情報
- FCMトークンまたはUnifiedPushのendpoint URL。ないとそもそも中継できない。
- 端末に登録したアカウントのacctのSHA256ダイジェスト。ないとプッシュ通知を中継した際に「どのアカウントへの通知なのか」を端末側が知ることができない。
- プッシュ中継を行った時刻。エンドポイント登録を行った時刻。ないとアプリサーバがいつ情報を消していいか分からない。端末側はアンインストールなどで情報を消せるため、端末契機で後始末を開始することはできない。### SNSサーバに登録するURL
端末のデバイストークンやインストールIDや中継URLを漏らさない。URL中のパラメータは次の2つ。
- a: 中継に必要なパラメータのSHA256ダイジェスト。DB側で照合して情報を補うと中継できる。同一鯖複数アカウントでも同じにはならない。
- dh インストール時に生成したUUIDとアカウントのacctのハッシュ。アプリ側で既存の購読のエンドポイントURLを照合してこのパラメータが異なるなら、それは他の端末で作成したものなので購読を上書きしてはいけない。アプリサーバ側ではこのパラメータは見ていない。