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
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
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
511d793b92
derive JSON instances with TH ( #869 )
...
* derive JSON instances with TH
* defaultJSON
* remove ToJSON
2023-10-26 09:20:30 +01:00
Evgeny Poberezkin
9d12d76078
add fourmolu ( #868 )
...
* add fourmolu
* linebreak
* simplify
* comment
2023-10-22 09:20:14 +01:00
Evgeny Poberezkin
5dc3d739b2
agent: support encrypted local files ( #837 )
...
* agent: support encrypted local files
* migration, update store, api
* tests, fix
* use CF.plain
2023-08-31 22:43:58 +01:00
Evgeny Poberezkin
d09adb5cd6
agent: wait for db (Revert Revert db error busy treatments ( #796 ) ( #808 )) ( #828 )
...
* Revert "Revert "db error busy treatments (#796 )" (#808 )"
This reverts commit 82aec2cd8f .
* update test
* combine pragmas
2023-08-21 09:06:51 +01:00
spaced4ndy
e586bef57a
agent: add indexes to improve slow queries performance ( #823 )
2023-08-16 10:29:09 +04:00
Evgeny Poberezkin
82aec2cd8f
Revert "db error busy treatments ( #796 )" ( #808 )
...
This reverts commit 1afcefa5e7 .
2023-08-09 12:24:03 +01:00
spaced4ndy
e81f3b5529
add indexes ( #809 )
2023-07-22 13:20:49 +01:00
spaced4ndy
7e2b309450
migration to delete expired messages ( #801 is suspected to have caused temporary traffic increase due to flood of non expired messages) ( #806 )
2023-07-20 16:15:33 +04: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
spaced4ndy
1afcefa5e7
db error busy treatments ( #796 )
2023-07-11 20:19:20 +04: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
011e1109e9
connection switch - track status, stop switch command ( #764 )
...
* connection switch improvements
* stop in transaction
* refactor
* checks in transaction
* withSwitchingRQ in transaction
* withSwitchedSQ in transaction
* refactor
* refactor
* inverse some cases
* reset snd switch progress on repeat qadd
* remove unused functions
* connection info type
* correction
* SPFinalizing phase, correctly update connection in event
* refactor
* tests
* refactor switch conn lock taking, take lock in switch stop, remove ineligible test
* comment
* corrections
* corrections
* corrections
* refactor
* remove checks in transactions, remove some statuses
* remove diff
* refactor
* refactor tests
* update connection in memory
* revert diff
* corrections
* more tests
* remove statuses, change switching queue lookup
* async queue deletion
* refactor
* lock, phases
* test status
* refactor
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-06-15 11:15:46 +04:00
spaced4ndy
6c6f22051d
check previous encrypted message hashes for duplicates on decryption errors ( #756 )
2023-05-17 15:42:57 +04:00
spaced4ndy
ce64c91d5a
add indexes for reading pending files ( #751 )
2023-05-10 15:17:26 +04:00
spaced4ndy
8954f39425
agent: vacuum on migrations ( #745 )
...
* agent: vacuum on migrations
* vacuum after all migrations
* style
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-05-04 17:26:05 +04:00
spaced4ndy
d8e60ecfdb
xftp: recoverable send - spike ( #707 )
2023-04-07 11:19:50 +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
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
spaced4ndy
cf147397a4
xftp: agent receive file ( #637 )
...
* xftp: agent receive file draft
* receiveFile more stubs, changes to types, schema
* cabal file
* comments
* xftp_server_id
* schema changes, get client, local worker/action
* agent env, save file description, adjust schema
* client stubs
* download chunk wip, store, schema, types
* remove commented code
* read file description, schema, types
* check received, decrypt
* remove pure
* todo
* add XFTP to agent client
* add user id
* agent test
* tests
* rename supervisor into agent
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-03-03 18:50:16 +04:00
spaced4ndy
c0dcf283eb
server_key_hash fields ( #643 )
...
* server_key_hash fields
* test
* refactor
* fix
* order
* use sync command in test
* refactor
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-02-17 21:24:32 +00:00
Evgeny Poberezkin
d4fc638478
async batch connection deletion ( #617 )
...
* async batch connection deletion
* delete user record with connections, async connection deletion
* updates
* update query
2023-01-21 13:41:16 +00:00
JRoberts
42df6a421d
add missing fkey indexes ( #610 )
2023-01-17 16:07:13 +04:00
Evgeny Poberezkin
f4ad3a983e
support users in agent to isolate traffic of different users ( #598 )
...
* users table, isolate traffic sessions by users or by queues
* remove extra indices
* corrections
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2023-01-11 17:47:20 +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
29332a5e9f
lints ( #539 )
...
* lints
* revert
* add import
* remove StrictData
2022-10-01 11:51:52 +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
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
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
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
JRoberts
2809963a2e
ntf: register token with NotificationsMode ( #429 )
2022-06-25 17:34:08 +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
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
f060914ab8
notifications server rfc/schema ( #332 )
...
* notifications server rfc/schema
* update schema/protocol
2022-03-22 16:53:01 +00:00
Evgeny Poberezkin
7a19ab224b
make sending confirmation asynchronous ( #327 )
...
* make sending confirmation asynchronous
* confirm first queue synchronously (on JOIN, and delete connection on failure), second queue asynchronously (from REPLY msg)
* test to retry JOIN when the first attempt fails
* process confirmation delivery errors
2022-03-02 15:52:45 +00:00
Evgeny Poberezkin
a9a6917056
replace file-embed with QQ ( #301 )
2022-01-20 18:31:09 +00:00
Evgeny Poberezkin
09c6adeabc
pass migration as parameter (to use in simplex-chat) ( #161 )
...
* pass migration as parameter (to use in simplex-chat)
* add connId parameter to create/joinConnection
2021-06-24 18:39:59 +01:00
Evgeny Poberezkin
84ce001598
database migrations ( #153 )
...
* database migrations
* fix: reverse order of down migrations
* use positional parameters in queries
* simplify migrations
* typo
* rename SchemaMigration to Migration
* move store initialization to IO monad
2021-05-31 16:38:35 +01:00