-
Notifications
You must be signed in to change notification settings - Fork 872
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
[Sync] Add an option in setting page to Enter Custom Sync Url #25484
base: master
Are you sure you want to change the base?
[Sync] Add an option in setting page to Enter Custom Sync Url #25484
Conversation
8d7d7ff
to
f26c2e6
Compare
Hey @aguscruiz ! Could you confirm the design for this UI? Kindly refer SC in Overview. |
e2da192
to
4fc9c3e
Compare
7ddc422
to
8cc6efd
Compare
e0844cf
to
6034292
Compare
#include "brave/components/sync/service/brave_sync_service_impl.h" | ||
#include "chrome/browser/history/history_service_factory.h" | ||
#include "chrome/browser/sync/device_info_sync_service_factory.h" | ||
#include "components/sync/base/command_line_switches.h" | ||
|
||
// Below includes are just to prevent redefining of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These included seems nasty,
@goodov Do we have any known alternatives to avoid this, other than direct patching?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, this is too messy.
I think we should stop using syncer::kSyncServiceURL
for setting the URL via the command line, but instead do this:
- override
syncer::internal::kSyncServerUrl
andsyncer::internal::kSyncDevServerUrl
to beBUILDFLAG(BRAVE_SYNC_ENDPOINT)
. - modify
BraveGetSyncServiceURL
to also use the pref value ifsyncer::kSyncServiceURL
flag is not passed (right now it's used only if the pref is managed). - remove
syncer::kSyncServiceURL
setting in//brave/app/brave_main_delegate.cc
. - support
AdjustSyncServiceUrlForAndroid
inBraveGetSyncServiceURL
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc @AlexeyBarabash ^ does this sound correct? aren't there any hidden shenanigans on iOS/Android if we go this way?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, @jagadeshjai @goodov I have conmpletly missed this PR and the question.
all above sounds correct and I see the code is now much cleaner.
No hidden shenanigans on Android.
iOS should also be ok. Just in case lets ask @Brandon-T, does iOS have any code to setup custom sync server url?
I just have tested the PR on Android and Desktop - works fine.
6034292
to
c42c7ba
Compare
2c9a8ce
to
0d046ba
Compare
0d046ba
to
bf28c14
Compare
ae64392
to
a8b34bc
Compare
Fixed 👍 |
// on Desktop OSes. However, we should also handle it on Android in the future. | ||
#if !BUILDFLAG(IS_ANDROID) | ||
if (prefs) { | ||
std::string value = prefs->GetString(brave_sync::kCustomSyncServiceUrl); | ||
if (!value.empty()) { | ||
GURL custom_sync_url(value); | ||
// Provided URL must be HTTPS. | ||
if (custom_sync_url.is_valid() && | ||
custom_sync_url.SchemeIs(url::kHttpsScheme)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have doubt - Do we really need to check for the https
scheme here? I feel that most users likely won’t serve their custom server over https
, especially when it's within a personal/home network.
CC: @bsclifton
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will add that I use a server over http
. (And for remote access away from home, I use a VPN, so it's http
within a Wireguard tunnel).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for not responding earlier @jagadeshjai - thanks for raising
It was a requirement to have HTTPS by our security team. I haven't tested - but it should still be possible to use sync with a self signed cert. Also Let's Encrypt is pretty great now too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does the sync server have E2E encryption of the data that only the client can decrypt?
My understanding is that it does and that this is independent of the connection protocol (HTTP/HTTPS) so even if someone did something dumb and opened an http sync server to the internet, the only thing that might be visible is metadata but the actual data is encrypted.
If the security team is convinced something must be done, I would suggest a compromise of a warning, a sub-setting, or a flag.
Of course, if nothing is changed, then yeah, it'll force users to setup a reverse proxy (I'm not aware of a built-in way to use HTTPS with the docker container for the sync server as there is a lack of documentation for self-hosting the sync server because basic setup is basically just run the docker compose).
I hope this will be considered by the Brave teams. I appreciate all of the work done by Brave to make such a great browser!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Brave uses client side encryption/description - it's impossible for us to see what is in a blob being stored (a bookmark, password, etc). We can see the type and that's it. Chrome has this too - but it's something you need to enable and provide a pass phrase. Hosting the https://github.com/brave/go-sync should be enough
a8b34bc
to
c5623ab
Compare
@goodov Could you please review this PR? |
83b5438
to
9d2de48
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rebased and added some quick changes for strings (and fixed a few CI issues).
String reviewers ++
CI now running with #25691
OK pinged a few folks - I need to share the UI with design / product to make sure it's good. I can follow up about any concerns once that happens. Thanks for your patience |
9d2de48
to
3b1d897
Compare
relaunch button when toogle/url change.
…ndling custom sync url. Also show Relauch button and Managed icon when required. Conflicts: browser/ui/webui/brave_settings_ui.cc
…ervice via command line before bulding its service in browser context.
…DevServerUrl using chromium_src overrides instead of passing it via command_line
…in Android to |BraveGetSyncServiceURL|.
…s_sync_service_[sources/deps]. And Remove some unused includes.
3b1d897
to
4c3ef66
Compare
brave_components_sync_driver_[sources/deps]
->brave_components_sync_service_[sources/deps]
Resolves brave/brave-browser#12314
Resolves brave/brave-browser#41280
UI:
brave_custom_sync_input.webm
After configuring policy
Two different Profiles
Submitter Checklist:
QA/Yes
orQA/No
;release-notes/include
orrelease-notes/exclude
;OS/...
) to the associated issuenpm run test -- brave_browser_tests
,npm run test -- brave_unit_tests
wikinpm run presubmit
wiki,npm run gn_check
,npm run tslint
git rebase master
(if needed)Reviewer Checklist:
gn
After-merge Checklist:
changes has landed on
Test Plan: