lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Threads by month
  • ----- 2026 -----
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 20078 discussions
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41039: Keep download-*.json files from previous version when new version does not include them
by boklm (@boklm) 12 Dec '23

12 Dec '23
boklm pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build Commits: 7a02d02f by Nicolas Vigier at 2023-12-12T10:51:04+01:00 Bug 41039: Keep download-*.json files from previous version when new version does not include them - - - - - 1 changed file: - tools/signing/upload-update_responses-to-staticiforme Changes: ===================================== tools/signing/upload-update_responses-to-staticiforme ===================================== @@ -26,8 +26,22 @@ test -n "$(git status --porcelain=v1 | grep -v '^?')" \ is_project torbrowser && cd update_3 is_project mullvadbrowser && cd update_1 -rm -Rf "$tbb_version_type" +old_ur=$(mktemp -d) +trap "rm -Rf $old_ur" EXIT +mv "$tbb_version_type" "$old_ur/$tbb_version_type" tar -xf "$update_responses_tar" + +# Keep download-*.json files from previous release if they are not in +# the new release. This happens when a release does not include some +# platforms. See tor-browser-build#41039. +IFS=$'\n' +for file in $(ls -1 "$old_ur/$tbb_version_type"/download-*.json) +do + fname=$(basename "$file") + test -f "$tbb_version_type/$fname" && continue + mv "$file" "$tbb_version_type/$fname" +done + git add "$tbb_version_type" git commit -m "$tbb_version_type: new version, $tbb_version" git push View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41039: Keep download-*.json files from previous version when new version does not include them
by boklm (@boklm) 12 Dec '23

12 Dec '23
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 315cf59e by Nicolas Vigier at 2023-12-12T10:09:13+01:00 Bug 41039: Keep download-*.json files from previous version when new version does not include them - - - - - 1 changed file: - tools/signing/upload-update_responses-to-staticiforme Changes: ===================================== tools/signing/upload-update_responses-to-staticiforme ===================================== @@ -26,8 +26,22 @@ test -n "$(git status --porcelain=v1 | grep -v '^?')" \ is_project torbrowser && cd update_3 is_project mullvadbrowser && cd update_1 -rm -Rf "$tbb_version_type" +old_ur=$(mktemp -d) +trap "rm -Rf $old_ur" EXIT +mv "$tbb_version_type" "$old_ur/$tbb_version_type" tar -xf "$update_responses_tar" + +# Keep download-*.json files from previous release if they are not in +# the new release. This happens when a release does not include some +# platforms. See tor-browser-build#41039. +IFS=$'\n' +for file in $(ls -1 "$old_ur/$tbb_version_type"/download-*.json) +do + fname=$(basename "$file") + test -f "$tbb_version_type/$fname" && continue + mv "$file" "$tbb_version_type/$fname" +done + git add "$tbb_version_type" git commit -m "$tbb_version_type: new version, $tbb_version" git push View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android] Pushed new tag firefox-android-115.2.1-13.0-1-build10
by Pier Angelo Vendrame (@pierov) 12 Dec '23

12 Dec '23
Pier Angelo Vendrame pushed new tag firefox-android-115.2.1-13.0-1-build10 at The Tor Project / Applications / firefox-android -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/tree/firef… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser] Pushed new tag FIREFOX_115_6_0esr_BUILD1
by ma1 (@ma1) 12 Dec '23

12 Dec '23
ma1 pushed new tag FIREFOX_115_6_0esr_BUILD1 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/FIREFOX_1… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-115.6.0esr-13.0-1
by ma1 (@ma1) 12 Dec '23

12 Dec '23
ma1 pushed new branch tor-browser-115.6.0esr-13.0-1 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser] Pushed new branch base-browser-115.6.0esr-13.0-1
by ma1 (@ma1) 12 Dec '23

12 Dec '23
ma1 pushed new branch base-browser-115.6.0esr-13.0-1 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.0-1] fixup! Add Tor integration and UI
by Pier Angelo Vendrame (@pierov) 12 Dec '23

12 Dec '23
Pier Angelo Vendrame pushed to branch firefox-android-115.2.1-13.0-1 at The Tor Project / Applications / firefox-android Commits: 332071bd by Pier Angelo Vendrame at 2023-12-12T09:21:24+01:00 fixup! Add Tor integration and UI Bug 42285: Update the gitignore to use the correct paths for tor stuff - - - - - 1 changed file: - .gitignore Changes: ===================================== .gitignore ===================================== @@ -104,7 +104,7 @@ DerivedData .experimenter.json # Tor libraries for local builds -app/android-release.aar -app/jsocksAndroid-release.aar -app/service-release.aar -app/universal-0.0.3.jar +fenix/app/android-release.aar +fenix/app/jsocksAndroid-release.aar +fenix/app/service-release.aar +fenix/app/universal-0.0.3.jar View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/332… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/332… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.0-1] 2 commits: fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by Pier Angelo Vendrame (@pierov) 11 Dec '23

11 Dec '23
Pier Angelo Vendrame pushed to branch tor-browser-115.5.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: 2daa3177 by Pier Angelo Vendrame at 2023-12-11T12:50:01+01:00 fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing Bug 42283: Remove blockchair - - - - - 0c9c5483 by Pier Angelo Vendrame at 2023-12-11T12:50:02+01:00 fixup! Bug 41435: Add a Tor Browser migration function Bug 42283: Remove blockchair - - - - - 6 changed files: - browser/components/BrowserGlue.sys.mjs - − browser/components/search/extensions/blockchair-onion/favicon.png - − browser/components/search/extensions/blockchair-onion/manifest.json - − browser/components/search/extensions/blockchair/favicon.png - − browser/components/search/extensions/blockchair/manifest.json - toolkit/components/search/SearchService.sys.mjs Changes: ===================================== browser/components/BrowserGlue.sys.mjs ===================================== @@ -4591,7 +4591,9 @@ BrowserGlue.prototype = { // migration to packaged locales. // Version 2: Tor Browser 13.0/13.0a1: tor-browser#41845. Also, removed some // torbutton preferences that are not used anymore. - const TBB_MIGRATION_VERSION = 2; + // Version 3: Tor Browser 13.0.7/13.5a3: Remove blockchair + // (tor-browser#42283). + const TBB_MIGRATION_VERSION = 3; const MIGRATION_PREF = "torbrowser.migration.version"; // If we decide to force updating users to pass through any version @@ -4643,6 +4645,22 @@ BrowserGlue.prototype = { } } } + if (currentVersion < 3) { + (async () => { + try { + const engine = await lazy.AddonManager.getAddonByID( + "blockchair(a)search.mozilla.org" + ); + await engine?.uninstall(); + } catch {} + try { + const engine = await lazy.AddonManager.getAddonByID( + "blockchair-onion(a)search.mozilla.org" + ); + engine?.uninstall(); + } catch {} + })(); + } Services.prefs.setIntPref(MIGRATION_PREF, TBB_MIGRATION_VERSION); }, ===================================== browser/components/search/extensions/blockchair-onion/favicon.png deleted ===================================== Binary files a/browser/components/search/extensions/blockchair-onion/favicon.png and /dev/null differ ===================================== browser/components/search/extensions/blockchair-onion/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "BlockchairOnion", - "description": "Blockchair Onion", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "blockchair-onion(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.png" - }, - "web_accessible_resources": [ - "favicon.png" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "BlockchairOnion", - "search_url": "http://blkchairbknpn73cfjhevhla7rkp4ed5gg2knctvv7it4lioy22defid.onion/search", - "search_form": "http://blkchairbknpn73cfjhevhla7rkp4ed5gg2knctvv7it4lioy22defid.onion/searc…", - "search_url_get_params": "q={searchTerms}" - } - } -} ===================================== browser/components/search/extensions/blockchair/favicon.png deleted ===================================== Binary files a/browser/components/search/extensions/blockchair/favicon.png and /dev/null differ ===================================== browser/components/search/extensions/blockchair/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "Blockchair", - "description": "Blockchair", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "blockchair(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.png" - }, - "web_accessible_resources": [ - "favicon.png" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "Blockchair", - "search_url": "https://blockchair.com/search", - "search_form": "https://blockchair.com/search/?q={searchTerms}", - "search_url_get_params": "q={searchTerms}" - } - } -} ===================================== toolkit/components/search/SearchService.sys.mjs ===================================== @@ -2282,16 +2282,11 @@ export class SearchService { { webExtension: { id: "ddg(a)search.mozilla.org" }, orderHint: 100 }, { webExtension: { id: "youtube(a)search.mozilla.org" }, orderHint: 90 }, { webExtension: { id: "google(a)search.mozilla.org" }, orderHint: 80 }, - { webExtension: { id: "blockchair(a)search.mozilla.org" }, orderHint: 70 }, - { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 60 }, - { - webExtension: { id: "blockchair-onion(a)search.mozilla.org" }, - orderHint: 50, - }, - { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 40 }, - { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 30 }, - { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 20 }, - { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 10 }, + { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 70 }, + { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 60 }, + { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 50 }, + { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 40 }, + { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 30 }, ]; for (let e of engines) { View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/73234e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/73234e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Bug 40079: Clean mullvadbrowser builds using browser-all-desktop instead of browser-all target
by boklm (@boklm) 08 Dec '23

08 Dec '23
boklm pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: c59310fb by Nicolas Vigier at 2023-12-08T09:57:35+01:00 Bug 40079: Clean mullvadbrowser builds using browser-all-desktop instead of browser-all target - - - - - 1 changed file: - rbm-config/tb-build-06.torproject.org.rbm.local.conf Changes: ===================================== rbm-config/tb-build-06.torproject.org.rbm.local.conf ===================================== @@ -70,7 +70,7 @@ var: - project: release target: - nightly - - browser-all + - browser-all-desktop - mullvadbrowser # ### If you are doing 'release' builds in the maint-7.0 branch and View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.5-1] 8 commits: fixup! Bug 25741: TBA: Disable GeckoNetworkManager
by Pier Angelo Vendrame (@pierov) 07 Dec '23

07 Dec '23
Pier Angelo Vendrame pushed to branch tor-browser-115.5.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 5ad20208 by Pier Angelo Vendrame at 2023-12-06T18:31:01+01:00 fixup! Bug 25741: TBA: Disable GeckoNetworkManager Fixed a trailing whitespace - - - - - 8c95910c by Pier Angelo Vendrame at 2023-12-06T18:31:02+01:00 fixup! Bug 40597: Implement TorSettings module Implement an Android-specific transport, that relies on the Java side to start the domain fronting proxy. - - - - - fb609914 by Pier Angelo Vendrame at 2023-12-07T19:35:29+01:00 Bug 42247: Android helpers for the TorProvider GeckoView is missing some API we use on desktop for the integration with the tor daemon, such as subprocess. Therefore, we need to implement them in Java and plumb the data back and forth between JS and Java. - - - - - 1b7630ec by Pier Angelo Vendrame at 2023-12-07T19:35:34+01:00 fixup! Bug 40933: Add tor-launcher functionality Use a custom TorProcessAndroid in the TorProvider on Android. - - - - - d0ae1f7e by Pier Angelo Vendrame at 2023-12-07T19:35:35+01:00 fixup! Bug 42247: Android helpers for the TorProvider Test to plumb down the circuit display data - - - - - 51d44491 by Pier Angelo Vendrame at 2023-12-07T19:35:35+01:00 fixup! Bug 42247: Android helpers for the TorProvider Switch from a gate based on the update channel to a gate based on a pref. Also, draft the JS part for TorSettings events. - - - - - be3afbb8 by Pier Angelo Vendrame at 2023-12-07T19:35:55+01:00 fixup! Bug 42247: Android helpers for the TorProvider Keep only a TorProcess in memory at a time. When we forget a process from JS, we also delete the Java instance. When we start a new process, we delete the old one if any (but emit a warning in logs, in case). - - - - - 766abfe6 by Pier Angelo Vendrame at 2023-12-07T19:35:58+01:00 fixup! Bug 40933: Add tor-launcher functionality Make TorProcessAndroid.forget signal to Java the forget request. - - - - - 13 changed files: - mobile/android/components/geckoview/GeckoViewStartup.jsm - mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java - mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java - mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java - + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java - mobile/android/modules/geckoview/GeckoViewContent.sys.mjs - + toolkit/components/tor-launcher/TorProcessAndroid.sys.mjs - toolkit/components/tor-launcher/TorProvider.sys.mjs - toolkit/components/tor-launcher/moz.build - toolkit/modules/Moat.sys.mjs - + toolkit/modules/TorAndroidIntegration.sys.mjs - toolkit/modules/TorConnect.sys.mjs - toolkit/modules/moz.build Changes: ===================================== mobile/android/components/geckoview/GeckoViewStartup.jsm ===================================== @@ -5,6 +5,10 @@ var EXPORTED_SYMBOLS = ["GeckoViewStartup"]; +const { AppConstants } = ChromeUtils.importESModule( + "resource://gre/modules/AppConstants.sys.mjs" +); + const { GeckoViewUtils } = ChromeUtils.importESModule( "resource://gre/modules/GeckoViewUtils.sys.mjs" ); @@ -17,6 +21,7 @@ ChromeUtils.defineESModuleGetters(lazy, { PdfJs: "resource://pdf.js/PdfJs.sys.mjs", Preferences: "resource://gre/modules/Preferences.sys.mjs", RFPHelper: "resource://gre/modules/RFPHelper.sys.mjs", + TorAndroidIntegration: "resource://gre/modules/TorAndroidIntegration.sys.mjs", TorDomainIsolator: "resource://gre/modules/TorDomainIsolator.sys.mjs", }); @@ -259,6 +264,7 @@ class GeckoViewStartup { "GeckoView:SetLocale", ]); + lazy.TorAndroidIntegration.init(); lazy.TorDomainIsolator.init(); Services.obs.addObserver(this, "browser-idle-startup-tasks-finished"); ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java ===================================== @@ -167,7 +167,7 @@ public final class GeckoRuntime implements Parcelable { if (!BuildConfig.TOR_BROWSER) { GeckoNetworkManager.getInstance().start(GeckoAppShell.getApplicationContext()); } else { - Log.d(LOGTAG, "Tor Browser: skip GeckoNetworkManager startup"); + Log.d(LOGTAG, "Tor Browser: skip GeckoNetworkManager startup"); } // Set settings that may have changed between last app opening @@ -230,6 +230,8 @@ public final class GeckoRuntime implements Parcelable { private final ProfilerController mProfilerController; private final GeckoScreenChangeListener mScreenChangeListener; + private TorIntegrationAndroid mTorIntegration; + private GeckoRuntime() { mWebExtensionController = new WebExtensionController(this); mContentBlockingController = new ContentBlockingController(); @@ -484,6 +486,8 @@ public final class GeckoRuntime implements Parcelable { mScreenChangeListener.enable(); } + mTorIntegration = new TorIntegrationAndroid(context); + mProfilerController.addMarker( "GeckoView Initialization START", mProfilerController.getProfilerTime()); return true; @@ -600,6 +604,10 @@ public final class GeckoRuntime implements Parcelable { mScreenChangeListener.disable(); } + if (mTorIntegration != null) { + mTorIntegration.shutdown(); + } + GeckoThread.forceQuit(); } ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java ===================================== @@ -487,6 +487,11 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { getSettings().mPrioritizeOnions.set(flag); return this; } + + public @NonNull Builder useNewBootstrap(final boolean flag) { + getSettings().mUseNewBootstrap.set(flag); + return this; + } } private GeckoRuntime mRuntime; @@ -540,6 +545,8 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { new Pref<>("browser.security_level.security_slider", 4); /* package */ final Pref<Boolean> mPrioritizeOnions = new Pref<>("privacy.prioritizeonions.enabled", false); + /* package */ final Pref<Boolean> mUseNewBootstrap = + new Pref<>("browser.tor_android.use_new_bootstrap", false); /* package */ int mPreferredColorScheme = COLOR_SCHEME_SYSTEM; @@ -1352,6 +1359,15 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { return this; } + public boolean getUseNewBootstrap() { + return mUseNewBootstrap.get(); + } + + public @NonNull GeckoRuntimeSettings setUseNewBootstrap(final boolean flag) { + mUseNewBootstrap.commit(flag); + return this; + } + @Override // Parcelable public void writeToParcel(final Parcel out, final int flags) { super.writeToParcel(out, flags); ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java ===================================== @@ -2493,6 +2493,16 @@ public class GeckoSession { return mEventDispatcher.queryBoolean("GeckoView:IsPdfJs"); } + /** + * Try to get last circuit used in this session, if possible. + * + * @return The circuit information as a {@link GeckoResult} object. + */ + @AnyThread + public @NonNull GeckoResult<GeckoBundle> getTorCircuit() { + return mEventDispatcher.queryBundle("GeckoView:GetTorCircuit"); + } + /** * Set this GeckoSession as active or inactive, which represents if the session is currently * visible or not. Setting a GeckoSession to inactive will significantly reduce its memory ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java ===================================== @@ -0,0 +1,435 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * vim: ts=4 sw=4 expandtab: + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.geckoview; + +import android.content.Context; +import android.util.Log; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.nio.file.attribute.PosixFilePermission; +import java.nio.file.attribute.PosixFilePermissions; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.mozilla.gecko.EventDispatcher; +import org.mozilla.gecko.GeckoAppShell; +import org.mozilla.gecko.util.BundleEventListener; +import org.mozilla.gecko.util.EventCallback; +import org.mozilla.gecko.util.GeckoBundle; + +/* package */ class TorIntegrationAndroid implements BundleEventListener { + private static final String TAG = "TorIntegrationAndroid"; + + private static final String TOR_EVENT_START = "GeckoView:Tor:StartTor"; + private static final String TOR_EVENT_STOP = "GeckoView:Tor:StopTor"; + private static final String MEEK_EVENT_START = "GeckoView:Tor:StartMeek"; + private static final String MEEK_EVENT_STOP = "GeckoView:Tor:StopMeek"; + + private static final String CONTROL_PORT_FILE = "/control-ipc"; + private static final String SOCKS_FILE = "/socks-ipc"; + private static final String COOKIE_AUTH_FILE = "/auth-file"; + + private final String mLibraryDir; + private final Path mCacheDir; + private final String mIpcDirectory; + private final String mDataDir; + + private TorProcess mTorProcess = null; + /** + * The first time we run a Tor process in this session, we copy some configuration files to be + * sure we always have the latest version, but if we re-launch a tor process we do not need to + * copy them again. + */ + private boolean mCopiedConfigFiles = false; + /** + * Allow multiple proxies to be started, even though it might not actually happen. + * The key should be positive (also 0 is not allowed). + */ + private final HashMap<Integer, MeekTransport> mMeeks = new HashMap<>(); + private int mMeekCounter; + + public TorIntegrationAndroid(Context context) { + mLibraryDir = context.getApplicationInfo().nativeLibraryDir; + mCacheDir = context.getCacheDir().toPath(); + mIpcDirectory = mCacheDir + "/tor-private"; + mDataDir = context.getDataDir().getAbsolutePath() + "/tor"; + registerListener(); + } + + public synchronized void shutdown() { + // FIXME: It seems this never gets called + if (mTorProcess != null) { + mTorProcess.shutdown(); + mTorProcess = null; + } + } + + private void registerListener() { + EventDispatcher.getInstance() + .registerUiThreadListener( + this, + TOR_EVENT_START, + MEEK_EVENT_START, + MEEK_EVENT_STOP); + } + + @Override // BundleEventListener + public synchronized void handleMessage( + final String event, final GeckoBundle message, final EventCallback callback) { + if (TOR_EVENT_START.equals(event)) { + startDaemon(message, callback); + } else if (TOR_EVENT_STOP.equals(event)) { + stopDaemon(message, callback); + } else if (MEEK_EVENT_START.equals(event)) { + startMeek(message, callback); + } else if (MEEK_EVENT_STOP.equals(event)) { + stopMeek(message, callback); + } + } + + private synchronized void startDaemon(final GeckoBundle message, final EventCallback callback) { + // Let JS generate this to possibly reduce the chance of race conditions. + String handle = message.getString("handle", ""); + if (handle.isEmpty()) { + Log.e(TAG, "Requested to start a tor process without a handle."); + callback.sendError("Expected a handle for the new process."); + return; + } + Log.d(TAG, "Starting the a tor process with handle " + handle); + + TorProcess previousProcess = mTorProcess; + if (previousProcess != null) { + Log.w(TAG, "We still have a running process: " + previousProcess.getHandle()); + } + mTorProcess = new TorProcess(handle); + + GeckoBundle bundle = new GeckoBundle(3); + bundle.putString("controlPortPath", mIpcDirectory + CONTROL_PORT_FILE); + bundle.putString("socksPath", mIpcDirectory + SOCKS_FILE); + bundle.putString("cookieFilePath", mIpcDirectory + COOKIE_AUTH_FILE); + callback.sendSuccess(bundle); + } + + private synchronized void stopDaemon(final GeckoBundle message, final EventCallback callback) { + if (mTorProcess == null) { + if (callback != null) { + callback.sendSuccess(null); + } + return; + } + String handle = message.getString("handle", ""); + if (!mTorProcess.getHandle().equals(handle)) { + GeckoBundle bundle = new GeckoBundle(1); + bundle.putString("error", "The requested process has not been found. It might have already been stopped."); + callback.sendError(bundle); + return; + } + mTorProcess.shutdown(); + mTorProcess = null; + callback.sendSuccess(null); + } + + class TorProcess extends Thread { + private static final String TOR_EVENT_STARTED = "GeckoView:Tor:TorStarted"; + private static final String TOR_EVENT_START_FAILED = "GeckoView:Tor:TorStartFailed"; + private static final String TOR_EVENT_EXITED = "GeckoView:Tor:TorExited"; + private final String mHandle; + private Process mProcess = null; + + TorProcess(String handle) { + mHandle = handle; + setName("tor-process-" + handle); + start(); + } + + @Override + public void run() { + cleanIpcDirectory(); + + final String ipcDir = TorIntegrationAndroid.this.mIpcDirectory; + final ArrayList<String> args = new ArrayList<>(); + args.add(mLibraryDir + "/libTor.so"); + args.add("DisableNetwork"); + args.add("1"); + args.add("+__ControlPort"); + args.add("unix:" + ipcDir + CONTROL_PORT_FILE); + args.add("+__SocksPort"); + args.add("unix:" + ipcDir + SOCKS_FILE + " IPv6Traffic PreferIPv6 KeepAliveIsolateSOCKSAuth"); + args.add("CookieAuthentication"); + args.add("1"); + args.add("CookieAuthFile"); + args.add(ipcDir + COOKIE_AUTH_FILE); + args.add("DataDirectory"); + args.add(mDataDir); + boolean copied = true; + try { + copyAndUseConfigFile("--defaults-torrc", "torrc-defaults", args); + } catch (IOException e) { + Log.w(TAG, "torrc-default cannot be created, pluggable transports will not be available", e); + copied = false; + } + try { + copyAndUseConfigFile("GeoIPFile", "geoip", args); + copyAndUseConfigFile("GeoIPv6File", "geoip6", args); + } catch (IOException e) { + Log.w(TAG, "GeoIP files cannot be created, this feature will not be available.", e); + copied = false; + } + mCopiedConfigFiles = copied; + + Log.d(TAG, "Starting tor with the follwing args: " + args.toString()); + final ProcessBuilder builder = new ProcessBuilder(args); + builder.directory(new File(mLibraryDir)); + try { + mProcess = builder.start(); + } catch (IOException e) { + Log.e(TAG, "Cannot start tor " + mHandle, e); + final GeckoBundle data = new GeckoBundle(2); + data.putString("handle", mHandle); + data.putString("error", e.getMessage()); + EventDispatcher.getInstance().dispatch(TOR_EVENT_START_FAILED, data); + return; + } + Log.i(TAG, "Tor process " + mHandle + " started."); + { + final GeckoBundle data = new GeckoBundle(1); + data.putString("handle", mHandle); + EventDispatcher.getInstance().dispatch(TOR_EVENT_STARTED, data); + } + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(mProcess.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + Log.i(TAG, "[tor-" + mHandle + "] " + line); + } + } catch (IOException e) { + Log.e(TAG, "Failed to read stdout of the tor process " + mHandle, e); + } + Log.d(TAG, "Exiting the stdout loop for process " + mHandle); + final GeckoBundle data = new GeckoBundle(2); + data.putString("handle", mHandle); + try { + data.putInt("status", mProcess.waitFor()); + } catch (InterruptedException e) { + Log.e(TAG, "Failed to wait for the tor process " + mHandle, e); + data.putInt("status", 0xdeadbeef); + } + // FIXME: We usually don't reach this when the application is killed! + // So, we don't do our cleanup. + Log.i(TAG, "Tor process " + mHandle + " has exited."); + EventDispatcher.getInstance().dispatch(TOR_EVENT_EXITED, data); + } + + private void cleanIpcDirectory() { + File directory = new File(TorIntegrationAndroid.this.mIpcDirectory); + if (!Files.isDirectory(directory.toPath())) { + if (!directory.mkdirs()) { + Log.e(TAG, "Failed to create the IPC directory."); + return; + } + try { + Set<PosixFilePermission> chmod = PosixFilePermissions.fromString("rwx------"); + Files.setPosixFilePermissions(directory.toPath(), chmod); + } catch (IOException e) { + Log.e(TAG, "Could not set the permissions to the IPC directory.", e); + } + return; + } + // We assume we do not have child directories, only files + File[] maybeFiles = directory.listFiles(); + if (maybeFiles != null) { + for (File file : maybeFiles) { + if (!file.delete()) { + Log.d(TAG, "Could not delete " + file); + } + } + } + } + + private void copyAndUseConfigFile(String option, String name, ArrayList<String> args) throws IOException { + final Path path = Paths.get(mCacheDir.toFile().getAbsolutePath(), name); + if (!mCopiedConfigFiles || !path.toFile().exists()) { + final Context context = GeckoAppShell.getApplicationContext(); + final InputStream in = context.getAssets().open("common/" + name); + Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING); + in.close(); + } + args.add(option); + args.add(path.toString()); + } + + public void shutdown() { + if (mProcess != null && mProcess.isAlive()) { + mProcess.destroy(); + } + if (isAlive()) { + try { + join(); + } catch (InterruptedException e) { + Log.e(TAG, "Cannot join the thread for tor process " + mHandle + ", possibly already terminated", e); + } + } + } + + public String getHandle() { + return mHandle; + } + } + + private synchronized void startMeek(final GeckoBundle message, final EventCallback callback) { + if (callback == null) { + Log.e(TAG, "Tried to start Meek without a callback."); + return; + } + mMeekCounter++; + mMeeks.put(new Integer(mMeekCounter), new MeekTransport(callback, mMeekCounter)); + } + + private synchronized void stopMeek(final GeckoBundle message, final EventCallback callback) { + final Integer key = message.getInteger("id"); + final MeekTransport meek = mMeeks.remove(key); + if (meek != null) { + meek.shutdown(); + } + if (callback != null) { + callback.sendSuccess(null); + } + } + + private class MeekTransport extends Thread { + private static final String TRANSPORT = "meek_lite"; + private Process mProcess; + private final EventCallback mCallback; + private final int mId; + + MeekTransport(final EventCallback callback, int id) { + setName("meek-" + id); + final ProcessBuilder builder = new ProcessBuilder(mLibraryDir + "/libObfs4proxy.so"); + { + final Map<String, String> env = builder.environment(); + env.put("TOR_PT_MANAGED_TRANSPORT_VER", "1"); + env.put("TOR_PT_STATE_LOCATION", mDataDir + "/pt_state"); + env.put("TOR_PT_EXIT_ON_STDIN_CLOSE", "1"); + env.put("TOR_PT_CLIENT_TRANSPORTS", TRANSPORT); + } + mCallback = callback; + mId = id; + try { + // We expect this process to be short-lived, therefore we do not bother with + // implementing this as a service. + mProcess = builder.start(); + } catch (IOException e) { + Log.e(TAG, "Cannot start the PT", e); + callback.sendError(e.getMessage()); + return; + } + start(); + } + + /** + * Parse the standard output of the pluggable transport to find the hostname and port it is + * listening on. + * <p> + * See also the specs for the IPC protocol at https://spec.torproject.org/pt-spec/ipc.html. + */ + @Override + public void run() { + final String PROTOCOL_VERSION = "1"; + String hostname = ""; + boolean valid = false; + int port = 0; + String error = "Did not see a CMETHOD"; + try { + InputStreamReader isr = new InputStreamReader(mProcess.getInputStream()); + BufferedReader reader = new BufferedReader(isr); + String line; + while ((line = reader.readLine()) != null) { + line = line.trim(); + Log.d(TAG, "Meek line: " + line); + // Split produces always at least one item + String[] tokens = line.split(" "); + if ("VERSION".equals(tokens[0]) && (tokens.length != 2 || !PROTOCOL_VERSION.equals(tokens[1]))) { + error = "Bad version: " + line; + break; + } + if ("CMETHOD".equals(tokens[0])) { + if (tokens.length != 4) { + error = "Bad number of tokens in CMETHOD: " + line; + break; + } + if (!tokens[1].equals(TRANSPORT)) { + error = "Unexpected transport: " + tokens[1]; + break; + } + if (!"socks5".equals(tokens[2])) { + error = "Unexpected proxy type: " + tokens[2]; + break; + } + String[] addr = tokens[3].split(":"); + if (addr.length != 2) { + error = "Invalid address"; + break; + } + hostname = addr[0]; + try { + port = Integer.parseInt(addr[1]); + } catch (NumberFormatException e) { + error = "Invalid port: " + e.getMessage(); + break; + } + if (port < 1 || port > 65535) { + error = "Invalid port: out of bounds"; + break; + } + valid = true; + break; + } + if (tokens[0].endsWith("-ERROR")) { + error = "Seen an error: " + line; + break; + } + } + } catch (Exception e) { + error = e.getMessage(); + } + if (valid) { + Log.d(TAG, "Setup a meek transport " + mId + ": " + hostname + ":" + port); + final GeckoBundle bundle = new GeckoBundle(3); + bundle.putInt("id", mId); + bundle.putString("address", hostname); + bundle.putInt("port", port); + mCallback.sendSuccess(bundle); + } else { + Log.e(TAG, "Failed to get a usable config from the PT: " + error); + mCallback.sendError(error); + } + } + + void shutdown() { + if (mProcess != null) { + mProcess.destroy(); + mProcess = null; + } + try { + join(); + } catch (InterruptedException e) { + Log.e(TAG, "Could not join the meek thread", e); + } + } + } +} ===================================== mobile/android/modules/geckoview/GeckoViewContent.sys.mjs ===================================== @@ -4,6 +4,12 @@ import { GeckoViewModule } from "resource://gre/modules/GeckoViewModule.sys.mjs"; +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + TorDomainIsolator: "resource://gre/modules/TorDomainIsolator.sys.mjs", +}); + export class GeckoViewContent extends GeckoViewModule { onInit() { this.registerListener([ @@ -22,6 +28,7 @@ export class GeckoViewContent extends GeckoViewModule { "GeckoView:UpdateInitData", "GeckoView:ZoomToInput", "GeckoView:IsPdfJs", + "GeckoView:GetTorCircuit", ]); } @@ -190,6 +197,21 @@ export class GeckoViewContent extends GeckoViewModule { case "GeckoView:HasCookieBannerRuleForBrowsingContextTree": this._hasCookieBannerRuleForBrowsingContextTree(aCallback); break; + case "GeckoView:GetTorCircuit": + if (this.browser && aCallback) { + const domain = lazy.TorDomainIsolator.getDomainForBrowser( + this.browser + ); + const nodes = lazy.TorDomainIsolator.getCircuit( + this.browser, + domain, + this.browser.contentPrincipal.originAttributes.userContextId + ); + aCallback?.onSuccess({ domain, nodes }); + } else { + aCallback?.onSuccess(null); + } + break; } } ===================================== toolkit/components/tor-launcher/TorProcessAndroid.sys.mjs ===================================== @@ -0,0 +1,122 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import { ConsoleAPI } from "resource://gre/modules/Console.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + EventDispatcher: "resource://gre/modules/Messaging.sys.mjs", +}); + +const logger = new ConsoleAPI({ + maxLogLevel: "info", + prefix: "TorProcessAndroid", +}); + +const TorOutgoingEvents = Object.freeze({ + start: "GeckoView:Tor:StartTor", + stop: "GeckoView:Tor:StopTor", +}); + +// The events we will listen to +const TorIncomingEvents = Object.freeze({ + started: "GeckoView:Tor:TorStarted", + startFailed: "GeckoView:Tor:TorStartFailed", + exited: "GeckoView:Tor:TorExited", +}); + +export class TorProcessAndroid { + /** + * The handle the Java counterpart uses to refer to the process we started. + * We use it to filter the exit events and make sure they refer to the daemon + * we are interested in. + */ + #processHandle = null; + /** + * The promise resolver we call when the Java counterpart sends the event that + * tor has started. + */ + #startResolve = null; + /** + * The promise resolver we call when the Java counterpart sends the event that + * it failed to start tor. + */ + #startReject = null; + + onExit = () => {}; + + get isRunning() { + return !!this.#processHandle; + } + + async start() { + // Generate the handle on the JS side so that it's ready in case it takes + // less to start the process than to propagate the success. + this.#processHandle = crypto.randomUUID(); + logger.info(`Starting new process with handle ${this.#processHandle}`); + // Let's declare it immediately, so that the Java side can do its stuff in + // an async manner and we avoid possible race conditions (at most we await + // an already resolved/rejected promise. + const startEventPromise = new Promise((resolve, reject) => { + this.#startResolve = resolve; + this.#startReject = reject; + }); + lazy.EventDispatcher.instance.registerListener( + this, + Object.values(TorIncomingEvents) + ); + let config; + try { + config = await lazy.EventDispatcher.instance.sendRequestForResult({ + type: TorOutgoingEvents.start, + handle: this.#processHandle, + }); + logger.debug("Sent the start event."); + } catch (e) { + this.forget(); + throw e; + } + await startEventPromise; + return config; + } + + forget() { + // Processes usually exit when we close the control port connection to them. + logger.trace(`Forgetting process ${this.#processHandle}`); + lazy.EventDispatcher.instance.sendRequestForResult({ + type: TorOutgoingEvents.stop, + handle: this.#processHandle, + }); + logger.debug("Sent the start event."); + this.#processHandle = null; + lazy.EventDispatcher.instance.unregisterListener( + this, + Object.values(TorIncomingEvents) + ); + } + + onEvent(event, data, callback) { + if (data?.handle !== this.#processHandle) { + logger.debug(`Ignoring event ${event} with another handle`, data); + return; + } + logger.info(`Received an event ${event}`, data); + switch (event) { + case TorIncomingEvents.started: + this.#startResolve(); + break; + case TorIncomingEvents.startFailed: + this.#startReject(new Error(data.error)); + break; + case TorIncomingEvents.exited: + this.forget(); + if (this.#startReject !== null) { + this.#startReject(); + } + this.onExit(data.status); + break; + } + } +} ===================================== toolkit/components/tor-launcher/TorProvider.sys.mjs ===================================== @@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { FileUtils: "resource://gre/modules/FileUtils.sys.mjs", TorController: "resource://gre/modules/TorControlPort.sys.mjs", TorProcess: "resource://gre/modules/TorProcess.sys.mjs", + TorProcessAndroid: "resource://gre/modules/TorProcessAndroid.sys.mjs", }); const logger = new ConsoleAPI({ @@ -182,8 +183,12 @@ export class TorProvider { logger.debug("Initializing the Tor provider."); // These settings might be customized in the following steps. - this.#socksSettings = TorLauncherUtil.getPreferredSocksConfiguration(); - logger.debug("Requested SOCKS configuration", this.#socksSettings); + if (TorLauncherUtil.isAndroid) { + this.#socksSettings = { transproxy: false }; + } else { + this.#socksSettings = TorLauncherUtil.getPreferredSocksConfiguration(); + logger.debug("Requested SOCKS configuration", this.#socksSettings); + } try { await this.#setControlPortConfiguration(); @@ -490,10 +495,14 @@ export class TorProvider { return; } - this.#torProcess = new lazy.TorProcess( - this.#controlPortSettings, - this.#socksSettings - ); + if (TorLauncherUtil.isAndroid) { + this.#torProcess = new lazy.TorProcessAndroid(); + } else { + this.#torProcess = new lazy.TorProcess( + this.#controlPortSettings, + this.#socksSettings + ); + } // Use a closure instead of bind because we reassign #cancelConnection. // Also, we now assign an exit handler that cancels the first connection, // so that a sudden exit before the first connection is completed might @@ -507,7 +516,17 @@ export class TorProvider { }; logger.debug("Trying to start the tor process."); - await this.#torProcess.start(); + const res = await this.#torProcess.start(); + if (TorLauncherUtil.isAndroid) { + this.#controlPortSettings = { + ipcFile: new lazy.FileUtils.File(res.controlPortPath), + cookieFilePath: res.cookieFilePath, + }; + this.#socksSettings = { + transproxy: false, + ipcFile: new lazy.FileUtils.File(res.socksPath), + }; + } logger.info("Started a tor process"); } @@ -521,6 +540,11 @@ export class TorProvider { logger.debug("Reading the control port configuration"); const settings = {}; + if (TorLauncherUtil.isAndroid) { + // We will populate the settings after having started the daemon. + return; + } + const isWindows = Services.appinfo.OS === "WINNT"; // Determine how Tor Launcher will connect to the Tor control port. // Environment variables get top priority followed by preferences. ===================================== toolkit/components/tor-launcher/moz.build ===================================== @@ -5,6 +5,7 @@ EXTRA_JS_MODULES += [ "TorLauncherUtil.sys.mjs", "TorParsers.sys.mjs", "TorProcess.sys.mjs", + "TorProcessAndroid.sys.mjs", "TorProvider.sys.mjs", "TorProviderBuilder.sys.mjs", "TorStartupService.sys.mjs", ===================================== toolkit/modules/Moat.sys.mjs ===================================== @@ -10,6 +10,7 @@ import { const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { + EventDispatcher: "resource://gre/modules/Messaging.sys.mjs", Subprocess: "resource://gre/modules/Subprocess.sys.mjs", TorLauncherUtil: "resource://gre/modules/TorLauncherUtil.sys.mjs", TorProviderBuilder: "resource://gre/modules/TorProviderBuilder.sys.mjs", @@ -290,6 +291,48 @@ class MeekTransport { } } +class MeekTransportAndroid { + // These members are used by consumers to setup the proxy to do requests over + // meek. They are passed to newProxyInfoWithAuth. + proxyType = null; + proxyAddress = null; + proxyPort = 0; + proxyUsername = null; + proxyPassword = null; + + #id = 0; + + async init() { + // ensure we haven't already init'd + if (this.#id) { + throw new Error("MeekTransport: Already initialized"); + } + const details = await lazy.EventDispatcher.instance.sendRequestForResult({ + type: "GeckoView:Tor:StartMeek", + }); + this.#id = details.id; + this.proxyType = "socks"; + this.proxyAddress = details.address; + this.proxyPort = details.port; + [this.proxyUsername, this.proxyPassword] = makeMeekCredentials( + this.proxyType + ); + } + + async uninit() { + lazy.EventDispatcher.instance.sendRequest({ + type: "GeckoView:Tor:StopMeek", + id: this.#id, + }); + this.#id = 0; + this.proxyType = null; + this.proxyAddress = null; + this.proxyPort = 0; + this.proxyUsername = null; + this.proxyPassword = null; + } +} + // // Callback object with a cached promise for the returned Moat data // @@ -407,7 +450,10 @@ export class MoatRPC { throw new Error("MoatRPC: Already initialized"); } - const meekTransport = new MeekTransport(); + const meekTransport = + Services.appinfo.OS === "Android" + ? new MeekTransportAndroid() + : new MeekTransport(); await meekTransport.init(); this.#meekTransport = meekTransport; this.#inited = true; ===================================== toolkit/modules/TorAndroidIntegration.sys.mjs ===================================== @@ -0,0 +1,108 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import { ConsoleAPI } from "resource://gre/modules/Console.sys.mjs"; + +const lazy = {}; +ChromeUtils.defineESModuleGetters(lazy, { + EventDispatcher: "resource://gre/modules/Messaging.sys.mjs", + TorConnect: "resource://gre/modules/TorConnect.sys.mjs", + TorProviderBuilder: "resource://gre/modules/TorProviderBuilder.sys.mjs", + TorSettings: "resource://gre/modules/TorSettings.sys.mjs", +}); + +const Prefs = Object.freeze({ + useNewBootstrap: "browser.tor_android.use_new_bootstrap", + logLevel: "browser.tor_android.log_level", +}); + +const logger = new ConsoleAPI({ + maxLogLevel: "info", + maxLogLevelPref: Prefs.logLevel, + prefix: "TorAndroidIntegration", +}); + +const ListenedEvents = Object.freeze({ + settingsGet: "GeckoView:Tor:SettingsGet", + settingsSet: "GeckoView:Tor:SettingsSet", + settingsApply: "GeckoView:Tor:SettingsApply", + settingsSave: "GeckoView:Tor:SettingsSave", +}); + +class TorAndroidIntegrationImpl { + #initialized = false; + + init() { + lazy.EventDispatcher.instance.registerListener( + this, + Object.values(ListenedEvents) + ); + + this.#bootstrapMethodReset(); + Services.prefs.addObserver(Prefs.useNewBootstrap, this); + } + + async #initNewBootstrap() { + if (this.#initialized) { + return; + } + this.#initialized = true; + + lazy.TorProviderBuilder.init().finally(() => { + lazy.TorProviderBuilder.firstWindowLoaded(); + }); + try { + await lazy.TorSettings.init(); + await lazy.TorConnect.init(); + } catch (e) { + logger.error("Cannot initialize TorSettings or TorConnect", e); + } + } + + observe(subj, topic, data) { + switch (topic) { + case "nsPref:changed": + if (data === Prefs.useNewBootstrap) { + this.#bootstrapMethodReset(); + } + break; + } + } + + async onEvent(event, data, callback) { + logger.debug(`Received event ${event}`, data); + try { + switch (event) { + case settingsGet: + callback?.onSuccess(lazy.TorSettings.getSettings()); + return; + case settingsSet: + // This does not throw, so we do not have any way to report the error! + lazy.TorSettings.setSettings(data); + break; + case settingsApply: + await lazy.TorSettings.applySettings(); + break; + case settingsSave: + await lazy.TorSettings.saveSettings(); + break; + } + callback?.onSuccess(); + } catch (e) { + logger.error(); + callback?.sendError(e); + } + } + + #bootstrapMethodReset() { + if (Services.prefs.getBoolPref(Prefs.useNewBootstrap, false)) { + this.#initNewBootstrap(); + } else { + Services.prefs.clearUserPref("network.proxy.socks"); + Services.prefs.clearUserPref("network.proxy.socks_port"); + } + } +} + +export const TorAndroidIntegration = new TorAndroidIntegrationImpl(); ===================================== toolkit/modules/TorConnect.sys.mjs ===================================== @@ -793,6 +793,9 @@ export const TorConnect = (() => { TorConnect._errorMessage = errorMessage; TorConnect._errorDetails = errorDetails; + console.error( + `[TorConnect] Entering error state (${errorMessage}, ${errorDetails})` + ); Services.obs.notifyObservers( { message: errorMessage, details: errorDetails }, ===================================== toolkit/modules/moz.build ===================================== @@ -215,6 +215,7 @@ EXTRA_JS_MODULES += [ "Sqlite.sys.mjs", "SubDialog.sys.mjs", "Timer.sys.mjs", + "TorAndroidIntegration.sys.mjs", "TorConnect.sys.mjs", "TorSettings.sys.mjs", "TorStrings.sys.mjs", View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4195de… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4195de… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Bug 40076: Enable nightly builds for Mullvad Browser.
by boklm (@boklm) 07 Dec '23

07 Dec '23
boklm pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: 648a261d by Pier Angelo Vendrame at 2023-12-07T15:13:58+01:00 Bug 40076: Enable nightly builds for Mullvad Browser. We enabled base browser builds before Mullvad Browser was completely created. But now Mullvad Browser has some code paths that are not tested in Base Browser, therefore it makes more sense to build MB instead of BB. - - - - - 2 changed files: - TBBTestSuite/TestSuite/TorBrowserBuild.pm - rbm-config/tb-build-06.torproject.org.rbm.local.conf Changes: ===================================== TBBTestSuite/TestSuite/TorBrowserBuild.pm ===================================== @@ -180,106 +180,66 @@ sub set_tests { ], publish_dir => 'nightly-android-aarch64', }, - # Base Browser Nightly + # Mullvad Browser Nightly { - name => 'basebrowser-nightly-linux-x86_64', - descr => 'build base-browser nightly linux-x86_64', + name => 'mullvadbrowser-nightly-linux-x86_64', + descr => 'build mullvad-browser nightly linux-x86_64', type => 'rbm_build', project => 'release', targets => [ 'noversiondir', 'nightly', 'browser-linux-x86_64', - 'basebrowser', + 'mullvadbrowser', ], - publish_dir => 'basebrowser-nightly-linux-x86_64', + publish_dir => 'mullvadbrowser-nightly-linux-x86_64', }, { - name => 'basebrowser-incrementals-nightly-linux-x86_64', - descr => 'create incrementals for base-browser nightly linux-x86_64', + name => 'mullvadbrowser-incrementals-nightly-linux-x86_64', + descr => 'create incrementals for mullvad-browser nightly linux-x86_64', type => 'make_incrementals', - publish_dir => 'basebrowser-nightly-linux-x86_64', - projectname => 'basebrowser', + publish_dir => 'mullvadbrowser-nightly-linux-x86_64', + projectname => 'mullvadbrowser', }, { - name => 'basebrowser-nightly-linux-i686', - descr => 'build base-browser nightly linux-i686', - type => 'rbm_build', - project => 'release', - targets => [ - 'noversiondir', - 'nightly', - 'browser-linux-i686', - 'basebrowser', - ], - publish_dir => 'basebrowser-nightly-linux-i686', - }, - { - name => 'basebrowser-incrementals-nightly-linux-i686', - descr => 'create incrementals for base-browser nightly linux-i686', - type => 'make_incrementals', - publish_dir => 'basebrowser-nightly-linux-i686', - projectname => 'basebrowser', - }, - { - name => 'basebrowser-nightly-windows-i686', - descr => 'build base-browser nightly windows-i686', - type => 'rbm_build', - project => 'release', - targets => [ - 'noversiondir', - 'nightly', - 'browser-windows-i686', - 'basebrowser', - ], - publish_dir => 'basebrowser-nightly-windows-i686', - }, - { - name => 'basebrowser-incrementals-nightly-windows-i686', - descr => 'create incrementals for base-browser nightly windows-i686', - type => 'make_incrementals', - publish_dir => 'basebrowser-nightly-windows-i686', - projectname => 'basebrowser', - }, - { - name => 'basebrowser-nightly-windows-x86_64', - descr => 'build base-browser nightly windows-x86_64', + name => 'mullvadbrowser-nightly-windows-x86_64', + descr => 'build mullvad-browser nightly windows-x86_64', type => 'rbm_build', project => 'release', targets => [ 'noversiondir', 'nightly', 'browser-windows-x86_64', - 'basebrowser', + 'mullvadbrowser', ], - publish_dir => 'basebrowser-nightly-windows-x86_64', + publish_dir => 'mullvadbrowser-nightly-windows-x86_64', }, { - name => 'basebrowser-incrementals-nightly-windows-x86_64', - descr => 'create incrementals for base-browser nightly windows-x86_64', + name => 'mullvadbrowser-incrementals-nightly-windows-x86_64', + descr => 'create incrementals for mullvad-browser nightly windows-x86_64', type => 'make_incrementals', - publish_dir => 'basebrowser-nightly-windows-x86_64', - projectname => 'basebrowser', + publish_dir => 'mullvadbrowser-nightly-windows-x86_64', + projectname => 'mullvadbrowser', }, { - name => 'basebrowser-nightly-macos', - descr => 'build base-browser nightly macos', + name => 'mullvadbrowser-nightly-macos', + descr => 'build mullvad-browser nightly macos', type => 'rbm_build', project => 'release', targets => [ 'noversiondir', 'nightly', 'browser-macos', - 'basebrowser', + 'mullvadbrowser', ], - publish_dir => 'basebrowser-nightly-macos', + publish_dir => 'mullvadbrowser-nightly-macos', }, { - name => 'basebrowser-incrementals-nightly-macos', - descr => 'create incrementals for base-browser nightly macos (universal)', + name => 'mullvadbrowser-incrementals-nightly-macos', + descr => 'create incrementals for mullvad-browser nightly macos (universal)', type => 'make_incrementals', - publish_dir => 'basebrowser-nightly-macos', - projectname => 'basebrowser', + publish_dir => 'mullvadbrowser-nightly-macos', + projectname => 'mullvadbrowser', }, # openssl build for linux-arm (#40074) { ===================================== rbm-config/tb-build-06.torproject.org.rbm.local.conf ===================================== @@ -71,7 +71,7 @@ var: target: - nightly - browser-all - - basebrowser + - mullvadbrowser # ### If you are doing 'release' builds in the maint-7.0 branch and ### 'alpha' builds in the master branch, you can use the following View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-update-responses][main] Restore release/download-android-*.json from 13.0.4
by boklm (@boklm) 07 Dec '23

