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
e9db0a1162
allow passing all network configuration to the agent ( #488 )
2022-08-02 13:30:00 +01:00
Evgeny Poberezkin
b76ef03dbe
ntf: server stats ( #487 )
...
* nts: server stats
* ntf: collect stats, refactor
* rename property
* fixes
2022-08-01 08:42:23 +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
d788c3ca95
access servers via SOCKS proxy ( #482 )
...
* access servers via SOCKS proxy
* config to pass tcp timeout and option SOCKS5 proxy to the agent
2022-07-23 13:57:10 +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
6bbe1dfc66
use batch commands to resubscribe agent on server re-connection ( #473 )
2022-07-18 07:26:41 +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
cde8a11693
update stats logging and make it opt-in ( #472 )
...
* update stats logging and make it opt-in
* hSetBuffering
* update var name
2022-07-15 13:21:02 +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
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
bc26dc1d68
save and restore server stats on restart ( #460 )
2022-07-04 10:45:35 +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
5ff80f0688
ntf: test more scenarios of notifications mode change; test token change ( #454 )
2022-07-01 21:46:11 +04:00
Evgeny Poberezkin
926e515bc0
fix v2 connecting via v1 contact ( #438 )
2022-06-29 08:38:51 +01:00
Evgeny Poberezkin
85d507d5d3
ntf-server store log ( #435 )
...
* ntf-server store log
* ntf serevr: restore log when server is started, save compacted store log
* log ntf server store changes
* test, store log works
* update ntf-server exe
2022-06-28 17:10:50 +01:00
Evgeny Poberezkin
ba40d75886
verifyNtfToken: change args order ( #434 )
2022-06-27 19:33:36 +01:00
Evgeny Poberezkin
0c7c0d066d
support dev/prod APNS hosts ( #433 )
...
* support dev/prod APNS hosts
* fix test
2022-06-27 19:20:23 +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
JRoberts
2809963a2e
ntf: register token with NotificationsMode ( #429 )
2022-06-25 17:34:08 +04:00
Evgeny Poberezkin
c2f1dabcd0
fix agent phase, test ( #427 )
2022-06-25 08:13:07 +01:00
JRoberts
a92827c986
ntf: notification server SDEL command; subscription deletion in agent ( #421 )
2022-06-23 17:05:43 +04:00
Evgeny Poberezkin
f10e3f697c
notification server TRPL command ( #420 )
...
* notification server TRPL command
* test
* client methods
* only remove current token registration
2022-06-23 08:35:33 +01:00
JRoberts
ef4d4c9e16
ntf: remove notification subscription ( #417 )
2022-06-22 20:32:32 +04:00
Evgeny Poberezkin
ffb4b4763c
allow repeated NKEY ( #419 )
...
* allow repeated NKEY
* test
2022-06-22 14:00:46 +04:00
JRoberts
cd9cb19765
ntf: remove debug output from test
2022-06-21 14:09:05 +04: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
8c2227ccce
ntf: fix test ( #405 )
2022-06-16 19:22:21 +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
Evgeny Poberezkin
5f94240ed4
remove DB connection pool to prepare for using semaphores ( #400 )
2022-06-15 14:11:03 +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
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
Evgeny Poberezkin
91802fe94f
Merge branch 'master' into f/notifications
2022-06-12 16:49:56 +01:00
Evgeny Poberezkin
0a71822dd0
v2.3.0: save and restore messages when the server is restarted ( #395 )
...
* save and restore messages when server is restarted
* read file line by line
* add import
* optmize restoring messages by reading the whole file
* update version to 2.3.0
* update scripts
* add script
* update readme
2022-06-12 15:59:14 +01: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
JRoberts
bfb556c860
ntf: test notification subscription ( #389 )
2022-06-07 19:14:51 +04: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
c74f4d729b
create/verify agent schema during tests ( #374 )
...
* create/verify agent schema during tests
* add --indent to .schema, enable all tests
* remove -threaded from test
2022-05-24 19:28:40 +01:00
Evgeny Poberezkin
ace94d7c69
log server stats ( #367 )
...
* log server stats
* separate stats updates from the existing transactions
2022-04-30 13:47:21 +01:00
Evgeny Poberezkin
1064e9c315
disconnect inactive clients ( #366 )
...
* disconnect inactive clients
* update test description
* use one thread per client to disconnect inactive clients
* remove comments
* more comments
2022-04-30 10:56:01 +01:00
Evgeny Poberezkin
c6dde772b4
batch all connections in DOWN/UP agent messages ( #363 )
2022-04-25 08:26:52 +01:00
Evgeny Poberezkin
43d24d07dd
Merge pull request #334 from simplex-chat/notifications-server
...
push notifications server
2022-04-21 17:21:09 +01:00