-
-
Notifications
You must be signed in to change notification settings - Fork 48
Client/Server mode: sending configuration profile to a remote server #377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov Report❌ Patch coverage is
❌ Your patch check has failed because the patch coverage (24.47%) is below the target coverage (70.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #377 +/- ##
==========================================
- Coverage 79.45% 76.61% -2.84%
==========================================
Files 136 150 +14
Lines 13386 14173 +787
==========================================
+ Hits 10635 10858 +223
- Misses 2331 2884 +553
- Partials 420 431 +11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
008609a
to
27b0dba
Compare
I got a fully working proof of concept for the SSH mode 🎉 What do you think @jkellerer ? SSH mode should be secure enough:
Obviously it still needs more work and also unit tests. We'll see for the other modes later (with the security concerns) |
a340c97
to
73896c4
Compare
will check it. Was a bit busy these days :) |
73896c4
to
5d698ec
Compare
5d698ec
to
7809348
Compare
7809348
to
b7c7296
Compare
b7c7296
to
f38f45b
Compare
f38f45b
to
55303b1
Compare
55303b1
to
a7e4c75
Compare
…rove error responses
…for better code organization
|
Work in progress
Proof of concept on how to send a configuration profile to a remote server (along necessary files like exclude list, restic password, etc.)
Suggestion of connection type:
SSH
: secure connection (would be the default)HTTP
: basic http connection to be used within a VPN (do we want to provide that?)mTLS
: secure connection with client/server certificatesSSH connection doesn't need to have a resticprofile server waiting for connections. The two other types would need to.
New commands:
send
: connects to a remote via SSH and push the specified configurationserve
: serves configuration files (New flag:
-r / --remote
: download configuration files from the endpoint then run using the downloaded configuration (only). can be used with-w / --wait
to inspect the mounted FS.Other security consideration
Ideally we want the remote clients to never save the configuration that was pushed to them. They run the backup and forget everything about it.
We should investigate how to ask the kernel not to swap the file contents<- doesn't seem to be possible in GoConfiguration
New entries in the configuration could look like:
Implementation details:
in order to avoid saving the remotely loaded files to disk, I'm using afero to create a virtual disk in memory. I also looked atos/fs
but it forbids using any rooted path, which sounds like it would be a massive refactoring.go-fuse
library to create a filesystem in memory from atar
stream (not sure how it's going to work on Windows yet)Demo of working SSH mode (logs from both the initiator and the remote)
More information
Discussion here: #69