07 Dec '23
boklm pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: 1f03f584 by Nicolas Vigier at 2023-12-07T12:49:53+01:00 Restore release/download-android-*.json from 13.0.4 tor-browser-build#41039. - - - - - 4 changed files: - + update_3/release/download-android-aarch64.json - + update_3/release/download-android-armv7.json - + update_3/release/download-android-x86.json - + update_3/release/download-android-x86_64.json Changes: ===================================== update_3/release/download-android-aarch64.json ===================================== @@ -0,0 +1 @@ +{"binary":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-aarch64-1…","git_tag":"tbb-13.0.4-build1","sig":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-aarch64-1…","version":"13.0.4"} \ No newline at end of file ===================================== update_3/release/download-android-armv7.json ===================================== @@ -0,0 +1 @@ +{"binary":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-armv7-13.…","git_tag":"tbb-13.0.4-build1","sig":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-armv7-13.…","version":"13.0.4"} \ No newline at end of file ===================================== update_3/release/download-android-x86.json ===================================== @@ -0,0 +1 @@ +{"binary":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-x86-13.0.…","git_tag":"tbb-13.0.4-build1","sig":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-x86-13.0.…","version":"13.0.4"} \ No newline at end of file ===================================== update_3/release/download-android-x86_64.json ===================================== @@ -0,0 +1 @@ +{"binary":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-x86_64-13…","git_tag":"tbb-13.0.4-build1","sig":"https://dist.torproject.org/torbrowser/13.0.4/tor-browser-android-x86_64-13…","version":"13.0.4"} \ No newline at end of file View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] fixup! Modify UI/UX
by Dan Ballard (@dan) 06 Dec '23

