You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
2.4 KiB
135 lines
2.4 KiB
# Bridge |
|
|
|
## Main blocks |
|
|
|
This is basic overview of the main bridge blocks. |
|
|
|
Note connection between IMAP/SMTP and PMAPI. IMAP and SMTP packages are in the queue to be refactored |
|
and we would like to try to have functionality in bridge core or bridge utilities (such as messages) |
|
than direct usage of PMAPI from IMAP or SMTP. Also database (BoltDB) should be moved to bridge core. |
|
|
|
```mermaid |
|
graph LR |
|
S[Server] |
|
C[Client] |
|
U[User] |
|
|
|
subgraph "Bridge app" |
|
Core[Bridge core] |
|
API[PMAPI] |
|
Store |
|
DB[BoltDB] |
|
Frontend["Qt / CLI"] |
|
IMAP |
|
SMTP |
|
|
|
IMAP --> Store |
|
IMAP --> Core |
|
SMTP --> Core |
|
SMTP --> API |
|
Core --> API |
|
Core --> Store |
|
Store --> API |
|
Store --> DB |
|
Frontend --> Core |
|
|
|
end |
|
|
|
C --> IMAP |
|
C --> SMTP |
|
U --> Frontend |
|
API --> S |
|
``` |
|
|
|
## Code structure |
|
|
|
More detailed graph of main types used in Bridge app and connection between them. Here is already |
|
communication to PMAPI only from bridge core which is not true, yet. IMAP and SMTP are still calling |
|
PMAPI directly. |
|
|
|
```mermaid |
|
graph TD |
|
|
|
C["Client (e.g. Thunderbird)"] |
|
PM[ProtonMail Server] |
|
|
|
subgraph "Bridge app" |
|
subgraph "Bridge core" |
|
B[Bridge] |
|
U[User] |
|
|
|
B --> U |
|
end |
|
|
|
subgraph Store |
|
StoreU[Store User] |
|
StoreA[Address] |
|
StoreM[Mailbox] |
|
|
|
StoreU --> StoreA |
|
StoreA --> StoreM |
|
end |
|
|
|
subgraph Credentials |
|
CredStore[Store] |
|
Creds[Credentials] |
|
|
|
CredStore --> Creds |
|
end |
|
|
|
subgraph Frontend |
|
CLI |
|
Qt |
|
end |
|
|
|
subgraph IMAP |
|
IB[IMAP backend] |
|
IA[IMAP address] |
|
IM[IMAP mailbox] |
|
|
|
IB --> B |
|
IB --> IA |
|
IA --> IM |
|
IA --> U |
|
IA --> StoreA |
|
IM --> StoreM |
|
end |
|
|
|
subgraph SMTP |
|
SB[SMTP backend] |
|
SS[SMTP session] |
|
|
|
SB --> B |
|
SB --> SS |
|
SS --> U |
|
end |
|
end |
|
|
|
subgraph PMAPI |
|
AC[Client] |
|
end |
|
|
|
C --> IB |
|
C --> SB |
|
|
|
CLI --> B |
|
Qt --> B |
|
|
|
U --> CredStore |
|
U --> Creds |
|
|
|
U --> StoreU |
|
|
|
StoreU --> AC |
|
StoreA --> AC |
|
StoreM --> AC |
|
|
|
B --> AC |
|
U --> AC |
|
|
|
AC --> PM |
|
``` |
|
|
|
## How to debug |
|
|
|
Run `make run-debug` which starts [Delve](https://github.com/go-delve/delve).
|
|
|