commit a5791ec33537b5efefb5c64c240e48d9ce1c8721 Author: Kathy Brade brade@pearlcrescent.com Date: Tue Mar 6 15:39:11 2018 -0500
Bug 25405: cannot use Moat if a meek bridge is configured
When doing Moat things, use a separate profile for the secondary browser (instead of trying to use the main meek helper profile). This is accomplished by setting a TOR_BROWSER_MEEK_PROFILE environment variable which meek-client-torbrowser uses to get the profile path if it is set. --- src/modules/tl-bridgedb.jsm | 9 +++++++-- src/modules/tl-util.jsm | 19 +++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/src/modules/tl-bridgedb.jsm b/src/modules/tl-bridgedb.jsm index 339cb39..8b7a1d6 100644 --- a/src/modules/tl-bridgedb.jsm +++ b/src/modules/tl-bridgedb.jsm @@ -224,17 +224,22 @@ _MoatRequestor.prototype = }
let ptStateDir = TorLauncherUtil.getTorFile("tordatadir", false); - if (!ptStateDir) + let meekHelperProfileDir = TorLauncherUtil.getTorFile("pt-profiles-dir", + true); + if (!ptStateDir || !meekHelperProfileDir) { let msg = TorLauncherUtil.getLocalizedString("datadir_missing"); return Promise.reject(new Error(msg)); } ptStateDir.append("pt_state"); // Match what tor uses.
+ meekHelperProfileDir.appendRelativePath("profile.moat-http-helper"); + let envAdditions = { TOR_PT_MANAGED_TRANSPORT_VER: "1", TOR_PT_STATE_LOCATION: ptStateDir.path, TOR_PT_EXIT_ON_STDIN_CLOSE: "1", - TOR_PT_CLIENT_TRANSPORTS: this.kTransport }; + TOR_PT_CLIENT_TRANSPORTS: this.kTransport, + TOR_BROWSER_MEEK_PROFILE: meekHelperProfileDir.path }; if (this.mLocalProxyURL) envAdditions.TOR_PT_PROXY = this.mLocalProxyURL;
diff --git a/src/modules/tl-util.jsm b/src/modules/tl-util.jsm index 292f88b..36abeaa 100644 --- a/src/modules/tl-util.jsm +++ b/src/modules/tl-util.jsm @@ -561,6 +561,8 @@ let TorLauncherUtil = // Public path = "Tor\torrc"; else if ("tordatadir" == aTorFileType) path = "Tor"; + else if ("pt-profiles-dir" == aTorFileType) + path = "Tor\PluggableTransports"; } else if (this.isMac) { @@ -574,6 +576,8 @@ let TorLauncherUtil = // Public path = "Tor/torrc"; else if ("tordatadir" == aTorFileType) path = "Tor"; + else if ("pt-profiles-dir" == aTorFileType) + path = "Tor/PluggableTransports"; else if (isIPC) path = "Tor/" + ipcFileName; } @@ -589,6 +593,8 @@ let TorLauncherUtil = // Public path = "Tor/torrc"; else if ("tordatadir" == aTorFileType) path = "Tor"; + else if ("pt-profiles-dir" == aTorFileType) + path = "Tor/PluggableTransports"; else if (isIPC) path = "Tor/" + ipcFileName; } @@ -606,7 +612,9 @@ let TorLauncherUtil = // Public path = "Data\Tor\torrc"; else if ("tordatadir" == aTorFileType) path = "Data\Tor"; - } + else if ("pt-profiles-dir" == aTorFileType) + path = "Data\Browser"; + } else // Linux, Mac OS and others. { // This block is also used for the non-TorBrowser-Data/ case. @@ -620,6 +628,8 @@ let TorLauncherUtil = // Public path = "Data/Tor/torrc"; else if ("tordatadir" == aTorFileType) path = "Data/Tor"; + else if ("pt-profiles-dir" == aTorFileType) + path = "Data/Browser"; else if (isIPC) path = "Data/Tor/" + ipcFileName; } @@ -662,10 +672,15 @@ let TorLauncherUtil = // Public { try { - if ("tordatadir" == aTorFileType) + if (("tordatadir" == aTorFileType) || + ("pt-profiles-dir" == aTorFileType)) + { torFile.create(torFile.DIRECTORY_TYPE, 0o700); + } else + { torFile.create(torFile.NORMAL_FILE_TYPE, 0o600); + } } catch (e) {
tor-commits@lists.torproject.org