06 Dec '23
Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android Commits: 06e63c65 by clairehurst at 2023-12-05T14:58:25-07:00 fixup! Modify UI/UX - - - - - 2 changed files: - fenix/app/src/main/java/org/mozilla/fenix/settings/CustomizationFragment.kt - fenix/app/src/main/res/xml/customization_preferences.xml Changes: ===================================== fenix/app/src/main/java/org/mozilla/fenix/settings/CustomizationFragment.kt ===================================== @@ -46,12 +46,11 @@ class CustomizationFragment : PreferenceFragmentCompat() { } private fun setupPreferences() { -// Remove as part of tor-browser#42076 : https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/42076 -// bindFollowDeviceTheme() -// bindDarkTheme() -// bindLightTheme() -// bindAutoBatteryTheme() -// setupRadioGroups() + bindFollowDeviceTheme() + bindDarkTheme() + bindLightTheme() + bindAutoBatteryTheme() + setupRadioGroups() setupToolbarCategory() setupGesturesCategory() } ===================================== fenix/app/src/main/res/xml/customization_preferences.xml ===================================== @@ -4,33 +4,32 @@ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> -<!-- Remove as part of tor-browser#42076 : https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/42076 --> -<!-- <androidx.preference.PreferenceCategory--> -<!-- android:layout="@layout/preference_cat_style"--> -<!-- android:title="@string/preferences_theme"--> -<!-- app:iconSpaceReserved="false">--> -<!-- <org.mozilla.fenix.settings.RadioButtonPreference--> -<!-- android:defaultValue="@bool/underAPI28"--> -<!-- android:key="@string/pref_key_light_theme"--> -<!-- android:title="@string/preference_light_theme" />--> -<!----> -<!-- <org.mozilla.fenix.settings.RadioButtonPreference--> -<!-- android:defaultValue="false"--> -<!-- android:key="@string/pref_key_dark_theme"--> -<!-- android:title="@string/preference_dark_theme" />--> -<!----> -<!-- <org.mozilla.fenix.settings.RadioButtonPreference--> -<!-- android:defaultValue="false"--> -<!-- android:key="@string/pref_key_auto_battery_theme"--> -<!-- android:title="@string/preference_auto_battery_theme"--> -<!-- app:isPreferenceVisible="@bool/underAPI28" />--> -<!----> -<!-- <org.mozilla.fenix.settings.RadioButtonPreference--> -<!-- android:defaultValue="@bool/API28"--> -<!-- android:key="@string/pref_key_follow_device_theme"--> -<!-- android:title="@string/preference_follow_device_theme"--> -<!-- app:isPreferenceVisible="@bool/API28" />--> -<!-- </androidx.preference.PreferenceCategory>--> + <androidx.preference.PreferenceCategory + android:layout="@layout/preference_cat_style" + android:title="@string/preferences_theme" + app:iconSpaceReserved="false"> + <org.mozilla.fenix.settings.RadioButtonPreference + android:defaultValue="@bool/underAPI28" + android:key="@string/pref_key_light_theme" + android:title="@string/preference_light_theme" /> + + <org.mozilla.fenix.settings.RadioButtonPreference + android:defaultValue="false" + android:key="@string/pref_key_dark_theme" + android:title="@string/preference_dark_theme" /> + + <org.mozilla.fenix.settings.RadioButtonPreference + android:defaultValue="false" + android:key="@string/pref_key_auto_battery_theme" + android:title="@string/preference_auto_battery_theme" + app:isPreferenceVisible="@bool/underAPI28" /> + + <org.mozilla.fenix.settings.RadioButtonPreference + android:defaultValue="@bool/API28" + android:key="@string/pref_key_follow_device_theme" + android:title="@string/preference_follow_device_theme" + app:isPreferenceVisible="@bool/API28" /> + </androidx.preference.PreferenceCategory> <androidx.preference.PreferenceCategory android:layout="@layout/preference_cat_style" View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/06e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/06e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.5-1] 2 commits: fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by Pier Angelo Vendrame (@pierov) 06 Dec '23

06 Dec '23
Pier Angelo Vendrame pushed to branch tor-browser-115.5.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 116e6f82 by Pier Angelo Vendrame at 2023-12-06T17:04:38+00:00 fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing Bug 42283: Remove blockchair - - - - - 4195dec5 by Pier Angelo Vendrame at 2023-12-06T17:04:38+00:00 fixup! Bug 41435: Add a Tor Browser migration function Bug 42283: Remove blockchair - - - - - 6 changed files: - browser/components/BrowserGlue.sys.mjs - − browser/components/search/extensions/blockchair-onion/favicon.png - − browser/components/search/extensions/blockchair-onion/manifest.json - − browser/components/search/extensions/blockchair/favicon.png - − browser/components/search/extensions/blockchair/manifest.json - toolkit/components/search/SearchService.sys.mjs Changes: ===================================== browser/components/BrowserGlue.sys.mjs ===================================== @@ -4576,7 +4576,9 @@ BrowserGlue.prototype = { // migration to packaged locales. // Version 2: Tor Browser 13.0/13.0a1: tor-browser#41845. Also, removed some // torbutton preferences that are not used anymore. - const TBB_MIGRATION_VERSION = 2; + // Version 3: Tor Browser 13.0.7/13.5a3: Remove blockchair + // (tor-browser#42283). + const TBB_MIGRATION_VERSION = 3; const MIGRATION_PREF = "torbrowser.migration.version"; // If we decide to force updating users to pass through any version @@ -4628,6 +4630,22 @@ BrowserGlue.prototype = { } } } + if (currentVersion < 3) { + (async () => { + try { + const engine = await lazy.AddonManager.getAddonByID( + "blockchair(a)search.mozilla.org" + ); + await engine?.uninstall(); + } catch {} + try { + const engine = await lazy.AddonManager.getAddonByID( + "blockchair-onion(a)search.mozilla.org" + ); + engine?.uninstall(); + } catch {} + })(); + } Services.prefs.setIntPref(MIGRATION_PREF, TBB_MIGRATION_VERSION); }, ===================================== browser/components/search/extensions/blockchair-onion/favicon.png deleted ===================================== Binary files a/browser/components/search/extensions/blockchair-onion/favicon.png and /dev/null differ ===================================== browser/components/search/extensions/blockchair-onion/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "BlockchairOnion", - "description": "Blockchair Onion", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "blockchair-onion(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.png" - }, - "web_accessible_resources": [ - "favicon.png" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "BlockchairOnion", - "search_url": "http://blkchairbknpn73cfjhevhla7rkp4ed5gg2knctvv7it4lioy22defid.onion/search", - "search_form": "http://blkchairbknpn73cfjhevhla7rkp4ed5gg2knctvv7it4lioy22defid.onion/searc…", - "search_url_get_params": "q={searchTerms}" - } - } -} ===================================== browser/components/search/extensions/blockchair/favicon.png deleted ===================================== Binary files a/browser/components/search/extensions/blockchair/favicon.png and /dev/null differ ===================================== browser/components/search/extensions/blockchair/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "Blockchair", - "description": "Blockchair", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "blockchair(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.png" - }, - "web_accessible_resources": [ - "favicon.png" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "Blockchair", - "search_url": "https://blockchair.com/search", - "search_form": "https://blockchair.com/search/?q={searchTerms}", - "search_url_get_params": "q={searchTerms}" - } - } -} ===================================== toolkit/components/search/SearchService.sys.mjs ===================================== @@ -2282,16 +2282,11 @@ export class SearchService { { webExtension: { id: "ddg(a)search.mozilla.org" }, orderHint: 100 }, { webExtension: { id: "youtube(a)search.mozilla.org" }, orderHint: 90 }, { webExtension: { id: "google(a)search.mozilla.org" }, orderHint: 80 }, - { webExtension: { id: "blockchair(a)search.mozilla.org" }, orderHint: 70 }, - { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 60 }, - { - webExtension: { id: "blockchair-onion(a)search.mozilla.org" }, - orderHint: 50, - }, - { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 40 }, - { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 30 }, - { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 20 }, - { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 10 }, + { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 70 }, + { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 60 }, + { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 50 }, + { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 40 }, + { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 30 }, ]; for (let e of engines) { View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/30248a… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/30248a… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.0-1] fixup! Bug 40009: Change the default search engines
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch firefox-android-115.2.1-13.0-1 at The Tor Project / Applications / firefox-android Commits: 325edd9a by cypherpunks1 at 2023-12-06T16:58:01+00:00 fixup! Bug 40009: Change the default search engines Bug 42261: Update the icon and URL of Startpage search engine - - - - - 1 changed file: - android-components/components/feature/search/src/main/assets/searchplugins/startpage.xml Changes: ===================================== android-components/components/feature/search/src/main/assets/searchplugins/startpage.xml ===================================== @@ -2,10 +2,10 @@ <ShortName>Startpage</ShortName> <Description>Start Page</Description> <InputEncoding>UTF-8</InputEncoding> -<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2jkj+9YtD/vWLQ/71i0P+9otD/vaLRP72i0T+9YtE/vWLRP72i0T+9otD/vaNRP72jUT+9otF/vaLRf73kkv+9Yc///WJP//1iT//9Yk///rAmf/94Mz/+sCa//aRTv/1iUH/9ok///aJP//2i0H/9otB//aJQv/2iUL/9otC//aNRP/2jUT/9o1E//aNRP/6wpv////////////96dr/95dQ//aNRP/2kET/9pBG//aQRv/2kEb/9pBG//aRR//3lEz/95BH//mueP/7xJ3/959g//efYf/4p23//vDm//3p2//3kEr/95FJ//aRSf/niFH/95FK//aRSv/2mE//95hS/vq4iP/////////////////81bj/95xZ//q4iP//////+bF+//eZT//njFT/PSqi/2xGjv/2mVD/951V/vedVv783cX///////vQrf/++PP///////748//+8uj///////m3gf/olFr/PSuj/w8Pt/9sSJD/951V//eeWf73oVv++8ul///////5sXf/+KRi//vRsf////////////3r3v/olF//Piyk/w8Pt/9sSJH/+J5Z//ieWv/3oV/++KZf/vihXP/97N7//vn0//zTs//6wJP/+bBy//q6iP/onW//Piyl/w8Pt/8fGbH/m2iB/+icY//4pGD/96hl/viqZf74pmD/+Kxr//3iy/////////n1//ivbP/onGj/Pi2m/w8Pt/8uJKz/fFeQ/x8Zsf8+Lqb/6J9r//ivbP74rm3++Klm//mpZv/5q2f/+bR9//m0e//poW7/Pi6n/w8Pt/9sTZj/+Ktp//ira/+rd4P/Dw+3/4xijv/5snH++LN1/vmvbf/5r23/+a5t//mvb//4r2//TTuk/w8Pt/8fGrL/6ah1//ivcP/4r3P/q3yI/w8Pt/+MZpP/+bN5/vm4ev75t3X/+bV1//m1df/5t3X/+Ld3/8qUhP98XZn/Hxqz/+mse//5t3f/2p+B/x8as/8PD7f/u4qK//m7fv76u4D++bl7//m3fP/5uXz/+bl8//m5fP/5t3z/+bl//x8as/9NPKf/fWCb/x8as/8PD7f/bVOh//q5f//6v4X++sGI/vm9g//5voX/+b6F//m9hf/6vYX/+r6F//nCh/+bepr/Hxu0/w8Pt/8PD7f/fWOh//q+hf/6wof/+saN/vrGjf75xIv/+ceL//nEi//5xIv/+sSL//rHi//6x43/+ceN/+m7kP+7lpj/6ruQ//rHkP/6x43/+seQ//rLlf76ypT++seR//rJkf/6yZH/+seR//rJkf/6yZH/+8mR//vJlP/7yZT/+smU//rJlP/6yZT/+8yV//rJlf/6zpn+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</Image> +<Image width="16" height="16">data:image/png;base64,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</Image> -<Url type="text/html" method="POST" template="https://startpage.com/rto/search"> +<Url type="text/html" method="POST" template="https://startpage.com/sp/search"> <Param name="q" value="{searchTerms}"/> </Url> -<SearchForm>https://startpage.com/rto/search/</SearchForm> +<SearchForm>https://startpage.com/sp/search/</SearchForm> </SearchPlugin> View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/325… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/325… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.0-1] fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch tor-browser-115.5.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: 73234e2b by cypherpunks1 at 2023-12-06T16:56:16+00:00 fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing Bug 42261: Update the icon of Startpage search engine - - - - - 1 changed file: - browser/components/search/extensions/startpage/favicon.png Changes: ===================================== browser/components/search/extensions/startpage/favicon.png ===================================== Binary files a/browser/components/search/extensions/startpage/favicon.png and b/browser/components/search/extensions/startpage/favicon.png differ View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/73234e2… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/73234e2… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.5.0esr-13.5-1] Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch base-browser-115.5.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 02be06d6 by Kagami Sascha Rosylight at 2023-12-06T16:10:56+00:00 Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame Per /etc/fonts.xml, there are now only two `&lt;family lang=&quot;ko&quot;&gt;` nodes there: * OneUISansKRVF series * SECCJK series (but no KR postfix anymore?) This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ) Differential Revision: https://phabricator.services.mozilla.com/D195078 - - - - - 1 changed file: - modules/libpref/init/all.js Changes: ===================================== modules/libpref/init/all.js ===================================== @@ -3053,7 +3053,7 @@ pref("font.size.monospace.x-math", 13); pref("font.name-list.monospace.ja", "MotoyaLMaru, MotoyaLCedar, Noto Sans Mono CJK JP, SEC Mono CJK JP, Droid Sans Mono"); pref("font.name-list.serif.ko", "Charis SIL Compact, Noto Serif CJK KR, Noto Serif, Droid Serif, HYSerif"); - pref("font.name-list.sans-serif.ko", "Roboto, Google Sans, SmartGothic, NanumGothic, Noto Sans KR, Noto Sans CJK KR, SamsungKorean_v2.0, SEC CJK KR, DroidSansFallback, Droid Sans Fallback"); + pref("font.name-list.sans-serif.ko", "Roboto, Google Sans, SmartGothic, NanumGothic, Noto Sans KR, Noto Sans CJK KR, One UI Sans KR VF, SamsungKorean_v2.0, SEC CJK KR, DroidSansFallback, Droid Sans Fallback"); pref("font.name-list.monospace.ko", "Droid Sans Mono, Noto Sans Mono CJK KR, SEC Mono CJK KR"); pref("font.name-list.serif.th", "Charis SIL Compact, Noto Serif, Noto Serif Thai, Droid Serif"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/02be06d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/02be06d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.5-1] Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch tor-browser-115.5.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 30248ab5 by Kagami Sascha Rosylight at 2023-12-06T16:06:58+00:00 Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame Per /etc/fonts.xml, there are now only two `&lt;family lang=&quot;ko&quot;&gt;` nodes there: * OneUISansKRVF series * SECCJK series (but no KR postfix anymore?) This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ) Differential Revision: https://phabricator.services.mozilla.com/D195078 - - - - - 1 changed file: - modules/libpref/init/all.js Changes: ===================================== modules/libpref/init/all.js ===================================== @@ -3053,7 +3053,7 @@ pref("font.size.monospace.x-math", 13); pref("font.name-list.monospace.ja", "MotoyaLMaru, MotoyaLCedar, Noto Sans Mono CJK JP, SEC Mono CJK JP, Droid Sans Mono"); pref("font.name-list.serif.ko", "Charis SIL Compact, Noto Serif CJK KR, Noto Serif, Droid Serif, HYSerif"); - pref("font.name-list.sans-serif.ko", "Roboto, Google Sans, SmartGothic, NanumGothic, Noto Sans KR, Noto Sans CJK KR, SamsungKorean_v2.0, SEC CJK KR, DroidSansFallback, Droid Sans Fallback"); + pref("font.name-list.sans-serif.ko", "Roboto, Google Sans, SmartGothic, NanumGothic, Noto Sans KR, Noto Sans CJK KR, One UI Sans KR VF, SamsungKorean_v2.0, SEC CJK KR, DroidSansFallback, Droid Sans Fallback"); pref("font.name-list.monospace.ko", "Droid Sans Mono, Noto Sans Mono CJK KR, SEC Mono CJK KR"); pref("font.name-list.serif.th", "Charis SIL Compact, Noto Serif, Noto Serif Thai, Droid Serif"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/30248ab… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/30248ab… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 40990: Remove old macos signing scripts
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build Commits: 7d25ba41 by Nicolas Vigier at 2023-12-06T16:01:16+00:00 Bug 40990: Remove old macos signing scripts - - - - - 30 changed files: - tools/signing/do-all-signing - − tools/signing/finished-signing-clean-macos-signer - tools/signing/gatekeeper-bundling.sh - − tools/signing/macos-signer-gatekeeper-signing - − tools/signing/macos-signer-gatekeeper-signing.mullvadbrowser - − tools/signing/macos-signer-gatekeeper-signing.torbrowser - − tools/signing/macos-signer-notarization - − tools/signing/macos-signer-notarization.mullvadbrowser - − tools/signing/macos-signer-notarization.torbrowser - − tools/signing/macos-signer-proxy - − tools/signing/macos-signer-proxy.mullvadbrowser - − tools/signing/macos-signer-proxy.torbrowser - − tools/signing/macos-signer-stapler - − tools/signing/macos-signer-stapler.mullvadbrowser - − tools/signing/macos-signer-stapler.torbrowser - tools/signing/set-config - tools/signing/set-config.hosts - − tools/signing/set-config.macos-notarization - − tools/signing/sync-macos-local-to-macos-signer - − tools/signing/sync-macos-local-to-macos-signer.mullvadbrowser - − tools/signing/sync-macos-local-to-macos-signer.torbrowser - − tools/signing/sync-macos-local-to-macos-signer.torbrowser.dry-run - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.mullvadbrowser - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser.dry-run - − tools/signing/sync-scripts-to-macos-signer - − tools/signing/sync-scripts-to-macos-signer.mullvadbrowser - − tools/signing/sync-scripts-to-macos-signer.torbrowser - − tools/signing/sync-scripts-to-macos-signer.torbrowser.dry-run Changes: ===================================== tools/signing/do-all-signing ===================================== @@ -8,19 +8,9 @@ NON_INTERACTIVE=1 steps_dir="$signed_version_dir.steps" test -d "$steps_dir" || mkdir -p "$steps_dir" -if test -n "$use_rcodesign" -then - test -f "$steps_dir/linux-signer-rcodesign-sign.done" || - read -sp "Enter rcodesign passphrase for key-1: " RCODESIGN_PW - echo -else - test -f "$steps_dir/macos-signer-gatekeeper-signing.done" || - read -sp "Enter macos keychain passphrase: " KEYCHAIN_PW - echo - test -f "$steps_dir/macos-signer-notarization.done" || - read -sp "Enter macos notarization passphrase: " NOTARIZATION_PW - echo -fi +test -f "$steps_dir/linux-signer-rcodesign-sign.done" || + read -sp "Enter rcodesign passphrase for key-1: " RCODESIGN_PW +echo is_project torbrowser && nssdb=torbrowser-nssdb7 is_project mullvadbrowser && nssdb=mullvadbrowser-nssdb-1 test -f "$steps_dir/linux-signer-signmars.done" || @@ -67,52 +57,6 @@ function rcodesign-notary-submit { "$script_dir/rcodesign-notary-submit" } -function macos-signer-directory-not-present { - # To avoid doing two signings at the same time, or to avoid unknowingly - # using parts from a previous signing attempt, we check that the - # directory does not exist yet (see tor-browser-build#40497) - if ssh "$ssh_host_macos_signer" "test -d $tbb_version" - then - echo "The directory $tbb_version already exists on $ssh_host_macos_signer" - return 1 - fi - return 0 -} - -function sync-scripts-to-macos-signer { - "$script_dir/sync-scripts-to-macos-signer" -} - -function macos-signer-enable-network-proxy-settings { - ssh "$ssh_host_macos_signer" 'networksetup -setsecurewebproxystate Ethernet on' -} - -function macos-signer-gatekeeper-signing { - "$script_dir/sync-macos-local-to-macos-signer" - ssh "$ssh_host_macos_signer" 'bash -s' << EOF - export KEYCHAIN_PW=$KEYCHAIN_PW - ~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-gatekeeper-signing.$SIGNING_PROJECTNAME -EOF - unset KEYCHAIN_PW -} - -function macos-signer-notarization { - ssh "$ssh_host_macos_signer" 'bash -s' << EOF - export PW=$NOTARIZATION_PW - ~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-notarization.$SIGNING_PROJECTNAME -EOF - unset NOTARIZATION_PW -} - -function macos-signer-stapler { - ssh "$ssh_host_macos_signer" "~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-stapler.$SIGNING_PROJECTNAME" - "$script_dir/sync-macos-signer-stapled-to-macos-local-stapled" -} - -function macos-signer-disable-network-proxy-settings { - ssh "$ssh_host_macos_signer" 'networksetup -setsecurewebproxystate Ethernet off' -} - function gatekeeper-bundling { "$script_dir/gatekeeper-bundling.sh" } @@ -212,10 +156,6 @@ function upload-update_responses-to-staticiforme { "$script_dir/upload-update_responses-to-staticiforme" } -function finished-signing-clean-macos-signer { - "$script_dir/finished-signing-clean-macos-signer" -} - function finished-signing-clean-linux-signer { "$script_dir/finished-signing-clean-linux-signer" } @@ -233,22 +173,11 @@ export SIGNING_PROJECTNAME do_step wait-for-finished-build do_step sync-builder-unsigned-to-local-signed -if test -n "$use_rcodesign"; -then - do_step sync-scripts-to-linux-signer - do_step sync-before-linux-signer-rcodesign-sign - do_step linux-signer-rcodesign-sign - do_step sync-linux-signer-macos-signed-tar-to-local - do_step rcodesign-notary-submit -else - do_step macos-signer-directory-not-present - do_step sync-scripts-to-macos-signer - do_step macos-signer-enable-network-proxy-settings - do_step macos-signer-gatekeeper-signing - do_step macos-signer-notarization - do_step macos-signer-stapler - do_step macos-signer-disable-network-proxy-settings -fi +do_step sync-scripts-to-linux-signer +do_step sync-before-linux-signer-rcodesign-sign +do_step linux-signer-rcodesign-sign +do_step sync-linux-signer-macos-signed-tar-to-local +do_step rcodesign-notary-submit do_step gatekeeper-bundling do_step dmg2mar do_step sync-scripts-to-linux-signer @@ -272,5 +201,4 @@ do_step sync-local-to-staticiforme do_step sync-scripts-to-staticiforme do_step staticiforme-prepare-cdn-dist-upload do_step upload-update_responses-to-staticiforme -do_step finished-signing-clean-macos-signer do_step finished-signing-clean-linux-signer ===================================== tools/signing/finished-signing-clean-macos-signer deleted ===================================== @@ -1,14 +0,0 @@ -#!/bin/bash - -# Remove current tbb version from macos-signer. You should run this -# when all signing has been done. - -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer tbb_version - -ssh "$ssh_host_macos_signer" 'bash -s' << EOF - test -n "$tbb_version" && rm -Rfv ~/"$SIGNING_PROJECTNAME-$tbb_version" -EOF ===================================== tools/signing/gatekeeper-bundling.sh ===================================== @@ -68,11 +68,7 @@ export PATH="$PATH:$tmpdir/libdmg-hfsplus:$tmpdir/hfsplus-tools" cd $tmpdir/dmg -if test -n "$use_rcodesign"; then - tar -xf $macos_stapled_dir/"${proj_name}-${tbb_version}-notarized+stapled.tar.zst" -else - unzip -q $macos_stapled_dir/tb-${tbb_version}_ALL-stapled.zip -fi +tar -xf $macos_stapled_dir/"${proj_name}-${tbb_version}-notarized+stapled.tar.zst" cd .. $script_dir/ddmg.sh $macos_signed_dir/${proj_name}-macos-${tbb_version}.dmg $tmpdir/dmg/ "$Proj_Name" ===================================== tools/signing/macos-signer-gatekeeper-signing deleted ===================================== @@ -1,100 +0,0 @@ -#!/bin/bash -set -e - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.generated-config" - -ENTITLEMENTS="$script_dir/$tbb_version_type.entitlements.xml" -app_name=$(Project_Name) - -function check_signature() { - LANG=$1 - UNZIP=$2 - local failed_open=0 - local failed_exec=0 - if [ ${UNZIP} -eq 1 ] - then - test -d test_${LANG} && rm -r test_${LANG} - unzip -d test_${LANG} -q tb-${tbb_version}_$LANG.zip - pushd test_${LANG} - fi - echo "Checking $LANG..." - spctl -vvvv --assess --type open --context context:primary-signature "$app_name.app/" - if [ $? -ne 3 ]; then - echo tb-${tbb_version}_$LANG.zip not signed correctly. Failed open. - failed_open=1 - fi - spctl -vvvv --assess --type exec --context context:primary-signature "$app_name.app/" - if [ $? -ne 0 ]; then - echo tb-${tbb_version}_$LANG.zip not signed correctly. Failed exec. - failed_exec=1 - fi - if [ ${UNZIP} -eq 1 ] - then - popd - rm -r test_${LANG} - fi - if [ ${failed_open} -ne 0 -o ${failed_exec} -ne 0 ] - then - return 1 - fi -} - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -if test -n "$KEYCHAIN_PW" -then - KPW="-p $KEYCHAIN_PW" -fi - -security unlock $KPW /Users/torbrowser/Library/Keychains/tbb-signing-alpha.keychain -security unlock $KPW /Users/torbrowser/Library/Keychains/tbb-signing-2021.keychain - -unset KPW KEYCHAIN_PW - -for LANG in ALL -do - if [ -f tb-${tbb_version}_${LANG}.zip ] - then - echo "Deleting tb-${tbb_version}_${LANG}.zip" - rm tb-${tbb_version}_${LANG}.zip - fi - if [ -d "$app_name.app" ] - then - echo "Deleting $app_name.app" - rm -r "$app_name.app" - fi - if [ -d "/Volumes/$app_name" ]; then - echo "DMG already mounted. Please correct." - exit 1 - fi - hdiutil attach $(project-name)-macos-${tbb_version}.dmg - cp -rf "/Volumes/$app_name/$app_name.app" "$app_name.app" - echo "Signing ${app_name}_${LANG}.app" - codesign -vvv --deep -o runtime --entitlements="$ENTITLEMENTS" --timestamp -f -s "Developer ID Application: The Tor Project, Inc (MADPSAYN6T)" "$app_name.app/" - echo "codesign exit code: $?" - set +e - check_signature $LANG 0 - if [ $? -eq 1 ] - then - echo Signature verification failed. - rm -r "$app_name.app" - hdiutil detach "/Volumes/$app_name" - exit 1 - fi - set -e - echo "Zipping up tb-${tbb_version}_${LANG}.zip" - zip -qr tb-${tbb_version}_${LANG}.zip "$app_name.app" - rm -rf "$app_name.app" - hdiutil detach "/Volumes/$app_name" - set +e - check_signature $LANG 1 - if [ $? -eq 1 ] - then - echo "Signature verification failed (${LANG})". - rm -r "$app_name.app" - exit 1 - fi - set -e -done ===================================== tools/signing/macos-signer-gatekeeper-signing.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-gatekeeper-signing \ No newline at end of file ===================================== tools/signing/macos-signer-gatekeeper-signing.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-gatekeeper-signing \ No newline at end of file ===================================== tools/signing/macos-signer-notarization deleted ===================================== @@ -1,44 +0,0 @@ -#!/bin/bash -set -e - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.macos-notarization" - -ALTOOL=~/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -if [ -z "${PW}" ]; then - echo "Please enter notarization password:" - stty -echo; read PW; stty echo; export PW -fi - -for LANG in ALL -do - if test -f ${LANG}/tb-${tbb_version}_$LANG.zip.uuid - then - echo "Skipping ${LANG}/tb-${tbb_version}_$LANG.zip" - continue; - fi - if test -d ${LANG}; then - mv ${LANG}/tb-${tbb_version}_$LANG.zip ./ - rm -r ${LANG}/ - fi - mkdir $LANG - cd $LANG - mv ../tb-${tbb_version}_$LANG.zip . - unzip -q tb-${tbb_version}_$LANG.zip - echo "Notarizing $LANG..." - $ALTOOL --notarize-app --verbose -t osx -f tb-${tbb_version}_$LANG.zip --primary-bundle-id org.torproject.torbrowser -u "$macos_notarization_user" -p @env:PW --output-format xml | tee tb-${tbb_version}_$LANG.zip.log 2>&1 - - request_uuid=`grep -A1 RequestUUID tb-${tbb_version}_$LANG.zip.log | grep -o '[0-9a-f]\+[0-9a-f-]\+'` - if [ -z "${request_uuid}" ]; then - echo "Request UUID not present. Notarization failed" - exit 1 - fi - echo ${request_uuid} > tb-${tbb_version}_$LANG.zip.uuid - echo "Notarization done for $LANG." - - cd .. -done ===================================== tools/signing/macos-signer-notarization.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-notarization \ No newline at end of file ===================================== tools/signing/macos-signer-notarization.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-notarization \ No newline at end of file ===================================== tools/signing/macos-signer-proxy deleted ===================================== @@ -1,6 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -ssh -R :1080 "$ssh_host_macos_signer" 'python ~/proxy.py --port 8443' ===================================== tools/signing/macos-signer-proxy.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-proxy \ No newline at end of file ===================================== tools/signing/macos-signer-proxy.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-proxy \ No newline at end of file ===================================== tools/signing/macos-signer-stapler deleted ===================================== @@ -1,22 +0,0 @@ -#!/bin/bash -set -e - -read -n 1 -p "Press enter once notarization is complete..." - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.generated-config" - -STAPLER=/Users/torbrowser/Xcode.app/Contents//Developer/usr/bin/stapler -app_name=$(Project_Name) - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -for LANG in ALL -do - echo "Stapling $LANG..." - cd $LANG - $STAPLER staple "$app_name.app" - zip -qr ../tb-${tbb_version}_$LANG-stapled.zip "$app_name.app" - cd .. -done ===================================== tools/signing/macos-signer-stapler.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-stapler \ No newline at end of file ===================================== tools/signing/macos-signer-stapler.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-stapler \ No newline at end of file ===================================== tools/signing/set-config ===================================== @@ -38,5 +38,3 @@ rsync_options="-avH ${rsync_progress:-} ${DRY_RUN:-}" tb_builders='boklm dan henry ma1 pierov richard' wrappers_dir=/signing/tor-browser-build/tools/signing/wrappers - -use_rcodesign=1 ===================================== tools/signing/set-config.hosts ===================================== @@ -1,6 +1,5 @@ ssh_host_builder=tbbuild ssh_host_linux_signer=linux-signer-notor -ssh_host_macos_signer=mac-signer-notor ssh_host_staticiforme=staticiforme.torproject.org builder_tor_browser_build_dir=/home/user/tor-browser-build ===================================== tools/signing/set-config.macos-notarization deleted ===================================== @@ -1,5 +0,0 @@ -# The following line should be uncommented and updated: - -#macos_notarization_user='user@email' - -var_is_defined macos_notarization_user ===================================== tools/signing/sync-macos-local-to-macos-signer deleted ===================================== @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -rsync $rsync_options "$signed_version_dir"/*.dmg "$ssh_host_macos_signer:$SIGNING_PROJECTNAME-$tbb_version/" ===================================== tools/signing/sync-macos-local-to-macos-signer.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-local-to-macos-signer.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-local-to-macos-signer.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled deleted ===================================== @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -rsync $rsync_options "$ssh_host_macos_signer:$SIGNING_PROJECTNAME-$tbb_version/*-stapled.zip" "$macos_stapled_dir/" ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer deleted ===================================== @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -generate_config - -rsync $rsync_options "$script_dir/" "$ssh_host_macos_signer:signing-$SIGNING_PROJECTNAME-$tbb_version_type/" ===================================== tools/signing/sync-scripts-to-macos-signer.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 40990: Remove old macos signing scripts
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: fa846d22 by Nicolas Vigier at 2023-12-06T15:59:55+00:00 Bug 40990: Remove old macos signing scripts - - - - - 30 changed files: - tools/signing/do-all-signing - − tools/signing/finished-signing-clean-macos-signer - tools/signing/gatekeeper-bundling.sh - − tools/signing/macos-signer-gatekeeper-signing - − tools/signing/macos-signer-gatekeeper-signing.mullvadbrowser - − tools/signing/macos-signer-gatekeeper-signing.torbrowser - − tools/signing/macos-signer-notarization - − tools/signing/macos-signer-notarization.mullvadbrowser - − tools/signing/macos-signer-notarization.torbrowser - − tools/signing/macos-signer-proxy - − tools/signing/macos-signer-proxy.mullvadbrowser - − tools/signing/macos-signer-proxy.torbrowser - − tools/signing/macos-signer-stapler - − tools/signing/macos-signer-stapler.mullvadbrowser - − tools/signing/macos-signer-stapler.torbrowser - tools/signing/set-config - tools/signing/set-config.hosts - − tools/signing/set-config.macos-notarization - − tools/signing/sync-macos-local-to-macos-signer - − tools/signing/sync-macos-local-to-macos-signer.mullvadbrowser - − tools/signing/sync-macos-local-to-macos-signer.torbrowser - − tools/signing/sync-macos-local-to-macos-signer.torbrowser.dry-run - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.mullvadbrowser - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser - − tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser.dry-run - − tools/signing/sync-scripts-to-macos-signer - − tools/signing/sync-scripts-to-macos-signer.mullvadbrowser - − tools/signing/sync-scripts-to-macos-signer.torbrowser - − tools/signing/sync-scripts-to-macos-signer.torbrowser.dry-run Changes: ===================================== tools/signing/do-all-signing ===================================== @@ -8,19 +8,9 @@ NON_INTERACTIVE=1 steps_dir="$signed_version_dir.steps" test -d "$steps_dir" || mkdir -p "$steps_dir" -if test -n "$use_rcodesign" -then - test -f "$steps_dir/linux-signer-rcodesign-sign.done" || - read -sp "Enter rcodesign passphrase for key-1: " RCODESIGN_PW - echo -else - test -f "$steps_dir/macos-signer-gatekeeper-signing.done" || - read -sp "Enter macos keychain passphrase: " KEYCHAIN_PW - echo - test -f "$steps_dir/macos-signer-notarization.done" || - read -sp "Enter macos notarization passphrase: " NOTARIZATION_PW - echo -fi +test -f "$steps_dir/linux-signer-rcodesign-sign.done" || + read -sp "Enter rcodesign passphrase for key-1: " RCODESIGN_PW +echo is_project torbrowser && nssdb=torbrowser-nssdb7 is_project mullvadbrowser && nssdb=mullvadbrowser-nssdb-1 test -f "$steps_dir/linux-signer-signmars.done" || @@ -67,52 +57,6 @@ function rcodesign-notary-submit { "$script_dir/rcodesign-notary-submit" } -function macos-signer-directory-not-present { - # To avoid doing two signings at the same time, or to avoid unknowingly - # using parts from a previous signing attempt, we check that the - # directory does not exist yet (see tor-browser-build#40497) - if ssh "$ssh_host_macos_signer" "test -d $tbb_version" - then - echo "The directory $tbb_version already exists on $ssh_host_macos_signer" - return 1 - fi - return 0 -} - -function sync-scripts-to-macos-signer { - "$script_dir/sync-scripts-to-macos-signer" -} - -function macos-signer-enable-network-proxy-settings { - ssh "$ssh_host_macos_signer" 'networksetup -setsecurewebproxystate Ethernet on' -} - -function macos-signer-gatekeeper-signing { - "$script_dir/sync-macos-local-to-macos-signer" - ssh "$ssh_host_macos_signer" 'bash -s' << EOF - export KEYCHAIN_PW=$KEYCHAIN_PW - ~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-gatekeeper-signing.$SIGNING_PROJECTNAME -EOF - unset KEYCHAIN_PW -} - -function macos-signer-notarization { - ssh "$ssh_host_macos_signer" 'bash -s' << EOF - export PW=$NOTARIZATION_PW - ~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-notarization.$SIGNING_PROJECTNAME -EOF - unset NOTARIZATION_PW -} - -function macos-signer-stapler { - ssh "$ssh_host_macos_signer" "~/signing-$SIGNING_PROJECTNAME-$tbb_version_type/macos-signer-stapler.$SIGNING_PROJECTNAME" - "$script_dir/sync-macos-signer-stapled-to-macos-local-stapled" -} - -function macos-signer-disable-network-proxy-settings { - ssh "$ssh_host_macos_signer" 'networksetup -setsecurewebproxystate Ethernet off' -} - function gatekeeper-bundling { "$script_dir/gatekeeper-bundling.sh" } @@ -212,10 +156,6 @@ function upload-update_responses-to-staticiforme { "$script_dir/upload-update_responses-to-staticiforme" } -function finished-signing-clean-macos-signer { - "$script_dir/finished-signing-clean-macos-signer" -} - function finished-signing-clean-linux-signer { "$script_dir/finished-signing-clean-linux-signer" } @@ -233,22 +173,11 @@ export SIGNING_PROJECTNAME do_step wait-for-finished-build do_step sync-builder-unsigned-to-local-signed -if test -n "$use_rcodesign"; -then - do_step sync-scripts-to-linux-signer - do_step sync-before-linux-signer-rcodesign-sign - do_step linux-signer-rcodesign-sign - do_step sync-linux-signer-macos-signed-tar-to-local - do_step rcodesign-notary-submit -else - do_step macos-signer-directory-not-present - do_step sync-scripts-to-macos-signer - do_step macos-signer-enable-network-proxy-settings - do_step macos-signer-gatekeeper-signing - do_step macos-signer-notarization - do_step macos-signer-stapler - do_step macos-signer-disable-network-proxy-settings -fi +do_step sync-scripts-to-linux-signer +do_step sync-before-linux-signer-rcodesign-sign +do_step linux-signer-rcodesign-sign +do_step sync-linux-signer-macos-signed-tar-to-local +do_step rcodesign-notary-submit do_step gatekeeper-bundling do_step dmg2mar do_step sync-scripts-to-linux-signer @@ -272,5 +201,4 @@ do_step sync-local-to-staticiforme do_step sync-scripts-to-staticiforme do_step staticiforme-prepare-cdn-dist-upload do_step upload-update_responses-to-staticiforme -do_step finished-signing-clean-macos-signer do_step finished-signing-clean-linux-signer ===================================== tools/signing/finished-signing-clean-macos-signer deleted ===================================== @@ -1,14 +0,0 @@ -#!/bin/bash - -# Remove current tbb version from macos-signer. You should run this -# when all signing has been done. - -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer tbb_version - -ssh "$ssh_host_macos_signer" 'bash -s' << EOF - test -n "$tbb_version" && rm -Rfv ~/"$SIGNING_PROJECTNAME-$tbb_version" -EOF ===================================== tools/signing/gatekeeper-bundling.sh ===================================== @@ -68,11 +68,7 @@ export PATH="$PATH:$tmpdir/libdmg-hfsplus:$tmpdir/hfsplus-tools" cd $tmpdir/dmg -if test -n "$use_rcodesign"; then - tar -xf $macos_stapled_dir/"${proj_name}-${tbb_version}-notarized+stapled.tar.zst" -else - unzip -q $macos_stapled_dir/tb-${tbb_version}_ALL-stapled.zip -fi +tar -xf $macos_stapled_dir/"${proj_name}-${tbb_version}-notarized+stapled.tar.zst" cd .. $script_dir/ddmg.sh $macos_signed_dir/${proj_name}-macos-${tbb_version}.dmg $tmpdir/dmg/ "$Proj_Name" ===================================== tools/signing/macos-signer-gatekeeper-signing deleted ===================================== @@ -1,100 +0,0 @@ -#!/bin/bash -set -e - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.generated-config" - -ENTITLEMENTS="$script_dir/$tbb_version_type.entitlements.xml" -app_name=$(Project_Name) - -function check_signature() { - LANG=$1 - UNZIP=$2 - local failed_open=0 - local failed_exec=0 - if [ ${UNZIP} -eq 1 ] - then - test -d test_${LANG} && rm -r test_${LANG} - unzip -d test_${LANG} -q tb-${tbb_version}_$LANG.zip - pushd test_${LANG} - fi - echo "Checking $LANG..." - spctl -vvvv --assess --type open --context context:primary-signature "$app_name.app/" - if [ $? -ne 3 ]; then - echo tb-${tbb_version}_$LANG.zip not signed correctly. Failed open. - failed_open=1 - fi - spctl -vvvv --assess --type exec --context context:primary-signature "$app_name.app/" - if [ $? -ne 0 ]; then - echo tb-${tbb_version}_$LANG.zip not signed correctly. Failed exec. - failed_exec=1 - fi - if [ ${UNZIP} -eq 1 ] - then - popd - rm -r test_${LANG} - fi - if [ ${failed_open} -ne 0 -o ${failed_exec} -ne 0 ] - then - return 1 - fi -} - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -if test -n "$KEYCHAIN_PW" -then - KPW="-p $KEYCHAIN_PW" -fi - -security unlock $KPW /Users/torbrowser/Library/Keychains/tbb-signing-alpha.keychain -security unlock $KPW /Users/torbrowser/Library/Keychains/tbb-signing-2021.keychain - -unset KPW KEYCHAIN_PW - -for LANG in ALL -do - if [ -f tb-${tbb_version}_${LANG}.zip ] - then - echo "Deleting tb-${tbb_version}_${LANG}.zip" - rm tb-${tbb_version}_${LANG}.zip - fi - if [ -d "$app_name.app" ] - then - echo "Deleting $app_name.app" - rm -r "$app_name.app" - fi - if [ -d "/Volumes/$app_name" ]; then - echo "DMG already mounted. Please correct." - exit 1 - fi - hdiutil attach $(project-name)-macos-${tbb_version}.dmg - cp -rf "/Volumes/$app_name/$app_name.app" "$app_name.app" - echo "Signing ${app_name}_${LANG}.app" - codesign -vvv --deep -o runtime --entitlements="$ENTITLEMENTS" --timestamp -f -s "Developer ID Application: The Tor Project, Inc (MADPSAYN6T)" "$app_name.app/" - echo "codesign exit code: $?" - set +e - check_signature $LANG 0 - if [ $? -eq 1 ] - then - echo Signature verification failed. - rm -r "$app_name.app" - hdiutil detach "/Volumes/$app_name" - exit 1 - fi - set -e - echo "Zipping up tb-${tbb_version}_${LANG}.zip" - zip -qr tb-${tbb_version}_${LANG}.zip "$app_name.app" - rm -rf "$app_name.app" - hdiutil detach "/Volumes/$app_name" - set +e - check_signature $LANG 1 - if [ $? -eq 1 ] - then - echo "Signature verification failed (${LANG})". - rm -r "$app_name.app" - exit 1 - fi - set -e -done ===================================== tools/signing/macos-signer-gatekeeper-signing.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-gatekeeper-signing \ No newline at end of file ===================================== tools/signing/macos-signer-gatekeeper-signing.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-gatekeeper-signing \ No newline at end of file ===================================== tools/signing/macos-signer-notarization deleted ===================================== @@ -1,44 +0,0 @@ -#!/bin/bash -set -e - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.macos-notarization" - -ALTOOL=~/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -if [ -z "${PW}" ]; then - echo "Please enter notarization password:" - stty -echo; read PW; stty echo; export PW -fi - -for LANG in ALL -do - if test -f ${LANG}/tb-${tbb_version}_$LANG.zip.uuid - then - echo "Skipping ${LANG}/tb-${tbb_version}_$LANG.zip" - continue; - fi - if test -d ${LANG}; then - mv ${LANG}/tb-${tbb_version}_$LANG.zip ./ - rm -r ${LANG}/ - fi - mkdir $LANG - cd $LANG - mv ../tb-${tbb_version}_$LANG.zip . - unzip -q tb-${tbb_version}_$LANG.zip - echo "Notarizing $LANG..." - $ALTOOL --notarize-app --verbose -t osx -f tb-${tbb_version}_$LANG.zip --primary-bundle-id org.torproject.torbrowser -u "$macos_notarization_user" -p @env:PW --output-format xml | tee tb-${tbb_version}_$LANG.zip.log 2>&1 - - request_uuid=`grep -A1 RequestUUID tb-${tbb_version}_$LANG.zip.log | grep -o '[0-9a-f]\+[0-9a-f-]\+'` - if [ -z "${request_uuid}" ]; then - echo "Request UUID not present. Notarization failed" - exit 1 - fi - echo ${request_uuid} > tb-${tbb_version}_$LANG.zip.uuid - echo "Notarization done for $LANG." - - cd .. -done ===================================== tools/signing/macos-signer-notarization.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-notarization \ No newline at end of file ===================================== tools/signing/macos-signer-notarization.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-notarization \ No newline at end of file ===================================== tools/signing/macos-signer-proxy deleted ===================================== @@ -1,6 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -ssh -R :1080 "$ssh_host_macos_signer" 'python ~/proxy.py --port 8443' ===================================== tools/signing/macos-signer-proxy.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-proxy \ No newline at end of file ===================================== tools/signing/macos-signer-proxy.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-proxy \ No newline at end of file ===================================== tools/signing/macos-signer-stapler deleted ===================================== @@ -1,22 +0,0 @@ -#!/bin/bash -set -e - -read -n 1 -p "Press enter once notarization is complete..." - -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" -source "$script_dir/set-config.generated-config" - -STAPLER=/Users/torbrowser/Xcode.app/Contents//Developer/usr/bin/stapler -app_name=$(Project_Name) - -cd ~/$SIGNING_PROJECTNAME-${tbb_version} - -for LANG in ALL -do - echo "Stapling $LANG..." - cd $LANG - $STAPLER staple "$app_name.app" - zip -qr ../tb-${tbb_version}_$LANG-stapled.zip "$app_name.app" - cd .. -done ===================================== tools/signing/macos-signer-stapler.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-stapler \ No newline at end of file ===================================== tools/signing/macos-signer-stapler.torbrowser deleted ===================================== @@ -1 +0,0 @@ -macos-signer-stapler \ No newline at end of file ===================================== tools/signing/set-config ===================================== @@ -38,5 +38,3 @@ rsync_options="-avH ${rsync_progress:-} ${DRY_RUN:-}" tb_builders='boklm dan henry ma1 pierov richard' wrappers_dir=/signing/tor-browser-build/tools/signing/wrappers - -use_rcodesign=1 ===================================== tools/signing/set-config.hosts ===================================== @@ -1,6 +1,5 @@ ssh_host_builder=tbbuild ssh_host_linux_signer=linux-signer-notor -ssh_host_macos_signer=mac-signer-notor ssh_host_staticiforme=staticiforme.torproject.org builder_tor_browser_build_dir=/home/user/tor-browser-build ===================================== tools/signing/set-config.macos-notarization deleted ===================================== @@ -1,5 +0,0 @@ -# The following line should be uncommented and updated: - -#macos_notarization_user='user@email' - -var_is_defined macos_notarization_user ===================================== tools/signing/sync-macos-local-to-macos-signer deleted ===================================== @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -rsync $rsync_options "$signed_version_dir"/*.dmg "$ssh_host_macos_signer:$SIGNING_PROJECTNAME-$tbb_version/" ===================================== tools/signing/sync-macos-local-to-macos-signer.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-local-to-macos-signer.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-local-to-macos-signer.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-macos-local-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled deleted ===================================== @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -rsync $rsync_options "$ssh_host_macos_signer:$SIGNING_PROJECTNAME-$tbb_version/*-stapled.zip" "$macos_stapled_dir/" ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-macos-signer-stapled-to-macos-local-stapled.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-macos-signer-stapled-to-macos-local-stapled \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer deleted ===================================== @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source "$script_dir/functions" - -var_is_defined ssh_host_macos_signer - -generate_config - -rsync $rsync_options "$script_dir/" "$ssh_host_macos_signer:signing-$SIGNING_PROJECTNAME-$tbb_version_type/" ===================================== tools/signing/sync-scripts-to-macos-signer.mullvadbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer.torbrowser deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file ===================================== tools/signing/sync-scripts-to-macos-signer.torbrowser.dry-run deleted ===================================== @@ -1 +0,0 @@ -sync-scripts-to-macos-signer \ No newline at end of file View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.5.0esr-13.5-1] 6 commits: fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
by richard (@richard) 06 Dec '23

06 Dec '23
richard pushed to branch tor-browser-115.5.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 9d6ca8ac by Pier Angelo Vendrame at 2023-12-05T11:00:25+01:00 fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain. Collect the browsers also on Android. - - - - - 9e239230 by Pier Angelo Vendrame at 2023-12-05T11:08:42+01:00 fixup! Bug 40597: Implement TorSettings module Moved the creation of Meek credentials to a function on its own that we will reuse also with the Android version of MeekTransport. - - - - - 6a649d7f by Pier Angelo Vendrame at 2023-12-05T11:25:06+01:00 fixup! Bug 40933: Add tor-launcher functionality Store the SOCKS settings as a member, so that we can customize them if needed before applying them. Also, cleanup the public interface of TorProcess. E.g., removed TorProcess.connectionWorked, since we do not use this information anymore. Finally, added a TorLauncherUtil.isAndroid. - - - - - 1ad1d839 by Pier Angelo Vendrame at 2023-12-05T13:48:35+01:00 fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser HTML-ize about:torconnect. Changed file extension, updated the HTML tag, removed short-tags on tags that are expected to have a closing tag. Also, removed the preprocessor and moved the onion pattern to this commit, since it is used only here. - - - - - fbd5b4bb by Pier Angelo Vendrame at 2023-12-05T13:48:42+01:00 fixup! Bug 2176: Rebrand Firefox to TorBrowser Move the onion pattern files to the commit of about:torconnect. - - - - - 3649cc3f by Pier Angelo Vendrame at 2023-12-05T18:48:25+01:00 Temporary changes to about:torconnect for Android. We are planning of tempoorarily using about:torconnect on Android, until the native UX is ready. - - - - - 14 changed files: - docshell/base/nsAboutRedirector.cpp - toolkit/components/tor-launcher/TorDomainIsolator.sys.mjs - toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs - toolkit/components/tor-launcher/TorProcess.sys.mjs - toolkit/components/tor-launcher/TorProvider.sys.mjs - toolkit/components/torconnect/content/aboutTorConnect.css - toolkit/components/torconnect/content/aboutTorConnect.xhtml → toolkit/components/torconnect/content/aboutTorConnect.html - toolkit/components/torconnect/content/aboutTorConnect.js - toolkit/themes/shared/onionPattern.svg → toolkit/components/torconnect/content/onion-pattern.svg - toolkit/components/torconnect/jar.mn - toolkit/modules/Moat.sys.mjs - toolkit/themes/shared/minimal-toolkit.jar.inc.mn - − toolkit/themes/shared/onionPattern.css - − toolkit/themes/shared/onionPattern.inc.xhtml Changes: ===================================== docshell/base/nsAboutRedirector.cpp ===================================== @@ -169,7 +169,7 @@ static const RedirEntry kRedirMap[] = { #endif {"telemetry", "chrome://global/content/aboutTelemetry.xhtml", nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::IS_SECURE_CHROME_UI}, - {"torconnect", "chrome://global/content/torconnect/aboutTorConnect.xhtml", + {"torconnect", "chrome://global/content/torconnect/aboutTorConnect.html", nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | nsIAboutModule::URI_CAN_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT | ===================================== toolkit/components/tor-launcher/TorDomainIsolator.sys.mjs ===================================== @@ -475,9 +475,19 @@ class TorDomainIsolatorImpl { * @returns {MozBrowser?} The browser the channel is associated to */ #getBrowserForChannel(channel) { + const currentBrowser = + channel.loadInfo.browsingContext?.topChromeWindow?.browser; + if ( + channel.loadInfo.browsingContext && + currentBrowser?.browsingContext === channel.loadInfo.browsingContext + ) { + // Android has only one browser, and does not have the browsers property. + return currentBrowser; + } const browsers = channel.loadInfo.browsingContext?.topChromeWindow?.gBrowser?.browsers; if (!browsers || !channel.loadInfo.browsingContext?.browserId) { + logger.debug("Missing data to associate to a browser", channel.loadInfo); return null; } for (const browser of browsers) { ===================================== toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs ===================================== @@ -325,6 +325,10 @@ class TorFile { } export const TorLauncherUtil = Object.freeze({ + get isAndroid() { + return Services.appinfo.OS === "Android"; + }, + get isMac() { return Services.appinfo.OS === "Darwin"; }, ===================================== toolkit/components/tor-launcher/TorProcess.sys.mjs ===================================== @@ -33,8 +33,6 @@ export class TorProcess { #args = []; #subprocess = null; #status = TorProcessStatus.Unknown; - // Have we ever made a connection on the control port? - #didConnectToTorControlPort = false; onExit = exitCode => {}; @@ -69,10 +67,6 @@ export class TorProcess { } } - get status() { - return this.#status; - } - get isRunning() { return ( this.#status === TorProcessStatus.Starting || @@ -102,7 +96,6 @@ export class TorProcess { } this.#status = TorProcessStatus.Starting; - this.#didConnectToTorControlPort = false; // useful for simulating slow tor daemon launch const kPrefTorDaemonLaunchDelay = "extensions.torlauncher.launch_delay"; @@ -155,13 +148,6 @@ export class TorProcess { this.#status = TorProcessStatus.Exited; } - // The owner of the process can use this function to tell us that they - // successfully connected to the control port. This information will be used - // only to decide which text to show in the confirmation dialog if tor exits. - connectionWorked() { - this.#didConnectToTorControlPort = true; - } - async #dumpStdout() { let string; while ( @@ -201,20 +187,6 @@ export class TorProcess { #processExitedUnexpectedly(exitCode) { this.#subprocess = null; this.#status = TorProcessStatus.Exited; - // FIXME: We can probably drop #didConnectToTorControlPort and use only one - // callback. Then we can let the provider actually distinguish between the - // cases. - if (!this.#didConnectToTorControlPort) { - logger.warn("Tor exited before we could connect to its control port."); - // tor might be misconfigured, because we could never connect to it. - // Two instances of Tor Browser trying to use the same port numbers is - // also a typical scenario for this. - // This might happen very early, before the browser UI is actually - // available. So, we will tell the process owner that the process exited, - // without trying to restart it. - this.onExit(exitCode); - return; - } logger.warn("Tor exited suddenly."); this.onExit(exitCode); } ===================================== toolkit/components/tor-launcher/TorProvider.sys.mjs ===================================== @@ -35,6 +35,15 @@ const logger = new ConsoleAPI({ * @property {string=} host The host to connect for a TCP control port * @property {number=} port The port number to use for a TCP control port */ +/** + * @typedef {object} SocksSettings An object that includes the proxy settings to + * be configured in the browser. + * @property {boolean=} transproxy If true, no proxy is configured + * @property {nsIFile=} ipcFile The nsIFile object with the path to a Unix + * socket to use for an IPC proxy + * @property {string=} host The host to connect for a TCP proxy + * @property {number=} port The port number to use for a TCP proxy + */ /** * @typedef {object} LogEntry An object with a log message * @property {Date} date The date at which we received the message @@ -111,6 +120,13 @@ export class TorProvider { */ #torProcess = null; + /** + * The settings for the SOCKS proxy. + * + * @type {SocksSettings?} + */ + #socksSettings = null; + /** * The logs we received over the control port. * We store a finite number of log entries which can be configured with @@ -165,8 +181,9 @@ export class TorProvider { async init() { logger.debug("Initializing the Tor provider."); - const socksSettings = TorLauncherUtil.getPreferredSocksConfiguration(); - logger.debug("Requested SOCKS configuration", socksSettings); + // These settings might be customized in the following steps. + this.#socksSettings = TorLauncherUtil.getPreferredSocksConfiguration(); + logger.debug("Requested SOCKS configuration", this.#socksSettings); try { await this.#setControlPortConfiguration(); @@ -175,11 +192,11 @@ export class TorProvider { throw e; } - if (socksSettings.transproxy) { + if (this.#socksSettings.transproxy) { logger.info("Transparent proxy required, not starting a Tor daemon."); } else if (this.ownsTorDaemon) { try { - await this.#startDaemon(socksSettings); + await this.#startDaemon(); } catch (e) { logger.error("Failed to start the tor daemon", e); throw e; @@ -197,8 +214,7 @@ export class TorProvider { throw e; } - // We do not customize SOCKS settings, at least for now. - TorLauncherUtil.setProxyConfiguration(socksSettings); + TorLauncherUtil.setProxyConfiguration(this.#socksSettings); logger.info("The Tor provider is ready."); @@ -464,7 +480,7 @@ export class TorProvider { // Process management - async #startDaemon(socksSettings) { + async #startDaemon() { // TorProcess should be instanced once, then always reused and restarted // only through the prompt it exposes when the controlled process dies. if (this.#torProcess) { @@ -476,7 +492,7 @@ export class TorProvider { this.#torProcess = new lazy.TorProcess( this.#controlPortSettings, - socksSettings + this.#socksSettings ); // Use a closure instead of bind because we reassign #cancelConnection. // Also, we now assign an exit handler that cancels the first connection, @@ -619,7 +635,6 @@ export class TorProvider { } this.#openControlPort() .then(controller => { - this.#torProcess?.connectionWorked(); this.#cancelConnection = () => {}; // The cancel function should have already called reject. if (!canceled) { ===================================== toolkit/components/torconnect/content/aboutTorConnect.css ===================================== @@ -10,6 +10,11 @@ --onion-radius: 75px; } +html { + width: 100%; + height: 100%; +} + input[type="checkbox"]:focus, select:focus { outline: none!important; box-shadow: 0 0 0 3px var(--purple-30) !important; @@ -330,3 +335,166 @@ body { background-image: url("chrome://global/content/torconnect/connection-location.svg"); stroke: var(--warning-color); } + +.onion-pattern-container { + flex: auto; /* grow to consume remaining space on the page */ + display: flex; + margin: 0 auto; + width: 100%; + /* two onions tall, 4x the radius */ + height: calc(4 * var(--onion-radius)); + max-height: calc(4 * var(--onion-radius)); + min-height: calc(4 * var(--onion-radius)); + direction: ltr; +} + +.onion-pattern-crop { + height: 100%; + width: 100%; + + -moz-context-properties: fill; + fill: var(--onion-color, currentColor); + /* opacity of the entire div, not context-opacity */ + opacity: var(--onion-opacity, 1); + + background-image: url("chrome://global/content/torconnect/onion-pattern.svg"); + background-repeat: repeat; + background-attachment: local; + background-position: center; + /* svg source is 6 onions wide and 2 onions tall */ + background-size: calc(6 * 2 * var(--onion-radius)) calc(2 * 2 * var(--onion-radius));; +} + +:root { + --android-dark-accents-buttons: #9059FF; + --android-dark-background-secondary: #E1E0E7; + --android-dark-text-primary: #FBFBFE; + --android-light-text-primary: #15141A; +} + +[hidden=true] { + display: none !important; +} + +body.android { + --onion-color: var(--android-dark-text-primary); + width: 100%; + height: 100%; + box-sizing: border-box; + margin: 0; + padding: 0 24px !important; + color: var(--onion-color); + background: linear-gradient(194deg, #692E9D -0.93%, #393270 48.91%); + font: menu; + font-size: 14px; + display: flex; +} + +.android #connectPageContainer { + max-width: none; + display: flex; + flex-direction: column; + flex: 1; +} + +.android #breadcrumbs { + display: none; +} + +.android #text-container { + display: flex; + flex-direction: column; + flex: 1; +} + +.android .title { + background-position: left 0; + background-repeat: no-repeat; + background-size: 40px; + padding-top: 64px; + font-size: 22px; + line-height: 28px; +} + +.android h1 { + font-weight: normal; + font-size: 100%; + margin: 0 0 16px 0; +} + +.android p { + margin: 0; + padding-bottom: 8px; + line-height: 20px; +} + +.android #quickstartContainer { + margin-top: 24px; +} + +.android .button-container { + display: flex; + flex: 1; + flex-direction: column; +} + +.android #locationDropdown { + width: 100%; + max-width: none; + margin: 0; +} + +.android select { + background: transparent; + border: none; + border-bottom: 1px solid var(--android-dark-text-primary); + color: var(--android-dark-text-primary); + display: block; + width: 100%; + margin-top: 10px; + padding: 8px; +} + +.android #buttonPadding { + flex: 1; +} + +.android #connectButtonContainer { + width: 100%; + padding-bottom: 18px; + display: grid; +} + +/* Be sure not to match the togglee */ +.android #connectButtonContainer button { + display: block; + width: 100%; + margin: 4px 0; + padding: 11px 30px; + font-size: 14px; + font-weight: 500; + border: none; + border-radius: 4px; +} + +.android #connectButton, .android #tryBridgeButton, .android #configureButton.primary { + color: var(--android-dark-text-primary); + background-color: var(--android-dark-accents-buttons); +} + +.android #configureButton { + order: 1; +} + +.android #restartButton { + order: 2; +} + +.android #restartButton, .android #cancelButton, .android #configureButton { + color: var(--android-light-text-primary); + background-color: var(--android-dark-background-secondary); +} + +.android .onion-pattern-container { + display: none; +} ===================================== toolkit/components/torconnect/content/aboutTorConnect.xhtml → toolkit/components/torconnect/content/aboutTorConnect.html ===================================== @@ -1,17 +1,12 @@ <!-- Copyright (c) 2021, The Tor Project, Inc. --> <!DOCTYPE html> -<html xmlns="http://www.w3.org/1999/xhtml"> +<html> <head> <meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" /> - <link - rel="stylesheet" - href="chrome://global/skin/onionPattern.css" - type="text/css" - media="all" - /> + <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="chrome://global/content/torconnect/aboutTorConnect.css" @@ -21,64 +16,69 @@ </head> <body> <div id="progressBar"> - <div id="progressBackground" /> - <div id="progressSolid" /> + <div id="progressBackground"></div> + <div id="progressSolid"></div> </div> <div id="connectPageContainer" class="container"> <div id="breadcrumbs" class="hidden"> <span id="connect-to-tor" class="breadcrumb-item"> - <span id="connect-to-tor-icon" class="breadcrumb-icon" /> - <span class="breadcrumb-label" /> + <span id="connect-to-tor-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> </span> <span id="connection-assist-separator" class="breadcrumb-separator breadcrumb-icon" - /> + ></span> <span id="connection-assist" class="breadcrumb-item"> - <span id="connection-assist-icon" class="breadcrumb-icon" /> - <span class="breadcrumb-label" /> + <span id="connection-assist-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> </span> <span id="try-bridge-separator" class="breadcrumb-separator breadcrumb-icon" - /> + ></span> <span id="try-bridge" class="breadcrumb-item"> - <span id="try-bridge-icon" class="breadcrumb-icon" /> - <span class="breadcrumb-label" /> + <span id="try-bridge-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> </span> </div> <div id="text-container"> <div class="title"> - <h1 class="title-text" /> + <h1 class="title-text"></h1> </div> <div id="connectLongContent"> - <p id="connectLongContentText" /> + <p id="connectLongContentText"></p> </div> <div id="connectShortDesc"> - <p id="connectShortDescText" /> + <p id="connectShortDescText"></p> </div> <button id="viewLogButton"></button> <div id="quickstartContainer"> <input id="quickstartCheckbox" type="checkbox" /> - <label id="quickstartCheckboxLabel" for="quickstartCheckbox" /> + <label id="quickstartCheckboxLabel" for="quickstartCheckbox"></label> </div> - <div id="connectButtonContainer" class="button-container"> - <button id="restartButton" hidden="true"></button> - <button id="configureButton" hidden="true"></button> - <button id="cancelButton" hidden="true"></button> - <button id="connectButton" class="primary" hidden="true"></button> - <label id="locationDropdownLabel" for="countries" /> + <div class="button-container"> + <label id="locationDropdownLabel" for="countries"></label> <form id="locationDropdown" hidden="true"> <select id="countries"></select> </form> - <button id="tryBridgeButton" class="primary" hidden="true"></button> + <span id="buttonPadding"></span> + <span id="connectButtonContainer"> + <button id="restartButton" hidden="true"></button> + <button id="configureButton" hidden="true"></button> + <button id="cancelButton" hidden="true"></button> + <button id="connectButton" class="primary" hidden="true"></button> + <button id="tryBridgeButton" class="primary" hidden="true"></button> + </span> </div> </div> </div> -#include ../../../themes/shared/onionPattern.inc.xhtml + <div class="onion-pattern-container"> + <div class="onion-pattern-crop"></div> + </div> + <script src="chrome://global/content/torconnect/aboutTorConnect.js"></script> </body> - <script src="chrome://global/content/torconnect/aboutTorConnect.js" /> </html> ===================================== toolkit/components/torconnect/content/aboutTorConnect.js ===================================== @@ -70,8 +70,8 @@ class AboutTorConnect { connect: "button#connectButton", tryBridge: "button#tryBridgeButton", locationDropdownLabel: "#locationDropdownLabel", - locationDropdown: "form#locationDropdown", - locationDropdownSelect: "form#locationDropdown select", + locationDropdown: "#locationDropdown", + locationDropdownSelect: "#locationDropdown select", }, }); @@ -666,6 +666,9 @@ class AboutTorConnect { } initElements(direction) { + const isAndroid = navigator.userAgent.indexOf("Android") !== -1; + document.body.classList.toggle("android", isAndroid); + document.documentElement.setAttribute("dir", direction); this.elements.connectToTorLink.addEventListener("click", event => { ===================================== toolkit/themes/shared/onionPattern.svg → toolkit/components/torconnect/content/onion-pattern.svg ===================================== ===================================== toolkit/components/torconnect/jar.mn ===================================== @@ -3,12 +3,13 @@ toolkit.jar: content/global/torconnect/torConnectTitlebarStatus.js (content/torConnectTitlebarStatus.js) content/global/torconnect/torConnectTitlebarStatus.css (content/torConnectTitlebarStatus.css) content/global/torconnect/aboutTorConnect.css (content/aboutTorConnect.css) -* content/global/torconnect/aboutTorConnect.xhtml (content/aboutTorConnect.xhtml) + content/global/torconnect/aboutTorConnect.html (content/aboutTorConnect.html) content/global/torconnect/aboutTorConnect.js (content/aboutTorConnect.js) content/global/torconnect/arrow-right.svg (content/arrow-right.svg) content/global/torconnect/bridge.svg (content/bridge.svg) content/global/torconnect/connection-failure.svg (content/connection-failure.svg) content/global/torconnect/connection-location.svg (content/connection-location.svg) + content/global/torconnect/onion-pattern.svg (content/onion-pattern.svg) content/global/torconnect/tor-connect.svg (content/tor-connect.svg) content/global/torconnect/tor-not-connected-to-connected-animated.svg (content/tor-not-connected-to-connected-animated.svg) content/global/torconnect/tor-connect-broken.svg (content/tor-connect-broken.svg) ===================================== toolkit/modules/Moat.sys.mjs ===================================== @@ -21,6 +21,56 @@ const TorLauncherPrefs = Object.freeze({ moat_service: "extensions.torlauncher.moat_service", }); +function makeMeekCredentials(proxyType) { + // Construct the per-connection arguments. + let meekClientEscapedArgs = ""; + const meekReflector = Services.prefs.getStringPref( + TorLauncherPrefs.bridgedb_reflector + ); + + // Escape aValue per section 3.5 of the PT specification: + // First the "<Key>=<Value>" formatted arguments MUST be escaped, + // such that all backslash, equal sign, and semicolon characters + // are escaped with a backslash. + const escapeArgValue = aValue => + aValue + ? aValue + .replaceAll("\\", "\\\\") + .replaceAll("=", "\\=") + .replaceAll(";", "\\;") + : ""; + + if (meekReflector) { + meekClientEscapedArgs += "url="; + meekClientEscapedArgs += escapeArgValue(meekReflector); + } + const meekFront = Services.prefs.getStringPref( + TorLauncherPrefs.bridgedb_front + ); + if (meekFront) { + if (meekClientEscapedArgs.length) { + meekClientEscapedArgs += ";"; + } + meekClientEscapedArgs += "front="; + meekClientEscapedArgs += escapeArgValue(meekFront); + } + + // socks5 + if (proxyType === "socks") { + if (meekClientEscapedArgs.length <= 255) { + return [meekClientEscapedArgs, "\x00"]; + } else { + return [ + meekClientEscapedArgs.substring(0, 255), + meekClientEscapedArgs.substring(255), + ]; + } + // socks4 + } else { + return [meekClientEscapedArgs, undefined]; + } +} + // // Launches and controls the PT process lifetime // @@ -70,39 +120,6 @@ class MeekTransport { proxy.pathToBinary = meekPath.path; } - // Construct the per-connection arguments. - let meekClientEscapedArgs = ""; - const meekReflector = Services.prefs.getStringPref( - TorLauncherPrefs.bridgedb_reflector - ); - - // Escape aValue per section 3.5 of the PT specification: - // First the "<Key>=<Value>" formatted arguments MUST be escaped, - // such that all backslash, equal sign, and semicolon characters - // are escaped with a backslash. - const escapeArgValue = aValue => - aValue - ? aValue - .replaceAll("\\", "\\\\") - .replaceAll("=", "\\=") - .replaceAll(";", "\\;") - : ""; - - if (meekReflector) { - meekClientEscapedArgs += "url="; - meekClientEscapedArgs += escapeArgValue(meekReflector); - } - const meekFront = Services.prefs.getStringPref( - TorLauncherPrefs.bridgedb_front - ); - if (meekFront) { - if (meekClientEscapedArgs.length) { - meekClientEscapedArgs += ";"; - } - meekClientEscapedArgs += "front="; - meekClientEscapedArgs += escapeArgValue(meekFront); - } - // Setup env and start meek process const ptStateDir = lazy.TorLauncherUtil.getTorFile("tordatadir", false); ptStateDir.append("pt_state"); // Match what tor uses. @@ -247,22 +264,9 @@ class MeekTransport { this.#meekClientProcess = null; this.uninit(); }); - - // socks5 - if (this.proxyType === "socks") { - if (meekClientEscapedArgs.length <= 255) { - this.proxyUsername = meekClientEscapedArgs; - this.proxyPassword = "\x00"; - } else { - this.proxyUsername = meekClientEscapedArgs.substring(0, 255); - this.proxyPassword = meekClientEscapedArgs.substring(255); - } - // socks4 - } else { - this.proxyUsername = meekClientEscapedArgs; - this.proxyPassword = undefined; - } - + [this.proxyUsername, this.proxyPassword] = makeMeekCredentials( + this.proxyType + ); this.#inited = true; } catch (ex) { if (this.#meekClientProcess) { @@ -403,7 +407,7 @@ export class MoatRPC { throw new Error("MoatRPC: Already initialized"); } - let meekTransport = new MeekTransport(); + const meekTransport = new MeekTransport(); await meekTransport.init(); this.#meekTransport = meekTransport; this.#inited = true; ===================================== toolkit/themes/shared/minimal-toolkit.jar.inc.mn ===================================== @@ -47,7 +47,3 @@ toolkit.jar: skin/classic/global/media/textrecognition.css (../../shared/media/textrecognition.css) skin/classic/global/browser-colors.css (../../shared/browser-colors.css) - -# Tor customization - skin/classic/global/onionPattern.css (../../shared/onionPattern.css) - skin/classic/global/onionPattern.svg (../../shared/onionPattern.svg) ===================================== toolkit/themes/shared/onionPattern.css deleted ===================================== @@ -1,31 +0,0 @@ -/* Onion pattern */ - -.onion-pattern-container { - - flex: auto; /* grow to consume remaining space on the page */ - display: flex; - margin: 0 auto; - width: 100%; - /* two onions tall, 4x the radius */ - height: calc(4 * var(--onion-radius)); - max-height: calc(4 * var(--onion-radius)); - min-height: calc(4 * var(--onion-radius)); - direction: ltr; -} - -.onion-pattern-crop { - height: 100%; - width: 100%; - - -moz-context-properties: fill; - fill: var(--onion-color, currentColor); - /* opacity of the entire div, not context-opacity */ - opacity: var(--onion-opacity, 1); - - background-image: url("chrome://global/skin/onionPattern.svg"); - background-repeat: repeat; - background-attachment: local; - background-position: center; - /* svg source is 6 onions wide and 2 onions tall */ - background-size: calc(6 * 2 * var(--onion-radius)) calc(2 * 2 * var(--onion-radius));; -} ===================================== toolkit/themes/shared/onionPattern.inc.xhtml deleted ===================================== @@ -1,12 +0,0 @@ -<!-- - Container div that holds onionPattern.svg - It is expected the includer of this xhtml file also includes onionPattern.css - and define the following vars: - onion-radius : radius of an onion - onion-color : the base color of the onion pattern - onion-opacity : the opacity of the entire repeating pattern ---> - -<div class="onion-pattern-container"> - <div class="onion-pattern-crop"/> -</div> \ No newline at end of file View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/410b9a… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/410b9a… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser-update-responses][main] 2 commits: alpha: new version, 13.5a2
by richard (@richard) 05 Dec '23

05 Dec '23
richard pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses Commits: a699b121 by Richard Pospesel at 2023-11-28T17:15:24+00:00 alpha: new version, 13.5a2 - - - - - 40a15b9a by Richard Pospesel at 2023-12-05T16:57:15+00:00 release: new version, 13.0.6 - - - - - 30 changed files: - update_1/alpha/.htaccess - − update_1/alpha/13.0a4-13.5a1-linux-x86_64-ALL.xml - − update_1/alpha/13.0a4-13.5a1-macos-ALL.xml - − update_1/alpha/13.0a4-13.5a1-windows-x86_64-ALL.xml - − update_1/alpha/13.0a5-13.5a1-linux-x86_64-ALL.xml - − update_1/alpha/13.0a5-13.5a1-macos-ALL.xml - − update_1/alpha/13.0a5-13.5a1-windows-x86_64-ALL.xml - + update_1/alpha/13.0a5-13.5a2-linux-x86_64-ALL.xml - + update_1/alpha/13.0a5-13.5a2-macos-ALL.xml - + update_1/alpha/13.0a5-13.5a2-windows-x86_64-ALL.xml - − update_1/alpha/13.0a6-13.5a1-linux-x86_64-ALL.xml - − update_1/alpha/13.0a6-13.5a1-macos-ALL.xml - − update_1/alpha/13.0a6-13.5a1-windows-x86_64-ALL.xml - + update_1/alpha/13.0a6-13.5a2-linux-x86_64-ALL.xml - + update_1/alpha/13.0a6-13.5a2-macos-ALL.xml - + update_1/alpha/13.0a6-13.5a2-windows-x86_64-ALL.xml - + update_1/alpha/13.5a1-13.5a2-linux-x86_64-ALL.xml - + update_1/alpha/13.5a1-13.5a2-macos-ALL.xml - + update_1/alpha/13.5a1-13.5a2-windows-x86_64-ALL.xml - − update_1/alpha/13.5a1-linux-x86_64-ALL.xml - − update_1/alpha/13.5a1-macos-ALL.xml - − update_1/alpha/13.5a1-windows-x86_64-ALL.xml - + update_1/alpha/13.5a2-linux-x86_64-ALL.xml - + update_1/alpha/13.5a2-macos-ALL.xml - + update_1/alpha/13.5a2-windows-x86_64-ALL.xml - update_1/alpha/download-linux-x86_64.json - update_1/alpha/download-macos.json - update_1/alpha/download-windows-x86_64.json - update_1/alpha/downloads.json - update_1/release/.htaccess The diff was not included because it is too large. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.6
by richard (@richard) 05 Dec '23

05 Dec '23
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: 4d2eccc7 by Richard Pospesel at 2023-12-05T16:23:01+00:00 release: new version, 13.0.6 - - - - - 30 changed files: - update_3/release/.htaccess - − update_3/release/13.0-13.0.5-linux-i686-ALL.xml - − update_3/release/13.0-13.0.5-linux-x86_64-ALL.xml - − update_3/release/13.0-13.0.5-macos-ALL.xml - − update_3/release/13.0-13.0.5-windows-i686-ALL.xml - − update_3/release/13.0-13.0.5-windows-x86_64-ALL.xml - + update_3/release/13.0-13.0.6-linux-i686-ALL.xml - + update_3/release/13.0-13.0.6-linux-x86_64-ALL.xml - + update_3/release/13.0-13.0.6-macos-ALL.xml - + update_3/release/13.0-13.0.6-windows-i686-ALL.xml - + update_3/release/13.0-13.0.6-windows-x86_64-ALL.xml - − update_3/release/13.0.1-13.0.5-linux-i686-ALL.xml - − update_3/release/13.0.1-13.0.5-linux-x86_64-ALL.xml - − update_3/release/13.0.1-13.0.5-macos-ALL.xml - − update_3/release/13.0.1-13.0.5-windows-i686-ALL.xml - − update_3/release/13.0.1-13.0.5-windows-x86_64-ALL.xml - + update_3/release/13.0.1-13.0.6-linux-i686-ALL.xml - + update_3/release/13.0.1-13.0.6-linux-x86_64-ALL.xml - + update_3/release/13.0.1-13.0.6-macos-ALL.xml - + update_3/release/13.0.1-13.0.6-windows-i686-ALL.xml - + update_3/release/13.0.1-13.0.6-windows-x86_64-ALL.xml - − update_3/release/13.0.4-13.0.5-linux-i686-ALL.xml - − update_3/release/13.0.4-13.0.5-linux-x86_64-ALL.xml - − update_3/release/13.0.4-13.0.5-macos-ALL.xml - − update_3/release/13.0.4-13.0.5-windows-i686-ALL.xml - − update_3/release/13.0.4-13.0.5-windows-x86_64-ALL.xml - + update_3/release/13.0.5-13.0.6-linux-i686-ALL.xml - + update_3/release/13.0.5-13.0.6-linux-x86_64-ALL.xml - + update_3/release/13.0.5-13.0.6-macos-ALL.xml - + update_3/release/13.0.5-13.0.6-windows-i686-ALL.xml The diff was not included because it is too large. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-13.0] 2 commits: Bug 41036: Remove go_vendor-lyrebird-nightly makefile target
by boklm (@boklm) 05 Dec '23

05 Dec '23
boklm pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build Commits: f3939e09 by Nicolas Vigier at 2023-12-05T16:44:03+01:00 Bug 41036: Remove go_vendor-lyrebird-nightly makefile target Since after #40948 we don&#39;t check lyrebird-vendor sha256sum in nightly, we don&#39;t need to use the `go_vendor-lyrebird-nightly` makefile target anymore. - - - - - 38fc8374 by Nicolas Vigier at 2023-12-05T16:46:01+01:00 Bug 41036: Rename go_vendor-$project-alpha make targets to go_vendor-$project Since we don&#39;t have a `-nightly` target anymore, we don&#39;t need to keep `-alpha` in the other targets. - - - - - 2 changed files: - Makefile - doc/how-to-update-go-dependencies.txt Changes: ===================================== Makefile ===================================== @@ -631,21 +631,18 @@ cargo_vendor-application-services: submodule-update cargo_vendor-cbindgen: submodule-update $(rbm) build cbindgen --step cargo_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-snowflake-alpha: submodule-update +go_vendor-snowflake: submodule-update $(rbm) build snowflake --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-conjure-alpha: submodule-update +go_vendor-conjure: submodule-update $(rbm) build conjure --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-webtunnel-alpha: submodule-update +go_vendor-webtunnel: submodule-update $(rbm) build webtunnel --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-lyrebird-alpha: submodule-update +go_vendor-lyrebird: submodule-update $(rbm) build lyrebird --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-lyrebird-nightly: submodule-update - $(rbm) build lyrebird --step go_vendor --target nightly --target torbrowser-linux-x86_64 - ############# # rcodesign # ===================================== doc/how-to-update-go-dependencies.txt ===================================== @@ -2,8 +2,7 @@ When the dependencies of a go project ($project in the following lines) are changing: - the go.mod and go.sum files in $project.git are updated -- in tor-browser-build, run `make go_vendor-$project-alpha` or - `make go_vendor-$project-nightly` +- in tor-browser-build, run `make go_vendor-$project` - find the new file created in directory `out/$project/go_vendor` and compute its sha256sum - in `projects/$project/config`, update `norec/sha256sum` for `go_vendor` View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] 2 commits: Bug 41036: Remove go_vendor-lyrebird-nightly makefile target
by boklm (@boklm) 05 Dec '23

05 Dec '23
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 8e7cef63 by Nicolas Vigier at 2023-12-05T16:16:45+01:00 Bug 41036: Remove go_vendor-lyrebird-nightly makefile target Since after #40948 we don&#39;t check lyrebird-vendor sha256sum in nightly, we don&#39;t need to use the `go_vendor-lyrebird-nightly` makefile target anymore. - - - - - db02c9d4 by Nicolas Vigier at 2023-12-05T16:32:00+01:00 Bug 41036: Rename go_vendor-$project-alpha make targets to go_vendor-$project Since we don&#39;t have a `-nightly` target anymore, we don&#39;t need to keep `-alpha` in the other targets. - - - - - 2 changed files: - Makefile - doc/how-to-update-go-dependencies.txt Changes: ===================================== Makefile ===================================== @@ -637,21 +637,18 @@ cargo_vendor-wasm-bindgen: submodule-update cargo_vendor-lox: submodule-update $(rbm) build lox-wasm --step cargo_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-snowflake-alpha: submodule-update +go_vendor-snowflake: submodule-update $(rbm) build snowflake --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-conjure-alpha: submodule-update +go_vendor-conjure: submodule-update $(rbm) build conjure --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-webtunnel-alpha: submodule-update +go_vendor-webtunnel: submodule-update $(rbm) build webtunnel --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-lyrebird-alpha: submodule-update +go_vendor-lyrebird: submodule-update $(rbm) build lyrebird --step go_vendor --target alpha --target torbrowser-linux-x86_64 -go_vendor-lyrebird-nightly: submodule-update - $(rbm) build lyrebird --step go_vendor --target nightly --target torbrowser-linux-x86_64 - ############# # rcodesign # ===================================== doc/how-to-update-go-dependencies.txt ===================================== @@ -2,8 +2,7 @@ When the dependencies of a go project ($project in the following lines) are changing: - the go.mod and go.sum files in $project.git are updated -- in tor-browser-build, run `make go_vendor-$project-alpha` or - `make go_vendor-$project-nightly` +- in tor-browser-build, run `make go_vendor-$project` - find the new file created in directory `out/$project/go_vendor` and compute its sha256sum - in `projects/$project/config`, update `norec/sha256sum` for `go_vendor` View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • ...
  • 804
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.