spaced4ndy
ea67b34ba7
ntf: batch supervisor commands ( #1313 )
2024-09-13 15:26:57 +04:00
spaced4ndy
e247f691cb
agent: do not reuse notifier credentials when re-creating notification subscription; on deleting ntf sub delete directly on smp server skipping ntf server ( #1311 )
...
* agent: change notifier credentials when re-creating notification subscription
* skip ndel
* enable tests
* fix race
* Revert "fix race"
This reverts commit ed9b18e8a7 .
* delete record
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-09-12 14:02:51 +04:00
Evgeny
571d148bdf
agent: do not start delivery workers when there are no messages to deliver ( #1263 )
...
* agent: use weak ThreadId and forkIO in workers instead of async (reduce memory)
* agent: do not start and exit delivery workers when there are no messages to deliver (#1264 )
* agent: exit delivery workers when no messages to deliver
* only start delivery workers when there are pending messages
* fix
* focus test
* enable all tests
* lift
* do not exit workers when there is no work
2024-08-18 21:30:06 +01:00
Evgeny
7762b4d364
reduce the number of STM transactions ( #1255 )
...
* reduce the number of STM transactions
* reduce STM more
* refactor
* remove more
2024-08-09 16:38:46 +01:00
Evgeny
f4d1a33ed8
agent: retry loop that resumes subscriptions as soon as agent is moved to foreground, suspend retry loops while agent is suspended ( #1249 )
...
* agent: retry loop that resumes subscriptions as soon as agent is moved to foreground, suspend retry loops while agent is suspended
* reset retry enterval when moving to foreground
* account for network state too
* simplify
* typo
* simplify
2024-08-05 15:09:46 +01:00
Evgeny Poberezkin
47ae921b86
use strict Map ( #1241 )
2024-07-23 08:27:54 +01:00
Evgeny Poberezkin
051bf38bc7
agent: remove delays in notification processing, add notification stats ( #1235 )
...
* agent: remove delays in notification processing, add notification stats
* do not replace token after failed check
* more stats
* refactor
* fix
* backwards compatible JSON parsing
* retry deleting subscription on temporary error
* remove attempts to get multiple notification messages
* fix JSON decoding to be backwards compatible
2024-07-22 15:42:34 +01:00
Evgeny Poberezkin
e56bd0b47b
agent: add known servers ( #1225 )
...
* agent: add known servers
* test delays
* ServerCfg
* json encoding
* enabledServerCfg
* checkUserServers
2024-07-12 12:41:55 +01:00
spaced4ndy
c788692687
agent: servers summary types, api ( #1202 )
...
* agent: servers summary types, api [wip]
* encoding
* export
* Revert "export"
This reverts commit cd9f315fe8 .
* comment
* rename
* simplify types
* uncomment
* comment
* rework
* comment, exports
* save, restore stats wip
* remove
* rename
* save stats periodically
* sigint, sigterm experiments
* corrections
* remove some proxy stats
* increase stat
* proposed stats
* fields
* Revert "sigint, sigterm experiments"
This reverts commit f876fbd418 .
* wip
* retries -> attempts
* errs
* fix
* other errs
* more stat tracking
* sub stats
* remove xftp successes stats
* xftp stats tracking
* revert
* revert
* refactor
* remove imports
* comment
* Revert "refactor"
This reverts commit 26c368d82a .
* Revert "revert"
This reverts commit 4c9e3753b5 .
* Revert "revert"
This reverts commit 6f65644053 .
* todos
* persistence
* rename, fix
* config
* comment
* add started at to summary
* delete stats on user deletion
* reset api
* move
* getAgentServersSummary collect state logic
* corrections
* corrections
* remove
* rework
* decrease contention
* update
* more stats
* count sentProxied
* count subs
* remove unused
* comment
* remove comment
* comment
* export
* refactor
* cleanup
* intervals
* refactor
* refactor2
* refactor3
* refactor4
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2024-06-25 09:42:59 +04:00
spaced4ndy
3c0cd7efcc
agent: separate type for agent file errors ( #1185 )
2024-06-05 18:44:32 +04:00
Evgeny Poberezkin
875a56b75a
Merge branch 'stable'
2024-05-23 16:48:11 +01:00
Alexander Bondarenko
984394d906
core: remove MonadUnliftIO ExceptT orphans ( #1169 )
2024-05-23 16:44:00 +01:00
Evgeny Poberezkin
2b09ada392
agent: reduce interval for storing server connection errors to 3 seconds
2024-05-22 14:36:54 +01:00
Evgeny Poberezkin
8097df5540
agent: persist server connection error ( #1165 )
...
* agent: persist server connection
* comment, refactor
* fix tests, reduce interval for ntf server
* cleanup
* 0
2024-05-22 13:25:49 +01:00
Evgeny Poberezkin
f50589b31a
agent: remove external timeout to resubscribe ( #1164 )
...
* agent: remove external timeout to resubscribe
* liftIO
* fix tests
2024-05-21 22:52:22 +01:00
Evgeny Poberezkin
1bb6a5c43b
agent: do not increase network activity interval while offline ( #1159 )
...
* agent: do not increase network activity interval while offline
* test
2024-05-19 07:50:47 +01:00
Evgeny Poberezkin
ea21b296fd
agent: reset error count and do not report errors when consequitive timeouts happen while offline ( #1136 )
...
* agent: reset error count and do not report errors when consequitive timeouts happen while offline
* refactor
* comment
2024-05-08 15:33:51 +01:00
Evgeny Poberezkin
fe28e02be7
agent: make version independent of PQ enqryption support ( #1114 )
...
* agent: make version independent of PQ enqryption support
* remove comment
2024-04-22 13:40:24 +01:00
Evgeny Poberezkin
8fa9ed6317
wait for user network availability ( #1085 )
...
* ghc-options
* wait for user network availability
* test
* update
* comment
* refactor
* slow config
* line
* waitForUserNetwork in xftp and ntf workers
* refactor
* refactor with registerDelay
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-04-10 21:50:05 +01:00
Evgeny Poberezkin
6ded721daa
remove monad typeclasses to reduce overhead ( #1077 )
...
* remove monad typeclasses to reduce overhead
* remove unliftIO
* StrictData
* inline
* optional agent port
* avoid MonadUnliftIO instance (#1078 )
* avoid MonadUnliftIO instance
* simpler liftError'
* rename
* narrow down instance
* revert
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
* logServer
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2024-03-31 20:50:35 +01:00
Evgeny Poberezkin
4ffb6a348a
pqdr: use different newtypes for supporting and enabling PQ encryption in connections ( #1031 )
...
* pqdr: use different newtypes for supporting and enabling PQ encryption in connections
* rename field, fix test
* refactor
2024-03-06 21:28:03 +00:00
Evgeny Poberezkin
b050cf5027
double ratchet versioning for post-quantum encryption ( #1025 )
...
* correctly parse new Ratchet fields when omitted
* rfc: migrating connection versions to pqdr
* update rfc
* WIP (dont commit)
* rename versions
* update ratchet version based on PQ encryption feature flag
* remove duplicate function
* synchronize ratchet, fix tests, refactor
* comments
* test
* pattern
2024-03-05 17:07:15 +00:00
Evgeny Poberezkin
dd2bd11584
parameterize version scopes with phantom types ( #1026 )
...
* parameterize version scopes with phantom types
* move Version to another module
* parens
2024-03-04 19:06:51 +00:00
spaced4ndy
294d7ec8dd
agent: delay connection deletion to finish delivery of pending messages ( #1015 )
...
* agent: delay connection deletion to finish delivery of pending messages (wip)
* fixes, test
* notify, test
* add tests
* comment
* add test
* timeout
* test timeout
* up
* more tests
* rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2024-02-29 18:08:58 +00:00
Evgeny Poberezkin
416f1b1721
smp: command authorization ( #982 )
...
* smp: command authorization
* fix encoding, most tests
* remove old tests
* authorize via crypto_box
* extract authenticator to Crypto module
* make TransmissionAuth Maybe
* rfc
* support authenticators in NTF protocol, test matrix (no backwards compatibility yet from new clients to old servers)
* fix/add tests, add version config to "small" agent
* separate client and server versions for SMP protocol
* test batching SMP v7
* do not send session ID in each transmission
* refactor auth verification in the server, split tests
* server "warm up" fixes timing test
* uncomment SUB timing test
* comments, disable two timing tests
* rename version
* increase auth timing test failure threshold
* use different algorithms to authorize snd/rcv commands, use random correlation ID
* 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 >
* remove dhSecret from THandle
* remove v8, merge all changes to one version
* parameterize THandle
* rfc: transmission ecnryption
* Revert "parameterize THandle"
This reverts commit 75adfc94fb .
* use batch syntax for ntf server commands
* separate encodeTransmission when there is no key
* typo
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* rename
* diff
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-02-16 11:45:54 +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
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
fa794d7878
agent: send errors on subscription timeouts ( #937 )
...
* agent: debug server reconnections
* update lock only if it has the same name already
* report subscription timeouts
* clean up
2024-01-05 17:36:57 +00:00
Evgeny Poberezkin
2488cf1e3a
agent: restart worker when it terminated ( #948 )
...
* agent: restart worker when it terminated
* comment
* remove writeTMVar
* remove writeTMVar 2
* remove writeTMVar 3
2024-01-05 14:22:26 +00:00
spaced4ndy
22e1932372
xftp, ntf: refactor, reuse workers abstractions ( #935 )
...
* xftp: refactor, reuse workers abstractions (wip, test fails)
* rename
* refactor (tests pass)
* refactor2
* linebreaks
* do
* reuse worker abstractions for notifications
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-12-27 13:02:08 +04: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
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
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
40ba94ce72
remote: add multicast discovery w/ encrypted announce ( #895 )
...
* Implement multicast discovery
* replace rcConnectMulticast with explicit discoverRCCtrl
* add multicast source/invitation host check
* remove JSON encoding for multicast invitations
* add specific error for announcing "new" controllers
* rename
* set size, rename
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-17 17:56:14 +00:00
Evgeny Poberezkin
4660ee9cff
agent: revert to TVar ( #883 )
2023-11-01 09:15:51 +00:00
Evgeny Poberezkin
b5f733d2db
agent: use IORef for DRG ( #882 )
2023-10-31 23:52:13 +00:00
Evgeny Poberezkin
58cb2855d2
agent: delivery receipts ( #752 )
...
* rfc: delivery receipts
* update doc
* update rfc
* implementation plan, types, schema
* migration, update types
* update types
* rename migration
* export MsgReceiptStatus, JSON encoding
* update rfc, schema
* correction
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* skeleton of the implementation
* more implementation (some tests fail)
* more code, 1 test fails
* fix encoding
* refactor
* refactor
* test, fix
* only send receipts in v3+, test
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* agent version 4 required to send receipts
* fix test
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-07-13 22:33:48 +01:00
Evgeny Poberezkin
532cd2f39c
fix allFinally
2023-07-09 21:36:23 +01:00
Evgeny Poberezkin
f76a5ca5b6
agent: catch IO errors correctly in MonadError ( #795 )
...
* agent: catch IO errors correctly in MonadError
* correction
* correction
* utils
* agentFinally to catch IO exceptions in ExceptT
* rename
* remove, inline
* rename utils
* utils unit test
* test to show catch and finally problems
* tryAllErrors
* enable all tests
2023-07-09 18:04:45 +01:00
spaced4ndy
8be2505fa0
ratchet re-synchronization ( #774 )
...
* ratchet re-synchronization rfc wip
* additions
* additions, types
* fix tests
* re-sync implementation wip
* re-sync implementation 1st rev.
* test wip
* test passes
* doc
* wording
* improve doc schema
* single agreed state
* refactor (1 state variable)
* allowed -> required
* prohibit enqueue
* enqueue
* send via multiple queues
* test with server offline
* clarify errors
* rename
* more tests
* refactor
* rename AgentRKey
* rename AM_CONN_RATCHET_KEY
* more tests
* rename
* write encoded AgentRatchetInfo to AgentRatchetKey info
* move withConnLock
* refactor qDuplex
* re-create ratchet on receiving second key
* invert condition
* refactor
* simplify
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-06-30 14:17:08 +04:00
spaced4ndy
6c6f22051d
check previous encrypted message hashes for duplicates on decryption errors ( #756 )
2023-05-17 15:42:57 +04:00
spaced4ndy
e346a81e46
xftp: delete snd files on servers ( #722 )
2023-04-13 17:46:43 +04:00
spaced4ndy
d35bd8a954
xftp: restore snd files, expire snd files in agent ( #718 )
2023-04-11 22:00:09 +04:00
spaced4ndy
d8e60ecfdb
xftp: recoverable send - spike ( #707 )
2023-04-07 11:19:50 +04:00
spaced4ndy
bdff274f56
use Int64 for time calculations ( #706 )
2023-04-04 14:51:13 +04:00
spaced4ndy
e27c4f7b81
xftp: notify about errors on rcv files retry; process snd files errors ( #700 )
2023-03-30 16:26:33 +04:00
spaced4ndy
b5869cf169
xftp: agent to expire rcv files older than 2 days ( #699 )
2023-03-28 15:23:08 +04:00
Evgeny Poberezkin
6a665a0833
support down migrations ( #696 )
...
* support down migrations
* test
* update
* add down migrations and tests
* get current migrations
* corrections
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* update tests
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-03-27 12:44:53 +01:00
spaced4ndy
0df7733125
xftp: relative file paths, worker management ( #694 )
2023-03-22 15:34:25 +04:00
Evgeny Poberezkin
d41c2bec2a
store retry intervals to resume from the same interval on restart ( #693 )
...
* store retry intervals to resume from the same interval on restart
* add migration
* updates
2023-03-22 08:42:56 +00:00