Efim Poberezkin
8134bb0eb9
agent store: settle naming of Rcv and Snd entities ( #55 )
2021-02-26 18:17:56 +04:00
Efim Poberezkin
0f60c53a66
agent: save messages ( #45 )
2021-02-25 19:02:27 +04:00
Evgeny Poberezkin
435ab21e71
E2E message encryption ( #38 )
...
* RSA OAEP functions
* encrypt/decrypt using AES AEAD GSM
* fix JOIN syntax test
* encrypt/decrypt functions working
* e2e encryption!
* refactor monadic transitions
* rename liftError' to liftEitherError
* combine CryproFailable functions
2021-02-26 18:14:22 +04:00
Efim Poberezkin
469f84bb74
use cryptographic key pairs for encryption keys ( #39 )
...
* use cryptographic key pairs for encryption keys
* use speaking key types
* fix key types
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-02-26 18:14:22 +04:00
Evgeny Poberezkin
0fe41dbf16
Sign / verify SMP commands ( #37 )
...
* generate key pair
* crypto: sign/verify functions
* remove extension
* parse/serialize keys
* use RSA recipient/sender keys (TODO sign/verify)
* make PublicKey newtype, assign 0s to private_p & private_q
* replace SMP command parsing with Attoparsec
* rename types: Signed->Transmission, Transmission->SignedTransmission
* sign and verify commands (server tests skipped, agent tests pass)
* SMP client: avoid seralizing transmission twice when sending commands
* update SMP server tests to use command signatures
* remove support for "SEND :msg" syntax from SMP server protocol
* rename RSA module name to R to avoid confusion with C used for S.M.Crypto
* update key sizes to use bits `div` 8
* tidy up
2021-02-26 18:14:22 +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
Evgeny Poberezkin
3192092349
message management ( #32 )
...
* message management rfc
* update message management rfc
* message management ideas (WIP)
* message management updated
* messages RFC
* update agent MSG constructor to include recipient/broker/sender message IDs and timestamps
* remove agent command ACK - agent automatically acknowledges server messages
* correct messages doc
2021-02-26 18:13:04 +04:00
Evgeny Poberezkin
4b5349fb94
Refactor END notifications ( #31 )
...
* kill TCP server client threads when the main server thread is killed; test END notification when server connection dies
* revert to using forkIO in the tests
* make subscriptions state change atomic
* remove commented out code
* Revert "revert to using forkIO in the tests"
This reverts commit c0bacd92e4 .
2021-02-26 18:13:04 +04:00
Evgeny Poberezkin
17b429afe7
handle TCP disconnections (WIP) ( #29 )
...
* handle TCP disconnections (WIP)
* agent: handle SMP server disconnections
* agent: notify client about lost subscriptions when SMP server disconnects
* comments for testing functions
* remove test apps
* chore: reorder functions in Transport
* add comment
Co-authored-by: Efim Poberezkin <efim.poberezkin@gmail.com >
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
d719b741dc
suspend and delete connection ( #28 )
...
* suspend and delete connection
* agent: OFF/DEL tests, infix operators in tests
* test for subscriptions
2021-02-26 18:11:22 +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
70fe7616f2
Sending messages end to end ( #21 )
...
* duplex connection end-to-end (working, debug logs)
* agent: send, receive, acknowledge messages
* logging proposal
* logging: client/server (dis)connections
* agent scenario testing framework
* add tests, remove logs
* clean up
2021-02-26 18:11:22 +04:00
Evgeny Poberezkin
65dd693c83
parse agent messages with attoparsec ( #18 )
...
* parse agent messages with attoparsec (WIP)
* agent: refactor parsers
* agent: parse commands and responses with attoparsec
* refactor UTCTime parser
* fix: updateRcvQueueStatus args
* remove outdated comment
* message parsing: PR feedback
Co-authored-by: Efim Poberezkin <efim.poberezkin@gmail.com >
2021-02-26 18:11:22 +04:00
Efim Poberezkin
c14b0251d5
agent store: add getReceiveQueue
2021-02-26 18:11:22 +04:00
Efim Poberezkin
8ab79b066d
agent store: add update queue methods ( #19 )
2021-02-26 18:11:22 +04:00
Efim Poberezkin
c1f15c9d93
tests: randomize db file name to fix io errors ( #16 )
...
* tests: check file doesn't exist in store tests after
* Revert "tests: check file doesn't exist in store tests after"
This reverts commit de624433a9 .
* [WIP] tests: randomize db file
* [WIP] tests: try runIO to get filename into after
* random db file name for agent tests
* tests: randomize DB file name
* tests: increase SMP agent start delay
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2021-02-26 18:11:22 +04:00
Efim Poberezkin
5f59fcc969
agent store: add createMsg ( #14 )
2021-01-15 19:30:11 +04:00
Evgeny Poberezkin
2e6ba85308
SMP client library ( #9 )
...
* functions to send SMP commands and receive responses
* refactor agent: use SMPClient
* fix tests, remove ServerClient.hs
* refactor processCommand
* fix Agent.hs
* fix SMPClient, tests
* "forever" to SMPClient process
2021-02-26 18:09:26 +04:00
Evgeny Poberezkin
02a15f9f25
agent tests ( #8 )
2021-02-26 18:09:26 +04:00
Efim Poberezkin
1c5325babf
agent store: add positive updateQueueStatus tests for snd and rcv conns ( #10 )
2021-01-12 19:01:53 +04:00
Efim Poberezkin
123fe0e3e2
agent store: adjust tests hierarchy
2021-01-11 20:28:20 +04:00
Efim Poberezkin
7f22dcd496
agent store: add updateQueueStatus tests
2021-01-11 19:34:30 +04:00
Evgeny Poberezkin
6f8b3787b0
server: refactor syntax tests to only allow one command ( #5 )
...
* server: refactor syntax tests to only allow one command
* simplify smpServerTest
2021-01-11 14:04:21 +00:00
Evgeny Poberezkin
ea6496ca24
better MonadUnliftIO instance for ExceptT; fix tests
2021-01-09 20:35:19 +00:00
Evgeny Poberezkin
0d0a12f778
refactor store: m (Either e a) => ExceptT e m a
2021-01-09 11:18:52 +00:00
Efim Poberezkin
af5bd101cb
agent store: make create connection methods return ()
2021-01-08 15:51:33 +04:00
Efim Poberezkin
19238c6cc4
agent store: add deleteConn and tests
2021-01-07 17:58:46 +04:00
Efim Poberezkin
6dff023965
test: set up and tear down db per test
2021-01-07 14:51:49 +04:00
Efim Poberezkin
e692cb0119
add addRcvQueue and tests
2021-01-07 14:00:53 +04:00
Evgeny Poberezkin
51cc602bdb
agent store: refactor addSndQueue
2021-01-06 20:22:00 +00:00
Efim Poberezkin
5a6b1c67a9
add test testAddSndQueue
2021-01-06 23:01:53 +04:00
Efim Poberezkin
94d0be5d27
add test for addSndQueue
2021-01-06 22:35:04 +04:00
Evgeny Poberezkin
6e6ad0fb9b
agent store: getConn with tests
2021-01-05 20:31:01 +00:00
Efim Poberezkin
799d179f6f
add createSndConn test
2021-01-05 18:03:57 +04:00
Evgeny Poberezkin
5d2e77f41d
test: agent SQLite createRcvConnection
2021-01-04 20:25:02 +00:00
Evgeny Poberezkin
f8e25189db
move all tests from main Test to ServerTests
2021-01-04 18:49:28 +00:00
Evgeny Poberezkin
42ab7fb6ac
test against localhost
2020-12-30 21:26:46 +00:00
Evgeny Poberezkin
80b4ff365d
TCP client: try all resolved addresses, not just the first
2020-12-30 21:25:49 +00:00
Evgeny Poberezkin
f3cd3eac58
add protocol version in TCP welcome
2020-12-30 18:50:50 +00:00
Evgeny Poberezkin
87f2c20ee4
type CorrelationId -> newtype CorrId (to avoid incorrect order in tuple)
2020-12-28 17:41:30 +00:00
Evgeny Poberezkin
43baacc5be
move SMP server specific methods from Transport to Server/Transmission
2020-12-28 17:07:11 +00:00
Evgeny Poberezkin
e7581a91a8
test: update tests to include correclation ID in the tests themselves
2020-12-28 15:39:28 +00:00
Evgeny Poberezkin
4b8f6417f8
add correlationId to SMP transmissions, fix tests
2020-12-28 13:55:53 +00:00
Evgeny Poberezkin
2ed24e683e
rename Config to ServerConfig
2020-12-25 16:46:17 +00:00
Evgeny Poberezkin
3cb2421373
move modules to folder Simplex.Messaging.Server
2020-11-22 18:22:20 +00:00
Evgeny Poberezkin
35f83b604a
rename "connection" to "queue"
2020-10-22 12:50:55 +01:00
Evgeny Poberezkin
3d322f5fcf
test: error when ACK is sent without message
2020-10-21 18:17:11 +01:00