mizosukedev / securetunnel

AWS secure tunneling localproxy go implementation.
MIT License
2 stars 0 forks source link

server (for dev) design #28

Closed mizosukedev closed 2 years ago

mizosukedev commented 2 years ago
mizosukedev commented 2 years ago

goでもdynamicに構造体や関数をロードできるらしい。

https://pkg.go.dev/plugin

mizosukedev commented 2 years ago

https://dagger.io/

serverが出来たらe2eテスト実装してci/cdパイプラインに乗せたいっすね~。

mizosukedev commented 2 years ago

Authorization WebAPI

mizosukedev commented 2 years ago

Tunnel WebAPI

OpenTunnel POST

ListTunnels GET

DescribeTunnel GET

CloseTunnel PUT

mizosukedev commented 2 years ago

Development WebAPI

SendToPeer

mizosukedev commented 2 years ago

TunnelID / AccessToken structure

mizosukedev commented 2 years ago

Data structure

Tunnel

name description
ID TunnelID
[X] Status Tunnel status Open / Closed。データとして持ってはダメそう。
SourceToken AccessToken。ハッシュを保存すべき?
SourcePeer 全Connection共通の情報。
- ConnectionID 現在管理対象としているConnectionと関連付ける。
- ClientToken 最初に送られてきたclient-tokenヘッダの値。
- NumberOfConnections 接続回数。
DestinationToken AccessToken。ハッシュを保存すべき?
DestinationPeer 全Connection共通の情報。
- ConnectionID 現在管理対象としているConnectionと関連付ける。
- ClientToken 最初に送られてきたclient-tokenヘッダの値。
- NumberOfConnections 接続回数。
Services ServiceIDs
ThingName 通知先デバイス。
TimeoutMinutes トンネル生存時間。
Payload 独自拡張用データ。
LifetimeAt トンネル生存期間。このフィールドでOpen / Closedを判定しStatusはデータとしては持たない。
CreatedAt 作成時間
LastUpdatedAt 更新時間

Connection

name description
ID ConnectionID。
TunnelID TunnelID
Status Connected / Disconnected
CreatedAt 作成時間
LastUpdatedAt 更新時間
mizosukedev commented 2 years ago

Pluggable

対象機能

mizosukedev commented 2 years ago

Scalable / Multiple server

サーバー間で通信する。

メッセージのやり取りにマネージドなサービスを使う、または作る。

ロードバランサーで頑張る

mizosukedev commented 2 years ago

マルチサーバーとか言い出したら開発用じゃなくなってきてるね。。。 とりあえずdesingのラフはこんなところにして、プロトタイプを実装していくことにする。