mirror of
https://github.com/matrix-org/dendrite.git
synced 2024-11-22 14:21:55 -06:00
parent
6b5996db17
commit
0ba1245a46
|
@ -41,7 +41,6 @@ func AddPublicRoutes(
|
|||
deviceDB devices.Database,
|
||||
accountsDB accounts.Database,
|
||||
federation *gomatrixserverlib.FederationClient,
|
||||
keyRing *gomatrixserverlib.KeyRing,
|
||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
||||
eduInputAPI eduServerAPI.EDUServerInputAPI,
|
||||
asAPI appserviceAPI.AppServiceQueryAPI,
|
||||
|
@ -62,7 +61,7 @@ func AddPublicRoutes(
|
|||
|
||||
routing.Setup(
|
||||
router, cfg, eduInputAPI, rsAPI, asAPI,
|
||||
accountsDB, deviceDB, federation, *keyRing,
|
||||
accountsDB, deviceDB, federation,
|
||||
syncProducer, transactionsCache, fsAPI,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ type getEventRequest struct {
|
|||
eventID string
|
||||
cfg *config.Dendrite
|
||||
federation *gomatrixserverlib.FederationClient
|
||||
keyRing gomatrixserverlib.KeyRing
|
||||
requestedEvent gomatrixserverlib.Event
|
||||
}
|
||||
|
||||
|
@ -46,7 +45,6 @@ func GetEvent(
|
|||
cfg *config.Dendrite,
|
||||
rsAPI api.RoomserverInternalAPI,
|
||||
federation *gomatrixserverlib.FederationClient,
|
||||
keyRing gomatrixserverlib.KeyRing,
|
||||
) util.JSONResponse {
|
||||
eventsReq := api.QueryEventsByIDRequest{
|
||||
EventIDs: []string{eventID},
|
||||
|
@ -75,7 +73,6 @@ func GetEvent(
|
|||
eventID: eventID,
|
||||
cfg: cfg,
|
||||
federation: federation,
|
||||
keyRing: keyRing,
|
||||
requestedEvent: requestedEvent,
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,6 @@ func Setup(
|
|||
accountDB accounts.Database,
|
||||
deviceDB devices.Database,
|
||||
federation *gomatrixserverlib.FederationClient,
|
||||
keyRing gomatrixserverlib.KeyRing,
|
||||
syncProducer *producers.SyncAPIProducer,
|
||||
transactionsCache *transactions.Cache,
|
||||
federationSender federationSenderAPI.FederationSenderInternalAPI,
|
||||
|
@ -154,7 +153,7 @@ func Setup(
|
|||
if err != nil {
|
||||
return util.ErrorResponse(err)
|
||||
}
|
||||
return GetEvent(req, device, vars["roomID"], vars["eventID"], cfg, rsAPI, federation, keyRing)
|
||||
return GetEvent(req, device, vars["roomID"], vars["eventID"], cfg, rsAPI, federation)
|
||||
}),
|
||||
).Methods(http.MethodGet, http.MethodOptions)
|
||||
|
||||
|
|
71
docs/WIRING-Current.md
Normal file
71
docs/WIRING-Current.md
Normal file
|
@ -0,0 +1,71 @@
|
|||
This document details how various components communicate with each other. There are two kinds of components:
|
||||
- Public-facing: exposes CS/SS API endpoints and need to be routed to via client-api-proxy or equivalent.
|
||||
- Internal-only: exposes internal APIs and produces Kafka events.
|
||||
|
||||
## Internal HTTP APIs
|
||||
|
||||
Not everything can be done using Kafka logs. For example, requesting the latest events in a room is much better suited to
|
||||
a request/response model like HTTP or RPC. Therefore, components can expose "internal APIs" which sit outside of Kafka logs.
|
||||
Note in Monolith mode these are actually direct function calls and are not serialised HTTP requests.
|
||||
|
||||
```
|
||||
Tier 1 Sync PublicRooms FederationAPI ClientAPI MediaAPI
|
||||
Public Facing | .-----1------` | | | | | | | | |
|
||||
2 | .-------3-----------------` | | | `--------|-|-|-|--11--------------------.
|
||||
| | | .--------4----------------------------------` | | | |
|
||||
| | | | .---5-----------` | | | | | |
|
||||
| | | | | .---6----------------------------` | | |
|
||||
| | | | | | | .-----7----------` | |
|
||||
| | | | | | 8 | | 10 |
|
||||
| | | | | | | | `---9----. | |
|
||||
V V V V V V V V V V V
|
||||
Tier 2 Roomserver EDUServer FedSender AppService KeyServer ServerKeyAPI
|
||||
Internal only | `------------------------12----------^ ^
|
||||
`------------------------------------------------------------13----------`
|
||||
|
||||
Client ---> Server
|
||||
```
|
||||
- 1 (PublicRooms -> Roomserver): Calculating current auth for changing visibility
|
||||
- 2 (Sync -> Roomserver): When making backfill requests
|
||||
- 3 (FedAPI -> Roomserver): Calculating (prev/auth events) and sending new events, processing backfill/state/state_ids requests
|
||||
- 4 (ClientAPI -> Roomserver): Calculating (prev/auth events) and sending new events, processing /state requests
|
||||
- 5 (FedAPI -> EDUServer): Sending typing/send-to-device events
|
||||
- 6 (ClientAPI -> EDUServer): Sending typing/send-to-device events
|
||||
- 7 (ClientAPI -> FedSender): Handling directory lookups
|
||||
- 8 (FedAPI -> FedSender): Resetting backoffs when receiving traffic from a server. Querying joined hosts when handling alias lookup requests
|
||||
- 9 (FedAPI -> AppService): Working out if the client is an appservice user
|
||||
- 10 (ClientAPI -> AppService): Working out if the client is an appservice user
|
||||
- 11 (FedAPI -> ServerKeyAPI): Verifying incoming event signatures
|
||||
- 12 (FedSender -> ServerKeyAPI): Verifying event signatures of responses (e.g from send_join)
|
||||
- 13 (Roomserver -> ServerKeyAPI): Verifying event signatures of backfilled events
|
||||
|
||||
## Kafka logs
|
||||
|
||||
```
|
||||
.----1--------------------------------------------.
|
||||
V |
|
||||
Tier 1 Sync PublicRooms FederationAPI ClientAPI MediaAPI
|
||||
Public Facing ^ ^ ^ ^
|
||||
| | | |
|
||||
2 | | |
|
||||
| `-3------------. |
|
||||
| | | |
|
||||
| | | |
|
||||
| .------4------` | |
|
||||
| | .--------5-----|------------------------------`
|
||||
| | | |
|
||||
Tier 2 Roomserver EDUServer FedSender AppService KeyServer ServerKeyAPI
|
||||
Internal only | | ^ ^
|
||||
| `-----6----------` |
|
||||
`--------------------7--------`
|
||||
|
||||
|
||||
Producer ----> Consumer
|
||||
```
|
||||
- 1 (ClientAPI -> Sync): For tracking account data
|
||||
- 2 (Roomserver -> Sync): For all data to send to clients
|
||||
- 3 (EDUServer -> Sync): For typing/send-to-device data to send to clients
|
||||
- 4 (Roomserver -> PublicRooms): For tracking the current room name/topic/joined count/etc.
|
||||
- 5 (Roomserver -> ClientAPI): For tracking memberships for profile updates.
|
||||
- 6 (EDUServer -> FedSender): For sending EDUs over federation
|
||||
- 7 (Roomserver -> FedSender): For sending PDUs over federation, for tracking joined hosts.
|
|
@ -67,7 +67,7 @@ type Monolith struct {
|
|||
func (m *Monolith) AddAllPublicRoutes(publicMux *mux.Router) {
|
||||
clientapi.AddPublicRoutes(
|
||||
publicMux, m.Config, m.KafkaConsumer, m.KafkaProducer, m.DeviceDB, m.AccountDB,
|
||||
m.FedClient, m.KeyRing, m.RoomserverAPI,
|
||||
m.FedClient, m.RoomserverAPI,
|
||||
m.EDUInternalAPI, m.AppserviceAPI, transactions.New(),
|
||||
m.FederationSenderAPI,
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue