Evgeny Poberezkin
61e0c346df
simplify C.sign, Crypto tests, triage TODOs ( #592 )
...
* simplify C.sign, Crypto tests, triage TODOs
* update condition
* remove todos
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2023-01-06 15:34:05 +00:00
Evgeny Poberezkin
058e3ac55e
send/process "quota exceeded" message from SMP server when sender gets ERR QUOTA ( #585 )
...
* send "quota exceeded" message from SMP server when sender gets ERR QUOTA (ignored in the agent for now)
* send msg quota to the recipient to indicate that sender got ERR QUOTA, test
* switch between slow/fast retry intervals (tests do not pass yet)
* send QCONT message, refactor RetryInterval, test
* refactor
* remove comment
* remove space
* unit test for withRetryLock2
* refactor
2023-01-04 14:10:13 +00:00
Evgeny Poberezkin
874f9f5cd6
option to enable/disable TLS handshake error logs (disable by default) ( #581 )
...
* option to enable/disable TLS handshake error logs (disable by default)
* refactor
2022-12-27 10:13:51 +00:00
Evgeny Poberezkin
1d3a604988
refactor SMP client, NTF server store ( #580 )
...
* refactor SMP client, NTF server store
* remove undefined
2022-12-26 18:54:28 +00:00
Evgeny Poberezkin
267236a4f8
remove unnecessary exception handler, error format in stats
2022-12-26 13:00:41 +00:00
Evgeny Poberezkin
aa17cc55c1
collect agent stats ( #579 )
...
* collect agent stats
* remove comment
2022-12-26 12:02:20 +00:00
Evgeny Poberezkin
e4842f4f47
agent: include server address string into BROKER errors ( #575 )
...
* agent: include server address string into BROKER errors
* eol
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-11-30 08:25:07 +00:00
Evgeny Poberezkin
f3b6ed4db0
agent API for SMP server test ( #563 )
...
* agent API for SMP server test
* add JSON encoding
2022-11-15 07:50:46 +00:00
Evgeny Poberezkin
e281efdcb8
server: SMP basic auth ( #561 )
...
* server: SMP basic auth
* update ini default
* rfc, types
* tests
* update INI file
* typo
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* refactor
* update INI options, log new queue creation mode on start (on/off/requires auth)
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-11-12 22:29:36 +00:00
JRoberts
d9a0e78b04
add optional client data field to ConnectionRequestUri ( #551 )
...
* add optional auxiliary data field to ConnectionRequestUri
* remove import
* fix, test
* fix StrEncoding Char
* data only in sync command, type
* fixing
* queryParamStr
* safeDecodeUtf8
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2022-11-01 13:42:44 +04:00
Evgeny Poberezkin
4beaafa35a
add queue directions to SWITCH events ( #553 )
2022-11-01 08:44:32 +00:00
Evgeny Poberezkin
561649a498
add JSON instances for SwitchPhase ( #552 )
2022-10-31 17:09:01 +00:00
Evgeny Poberezkin
8d9816809f
simplify queue rotation protocol ( #550 )
...
* simplify queue rotation protocol
* use simplified rotation protocol, update tests
* simplify schema
* delete all connection queues
* refactor
* switch notifications to the new queue, tests
* remove TODO
* refactor
* rfc correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* remove duplicate set active
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-31 13:33:28 +04:00
Evgeny Poberezkin
eb5c1c78cb
connection queue redundancy and rotation ( #521 )
...
* rfc: queue rotation
* update rfc
* messages for queue rotation
* allow multiple subscribed queues per connection in Agent/Client.hs
* refactor
* fix module name
* allow multiple queues in duplex connection type
* update commands
* add indices
* addConnectionRcvQueue
* switch connection to another queue (WIP)
* update schema/protocol
* switching queue works, but sending messages after the switch fails
* messages are delivered after rotation
* use connection-scoped queue ID
* rename queue records fields
* refactor using SMPQueue class/instances
* simplify queries
* QKEY: check queue is not secured, refactor
* update rfc
* mark queue as primary in QUSE
* queue rotation errors
* fix async ack
* fix async ACK to send OK
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* use SWCH command
* rename
* take into account only active queue subscription when determining connection result if at least one queue is active
* remove comment
* only enable notifications for connections with enableNtfs = True
* async test (WIP)
* async queue rotation test
* simplify combining results
* test with 2 servers
* fix unused subscribeConnection
* switch to cabal build
* increase build timeout
* increase delay in async test
* skip queue rotation tests
* build matrix
* step name
* use ubuntu-18.04 in build matrix
* enable rotation tests
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-29 18:57:01 +01:00
Evgeny Poberezkin
19aef52135
debug agent locks
2022-10-22 16:43:14 +01:00
Evgeny Poberezkin
d06bb2b9c5
use KDF in X3DH ( #548 )
...
* use KDF in X3DH
* configure ratchet version via agent config, test matrix
* add comment
2022-10-20 11:03:19 +01:00
Evgeny Poberezkin
0fa40fbfb0
fix: connection-level locks ( #543 )
...
* fix: connection-level locks
* add context to store error
* convert SERatchetNotFound to CONN NOT_FOUND
2022-10-04 14:36:51 +01:00
Evgeny Poberezkin
f4baa5d672
increase concurrency with per-connection locks ( #542 )
...
* increase concurrency with per-connection locks
* only send CONNECT if the client wasnt connected already
2022-10-04 09:58:19 +01:00
Evgeny Poberezkin
29332a5e9f
lints ( #539 )
...
* lints
* revert
* add import
* remove StrictData
2022-10-01 11:51:52 +01:00
Evgeny Poberezkin
413aad5139
allow passing agent store instead of path and key ( #535 )
2022-09-23 18:45:00 +01:00
Evgeny Poberezkin
f8505d4add
make function processing sql rows module-level ( #533 )
2022-09-22 12:12:24 +01:00
Evgeny Poberezkin
41d3c14157
secure queue asynchronously ( #532 )
...
* secure queue asynchronously
* delete commands with internal logic errors
2022-09-20 15:11:35 +01:00
Evgeny Poberezkin
d4962daf11
internal async commands ( #530 )
...
* internal async commands
* rename
* remove GADT from AgentCommand
2022-09-18 14:02:20 +01:00
Evgeny Poberezkin
abb3f20ed5
replace TVar with IORef in execSQL ( #531 )
2022-09-18 13:25:06 +01:00
Evgeny Poberezkin
a3f58fdc6b
api to execute any sql query ( #529 )
...
* api to execute any sql query
* agent api
2022-09-17 15:08:58 +01:00
Evgeny Poberezkin
e3e05d474d
wrap agent command for async command processing, to allow extension with internal commands ( #528 )
...
* wrap agent command for async command processing, to allow extension with internal commands
* change encoding for constructor
2022-09-17 14:08:49 +01:00
Evgeny Poberezkin
13a9eee0cf
cancel threads asynchronously ( #527 )
2022-09-17 00:18:58 +01:00
Evgeny Poberezkin
959ae34f16
fix agent not stopping and race conditions ( #526 )
...
* fix agent not stopping and race conditions
* simplify
2022-09-16 13:42:13 +01:00
Evgeny Poberezkin
afecefc3ad
Merge branch 'master' into sqlcipher
2022-09-14 18:22:46 +01:00
JRoberts
e328ae5d06
closeAgentClient async commands clean up ( #523 )
2022-09-12 18:15:32 +01:00
JRoberts
4bf9f2b535
Eq for ACommandTag ( #520 )
2022-09-10 22:03:51 +04:00
Evgeny Poberezkin
bab6a1577b
correlation IDs and command tags for async commands ( #519 )
...
* agent protocol command tags
* store/send async command correlation IDs
* fix, refactor
* delete failed command
2022-09-10 16:33:15 +01:00
Evgeny Poberezkin
42a96d6d00
refactor agent subscriptions with TMap2 ( #517 )
...
* refactor agent subscriptions with TMap2
* refactor
* refactor
* comment
2022-09-09 16:31:57 +01:00
JRoberts
882d2b123b
agent async commands ( #513 )
...
* wip
* wip
* wip
* wip
* don't delete conn on join failure in async mode
* test restart
* remove unused pragma
* simplify restore
* rename variable
* refactor
* refactor
* split
* remove error
* prohibit async join via contact request
* refactor subscribeConnections
* simplify
* resum command processing on subscriptions
* unfocus tests
* schema
* remove do
* rename variable
* corrections
* move code
* refactor getPendingCommands
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2022-09-08 20:27:56 +04:00
Evgeny Poberezkin
da5058a0c4
remove connId from message delivery queue keys ( #515 )
2022-09-06 14:39:50 +01:00
Evgeny Poberezkin
50c210c5c0
remove database key from SQLiteStore ( #514 )
2022-09-05 12:55:14 +01:00
Evgeny Poberezkin
e4b47825b5
functions to create and close store ( #512 )
2022-09-02 15:42:37 +01:00
Evgeny Poberezkin
26d149d17c
interpolate sql strings ( #510 )
2022-08-31 17:57:38 +01:00
Evgeny Poberezkin
e4b77ed9e6
use SQLCipher ( #507 )
...
* use SQLCipher
* pass database key via options, use local direct-sqlcipher and sqlcipher-simple
* update stack.yaml
* use dependencies in git
* update sqlcipher dependencies
2022-08-30 12:31:41 +01:00
Evgeny Poberezkin
5894f91927
fix connections passed to ntf supervisor to include pending, not only active ( #506 )
...
* fix connections passed to ntf supervisor to include pending, not only active
* fix
* fix 2
2022-08-30 08:26:42 +01:00
Evgeny Poberezkin
1459a0613a
set invitation as not accepted in case of join error ( #505 )
...
* set invitation as not accepted in case of join error
* remove unused name
2022-08-25 12:17:55 +01:00
Evgeny Poberezkin
212a9bc4ab
enable/disable connection notifications ( #501 )
...
* enable/disable connection notifications
* filter connections when intializing/disabling subscriptions
* fix
* fix 2
* add delay
* increase test delay
* increase test delay
* fix
* increase test delays
* increase test delays
2022-08-19 15:23:57 +01:00
Evgeny Poberezkin
3fc9afbb35
move servers update before migration (so it re-tries in case of crash)
2022-08-18 08:39:22 +01:00
Evgeny Poberezkin
b2d4bfd0a8
split migration to multiple transactions (trying to prevent Android crash) ( #502 )
2022-08-17 22:08:01 +01:00
Evgeny Poberezkin
cfab5a18d3
move server update to SQL migration ( #500 )
2022-08-16 21:31:19 +01:00
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
e9db0a1162
allow passing all network configuration to the agent ( #488 )
2022-08-02 13:30:00 +01:00