Alexander Bondarenko
76eddfbc9d
transport: fetch and store server certificate ( #985 )
...
* THandleParams (WIP, does not compile)
* transport: fetch and store server certificate
* smp: add getOnlinePubKey example to smpClientHandshake
* add server certs and sign authPub
* cleanup
* update
* style
* load server certs from test fixtures
* sign ntf authPubKey
* fix onServerCertificate
* increase delay before sending messages
* require certificate with key in SMP server handshake
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-02-13 15:02:03 +00:00
Evgeny Poberezkin
6aec0b13fd
use different algorithms to authorize snd/rcv commands, use random correlation ID
2024-02-12 22:31:31 +00:00
Evgeny Poberezkin
daafa3abda
Merge branch 'master' into ep/cmd-auth
2024-02-12 20:44:06 +00:00
Alexander Bondarenko
57e7c8ef6b
smp-server: add cert CLI command to rotate online certificate ( #984 )
...
* smp-server: add gen-online CLI command
* use CN and algo from old certificate
* add cert checks to test
* rename command
* fix test
* cert
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-02-12 20:17:08 +00:00
Evgeny Poberezkin
0c89d1a1cd
increase auth timing test failure threshold
2024-02-10 12:14:29 +00:00
Evgeny Poberezkin
b5b1709c24
rename version
2024-02-10 12:13:05 +00:00
Evgeny Poberezkin
8cb82deb9a
comments, disable two timing tests
2024-02-10 11:42:25 +00:00
Evgeny Poberezkin
c63a58885b
uncomment SUB timing test
2024-02-10 10:27:17 +00:00
Evgeny Poberezkin
769fca28a8
server "warm up" fixes timing test
2024-02-10 10:21:17 +00:00
Evgeny Poberezkin
0d8a4b86e8
refactor auth verification in the server, split tests
2024-02-10 10:05:56 +00:00
Evgeny Poberezkin
a734c29eeb
do not send session ID in each transmission
2024-02-09 19:53:06 +00:00
Evgeny Poberezkin
3295fbee8b
test batching SMP v7
2024-02-08 23:54:09 +00:00
Evgeny Poberezkin
816d9a9d91
separate client and server versions for SMP protocol
2024-02-08 22:20:29 +00:00
Evgeny Poberezkin
c029b715fb
fix/add tests, add version config to "small" agent
2024-02-08 19:57:45 +00:00
Evgeny Poberezkin
64e772bfb0
support authenticators in NTF protocol, test matrix (no backwards compatibility yet from new clients to old servers)
2024-02-08 13:41:21 +00:00
Evgeny Poberezkin
1a7336aa26
make TransmissionAuth Maybe
2024-02-07 00:19:12 +00:00
Evgeny Poberezkin
3efdd7a256
extract authenticator to Crypto module
2024-02-06 23:40:42 +00:00
Evgeny Poberezkin
38cfd57862
authorize via crypto_box
2024-02-06 22:39:20 +00:00
Evgeny Poberezkin
9a93c6ba80
remove old tests
2024-02-06 09:17:34 +00:00
Evgeny Poberezkin
a7a467196f
smp: command authorization
2024-02-05 09:07:27 +00:00
Evgeny Poberezkin
2ae1c9f79d
agent: only retry connecting SMP clients when there are pending subscriptions ( #981 )
...
* agent: only retry connecting SMP clients when there are pending subscriptions
* fix
* remove retry on creating clients
* simplify
2024-02-01 16:17:37 +00:00
Alexander Bondarenko
cb64dabf75
tests: fix sporadic failures from reading stats ( #975 )
2024-01-30 11:36:07 +00:00
Alexander Bondarenko
f7cdec2f08
fix: support multiple notification servers in configuration ( #971 )
...
* tests: add trpl-keeps-server check
* add smp server switch check
* add connection test and fix withNtfServer
* Update src/Simplex/Messaging/Agent/NtfSubSupervisor.hs
Co-authored-by: Evgeny Poberezkin <e.poberezkin@me.com >
* use ntfServer from token
* rename
---------
Co-authored-by: Evgeny Poberezkin <e.poberezkin@me.com >
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-01-19 19:42:28 +00:00
Evgeny Poberezkin
baf2c47065
agent: expire messages failed after quota exceeded after 7 days, and expire multiple messages at once ( #973 )
...
* agent: expire messages failed after quota exceeded after 7 days, and expire multiple messages at once
* fix, test
* refactor
* catch in loop
2024-01-19 17:21:25 +00:00
Alexander Bondarenko
40fa34c2d5
tests: test multiple Ntf servers ( #966 )
...
* tests: add ntf case with multiple Ntf servers
* simplify test
* fix for master
* add server switch test
* add server switch test
* add message test for ntf server switch
2024-01-17 19:47:47 +00:00
Alexander Bondarenko
eb41abfb8f
tests: fix random order in async commands case ( #969 )
2024-01-17 11:48:41 +00:00
Evgeny Poberezkin
b547f34cc0
Revert "Revert "agent: do not create user record in new databases ( #957 )" ( #963 )" ( #964 )
...
* Revert "Revert "agent: do not create user record in new databases (#957 )" (#963 )"
This reverts commit aee9088417 .
* tests
* remove logging
2024-01-17 11:01:04 +00:00
Evgeny Poberezkin
00c4ff4a21
agent: fix race condition in subscription worker (results in stuck delivery), better error handling in batch operations ( #962 )
...
* debugging test: join connection when reply queue creation fails
* more logs
* more logs
* more logs, fixed bug
* cleanup
* catch all errors
* simplify
* comment
* remove client ID counter
2024-01-16 10:29:35 +00:00
Evgeny Poberezkin
aee9088417
Revert "agent: do not create user record in new databases ( #957 )" ( #963 )
...
This reverts commit 9b9a0bd0df .
2024-01-14 22:28:28 +00:00
Evgeny Poberezkin
7f7a77c4eb
SMP protocol: optimize batching transactions, remove Builder ( #961 )
...
* remove Builder
* fewer chunks
* remove lazy bytestrings
* optimize
* pad
2024-01-14 20:42:47 +00:00
Alexander Bondarenko
68f5e189a6
smp: check for progress when resubscribing ( #956 )
...
* smp: check for progress when resubscribing
* add allowClose to reconnectServer to distinguish entry points
* resolve error todo
* make reconnect async per-session
* remove allowClose
* deregister reconnecter when it finishes
* signal/react more work explicitly
* fix restart condition
* wait for reconnecter to finish
* remove redundant reconnect locks
* rename getClientVar for expanded scope
* formatting
* remove withPending
* move pending check to tryReconnectSMPClient loop
* combine pending check and slot release transactions
* actually reserve the slot for async
* simplify
* refactor
* refactor
* use removeClientVar
* rename
* refactor
* test
* reduce MonadError scope
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2024-01-12 19:29:18 +00:00
Evgeny Poberezkin
9b9a0bd0df
agent: do not create user record in new databases ( #957 )
...
* agent: do not create user record in new databases
* update
2024-01-12 16:57:57 +00:00
Evgeny Poberezkin
ca527b4d6c
use Builder for batching commands ( #953 )
...
* use Builder for batching commands
* refactor
* refactor
* increase timeout in test
* do not materialize builder
* use concat
* debug test
* debug2
* delays
* more delay, less worker delay
* remove logs
* reduce delay
* tests
* sized builder
* builder
* comment
* remove unsafe
* style
* remove fromIntegral
2024-01-08 22:54:27 +00:00
Alexander Bondarenko
34056b9d7b
xftp-server: add control port ( #951 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2024-01-05 17:36:19 +00:00
Alexander Bondarenko
b4495bb4f0
xftp-server: fix stats ( #944 )
...
* xftp-server: fix stats
* count file expirations
* rename
* simplify
* check files size
* store and fix fileSize check
* do
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2024-01-05 11:30:27 +00:00
Alexander Bondarenko
36298f2cea
smp-server: update stats ( #943 )
...
* smp-server: check queue balance in stats vs store
* smp-server: add msgExpired stats
* add msgExpired stats
* split expire/stats transactions
* count and pass msgExpired explicitly
* save/load qCount and use it for checking store
2024-01-02 21:24:17 +00:00
Alexander Bondarenko
7eb7bd5e81
xftp-server: add inactiveClientExpiration ( #936 )
...
* xftp-server: add inactiveClientExpiration
* fix test config
* add test
* add xftpPing
* switch to PCEUnexpectedResponse
* remove watchdog when server quits
* rename, loop
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-12-27 20:31:19 +00:00
spaced4ndy
e43e4860b9
xftp: file workers cycle through pending files based on retries count (limit number of iterations per work item to prevent stuck delivery) ( #930 )
...
* xftp: test file reception - shouldn't get stuck if file is deleted on server
* comment
* expiration test
* approach
* wip
* sort by retries in other works, revert some diff
* revert diff
* modify tests
* refactor
* refactor
* remove prints
* apply to other workers
* remove import
* comment
* refactor
* revert queue size
* fix test
* rename
* comment, correct number of retries
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-12-26 22:20:25 +00:00
Alexander Bondarenko
efe7ce27e7
control: add delete command ( #933 )
...
* control: add delete command
* logDeleteQueue only when found
* use default StrEncoding for CPDelete arg
* move stats update from main transaction
* use size
* stabilize AUTH timing tests
* more iterations
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-12-26 20:20:12 +00:00
Evgeny Poberezkin
577e3cf14d
agent: add server msg IDs to agent logs, disable 2 tests ( #934 )
...
* agent: race when using agent via TCP
* remove logs
* enable tests
* comments
* use different databases for different clients
* enable all tests
2023-12-26 17:50:39 +00:00
Evgeny Poberezkin
7ddeca50e4
agent: mark work items failed ( #931 )
...
* agent: mark work items failed (WIP)
* add tests, created_at
* getWorkItem for snd and rcv files
* fix
* tests
* fix
* tests
* test
* tests
* rename
* fix,refactor
* add indexes
* update schema
* do not try to get more work when resuming an existing worker
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-12-26 17:00:42 +04:00
Evgeny Poberezkin
2489333c87
agent: use DB to queue async commands and messages ( #929 )
...
* agent: use DB to queue async commands and messages
* fix message delivery, async commands dont work
* fix async commands
* remove comment
* rename
* comment
* balance agent operation
* empty lines
* balance another agent operation
* diff
* worker
* qAddress
* fix incorrect queue ID in v1
* types for queues
* fix test
* update index
2023-12-23 12:59:53 +00:00
Evgeny Poberezkin
1c2604f6a3
agent: background mode for agent NSE ( #924 )
2023-12-22 08:59:07 +00:00
Evgeny Poberezkin
13a60d1d39
use ChaChaDRG as the source of randomness ( #920 )
...
* use ChaChaDRG as the source of randomness
* remove functions using entropy directly
* comment
2023-12-21 00:12:08 +00:00
Alexander Bondarenko
7c27357eb2
server: stop inactive clients without subscriptions, additional monitoring via control port ( #901 )
...
* fix thread labelling points
* add subscription thread labels
* add explicit sections for sockets/sessions/disconnects
* adjust label threads wrt. next blocking op
* WIP: emit event on server finish
So the event log wouldn't be cut short giving
false impression of unterminated sessions.
* add handshake timeout
* hack server socket stats
* trace closeTLS exceptions
* fix build
* clean up disconnectTransport
* make disconnectTransport terminating
Thus, participating in racyAny_ around it.
* trach snd/rcv time separately, log clients as CSV
* add direct client counting/stats
* add csv dump for socket threads
* guard socket threads dump from older GHC
* cut socket thread listing into socket-threads command
* store client creation time for stats
* wrap tls setup in timeout and labels
* server: expire clients without subscriptions
* fix check for subscriptions
* remove excess tracing
* move hardcoded timeouts to configs
* cleanup
* fix tests
* wrap direct queue waits in timeout
* rewrite old TCP wrappers with their SocketState variants
* add testInactiveWithSubs
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-12-19 15:50:45 +00:00
Evgeny Poberezkin
560dc55312
agent: notify about polled message processing (for iOS notifications) ( #908 )
...
* agent: notify about polled message processing (for iOS notifications)
* optionally keep key and support re-opening database
* exports
* test that cannot reopen when created with keepKey: false
* set max number of messages to receive for a notification to 3
2023-12-11 13:03:53 +00:00
Alexander Bondarenko
117168ccce
raise mtl version to 2.3.1 ( #912 )
...
* raise mtl version to 2.3.1
* fix test on 8.10
2023-12-02 11:43:36 +00:00
Alexander Bondarenko
6bffcc8503
compatibility with GHC 8.10.7 ( #906 )
...
* build with ghc-8.10
* add 8.10 to matrix
* cleanup
* stats
* remove getField
* agent
* server
* remote
* space
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-29 12:53:06 +00:00
Evgeny Poberezkin
cc8b8cd10d
agent: fix hanging test ( #907 )
2023-11-28 22:25:58 +00:00
Alexander Bondarenko
febf9019e2
remote: add controller address preferences ( #905 )
...
* remote: add controller address preferences
* suppress localhost from breaking multicast discovery w/o prefs
* rewrite findCtrlAddress
* refactor
* refactor2
* add tests
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-28 14:12:29 +00:00