[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! TB 40933: Add tor-launcher functionality



Title: GitLab

Pier Angelo Vendrame pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser

Commits:

  • 14497cc9
    by Pier Angelo Vendrame at 2026-02-11T15:30:20+01:00
    fixup! TB 40933: Add tor-launcher functionality
    
    TB 44619: Add more tor logs to the UI.
    
    Usually, we show in the UI only the logs we received from the tor
    daemon.
    However, for troubleshooting, it makes sense to display more errors,
    e.g., about failure to start a tor process, or to connect to the
    control port.
    
    We already had those in the browser console, however it is not trivial
    to get them, especially on Android.
    
    TB 43403&43560: Add "UTC" to the log timestamp.
    

4 changed files:

Changes:

  • toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs
    ... ... @@ -11,6 +11,7 @@ const lazy = {};
    11 11
     
    
    12 12
     ChromeUtils.defineESModuleGetters(lazy, {
    
    13 13
       FileUtils: "resource://gre/modules/FileUtils.sys.mjs",
    
    14
    +  TorProviderTopics: "resource://gre/modules/TorProviderBuilder.sys.mjs",
    
    14 15
     });
    
    15 16
     
    
    16 17
     const kPropBundleURI = "chrome://torbutton/locale/torlauncher.properties";
    
    ... ... @@ -699,4 +700,27 @@ export const TorLauncherUtil = {
    699 700
           console.warn("Could not remove the IPC directory", e);
    
    700 701
         }
    
    701 702
       },
    
    703
    +
    
    704
    +  /**
    
    705
    +   * Broadcast a tor log message. This message will be visible to the user.
    
    706
    +   *
    
    707
    +   * NOTE: Users are likely to copy and paste their tor log to forums, etc.
    
    708
    +   * Therefore, the messages should avoid containing any information that might
    
    709
    +   * identify information about the user.
    
    710
    +   *
    
    711
    +   * @param {string} type The log type (ERR, WARN, etc...)
    
    712
    +   * @param {string} msg The log message
    
    713
    +   */
    
    714
    +  log(type, msg) {
    
    715
    +    const timestamp =
    
    716
    +      new Date().toISOString().replace("T", " ").replace("Z", "") + " UTC";
    
    717
    +    Services.obs.notifyObservers(
    
    718
    +      { type, msg, timestamp },
    
    719
    +      lazy.TorProviderTopics.TorLog
    
    720
    +    );
    
    721
    +    if (type === "WARN" || type === "ERR") {
    
    722
    +      // Notify so that Copy Log can be enabled.
    
    723
    +      Services.obs.notifyObservers(null, lazy.TorProviderTopics.HasWarnOrErr);
    
    724
    +    }
    
    725
    +  },
    
    702 726
     };

  • toolkit/components/tor-launcher/TorProcess.sys.mjs
    ... ... @@ -141,9 +141,18 @@ export class TorProcess {
    141 141
           this.#status = TorProcessStatus.Exited;
    
    142 142
           this.#subprocess = null;
    
    143 143
           logger.error("startTor error:", e);
    
    144
    +      lazy.TorLauncherUtil.log(
    
    145
    +        "PARENT-ERR",
    
    146
    +        "Failed to start a tor process (more information in the browser console)."
    
    147
    +      );
    
    144 148
           throw e;
    
    145 149
         }
    
    146 150
     
    
    151
    +    lazy.TorLauncherUtil.log(
    
    152
    +      "PARENT-INFO",
    
    153
    +      `New tor process started with pid ${this.#subprocess.pid}.`
    
    154
    +    );
    
    155
    +
    
    147 156
         // Do not await the following functions, as they will return only when the
    
    148 157
         // process exits.
    
    149 158
         this.#dumpStdout();
    
    ... ... @@ -189,8 +198,15 @@ export class TorProcess {
    189 198
           const { exitCode } = await watched.wait();
    
    190 199
           processExitCode = exitCode;
    
    191 200
     
    
    201
    +      lazy.TorLauncherUtil.log(
    
    202
    +        exitCode !== 0 ? "PARENT-WARN" : "PARENT-INFO",
    
    203
    +        `The tor process with pid ${this.#subprocess.pid} exited with code ${exitCode}.`
    
    204
    +      );
    
    205
    +
    
    192 206
           if (watched !== this.#subprocess) {
    
    193
    -        logger.debug(`A Tor process exited with code ${exitCode}.`);
    
    207
    +        logger.debug(
    
    208
    +          `The tor process ${watched.pid} exited with code ${exitCode}.`
    
    209
    +        );
    
    194 210
           } else if (exitCode) {
    
    195 211
             logger.warn(`The watched Tor process exited with code ${exitCode}.`);
    
    196 212
           } else {
    

  • toolkit/components/tor-launcher/TorProcessAndroid.sys.mjs
    ... ... @@ -6,6 +6,7 @@ const lazy = {};
    6 6
     
    
    7 7
     ChromeUtils.defineESModuleGetters(lazy, {
    
    8 8
       EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
    
    9
    +  TorLauncherUtil: "resource://gre/modules/TorLauncherUtil.sys.mjs",
    
    9 10
     });
    
    10 11
     
    
    11 12
     const logger = console.createInstance({
    
    ... ... @@ -107,6 +108,27 @@ export class TorProcessAndroid {
    107 108
       }
    
    108 109
     
    
    109 110
       onEvent(event, data, _callback) {
    
    111
    +    switch (event) {
    
    112
    +      case TorIncomingEvents.started:
    
    113
    +        lazy.TorLauncherUtil.log(
    
    114
    +          "PARENT-INFO",
    
    115
    +          `New tor process with handle ${data.handle} started.`
    
    116
    +        );
    
    117
    +        break;
    
    118
    +      case TorIncomingEvents.startFailed:
    
    119
    +        lazy.TorLauncherUtil.log(
    
    120
    +          "PARENT-ERR",
    
    121
    +          `Failed to start a tor process: ${data.error}`
    
    122
    +        );
    
    123
    +        break;
    
    124
    +      case TorIncomingEvents.exited:
    
    125
    +        lazy.TorLauncherUtil.log(
    
    126
    +          data.status !== 0 ? "PARENT-WARN" : "PARENT-INFO",
    
    127
    +          `The tor process with handle ${data.handle} exited with status ${data.status}.`
    
    128
    +        );
    
    129
    +        break;
    
    130
    +    }
    
    131
    +
    
    110 132
         if (data?.handle !== this.#processHandle) {
    
    111 133
           logger.debug(`Ignoring event ${event} with another handle`, data);
    
    112 134
           return;
    

  • toolkit/components/tor-launcher/TorProvider.sys.mjs
    ... ... @@ -207,8 +207,15 @@ export class TorProvider {
    207 207
           await this.#firstConnection();
    
    208 208
         } catch (e) {
    
    209 209
           logger.error("Cannot connect to the control port", e);
    
    210
    +      // Log this also to the UI, as getting console logs from Android
    
    211
    +      // makes troubleshooting more difficult and involved.
    
    212
    +      TorLauncherUtil.log(
    
    213
    +        "PARENT-ERR",
    
    214
    +        `Connection to the control port failed: ${e.message}.`
    
    215
    +      );
    
    210 216
           throw e;
    
    211 217
         }
    
    218
    +    TorLauncherUtil.log("PARENT-INFO", "Connected to the control port.", false);
    
    212 219
     
    
    213 220
         if (this.ownsTorDaemon) {
    
    214 221
           try {
    
    ... ... @@ -1021,21 +1028,7 @@ export class TorProvider {
    1021 1028
        * @param {string} msg The message
    
    1022 1029
        */
    
    1023 1030
       onLogMessage(type, msg) {
    
    1024
    -    if (type === "WARN" || type === "ERR") {
    
    1025
    -      // Notify so that Copy Log can be enabled.
    
    1026
    -      Services.obs.notifyObservers(null, TorProviderTopics.HasWarnOrErr);
    
    1027
    -    }
    
    1028
    -
    
    1029
    -    const timestamp = new Date()
    
    1030
    -      .toISOString()
    
    1031
    -      .replace("T", " ")
    
    1032
    -      .replace("Z", "");
    
    1033
    -
    
    1034
    -    Services.obs.notifyObservers(
    
    1035
    -      { type, msg, timestamp },
    
    1036
    -      TorProviderTopics.TorLog
    
    1037
    -    );
    
    1038
    -
    
    1031
    +    TorLauncherUtil.log(type, msg);
    
    1039 1032
         switch (type) {
    
    1040 1033
           case "ERR":
    
    1041 1034
             logger.error(`[Tor error] ${msg}`);
    

  • _______________________________________________
    tor-commits mailing list -- tor-commits@xxxxxxxxxxxxxxxxxxxx
    To unsubscribe send an email to tor-commits-leave@xxxxxxxxxxxxxxxxxxxx