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
JRoberts
2809963a2e
ntf: register token with NotificationsMode ( #429 )
2022-06-25 17:34:08 +04:00
JRoberts
70e7c71762
ntf: read rcv queue separately from ntf subscription, fix deletion race condition ( #423 )
2022-06-24 16:51:42 +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
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
JRoberts
9c12b4edc0
ntf: agent spike, NtfSupervisor ( #392 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2022-06-10 16:35:06 +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
JRoberts
9f6316fa6d
fix getDeviceNtfToken ( #376 )
2022-05-30 22:58:47 +04: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
a2204c9b84
remove comments, add EOL
2022-04-21 17:15:41 +01:00
Evgeny Poberezkin
9d8a9c4fe4
interval notifications (TCRN command) ( #352 )
...
* notifications: periodic notifications
* agent: allow repeat token registrations, delete old tokens from notification server (e.g., when database is moved to another device)
* decrypt token verification code in the agent
* check token status, send TCRN on registration if it was enabled
* fix http2/apns response handling for error responses (also, APNS seems not to send content-length header?)
2022-04-17 10:34:51 +01:00
Evgeny Poberezkin
f577fcdacf
agent schema/methods/types/store methods for notifications tokens ( #348 )
...
* agent schema/methods/types/store methods for notifications tokens
* register notification token on the server
* agent commands for notification tokens
* refactor initial servers from AgentConfig
* agent store functions for notification tokens
* server STM store methods for tokens
* fix protocol client for ntfs (use generic handshake), minimal server and agent tests
* server command to verify ntf token
2022-04-08 08:47:04 +01:00
Evgeny Poberezkin
f466fa76e5
notifications: protocol, server ( #335 )
...
* notifications: protocol
* update protocol to include subscription ID and DH public key
* update protocol, started server
* add notification server subscription DH key
* use the same command type in notifications protocol, protocol parsing, server frame
* remove empty files
2022-03-27 08:36:00 +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
Efim Poberezkin
b7902ee4c8
agent sqlite: store msg hashes and integrity ( #118 , #119 , #120 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-05-02 10:48:31 +04:00
Efim Poberezkin
6be4839703
agent: verify msg integrity based on previous msg hash and id ( #110 )
...
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-05-02 00:38:32 +04:00
Efim Poberezkin
bd753dbe47
agent sqlite: enable FKs in *all* db connections ( #75 )
2021-03-29 19:27:05 +04:00
Efim Poberezkin
dac35d8ea8
agent sqlite: merge SQLite and SQLite.Util ( #54 )
2021-02-26 18:17:56 +04:00
Efim Poberezkin
b4ebe85ce3
agent sqlite: move sql queries closer to parameters ( #53 )
2021-02-26 18:17:56 +04:00
Efim Poberezkin
0f60c53a66
agent: save messages ( #45 )
2021-02-25 19:02:27 +04:00
Efim Poberezkin
7e9cfcce8c
agent sqlite: rework schema, make methods transactional, enable foreign keys ( #34 )
...
* agent sqlite: rework schema
* agent sqlite: explicitly mark primary keys as NOT NULL
* agent sqlite: adjust connections and queues fkeys
* agent sqlite: remove ack_mode from queues tables
* [WIP] agent sqlite: refactor methods
* agent sqlite: implement transactional createRcvConn
* add comment
* agent sqlite: remove ConnAlias from createRcvConn signature
* agent sqlite: implement transactional createSndConn
* agent sqlite: remove monadic stack from store util methods
* agent sqlite: refactor getConn
* agent sqlite: rename conn -> dbConn
* agent sqlite: move transactional logic to utils
* agent sqlite: remove addServer from store interface
* fix comment
* agent sqlite: refactor getRcvQueue
* agent sqlite: refactor deleteConn
* agent sqlite: remove old deleteConn
* agent sqlite: enable FKs
* agent sqlite: refactor methods upgrading connection to duplex
* agent sqlite: uncomment not implemented methods
* agent sqlite: rename methods upgrading connection to duplex
* use liftEither
* agent sqlite: refactor update queue status methods
* agent sqlite: refactor createMsg
* clean up
* fix compilation errors in src
* fix existing tests
* clean up tests
* agent sqlite: test that foreign keys are enabled
* change private members naming
* tests: expect specific error code
* clean up
* agent sqlite: consistently separate lifts from logic to their own lines
2021-02-04 19:23:43 +04:00
Evgeny Poberezkin
1f61267308
chat prototype ( #35 )
...
* chat prototype
* chat prototype now compiles
* chat prototype works
* agent: respond SENT mId to SEND (instead of OK), ne repsonse to chat message in terminal
* chat prototype help, update commands
* chat CLI options
* add active contact to ChatClient (not used yet)
* refactor agentTransmission
* InviteContact -> AddContact
* automatically insert active contact
* highlight contact in chat
* name for invitations
* do not ask name on start
* change default server to smp.simplex.im
2021-02-26 18:13:04 +04:00
Efim Poberezkin
e09d3bae99
agent store: move SQLite Types -> Util ( #30 )
2021-01-25 20:14:33 +04:00
Evgeny Poberezkin
19dc7b3389
subscriptions ( #27 )
...
* subscribe connection and track subscriptions
* notify client when subscription ENDs
* tcp connection timeout
* move types
2021-02-26 18:11:22 +04:00
Efim Poberezkin
f50da16d0a
reorganize Protocol and Agent Store ( #25 )
...
* chore: move members from Server/Transmission.hs to Protocol.hs
* chore: revert qualified SMP import for server and client
* chore: fix corrId call
* chore: move common types to Common.hs
* chore: decompose SQLite.hs
* chore: rename Agent/Transmission.hs ErrorType -> AgentErrorType
* chore: move Protocol ErrorType -> Common SMPErrorType
* chore: rename Common -> Types
* chore: revert SMPErrorType -> ErrorType
2021-02-26 18:11:22 +04:00
Evgeny Poberezkin
c30a4cd1ff
sql quasi-qouter ( #26 )
2021-02-26 18:11:22 +04:00
Efim Poberezkin
19238c6cc4
agent store: add deleteConn and tests
2021-01-07 17:58:46 +04:00
Efim Poberezkin
e692cb0119
add addRcvQueue and tests
2021-01-07 14:00:53 +04:00
Evgeny Poberezkin
15cf2e9fff
upsertServer: use select to get server ID
2021-01-04 10:39:20 +00:00
Evgeny Poberezkin
650971fa02
method to insert connection ( #3 )
2021-01-03 18:05:50 +00:00
Evgeny Poberezkin
3d4f43a051
add NOT NULL constraints
2021-01-03 12:47:12 +00:00
Efim Poberezkin
3c1834f93f
implement addServer command
2020-12-30 18:54:17 +04:00
Efim Poberezkin
92d170f178
add queries drafts for insertion of server, queue, connection
2020-12-29 21:30:00 +04:00
Evgeny Poberezkin
dabef7f0d1
use quasiqoutes for queries
2020-12-28 21:23:28 +00:00
Efim Poberezkin
c47f583574
add unique constraints todo
2020-12-28 23:50:04 +04:00
Efim Poberezkin
dea5c6478a
change fields to blobs
2020-12-28 23:32:05 +04:00
Efim Poberezkin
205c6bf117
add servers table to database
2020-12-28 22:06:01 +04:00
Evgeny Poberezkin
02cb6068a2
create all tables
2020-12-27 21:32:30 +00:00
Efim Poberezkin
a6bd03bf99
add agent ddl draft
2020-12-27 22:06:37 +04:00
Evgeny Poberezkin
e418498334
move queries to code
2020-12-27 12:48:46 +00:00
Evgeny Poberezkin
18ab9650b4
move queries to code
2020-12-27 12:47:39 +00:00
Evgeny Poberezkin
7bcd5ebcef
agent: creating schema
2020-12-27 10:26:08 +00:00
Evgeny Poberezkin
a3b53f68c5
empty database schema
2020-12-26 21:22:17 +00:00