Evgeny Poberezkin
d3059afc99
ios, core: better notifications processing to avoid contention for database ( #3485 )
...
* core: forward notifications about message processing (for iOS notifications)
* simplexmq
* the option to keep database key, to allow re-opening the database
* export new init with keepKey and reopen DB api
* stop remote ctrl when suspending chat
* ios: close/re-open db on suspend/activate
* allow activating chat without restoring (for NSE)
* update NSE to suspend/activate (does not work)
* simplexmq
* suspend chat and close database when last notification in the process is processed
* stop reading notifications on message markers
* replace async stream with cancellable concurrent queue
* better synchronization of app and NSE
* remove outside of task
* remove unused var
* whitespace
* more debug logging, handle cancelled read after dequeue
* comments
* more comments
2023-12-09 21:59:40 +00:00
Alexander Bondarenko
6a21d5c7f1
add remote host bindings ( #3471 )
...
* add remote host bindings
* group iface/address together
* rename migration
* add implementation
* update view and api
* bump upstream
* add schema
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-28 16:32:33 +00:00
Evgeny Poberezkin
d29f1bb0cf
core: use fourmolu styles ( #3470 )
2023-11-26 18:16:37 +00:00
Alexander Bondarenko
74e80eb348
core: add remote stop reason and state ( #3444 )
...
* add remote stop reason and state
* rename
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-23 22:00:20 +00:00
Alexander Bondarenko
d837f87f09
fix circular cancel at rcDiscoverCtrl ( #3438 )
2023-11-23 11:00:57 +00:00
Evgeny Poberezkin
d3f9616f9b
core: report controller info when found via multicast ( #3437 )
...
* core: report controller info when found via multicast
* handle parse error
2023-11-23 10:07:26 +00:00
Evgeny Poberezkin
47cd7de1ae
core: 5.4.0.4
2023-11-21 00:00:29 +00:00
Alexander Bondarenko
68cbc605be
add remote session sequence to prevent stale state updates ( #3390 )
...
* add remote session sequence to prevent stale state updates
* remote RHStateKey
* add StateSeq check to controller
* clean up
* simplify
* undo withRemoteXSession API change
* simplify
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-20 10:19:00 +00:00
Alexander Bondarenko
ba94f76a90
core: fix remote session stuck in Starting after crashed rcConnect ( #3399 )
2023-11-20 09:33:43 +00:00
Alexander Bondarenko
42e0400014
core: add remote controller discovery with multicast ( #3369 )
...
* draft multicast chat api
* prepare tests
* Plug discovery into chat api
* Add discovery timeout
* post-merge fixes
* rename discovery state to match others
* update for unified invitation
* fix review notices
* rename, remove stack, update simplexmq
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-17 18:50:38 +00:00
Alexander Bondarenko
c31ae39617
remote: fix circular error handling ( #3380 )
2023-11-16 14:56:39 +00:00
Alexander Bondarenko
339c3d2be1
Send CRRemote*Stopped on all errors ( #3376 )
...
* Send CRRemote*Stopped on all errors
Commands use the same action, made idempotent and don't send events.
* fix tests
* get http2 cancelling back
2023-11-15 17:31:36 +00:00
Alexander Bondarenko
a75fce8dfa
Fix hostStore path and check before removing ( #3375 )
2023-11-15 15:57:29 +00:00
Evgeny Poberezkin
b71daed3ec
core: include session code in all session states ( #3374 )
2023-11-15 13:17:31 +00:00
Alexander Bondarenko
fa9d61caa4
remove host store in deleteRemoteHost ( #3373 )
2023-11-15 13:09:52 +00:00
Evgeny Poberezkin
d4ba1bbe69
core: update remote host session state ( #3371 )
2023-11-14 22:27:21 +00:00
Evgeny Poberezkin
0a4920daae
core: encrypt stored/loaded remote files ( #3366 )
...
* core: encrypt stored/loaded remote files
* simplexmq
* constant
2023-11-14 16:44:12 +00:00
Evgeny Poberezkin
c91625b32a
core: update remote host session state, terminate TLS in one more case ( #3364 )
...
* core: update remote host session state, terminate TLS in one more case
* name
2023-11-13 20:16:34 +00:00
Alexander Bondarenko
598b6659cc
core: better handling of remote errors ( #3358 )
...
* Allow ExitCode exceptions to do their job
* Use appropriate error type
* Close TLS server when cancelling connected remote host
* Add timeout errors
* Bump simplexmq
* extract common timeout value
2023-11-13 18:39:41 +00:00
Evgeny Poberezkin
72b25385ba
core: event when new remote host added ( #3355 )
2023-11-12 21:43:43 +00:00
Evgeny Poberezkin
92e3f576ca
core: return controller app info in response when connecting, validate ID key ( #3353 )
2023-11-12 14:40:49 +00:00
Evgeny Poberezkin
8e3e58cac8
core: update remote controller name ( #3352 )
2023-11-12 12:40:13 +00:00
Evgeny Poberezkin
8b67ff7a00
core: remote error handling ( #3347 )
...
* core: remote error handling
* fix test, show DB errors
2023-11-11 16:03:12 +00:00
Alexander Bondarenko
227007c8f6
add /switch remote host ( #3342 )
...
* Add SwitchRemoteHost
* Add message test
* Match remote prefix and the rest of the line
* Move prefix match to utils
2023-11-10 17:49:23 +00:00
Evgeny Poberezkin
02225df274
core: remote control command/response encryption and signing inside TLS ( #3339 )
...
* core: remote control command/response encryption inside TLS (except files, no signing)
* sign/verify
* update simplexmq
* fix lazy
* remove RSNone
2023-11-10 16:10:10 +00:00
Alexander Bondarenko
f41861c026
core: terminate remote control TLS connection on both sides ( #3338 )
...
* handle session setup errors
* add command/async wrapper
* move furniture around
* detect disconnects and force them with closeConnection
* simplify http server log
* close TLS in other cases
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-09 22:43:44 +00:00
Alexander Bondarenko
6d4febb669
core: handle remote control session setup errors ( #3332 )
...
* handle session setup errors
* add command/async wrapper
* move furniture around
2023-11-09 18:25:05 +00:00
Evgeny Poberezkin
3dd62ab05a
core: remove Hello from the app remote protocol ( #3336 )
2023-11-09 09:37:56 +00:00
Alexander Bondarenko
b729144773
core: use xrcp protocol for desktop/mobile connection ( #3305 )
...
* WIP: start working on /connect remote ctrl
OOB is broken, requires fixing simplexmq bits.
* WIP: pull CtrlCryptoHandle from xrcp
* place xrcp stubs
* WIP: start switching to RemoteControl.Client types
* fix http2 sha
* fix sha256map.nix
* fix cabal.project
* update RC test
* WIP: add new remote session
* fix compilation
* simplify
* attach HTTP2 server to TLS
* starting host session in controller (WIP)
* more WIP
* compiles
* compiles2
* wip
* pass startRemote' test
* async to poll for events from host, test to send messages fails
* move xrcp handshake test to simplexmq
* detect session stops
* fix connectRemoteCtrl
* use step type
* app info
* WIP: pairing stores
* plug in hello/appInfo/pairings
* negotiate app version
* update simplexmw, remove KEM secrets from DB
* fix file tests
* tone down http2 shutdown errors
* Add stored session test
* bump simplexmq tag
* update simplexmq
* refactor, fix
* removed unused errors
* rename fields, remove unused file
* rename errors
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-08 20:13:52 +00:00
Evgeny Poberezkin
8482dbfd99
core: update remote API commands/events ( #3295 )
...
* core: update remote API
* Add session verification event between tls and http2
* roll back char_ '@' parsers
* use more specific parser for verification codes
* cabal.project.local for mac
---------
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
2023-11-01 19:08:36 +00:00
Alexander Bondarenko
02c0cd5619
Cut at attaching http server/client ( #3299 )
...
* Cut at attaching http server/client
* switch to xrcp branch
2023-11-01 10:48:58 +00:00
Alexander Bondarenko
be44632b0b
implement some of the robust discovery rfc ( #3283 )
...
* implement robust discovery
* remove qualified
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-30 14:00:54 +00:00
Evgeny Poberezkin
d90da57f12
core: store/get remote files ( #3289 )
...
* core: store remote files (wip)
* fix/test store remote file
* get remote file
* get file
* validate remote file metadata before sending to controller
* CLI commands, test
* update store method
2023-10-29 19:06:32 +00:00
Alexander Bondarenko
0d1a080a6e
remote protocol ( #3225 )
...
* draft remote protocol types and external api
* types (it compiles)
* add error
* move remote controller from http to remote host client protocol
* refactor (doesnt compile)
* fix compile
* Connect remote session
* WIP: wire in remote protocol
* add commands and events
* cleanup
* fix desktop shutdown
* prepare for testing remote files
* Add file IO
* update simplexmq to master
with http2 to 4.1.4
* use json transcoder
* update simplexmq
* collapse RemoteHostSession states
* fold RemoteHello back into the protocol command
move http-command-response-http wrapper to protocol
* use sendRemoteCommand with optional attachments
use streaming request/response
* ditch lazy body streaming
* fix formatting
* put body builder/processor closer together
* wrap handleRemoteCommand around sending files
* handle ChatError's too
* remove binary, use 32-bit encoding for JSON bodies
* enable tests
* refactor
* refactor request handling
* return ChatError
* Flatten remote host
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-22 09:42:19 +01:00
Evgeny Poberezkin
fc1bba8817
remote: refactor (WIP) ( #3222 )
...
* remote: refactor (WIP)
* refactor discoverRemoteCtrls
* refactor processRemoteCommand, storeRemoteFile
* refactor fetchRemoteFile
* refactor startRemoteHost, receiving files
* refactor relayCommand
2023-10-15 14:17:36 +01:00
Evgeny Poberezkin
41b86e07f1
core: update api ( #3221 )
2023-10-15 00:18:04 +01:00
Evgeny Poberezkin
f5e9bd4f8b
core: add set display name ( #3216 )
...
* core: add set display name
* enable all tests
2023-10-14 13:10:06 +01:00
Evgeny Poberezkin
5e6aaffb09
simplify remote api, add ios api ( #3213 )
2023-10-13 22:35:30 +01:00
Alexander Bondarenko
193361c09a
core: fix remote handshake test ( #3209 )
...
* Fix remoteHandshakeTest
Sidesteps some yet to be uncovered bug when
mobile stops its side before the desktop.
* remove ambiguous update warning
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-13 18:53:04 +01:00
Evgeny Poberezkin
392447ea33
core: fix test
2023-10-13 17:52:27 +01:00
Evgeny Poberezkin
73652e4bba
Merge branch 'master' into remote-desktop
2023-10-12 10:43:59 +01:00
Evgeny Poberezkin
c2a858b06e
core: convert single-field to tagged JSON encoding ( #3183 )
...
* core: convert single-field to tagged JSON encoding
* rename
* rename
* fixes, test
* refactor
2023-10-11 19:11:01 +01:00
Alexander Bondarenko
6f5ba54f7b
core: remote session files ( #3189 )
...
* Receiving files on CRRcvFileComplete
* Add remote /fr test
* Add broken startFileTransfer notice
* Sending files with SendFile/SendImage
With tests for SendFile.
* Add APISendMessage handling
* Test file preconditions
No files should be in stores before actual sending.
* Fix mobile paths in storeFile
2023-10-11 09:45:05 +01:00
Alexander Bondarenko
91561da351
core: http transport for remote session ( #3178 )
...
* Wire some of the session endpoints
* Start sending remote commands
* Expand remote controller
- Fix queues for pumping to remote
- Add 3-way test
- WIP: Add TTY wrapper for remote hosts
- Stop remote controller w/o ids to match starting
* Fix view events
* Drop notifications, add message test
* refactor, receive test
* hunt down stray asyncs
* Take discovery sockets in brackets
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-07 14:23:24 +01:00
Alexander Bondarenko
fc9db9c381
core: add FromJSON instance to ChatResponse ( #3129 )
...
* Start adding FromJSON instances to ChatResponse
* progress
* FromJSON instance for ChatResponse compiles
* restore removed encodings
* remove comment
* diff
* update simplexmq, use TH for JSON
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-05 19:49:20 +01:00
Alexander Bondarenko
0bcf5c9c66
Add commands for remote session credentials ( #3161 )
...
* Add remote host commands
* Make startRemoteHost async
* Add tests
* Trim randomStorePath to 16 chars
* Add chat command tests
* add view, use view output in test
* enable all tests
* Fix discovery listener host
Must use any, not broadcast on macos.
* Fix missing do
* address, names
* Fix session host flow
* fix test
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-10-04 16:36:10 +01:00
IC Rainbow
6c0d1b5f15
Notify about handover errors
2023-09-29 16:53:05 +03:00
IC Rainbow
af2df8d489
Rewrite remote controller
2023-09-29 15:01:05 +03:00
IC Rainbow
cccb3e33fb
Plug discovery into remote controller UI
2023-09-27 18:24:38 +03:00
IC Rainbow
77410e5d5e
Add remote host discovery
2023-09-27 13:40:19 +03:00