Evgeny Poberezkin
0437796232
support multiple server hosts with notifications ( #498 )
...
* support multiple server hosts with notifications
* remove unused type
* remove unused import
* update server hosts during parsing
2022-08-14 21:10:34 +01:00
Evgeny Poberezkin
02bba01c16
send host events when server hosts are connected and disconnected ( #496 )
2022-08-13 11:57:36 +01:00
Evgeny Poberezkin
68138c08d2
support multiple server hostnames per queue ( #494 )
...
* store SMP client version per queue
* use versioned format for queue addresses (not compatible with v1)
* multiple server hosts in queue URI/data, versioned encoding (cross-version tests fail)
* choose server host based on socksProxy setting
* test works
* multiple server addresses mostly work
* add onion hosts for provided servers
* update SMP hosts
2022-08-12 11:32:04 +01:00
Evgeny Poberezkin
6bfaa4985e
expire messages after 2 days, increase max message sending interval ( #490 )
...
* expire messages after 2 days, increase max message sending interval
* rename
2022-08-11 10:15:08 +01:00
Evgeny Poberezkin
7d99c4b35c
reconnect agent clients on any network config change ( #489 )
...
* reconnect agent clients on any network config change
* add Eq instances
2022-08-03 09:59:49 +01:00
Evgeny Poberezkin
e9db0a1162
allow passing all network configuration to the agent ( #488 )
2022-08-02 13:30:00 +01:00
Evgeny Poberezkin
fcaddb7848
agent functions to get/set network configuration ( #484 )
...
* agent functions to get/set network configuration
* fix condition
2022-07-25 13:50:46 +01:00
Evgeny Poberezkin
eb1f9370c1
fix GET from contact connection ( #480 )
2022-07-21 19:42:31 +01:00
Evgeny Poberezkin
d810db4eed
send servers in agent events ( #478 )
...
* send servers in agent events
* remove some changes
* command/function to get connection servers
* getConnectionServers return type
2022-07-20 13:56:43 +01:00
Evgeny Poberezkin
1ce63bee44
create notification subscriptions in batch subscribe ( #477 )
...
* create notification subscriptions in batch subscribe
* refactor
* refactor
2022-07-19 09:30:17 +01:00
Evgeny Poberezkin
a6f401041a
SMP protocol v4: batching multiple server commands/responses in a transport block ( #470 )
...
* batch server commands in one transport block
* subscribe to multiple queues using batched commands
* agent method to subscribe to multiple queues using batched commands
* refactor
* test for batched subscriptions
* delete part of connections in batched test
* add resubscribeConnections
* remove comment
* update SMP protocol doc
2022-07-17 10:10:38 +01:00
Evgeny Poberezkin
7a238812b7
ntf server: fix resubscribing to SMP server after it was restarted, test ( #465 )
2022-07-08 14:46:01 +01:00
Evgeny Poberezkin
cc798145d2
suspend agent without delay ( #463 )
...
* suspend agent without delay
* suspend/activate in separate atomically
2022-07-06 13:58:58 +01:00
Evgeny Poberezkin
abd694bd5a
parameterize protocol server by scheme ( #459 )
2022-07-05 21:56:14 +01:00
Evgeny Poberezkin
9c1b43791c
SMP v3: encrypt message timestamp and flags together with the body between server and recipient ( #457 )
...
* SMP v3: encrypt message timestamp and flags together with the body between server and recipient
* v3 tests
* update protocol doc
* add test for max size message
* delay in notifications test
* simplify v3
* encrypt server message to the recipient when sent
* refactor
* exit on error restoring the messages
* refactor, increase test timeout
* style
* add prints to the test
* remove error from unsafeMaxLenBS
* update protocol
* lint, improve test, change func param
2022-07-05 21:08:05 +01:00
Evgeny Poberezkin
f9cd7e5416
suspend ntf operations when agent is suspended ( #453 )
...
* suspend ntf operations when agent is suspended
* end and begin ntf operation on loop
2022-07-01 22:43:18 +01:00
JRoberts
9695786aa5
ntf: separate types into their own module ( #444 )
2022-06-30 14:31:36 +04:00
JRoberts
79d67694ed
ntf: flush ntfSubQ on deleting all subscriptions ( #442 )
2022-06-30 13:39:24 +04:00
JRoberts
6c14372666
fix linter warning
2022-06-29 15:35:41 +04:00
Evgeny Poberezkin
c9501a23a0
remove TODOs
2022-06-29 08:40:21 +01:00
Evgeny Poberezkin
926e515bc0
fix v2 connecting via v1 contact ( #438 )
2022-06-29 08:38:51 +01:00
Evgeny Poberezkin
ba40d75886
verifyNtfToken: change args order ( #434 )
2022-06-27 19:33:36 +01:00
JRoberts
3d6ad64d62
ntf: registerNtfToken rework, notification modes ( #431 )
...
* check mode for new subscriptions
* check token inside actions
* migration - apple -> apns
* wip
* register logic, modes
* update mode, cron config, verify token changes
* refactor
* fix test
* NTFMODE
* server: delete subscriptions on deleteToken
* refactor markNtfSubscriptionForDeletion
* remove NTFMODE
* remove subscriptions when token is deleted
* refactor
* lint
* test
* check ntfMode
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2022-06-27 21:54:35 +04:00
Evgeny Poberezkin
51d0b48ce1
suspend/activate agent ( #432 )
...
* suspend/activate agent
* deliver pending messages before agent is suspended
* refactor
2022-06-26 14:15:33 +01:00
Evgeny Poberezkin
a8260290e7
token encodings ( #430 )
2022-06-25 16:17:39 +01:00
JRoberts
2809963a2e
ntf: register token with NotificationsMode ( #429 )
2022-06-25 17:34:08 +04:00
Evgeny Poberezkin
d2321b750d
get/set notification mode ( #428 )
...
* get/set notification mode
* update method
2022-06-25 14:48:15 +04:00
JRoberts
70e7c71762
ntf: read rcv queue separately from ntf subscription, fix deletion race condition ( #423 )
2022-06-24 16:51:42 +04:00
JRoberts
a92827c986
ntf: notification server SDEL command; subscription deletion in agent ( #421 )
2022-06-23 17:05:43 +04:00
Evgeny Poberezkin
0d9d549cea
unlock next GET with ACK ( #418 )
2022-06-22 08:12:18 +01:00
JRoberts
7a72488275
ntf: use separate key to encrypt NMsgMeta ( #410 )
...
* ntf: use separate key to encrypt NMsgMeta
* key negotiation
* save key on server, use for encryption
* refactor?
* store error
* NtfQueueCreds
* server - NtfCreds
* comment, rename
* fix type
* ClientNtfCreds
* encoding
2022-06-20 17:16:26 +04:00
Evgeny Poberezkin
0ab44b1836
get multiple messages when notification is processed ( #411 )
...
* get multiple messages when notification is processed
* change notification property
2022-06-19 13:23:35 +01:00
Evgeny Poberezkin
d1db7d6f79
withStore runs in a single transaction ( #408 )
...
* remove store typeclass
* make withStore run single transaction
* combine 2 store calls
* refactor
* add exports
* fix catch
* correction
2022-06-18 18:01:04 +01:00
JRoberts
ec70429106
ntf: getNotificationMessage' ( #406 )
...
* ntf: getNotificationMessage'
* refactor
* ntfTs
* fix parser
* length
* fix test
* fix encryption, test
* remove test focus
* getActiveNtfToken
* rename
* Update src/Simplex/Messaging/Protocol.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* getNtfRcvQueue
* refactor
* don't fail
* Update src/Simplex/Messaging/Notifications/Protocol.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Update src/Simplex/Messaging/Notifications/Server.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Update src/Simplex/Messaging/Server.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* import
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2022-06-18 18:21:35 +04:00
JRoberts
3336f987c3
ntf: SCHK, cancel actions on errors, wait until action ts before executing ( #402 )
...
* SCHK
* NSACheck
* updateSubFutureTs
* dont execute too early
* fix diffTimeToMillis
* rename function
* errors
* nested status
* increase ntfSubCheckInterval
* adjust import
* Update src/Simplex/Messaging/Agent/NtfSubSupervisor.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Update src/Simplex/Messaging/Agent/NtfSubSupervisor.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* refactor rescheduleAction
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2022-06-16 16:11:46 +04:00
Evgeny Poberezkin
1d56ef3a60
agent method to GET message ( #403 )
...
* agent method to GET message
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
2022-06-16 12:35:17 +01:00
JRoberts
331918bac7
ntf: agent tests ( #399 )
2022-06-15 14:22:55 +04:00
JRoberts
f7bd8a3982
ntf: agent ntf workers implementation, store methods ( #394 )
2022-06-14 14:34:18 +04:00
Evgeny Poberezkin
68c2682e70
ios: synchronizing processing between app & nse ( #398 )
...
* ios: synchronizing processing between app & nse
* update rfc
* add sequence diagram
* manage agent phase
* track agent operation and phase changes
* update
* remove APInactive
* Update src/Simplex/Messaging/Agent/Protocol.hs
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
2022-06-14 13:27:45 +04:00
Evgeny Poberezkin
62485b9367
re-deliver duplicate message if it was not acknowledged by the user, ignore otherwise ( #397 )
...
* re-deliver duplicate message if it was not acknowledged by the user, ignore otherwise
* delete message after ACK
2022-06-13 08:27:08 +01:00
JRoberts
9c12b4edc0
ntf: agent spike, NtfSupervisor ( #392 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2022-06-10 16:35:06 +04:00
Evgeny Poberezkin
c1348aa54f
SMP connection handshake v2 ( #390 )
...
* SMP connection handshake v2
* hadshake v2 [mostly] works
* all tests pass, some race conditions remain
* fix build
* fix race conditions, send CON after all HELLOs in duplexHandshake mode
* add comments
* comment
* add comments
2022-06-09 13:47:07 +01:00
Evgeny Poberezkin
60294521f4
add msgId to ACK to avoid the risks of losing messages with concurrent delivery (in app/NSE) ( #387 )
...
* add msgId to ACK to avoid the risks of losing messages with concurrent delivery (in app/NSE)
* update ACK to only remove message and update stats if msgId matches
* add tests, fix
* rename sameMsgId/msgDeleted
2022-06-07 10:18:40 +01:00
Evgeny Poberezkin
4b3d04bd27
support message flags visible to SMP server to control notifications (and for any future extensions) ( #386 )
...
* support stopping and resuming agent (#385 )
* export agentDbPath
* support fully closing and resuming agent
* whitespace
* clean up
* support message flags visible to SMP server to control notifications (and for any future extensions)
* simplify message flags encoding
* GET command
2022-06-06 12:59:45 +01:00
Evgeny Poberezkin
2733a09a40
limit concurrency when resubscribing, method to resubscribe if not subscribed ( #368 )
2022-04-30 09:36:52 +01:00
Evgeny Poberezkin
7652ece045
registerNtfToken returns token status
2022-04-22 17:50:30 +01:00
Evgeny Poberezkin
e6fbaf5e50
primary tokens ( #356 )
...
* primary tokens
* support repeat token registration (TODO fix tests)
* fix notifications tests
* fix/test repeat/new registrations of the same token
* re-register token when subsequent ntf command fails with AUTH error (e.g. when server is re-started)
* cancel periodic notifications when token is deleted on the server
* debug failing test on CI
* fix notification test in CI
* debug CI test
* add delay in notificaitons test after server restart
2022-04-21 17:04:26 +01:00
Evgeny Poberezkin
4dc7d9bc77
Merge branch 'master' into notifications-server
2022-04-21 14:35:23 +01:00
JRoberts
12caa328a8
SMP confirmation timeout recovery rfc ( #357 )
2022-04-20 22:17:51 +01:00
Evgeny Poberezkin
9d8a9c4fe4
interval notifications (TCRN command) ( #352 )
...
* notifications: periodic notifications
* agent: allow repeat token registrations, delete old tokens from notification server (e.g., when database is moved to another device)
* decrypt token verification code in the agent
* check token status, send TCRN on registration if it was enabled
* fix http2/apns response handling for error responses (also, APNS seems not to send content-length header?)
2022-04-17 10:34:51 +01:00