torbirdy-0.1.4/0000755000175000017500000000000012602062501010636 5ustar uutorbirdy-0.1.4/LICENSE0000600000175000017500000000254212421743776011661 0ustar uuCopyright (c) 2012-2013, Jacob Appelbaum Copyright (c) 2012-2013, Sukhbir Singh All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. torbirdy-0.1.4/chrome.manifest0000600000175000017500000000446112422161066013646 0ustar uucontent castironthunderbirdclub chrome/content/ overlay chrome://messenger/content/messenger.xul chrome://castironthunderbirdclub/content/overlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://castironthunderbirdclub/content/composeoverlay.xul overlay chrome://messenger/content/accountcreation/emailWizard.xul chrome://castironthunderbirdclub/content/emailwizard.xul component {ebd85413-18c8-4265-a708-a8890ec8d1ed} components/torbirdy.js contract @torproject.org/torbirdy;1 {ebd85413-18c8-4265-a708-a8890ec8d1ed} category profile-after-change TorBirdy @torproject.org/torbirdy;1 locale castironthunderbirdclub ar chrome/locale/ar/ locale castironthunderbirdclub ca chrome/locale/ca/ locale castironthunderbirdclub cs chrome/locale/cs/ locale castironthunderbirdclub da chrome/locale/da/ locale castironthunderbirdclub de chrome/locale/de/ locale castironthunderbirdclub el chrome/locale/el/ locale castironthunderbirdclub en chrome/locale/en/ locale castironthunderbirdclub en-GB chrome/locale/en-GB/ locale castironthunderbirdclub es chrome/locale/es/ locale castironthunderbirdclub eu chrome/locale/eu/ locale castironthunderbirdclub fr chrome/locale/fr/ locale castironthunderbirdclub he chrome/locale/he/ locale castironthunderbirdclub hu chrome/locale/hu/ locale castironthunderbirdclub id chrome/locale/id/ locale castironthunderbirdclub it chrome/locale/it/ locale castironthunderbirdclub ko chrome/locale/ko/ locale castironthunderbirdclub lv chrome/locale/lv/ locale castironthunderbirdclub nb chrome/locale/nb/ locale castironthunderbirdclub nl chrome/locale/nl/ locale castironthunderbirdclub pa chrome/locale/pa/ locale castironthunderbirdclub pl chrome/locale/pl/ locale castironthunderbirdclub pt chrome/locale/pt/ locale castironthunderbirdclub pt-BR chrome/locale/pt-BR/ locale castironthunderbirdclub ro chrome/locale/ro/ locale castironthunderbirdclub ru chrome/locale/ru/ locale castironthunderbirdclub sk chrome/locale/sk/ locale castironthunderbirdclub sl chrome/locale/sl/ locale castironthunderbirdclub sr chrome/locale/sr/ locale castironthunderbirdclub sv chrome/locale/sv/ locale castironthunderbirdclub tr chrome/locale/tr/ locale castironthunderbirdclub uk chrome/locale/uk/ skin castironthunderbirdclub classic/1.0 chrome/skin/ torbirdy-0.1.4/components/0000700000175000017500000000000012500312174013012 5ustar uutorbirdy-0.1.4/components/torbirdy.js0000600000175000017500000005623012500312174015216 0ustar uuComponents.utils.import("resource://gre/modules/XPCOMUtils.jsm"); Components.utils.import("resource://gre/modules/AddonManager.jsm"); const Ci = Components.interfaces; const Cc = Components.classes; const Cr = Components.results; const SERVICE_CTRID = "@torproject.org/torbirdy;1"; const SERVICE_ID = Components.ID("{ebd85413-18c8-4265-a708-a8890ec8d1ed}"); const SERVICE_NAME = "Main TorBirdy Component"; const TB_ID = "castironthunderbirdclub@torproject.org"; const kPrefBranch = "extensions.torbirdy.custom."; const kRestoreBranch = "extensions.torbirdy.restore."; const kTorBirdyBranch = "extensions.torbirdy."; // Default preference values for TorBirdy. // These preferences values will be "enforced": even if the user decides to // change the preferences listed below, they will be reset to the TorBirdy // default when Thunderbird restarts. The reason we are doing this is because // these preferences, if changed, can introduce leaks and therefore should be // not changed by the user. Even if the user does change them, we reset them to // the secure default when Thunderbird starts. // There are some preferences that can be overwritten using TorBirdy's // preferences dialog. See `preferences.js'. const TorBirdyPrefs = { "extensions.torbirdy.protected": false, // When the preferences below have been set, then only enable TorBirdy. // Generate our own custom time-independent message-ID. "mailnews.custom_message_id": true, "mailnews.header.custom_message_id": "", // Remove the date header. "mailnews.local_date_header_generation": false, /* Network */ // Use a manual proxy configuration. "network.proxy.type": 1, // Number of seconds to wait before attempting to recontact an unresponsive proxy server. "network.proxy.failover_timeout": 1800, // Configure Thunderbird to use the SOCKS5 proxy. "network.proxy.socks": "127.0.0.1", "network.proxy.socks_port": 9150, "network.proxy.socks_version": 5, // Set DNS proxying through SOCKS5. "network.proxy.socks_remote_dns": true, // https://lists.torproject.org/pipermail/tor-talk/2011-September/021398.html // "Towards a Tor-safe Mozilla Thunderbird" // These options enable a warning that tagnaq suggests. // Warn when an application is to be launched. "network.protocol-handler.warn-external.http": true, "network.protocol-handler.warn-external.https": true, "network.protocol-handler.warn-external.ftp": true, "network.protocol-handler.warn-external.file": true, "network.protocol-handler.warn-external-default": true, // Likely privacy violations // https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting // https://trac.torproject.org/projects/tor/ticket/3914 "network.http.pipelining": true, // We do not fully understand the privacy issues of the SPDY protocol // We have no reason to believe that anyone would actually use it with // Thunderbird but we fail closed to keep users safe out of an abundance of // caution. "network.http.spdy.enabled": false, // We want pipelined requests and a bunch of them, as is explained in the // experimental-defense-website-traffic-fingerprinting blog post by Torbutton // author Mike Perry. "network.http.pipelining.ssl": true, "network.http.proxy.pipelining": true, "network.http.pipelining.maxrequests": 12, "network.http.sendRefererHeader": 0, // Disable proxy bypass issue. // Websockets have no use in Thunderbird over Tor; some versions of the // underlying Mozilla networking code allowed websockets to bypass the proxy // settings - this is deadly to Tor users: // https://blog.torproject.org/blog/firefox-security-bug-proxy-bypass-current-tbbs // We don't want user's of Thunderbird to even come close to such a bypass // issue and so we have disabled websockets out of an abundance of caution. "network.websocket.enabled": false, // No cookies are allowed. "network.cookie.cookieBehavior": 2, // Disable link prefetching. "network.prefetch-next": false, /* Security */ // Default is always false for OCSP - it's broken crap // Why is it broken, you might ask? // Moxie Marlinspike, a hero to all humans everywhere, defeated it with the // number '3' at Defcon/Blackhat 2009 His paper: // http://www.thoughtcrime.org/papers/ocsp-attack.pdf His software to perform // the attack is here: http://thoughtcrime.org/software/sslsniff/ Furthermore // - OCSP servers may log information about a user as they use the internet // generally; it's everything we hate about CRLs and more "security.OCSP.enabled": 1, "security.OCSP.require": false, // Disable TLS Session Ticket. // See https://trac.torproject.org/projects/tor/ticket/4099 "security.enable_tls_session_tickets": false, // Enable SSL3? // We do not want to enable a known weak protocol; users should use only use TLS "security.enable_ssl3": false, // Thunderbird 23.0 uses the following preference. "security.tls.version.min": 1, // Display a dialog warning the user when entering an insecure site from a secure one. "security.warn_entering_weak": true, // Display a dialog warning the user when submtting a form to an insecure site. "security.warn_submit_insecure": true, // Enable SSL FalseStart. // This should be safe and improve TLS performance "security.ssl.enable_false_start": true, // Reject all connection attempts to servers using the old SSL/TLS protocol. "security.ssl.require_safe_negotiation": true, // Warn when connecting to a server that uses an old protocol version. "security.ssl.treat_unsafe_negotiation_as_broken": true, // Disable 'extension blocklist' which might leak the OS information. // See https://trac.torproject.org/projects/tor/ticket/6734 "extensions.blocklist.enabled": false, /* Mailnews */ // Suggestions from the JAP team on how they'd configure thunderbird // http://anonymous-proxy-servers.net/en/help/thunderbird.html // Disable the start page. "mailnews.start_page.enabled": false, // Set UTF-8 as the default charset. "mailnews.send_default_charset": "UTF-8", // Send plain text with hard line breaks as entered. "mailnews.send_plaintext_flowed": false, // Display a message as plain text, even if there is a HTML version. "mailnews.display.prefer_plaintext": true, // Don't display HTML, inline images and some other uncommon content. // From: http://www.bucksch.org/1/projects/mozilla/108153/ "mailnews.display.disallow_mime_handlers": 3, // Convert HTML to text and then back again. "mailnews.display.html_as": 1, // Disable plugin support. "mailnews.message_display.allow_plugins": false, // Don't convert to our local date. This may matter in a reply, etc. "mailnews.display.original_date": true, // When replying to a message, set to: '%s'. // https://lists.torproject.org/pipermail/tor-talk/2012-May/024395.html "mailnews.reply_header_type": 1, "mailnews.reply_header_authorwrote": "%s", "mailnews.reply_header_authorwrotesingle": "#1:", // Show Sender header in message pane (#10226). // http://heise.de/-2044405 // https://bugzilla.mozilla.org/show_bug.cgi?id=332639 "mailnews.headers.showSender": true, /* Mail */ // Prevent hostname leaks. "mail.smtpserver.default.hello_argument": "127.0.0.1", // Compose messages in plain text (by default). "mail.html_compose": false, "mail.identity.default.compose_html": false, // Send message as plain text. "mail.default_html_action": 1, // Disable Thunderbird's 'Get new account' wizard. "mail.provider.enabled": false, // Don't ask to be the default client. "mail.shell.checkDefaultClient": false, "mail.shell.checkDefaultMail": false, // Disable inline attachments. "mail.inline_attachments": false, // Do not IDLE (disable push mail). "mail.server.default.use_idle": false, /* Browser */ // Disable caching. "browser.cache.disk.enable": false, "browser.cache.memory.enable": false, /* Enigmail */ // We hope the user has Enigmail and if so, we believe these improve security. // We would like these options to be a single shared option we can toggle but // we require some discussions with upstream and then they would need a new // release. It's not actually clear how we could or even if we should then // depend on a specific Enigmail version. Either way, we want to save the // user who would shoot themselves in the privacy-foot. // Disable X-Enigmail headers. // We don't want to obviously disclose that we're using Enigmail as it may // add privacy destroying headers "extensions.enigmail.addHeaders": false, // Use GnuPG's default comment for signed messages. "extensions.enigmail.useDefaultComment": true, // We need to pass some more parameters to GPG. "extensions.enigmail.agentAdditionalParam": // Don't disclose the version "--no-emit-version " + // Don't add additional comments (may leak language, etc) "--no-comments " + // We want to force UTF-8 everywhere "--display-charset utf-8 " + // We want to ensure that Enigmail is proxy aware even when it runs gpg in a shell "--keyserver-options http-proxy=http://127.0.0.1:8118 ", // The default key server should be a hidden service and this is the only known one (it's part of the normal SKS network) "extensions.enigmail.keyserver": "hkp://qdigse2yzvuglcix.onion", // Force GnuPG to use SHA512. "extensions.enigmail.mimeHashAlgorithm": 5, // Prefer plain text for RSS. "rss.display.prefer_plaintext": true, // Override the user agent by setting it to an empty string. "general.useragent.override": "", // Disable WebGL. "webgl.disabled": true, // Disable Telemetry completely. "toolkit.telemetry.enabled": false, // Disable Geolocation. "geo.enabled": false, // Disable JavaScript (email). "javascript.enabled": false, // Disable client-side session and persistent storage. "dom.storage.enabled": false, // Do not run plugins out-of-process. "dom.ipc.plugins.java.enabled": false, // Disable changing of images via JavaScript. "dom.disable_image_src_set": true, // Disable WebM, WAV, Ogg, PeerConnection. "media.webm.enabled": false, "media.wave.enabled": false, "media.ogg.enabled": false, "media.peerconnection.enabled": false, // Disable CSS :visited selector. "layout.css.visited_links_enabled": false, // Disable downloadable fonts. "gfx.downloadable_fonts.enabled": false, // Disable remote images. "permissions.default.image": 2, // Thunderbird 15 introduces the chat feature so disable the preferences below. "purple.logging.log_chats": false, "purple.logging.log_ims": false, "purple.logging.log_system": false, "purple.conversations.im.send_typing": false, // Messenger related preferences. // Do not report idle. "messenger.status.reportIdle": false, "messenger.status.awayWhenIdle": false, // Set the following preferences to empty strings. "messenger.status.defaultIdleAwayMessage": "", "messenger.status.userDisplayName": "", // Do not connect automatically. "messenger.startup.action": 0, // Ignore invitations; do not automatically accept them. "messenger.conversations.autoAcceptChatInvitations": 0, // Do not format incoming messages. "messenger.options.filterMode": 0, // On copying the content in the chat window, remove the time information. // See `comm-central/chat/locales/conversations.properties' for more information. "messenger.conversations.selections.systemMessagesTemplate": "%message%", "messenger.conversations.selections.contentMessagesTemplate": "%sender%: %message%", "messenger.conversations.selections.actionMessagesTemplate": "%sender% %message%", // Mozilla Lightning. "calendar.useragent.extra": "", "calendar.timezone.local": "", // All preferences have been set: now enable TorBirdy. "extensions.torbirdy.protected": true, } // Although we do perform a cleanup when TorBirdy is removed (we remove // TorBirdy's preferences), there are some preference values that we change // when TorBirdy is initialized that should be preserved instead. When TorBirdy // is disabled or uninstalled, these preferences are restored to their original // value. All such preferences go here. var TorBirdyOldPrefs = [ "network.proxy.type", "network.proxy.ssl_port", "network.proxy.ssl", "network.proxy.socks_version", "network.proxy.socks_port", "network.proxy.socks", "network.proxy.http_port", "network.proxy.http", ] function TorBirdy() { this._uninstall = false; this.wrappedJSObject = this; this.prefs = Cc["@mozilla.org/preferences-service;1"] .getService(Ci.nsIPrefBranch); var torbirdyPref = Cc["@mozilla.org/preferences-service;1"] .getService(Ci.nsIPrefService).getBranch(kPrefBranch); this.customPrefs = torbirdyPref.getChildList("", {}); var oldPrefs = Cc["@mozilla.org/preferences-service;1"] .getService(Ci.nsIPrefService).getBranch(kRestoreBranch); this.restorePrefs = oldPrefs.getChildList("", {}); this.acctMgr = Cc["@mozilla.org/messenger/account-manager;1"] .getService(Ci.nsIMsgAccountManager); var pluginsHost = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); this.plugins = pluginsHost.getPluginTags({}); this.onEnabling = this.onOperationCancelled; this.onDisabling = this.onUninstalling; AddonManager.addAddonListener(this); this.setAccountPrefs(); this.setPrefs(); dump("TorBirdy registered!\n"); } TorBirdy.prototype = { QueryInterface: XPCOMUtils.generateQI( [Ci.nsIObserver]), wrappedJSObject: null, classDescription: SERVICE_NAME, classID: SERVICE_ID, contractID: SERVICE_CTRID, // This is a hack to cause Thunderbird to instantiate us ASAP! _xpcom_categories: [{ category: "profile-after-change"}, ], onUninstalling: function(addon, needsRestart) { if (addon.id == TB_ID) { dump("Nooo! TorBirdy uninstall requested\n"); this._uninstall = true; this.resetUserPrefs(); } }, onOperationCancelled: function(addon) { if (addon.id == TB_ID) { dump("Uninstall requested cancelled. Yayay!\n"); this._uninstall = false; this.setPrefs(); } }, observe: function(subject, topic, data) { return; }, resetUserPrefs: function() { dump("Resetting user preferences to default\n"); // Clear the Thunderbird preferences we changed. for (var each in TorBirdyPrefs) { this.prefs.clearUserPref(each); } // Restore the older proxy preferences that were set prior to TorBirdy's install. dump("Restoring proxy settings\n"); for (var i = 0; i < TorBirdyOldPrefs.length; i++) { var oldPref = TorBirdyOldPrefs[i]; var setValue = kRestoreBranch + oldPref; var type = this.prefs.getPrefType(setValue); if (type === 32) { this.prefs.setCharPref(oldPref, this.prefs.getCharPref(setValue)); } if (type === 64) { this.prefs.setIntPref(oldPref, this.prefs.getIntPref(setValue)); } if (type === 128) { this.prefs.setBoolPref(oldPref, this.prefs.getBoolPref(setValue)); } } // Enable plugins. for(var i = 0; i < this.plugins.length; i++) { this.plugins[i].disabled = false; } // Now clear all TorBirdy preferences. var clearPrefs = Cc["@mozilla.org/preferences-service;1"] .getService(Ci.nsIPrefService).getBranch(kTorBirdyBranch).getChildList("", {}); for (var i = 0; i < clearPrefs.length; i++) { this.prefs.clearUserPref(kTorBirdyBranch + clearPrefs[i]); } }, setPrefs: function() { // If custom values are set for specific preferences, override the defaults with them. // For each preference, get the type and then set the property. for (var i = 0; i < this.customPrefs.length; i++) { var typePref = this.prefs.getPrefType(this.customPrefs[i]); // String. if (typePref === 32) { var value = this.prefs.getCharPref(kPrefBranch + this.customPrefs[i]); } // Int. if (typePref === 64) { var value = this.prefs.getIntPref(kPrefBranch + this.customPrefs[i]); } // Bool. if (typePref === 128) { var value = this.prefs.getBoolPref(kPrefBranch + this.customPrefs[i]); } TorBirdyPrefs[this.customPrefs[i]] = value; } for (var each in TorBirdyPrefs) { if (typeof TorBirdyPrefs[each] === "boolean") { this.prefs.setBoolPref(each, TorBirdyPrefs[each]); } if (typeof TorBirdyPrefs[each] === "number") { this.prefs.setIntPref(each, TorBirdyPrefs[each]); } if (typeof TorBirdyPrefs[each] === "string") { this.prefs.setCharPref(each, TorBirdyPrefs[each]); } } }, setAccountPrefs: function() { if (this.prefs.getBoolPref("extensions.torbirdy.first_run")) { // Save the current proxy settings so that the settings can be restored in case // TorBirdy is uninstalled or disabled. (TorBirdyOldPrefs). // First copy TorBirdyPrefs to TorBirdyOldPrefs. TorBirdyOldPrefs.push.apply(TorBirdyOldPrefs, Object.keys(TorBirdyPrefs)); for (var i = 0; i < TorBirdyOldPrefs.length; i++) { var oldPref = TorBirdyOldPrefs[i]; var type = this.prefs.getPrefType(oldPref); // String. if (type === 32) { if (this.prefs.prefHasUserValue(oldPref)) { var pref = this.prefs.getCharPref(oldPref); this.prefs.setCharPref(kRestoreBranch + oldPref, pref); } } // Int. if (type === 64) { if (this.prefs.prefHasUserValue(oldPref)) { var pref = this.prefs.getIntPref(oldPref); this.prefs.setIntPref(kRestoreBranch + oldPref, pref); } } // Bool. if (type === 128) { if (this.prefs.prefHasUserValue(oldPref)) { var pref = this.prefs.getBoolPref(oldPref); this.prefs.setBoolPref(kRestoreBranch + oldPref, pref); } } } // Clear the existing HTTP and SSL proxies. // We restore these when TorBirdy is uninstalled. this.prefs.setCharPref("network.proxy.http", ""); this.prefs.setIntPref("network.proxy.http_port", 0); this.prefs.setCharPref("network.proxy.ssl", ""); this.prefs.setIntPref("network.proxy.ssl_port", 0); // Disable all plugins. for (var i = 0; i < this.plugins.length; i++) { this.plugins[i].disabled = true; } // For only the first run (after that the user can configure the account if need be): // save drafts for IMAP accounts locally // disable automatic checking of emails and enforce SSL/TLS var accounts = this.acctMgr.accounts; var allAccounts = []; // To maintain compatibility between Gecko 17+ and Gecko < 17, find out // which version we are on. var newGecko = (accounts.queryElementAt) ? true : false; var accountLength = newGecko ? accounts.length : accounts.Count(); for (var i = 0; i < accountLength; i++) { var account = (newGecko) ? accounts.queryElementAt(i, Ci.nsIMsgAccount) : accounts.QueryElementAt(i, Ci.nsIMsgAccount); allAccounts.push(account); } // Save account settings for restoring later. for (var i = 0; i < allAccounts.length; i++) { var identities = allAccounts[i].identities; var account = allAccounts[i].incomingServer; // Get the locations of the Draft folder for all identities and save them. // We only need to do this for IMAP accounts. if (account.type === "imap") { // Again ensure we maintain compatibility between different Gecko versions. var identLength = newGecko ? identities.length : identities.Count(); for (var ident = 0; ident < identLength; ident++) { var identity = (newGecko) ? identities.queryElementAt(ident, Ci.nsIMsgIdentity) : identities.QueryElementAt(ident, Ci.nsIMsgIdentity); var key = identity.key; // We need to restore the following preferences after we are uninstalled/disabled. var restorePrefs = ["draft_folder", "drafts_folder_picker_mode"]; for (var p = 0; p < restorePrefs.length; p++) { var pref = "mail.identity.%id%.".replace("%id%", key); var prefName = pref + restorePrefs[p]; if (this.prefs.prefHasUserValue(prefName)) { var typePref = this.prefs.getPrefType(prefName); if (typePref === 32) { var currentPref = this.prefs.getCharPref(prefName); this.prefs.setCharPref(kRestoreBranch + prefName, currentPref); } TorBirdyOldPrefs.push(prefName); } } // Now apply our setting where we set the Drafts folder to Local Folders. // The user is free to change this as this setting is not enforced. identity.draftFolder = "mailbox://nobody@Local%20Folders/Drafts"; } } var key = account.key; var restorePrefs = ["check_new_mail", "login_at_startup", "check_time", "download_on_biff", "socketType", "port", "authMethod"]; for (var j = 0; j < restorePrefs.length; j++) { var pref = "mail.server.%serverkey%.".replace("%serverkey%", key); var prefName = restorePrefs[j]; var prefToCall = pref + prefName; if (this.prefs.prefHasUserValue(prefToCall)) { var typePref = this.prefs.getPrefType(prefToCall); if (typePref === 64) { var currentPref = this.prefs.getIntPref(prefToCall); this.prefs.setIntPref(kRestoreBranch + prefToCall, currentPref); } if (typePref === 128) { var currentPref = this.prefs.getBoolPref(prefToCall); this.prefs.setBoolPref(kRestoreBranch + prefToCall, currentPref); } TorBirdyOldPrefs.push(prefToCall); } } // Now apply the TorBirdy recommended settings. account.downloadOnBiff = false; account.loginAtStartUp = false; account.doBiff = false; // Depending on the account type, set the ports. if (account.type === "imap") { account.port = 993; } if (account.type === "pop3") { account.port = 995; } if (account.type === "nntp") { account.port = 563; } // SSL. // For nsIMsgIncomingServer, socketType 3 is SSL, as compared to the // manual account configuration wizard (emailwizard.js), where it is 2. account.socketType = 3; // Set the authentication to normal, connection is already encrypted. account.authMethod = 3; } } this.prefs.setBoolPref("extensions.torbirdy.first_run", false); }, } const NSGetFactory = XPCOMUtils.generateNSGetFactory([TorBirdy]); torbirdy-0.1.4/README0000600000175000017500000000033712421743776011534 0ustar uuTorBirdy is an extension that brings safe Tor support to Thunderbird. In theory, it should work with Icedove as well as other Thunderbird forks. Current home page: https://trac.torproject.org/projects/tor/wiki/torbirdy torbirdy-0.1.4/defaults/0000700000175000017500000000000012421743776012456 5ustar uutorbirdy-0.1.4/defaults/preferences/0000700000175000017500000000000012421743776014757 5ustar uutorbirdy-0.1.4/defaults/preferences/prefs.js0000600000175000017500000000106212421743776016435 0ustar uupref("extensions.torbirdy.protected", false); pref("extensions.torbirdy.proxy", 0); pref("extensions.torbirdy.first_run", true); pref("extensions.torbirdy.warn", true); pref("extensions.torbirdy.startup_folder", false); pref("extensions.torbirdy.enigmail.throwkeyid", false); pref("extensions.torbirdy.enigmail.confirmemail", false); pref("extensions.torbirdy.timezone", true); pref("extensions.torbirdy.whonix_run", true); pref("extensions.torbirdy.info_run", false); pref("extensions.torbirdy.emailwizard", false); pref("extensions.torbirdy.fetchall", false); torbirdy-0.1.4/install.rdf0000600000175000017500000000215112500312174012771 0ustar uu castironthunderbirdclub@torproject.org 0.1.4 2 chrome://castironthunderbirdclub/skin/images/tor.png {3550f703-e582-4d05-9a08-453d09bdfdc6} 10.0 31.* TorBirdy This extension configures Thunderbird to make connections over the Tor anonymity network Jacob Appelbaum & Sukhbir Singh tagnaq https://www.torproject.org/ chrome://castironthunderbirdclub/content/preferences.xul torbirdy-0.1.4/chrome/0000700000175000017500000000000012421743776012124 5ustar uutorbirdy-0.1.4/chrome/skin/0000700000175000017500000000000012421743776013070 5ustar uutorbirdy-0.1.4/chrome/skin/contents.rdf0000600000175000017500000000253212421743776015426 0ustar uu
  • chrome://castironthunderbirdclub/skin/castironthunderbirdclub.css
  • chrome://castironthunderbirdclub/skin/castironthunderbirdclub.css
  • chrome://castironthunderbirdclub/skin/castironthunderbirdclub.css
  • torbirdy-0.1.4/chrome/skin/castironthunderbirdclub.css0000600000175000017500000000004212421743776020523 0ustar uu torbirdy-0.1.4/chrome/skin/images/0000700000175000017500000000000012421743776014335 5ustar uutorbirdy-0.1.4/chrome/skin/images/tor.png0000600000175000017500000011762112421743776015661 0ustar uuPNG  IHDR  pHYs.#.#x?vtEXtSoftwareAdobe ImageReadyqe<IDATxڼW}LGëĖ *ؖ440JBTFw96 +ԐIemSϫb4ΛYۻdͼ{f!LJ ܻ w#hƊd JC2Qʆ}UiOQ S\]9+ Ä%mNOC|~?}X$YҌܫ k9rG@vkgF~$)[d~8B6Fdبդ r~8Q#Hv6TO*ͽca>L_W 6AQXVPJ]P7J{^u폇bx79߃[Ծ@`:K~M;Z8+_P-Ƞ+Xh,l}wq՞ujި=zI}uF-pͳ&όJf4U1-2b LBJW'5̙*MgK#W# [yBsyւv젆bP_jύ:Bh>@&7r߅Sľ#z vn߁<5~}^O],(xZ_r路^\4g%+2?q0cfΓ[ .d 24 W>>XW5$ }Xa(R%zS}(r}FDRFY=4!RCk?DRI%a>RLPn?6{׽R60}͹gΜAE@% 蹇[2=/_+ܢ: רd!hd@#|chlԛwT[ԏWfk,?T3u5~1!//^zϥ~QjH,0G1=+|jۢR43C1/e}`kB[C /1Sv2"#UvEvF h @V[cv+.Wh[ O]jLf-c&tn\ W!Re!r@mGlraX'r*5J{}W /4:*e&z?i"GkAiHmqarXdc=a+z_| 8Z+)eC~[\Tꃤ9.<1:EO|\v|)B2 |}jGISJcBs2j&\ 8B YEYC39qb'1HzݏYM.M(WADX`ySr&T*8E&{9?O D+c'6$eI'( Ahf՜c؄>LRRWM jy~8#1nV= 2HJ18;_ppVG7(? s]8`$V+yp% ""^lO"E̪HZ܀얚G r4*?Oh(tX%bJ/EJ*6A YMڲ)L.^hJ ! mUk2O$o# M6Ro;,bxFvV V"_@HS-҂B+.T'WDPT__"Ⱦ\S 7lLYl)bZ*Mf#ZKtP)ǽX0/pv'1``o/PoQax!ִBD(kB$|4'I#Ej-DP QCjTDPhm @@h"bEA~ -Զ ?,63vnw%n2ٽ3ϼ3O'qrgl&Ĥ{DތOqL937GZ"0QN֬Bfcӭ`s1j|>bR" &+/ְ>l٦D2(| zɈ0 Nk$sMn 3?*G8Ԧ^1j :u5Y]G?BQ4yۓ޴YaZ= LB@}WFR"T _,}@+~S 5vDѦY%E,57tT 51B]W3r>ZCMY3 ṃ=l3e&%h/Uޯt4&5FW_n=xj&9lWZT~>bb}-n&'{ 4KRCKsBmJ~“>]fOGYcd0Q=)?5 /I?TF/ hc}B4 Wj+408w "=?ɍi/;DZCyJ h 䰆&l7S=Z0#Qa=i` T.a%6Hc&)v?&ro@%Ŕl%fZvpxBŹ>УСHt֔Rx'!HWhDG#E.7BЩ?e l쓙@,@,e I"64)ձWȖ9#}~eG؟AF̪t0}&J4~9ܵ&2}c]&Hh^H 2梂Jq۩KɗT2[j-FxP?.zj82͈Qkq3Hčxi΃ ܎c7<Ew|uJ\S<^z 0Æ!DBG`xFǁ-#ECCYd@)۶rK@}xp`nf/ qjЮk>zg**T֯*`2奨/ԩ* @)gi@j)%q `VKvvq€]h*v;$WZ`te Ag+7QBml2aNj0%я7!И Y143}={`9n;LPP >YB-ixej/_yH`y> 9c``P.xFXj|OC>KwCch 6ȝ ]% ꐉ8Bs8rb /H! 啞?S6.SއUX5`8kؓ/_\GŰIgp՘ XAlPxeF#CfTtm2Ŕ$oe65~]vbCe8'/93w[D@gxuĂtAOg٭0n,|γ/رj)-#uzḿ)vGlb]hbil /r=fD1Dk5umB^C^VPY^Qbˠ&qAb?oW93Ӂl5|W(݁TAV9$zg'LmV(N$N[4m46S4uԉI&U`L4D@+pu{{wQ^n?/}pI m>bbU2uPƏu.r ?㍚Ttv0-R>/|α81TdڝL0wB! AxfۑJ &Q9]\ok F\.eXU;)f@e2aɈiq0jvV+xh3~'*^ ը ?Kk@=;IGBk{_4xD\e۸dp@Rs"xJu.:]] >3%c6;y2,9i -muVC6+`G02p$7{0foPeh0TqPk`?+K>0QE mOQutYI֧袝(Qݵȷr6BH XNnLQ1+} KK<M~*)(WMkPMA|nY@~v"zvT!.WcGXK+ϼfX$(J`&1"L|~IMDZY쬤bd͒IbHJMg$ M˾WaIY/ (lZG?s ,/uRV>婠J,6Aέ]- .HX-|IH*3OP3_/b HTUP6Qa[v:@`G=sX$ƢQTC@TZQF10\BQ$~~ʰpeM01UZf2d7֬@=Y06Z#h+t3[Hm) ݧM/Ruby }z3S jQp#SU"X:OiD *ezoER,x>H"oeM"ptgԈSQ&H@AT@ Vi33!RI"Qubwa:5Ӂ5K, MòJQ'Hx :GUa1DyPi@FMOz_|.D1%r,2 oꈊר,'YHe :K@xg{EE 괊IqK=]jbu!W&0*DhS_\K;'0jaMD؋71uk`'('$kV>U;q%ORh@aFl2~<[p_ۏ(?$RK3>&+R]DZvS"T܀N$];,E ¼\.\+gqoX8="{I-8*|V>LxC' wj1q֧)ڠw߭c>ߟ uY^36]JM6f6T}ЂgnEv[lXHE v$z*@UtV+{;1רym1&w+t ā(KHbZf(X&lF'LZ5;b o34}љvMou Mh.ӸwI}D,B2\Z 8BN Uz Z OP_`PA ٌϔZ9l hС00 cUGTE@Ic3tUQ :fcopP;0^?535_pcJk&JQ9EzP #RRʼ׽#{93O-Z^SZ,_.uw'-lRp@@Zdl=V=J\DgzYmD/K.-B Y}oh4|.$ J@79x~';900O*˝0V,VAq ViMV ؚ^O= PP7d.l~bS}`oJ{FAI AH TSz)?b]t=IMƐn62t çUMZ>AW^7xߞkT $g+^FA.5N+bov(p2o&Tx0B%u꫔wHDPעk*@( `qE ZWR"Dm1$ړ63 @NPtaE׶q_&O &y%?bAFuTVŨ#LD"җ u1'.?8G]CLy%>_+&b^YR0Q2bGNC0 bm!ߎ}S9PF5 $<7z5H"x(N:V[Pgm_]D+Ÿgf@2/( )]zbN/ˎ8"Mvq6!m C%h`$FQ5!73'k6VĨt9$K|=HmR躷Z F0UV1+QcQӭGm6;?uC9cep"Sgg8fdbwZ3c¬>c;ء4*?܄㑩$7.N08>*|H j#AJ8/ɛhr; peZNR"Wõ5b̘z^T-*>^#1?yKreRۍ~u t`;I\ Y)[E DmxacE_/zߎ՝/{Ҿ[BGNU>WjUDŅf%D;YIwf!H˗/:L}Qj&*AcRA,Qmx ʥFƧcX{K&0\ikEzH2 |x#QߴE;O3oL _69<΁[6SS' nw=1&Os>~f_U;FIIxs3с C즲Js%w4Nzt0w8"TnM_Lb; 0&GfYT_yyu!5^[Y$wmx-kC C?ƂI)ss}4>> >{ |}۠zz5uqGZD7)x#Ãڠgʇg_*ϊuޮlܿUGII@%Vi ЈRھMT4O4n2uΤ!ZK >.Z(AAhyr$1*'piB疮ا] ;fGސc̏bS'=Iܜu6ʗIIA"orlT`b©rA2q MFZ ~%|Y Jh\w1~3"s\1mvN1@T}CцTP֒+gk #:J"d/Fz1A3;FLP R/Br)B $qyٲ-C4]@J] ԠcA'VSp~4(YJ  3t@@G gbVz(Ii2\*^xp|)IrɌ`~w=5/Q"&'PrI<S`Lp U撟a9%F76]"*pG fR,@g.),"Ҳ>2jU?\op5>O77*tOKi,W$ӹt{(TFT T .I ɃxGJrJُ6(L`Π4zR+0nYQm.gq[qpzG?@0ŪeɑgŇw`%&>c׎ `@UFR_ӆvAДD0.x RӃg—վe)ix1;3ib>1h'݆]Qȥ_|WjAV*hwBI4Z#?HRnR@@m윀^P!t t. ΜseRhπAF:2؆1#dގ* fJit|\Xj.Aq>Y^D^;[i.PL)PPƪ(0@5TgeNNOpv T $r$c5S=J,$ 3mm Hp],.u 3Hu\<]\GX5jR&ouf%KV]Z2m~ c|&` f'F>ECIbP6*.PHK5u^1,qJA=Ιʥ'{6NCJ6v-}p2A$%_j#)BocE/?s! . Xn ]Tf,18{bm B!=Zэ7a]ep #CtuC nkUU'5F?7<#U1 J^T&MZ |P˻r&%fLhgEa&f#c[kVd] {bO<:2pvxz 5) Ffi_حssq Dn-Wz3Pqg! =L!a|'?R)E:$~ Y}QDJB&rT@+VyeLI ">AYf pIP_sgnwpB,|oñ,`E[jz"x|&w' ˠQ;CK6=nGq 0} )C=Qg$A4D͕Aq/dr6!}y_&.% XDRGBUa%1ܵb_5%iP+"¥ES_+ ;x UZO.WMi_uvhX%ɴ bA CLRAD'0rQ6<v UVZ}F7-׎(/3A+64b-fVTNj*WQP~Zx'»i3˲pRF7jY >]~zv_%I0PF-͓ҁQY (2H6[1TYu´]Hbj*%v92κψ5ՏSNΓ|$"02i3/wvVձK8h# 6`)Z%5EPi;!.*8y=}=f>S/0x6w빌ޤ`XgF!R ھcO1#]$"% _)]N|N%ǷY+s_Y?nz*($]&_(Z]E||Q]}Ҽʴ KL(Db}_S%^)ؤD4~6;T A縫EhE~[΢gRwҘbhXq q^q$`}\|Uo/A3:/8f L{P ֶTCg?j>WUН.}_CKms:B2b3Zn44nIc]鉅U^NĶn UJ?.s.ZgA$gxif9bA . aQN Ma8Wp*Y`Sj/A ޕGU];JB@A[*$+%Եn@[lk]Z-~JhDi*}aI@-a4 $, |7y3fA@2[޻9VQKX&~l˩/KZPWؚmfE{֚j ~W?e5D5P"5.ǡlfD=3Ty,+>cn?e6ՐĊXHa⏀hVTvKt<i*W5>1k)P'nwʏתm2['23&AAlYfG0%.Ybڌ-i).2{kӘoꙉˏߥ]ZZ_+y Sތ9GOt,1f"oa!FSݪD  e|tAČ";{{8nZb𷭜 (6%gW; pպ<2RτqpLw8on1igN" lSPXEaB nm~̸ _Sa w_nt>16R\Eߛ9͙ԘB_?o ޥkm@gHxijrW0,!yqh+^RL~bR8f)d>cpev) AL^i+!?31J: O,J bo\5/^F#v i]s }$<-$񮤴`)>fn#OO/Hv+LVbo,#e,o&rK`#TU8JWbu{Vwb}JT䈦ɋa-5s™zF5/]\b,^n?4"N+}?8]\q$/J+|6ܤU:na,G݂zV, Ě~`׉c˃eR]XyCsűT ?y}u1$ħBC5}H@i#RP8lĊnY%j}ۮ܎Jeg:((| QoyTI;T/&q 9Xp'4hPjIJ')aYE*re;ƚ_hq4=UemQpG2)݇6?|'(MH%0f't9/}KEͱ|pu[Ns5CcSvRc&lV(BWߵ5xH0H%2\@SD%HK[ Hl]z,ѱjW\JP'GĔ0vM@¹ N6wx\IIY+7|nɋDʺ~G{Ai̋%PT70+G"-LBKކ(sYT}W'<1CAkR{&[/# }/ǵ cZ-[gJʜa@'7cw\͟w<˿{-J~^ˢ`bsI;fב W,E"!'Ű)4m&+ņ:%) T焟)AlTlkj|uxO=qX .n]^e|oE+5Ax6sGO-5[5eZZ;N Kqg?R\0E#χ BǠNpv+ ~LI)uuҍp#O<]X ^#"eg%]Eeܣt'p9!ѵ/ ģC^S s,?`.tAC&QWlXo.}wz멠af.`5"F%D/8,ɾD<*-H`ysp8OcY+&}xqA|Y0]Z۴ g^QcAT ޺(z/[(Nݫ@B~[Bn4${RȾ2&f8 ٩VEuK~7NS>q~!Kh\mC`+'_ҁ<|,7;1HW. Qk xmS牎uO{RtBZ1/f%JnX=YRq]4ۿf`Q, & n5|.L#-dKYY]CQQxƵbjm܋mGч;g̉US0 ^C_`"ppq.O޷,T-ԣFhx5Ucؿj1ińD2gtt7^h=[]{qaY& Ҡ rD( !;kwEScǸog| ,o7Q@D Y@ Z "Crx>Λ[hLn@k[1'5XT,gDP<|3:.ω`#˲rtѵgkz\yF8e@Nm,/ , s6*xa_i%+nj?8Y @!Kxlߤ3!7BT#.>譱 BZ2;^("!3%v~%Be[1_n/uHpz2 3 2ΕgGVpK6F dP LĸSy[2،(횐woOWip v aA&?*Kp?H85uV*+_Z6]teݖe戬}HW{1%ُ:@;fXk9Ku;)h2Ur698(^F( v  ;Rzeo6Qx$J9u7]ؼT}“vRF^yoVĠ-;JJo~5Sw5eQb1:4(~||d(L$ AGрMq+D1w(ѓ5V!qR<N"q H⢀xtuJG$J/1yQ ](r=Y߶:*P$'a9sz~}/1 kcLx/ƶ^mtDJp(ReȢ⬹P%'B]A| n.hRzZ?S2; $4tZ\{4RJ=ǘ 6Z%x&l~%,0 ȏ4 ",TI>I$mfP(xmN$BLCO SƍM9}tؙ1xEeCq#│QÉzWTܵ_Ȅe>!c~Yn^S\݄ q5dqzIEn!`/!@-  %!״ "_4@7v @Dj?E:b/+ӣ YcśԏisˁBP-A(iRu0UqZ&3L .mӬ9Pxix3[E_ef$HF!K7B S?Pvb 'R@H>׺W7>=}chPNԖ̴6q|R._|c9u -2{!d˿YCriqS`0}'%HDEsŨػL .̰UH BZt~vjSM`fg$ٲx k>Ä:^JxabkEc<᳘%zxM!]żP)kj9 9LDiך:#o؊y3+L(@ >~l6BV'3l`AwZMVEj''K8~ 70%rQE]$2R #ԍ p[t7j1Pu 5\p ?_ K Ff?GGѽ8'`B`Ivp3 \x͍ySssāhƁ {7+k]vM-=ҵR)M'궍3[o>Oﳧ"~% S*ʂ衬T/`<nT#{?@ =L޲`}B> A |c#[ 3!Ov ɪo Q = k*r޳{Y/I+0hPN)vO=j'CuͲ;4˪״FZ.frw'K u@Q._C $  `,kzhD')oD0$,veZ1N HRz',VmE-O|7AJ$B$!.BN(k$ >O22qet#|"!ev'Ip UaadZ4L#p"T7b@!t QH" NPKhH'ȆU-QDK6LH^ ~H%P0!aYHά@7nЁن, _ͭP3YcRu~^UfhKTD=fL.\o6'"UaY(°K߱ɖj]-  C2I)a3WlH.  @oCre<vh 7 bKԲO5 76ޖ-o@e"PuUQfKa-V `aa-"n3Z1@`cP@li|xXP0RУs\Br"".񋗥n;IOK>""UbYw-?P?1|}JFD7Ȣ ' =l[*Dّ(* kU-BnoD.u<騵`9ȥTp6уӨDERFh UT_<'| {P$7뷯 9`MyP& Nz>'Tg_{kUzt; H̓Nh+YNB![_4_o5zA;L.A&,xs6NxPu i/qv{hHx4IF$ B7ް1{I⨯X?- {^Q!'^ JK67l=]oyH4-¢i3˼*<$YN 5QfURae*IA"\ mRB5~4 |Emw2&[5_FUf`1P0$*P|b%n)[oKOTFG jIZ=K,)¼7ud-I?:(*ױrR!@ <\} Zd\$LLX)q"!p < m$Mrq.iY@By$B+AI3n )OOP5%15blHQCȂgQ]kA &t Ry9C86,P(`=V($-QjH skF,;^z|IFEtĤml{[r@ZZb/n9QsCÕ57CUwr}TG3."W\"ı{Iz#P4@Xi$UeH't ,BaoEɨQ?8~OtOG9qٹ~t{bӮh uTJ6HB ,ސP=5yD 5r9Hvr\ZHׇgt-)s`+D֎`[`T ˀ D*+IIgͻךe~޷'"sST"| Kj;[~+.@% tl*o&9f7 `pW7B.*hsi>M@YYv]ƿ_O0jh.=SW>2kr^P(I+2Y;e5$q)WV?lXN>1B@6N*{!jmDY?g^|9X DepڦX&QVtB8 FzA|N*P5!G>"ޝhO{ L% AЁT^A@}O+.!23R:" a,xgLO@_fpSPkj)Ԓ5ZVDI,(r%L I.!,kw[KK{t7߾?5I$[#VGp#ڟ^ki? sh I\@b28B28s`0}(J7 P@x' @/_#n\ i)b>BS{%\3{J|`NMGj-_rBk6Nة⦲ -xY m`SEeIH)bY̙j? ~.g]#V=PW:*z7pݴJ9(XG~P'ai|`XpXD xӪDfbEך^pyj~Qa]{ y9\0;f'U}.صP!)wKA*Oc3@9+|ux$",kw+7*W4܍\ߴB =\qa;1\0ܷ *6r"{}^,CG(!wj>Wa`eBϧ*%0ɦڦO WxK@#R7]!އw^üŎ}G"7`wQUi$@Hh!J\;⪬쫫k[p-k'Ե+bDQZ [ғ=sɹgΝLg̝;3{rAa v>lak jo9, Uch\DGXa;$c\]@anRfIL8oq ofxx`q@AJ\C~Ĵg"mE3dp`g=T?42~t~K3e ^=yZXҒF}U#gmyyp\(R|B Niz6q"?^΀[{h2~є֋Hf:Ӻx!RKZG.ZDlhS YjrQs٘&lE"ZXYMoټ>x{; 6qv\D仧ut D$ZDC6~lI/\ \u}ٯM7fB|yC&y9Ta(pj޼~aZ65Hv&=y/k蹄dm5WcF?XI SW Gt#U\U;#B03ILQ=U՗. 1P4E$'N E@qp%7KlWwk(N"r]#]y;;;~-$K1w *dUb.3GC 1Vqnk\ {W~y d冈MgHR`_7r Q/rF۱ D:^uNР4}Ε9CϏ,;%Hjӯ(u?|`-ГB|XG(u>V\(g`N٘Yb9*Œݒ P7ل PL _p9ѷ[֙6,zS,<(cQ>xB  0Xdh@l8XBZ`*CO`+H|H7x2e|*t2cy))f\ѹ*5W }$ua !"@1Gf1 D[~;HFCԌtXFH8YI_,M$ER3_P/'瀀)59[e 66S.bmj"Pu&r84\d`=ћfP D;~\e1TZ&i z ZMT,+ӱ)C题lԓm9ߟ;n ԦG(?|H*Dh jB$PG;. fj\)| n M՟| )xP>.ћֲ ЌL-¯$XE7qN_78lb"Ǥނ;" Hҽhu޴%vG0drcb ,Bý0I@o?JCR: b7U :=~e8e EV֛(>r7_ `uG,\MOz{+2:\ !V􎪌 T`"UL^ /E0 A ¢9UEp;>@sO  )O(pUJ\؈arbuSvk6mv `a3CPXE fqA:D]dVd7|brdi(bcEYetDՈr|UT .^=YIa?져Ac& E̪RMqƅ EMPAG x@00WkЋ"-@5(4UMa|DtU ¼")?^јG$Vِ((MNf#؅0CpG|.Zs`_f6Qo XhǠͼ(^s8cc<ŠU`0:)A]:)ȝ $4V&b Ge5vhFtER2bˏWjA*M8K%YȕgpM*#"WnouD:Z6㵂L\Y 3 ]cMB"AwiXdދJXց#&Zۈu\>&[ 8 pq| d`f 0>X\B&MMGvS?O8a)*)k ):? 6 VUUn\G9bcc8p+詗]~3Z$]Zda:&~sHGJ? 1aH"1itOPm&ER;᩵h0ԣwRFƑ+sW<[{o]6E;[O4nLiGu|~[aX Wvr]y 7YxO 1\ W1?-͗ bX.N3vQ,ڰ2?k2DQmэ WiwTjgc2l/@(Ƨ[:~[ܑL@h,dDЀaÚfFahSE_>uC4mŦM[hy }'H>{~P*{ q ?mYh<6+Kk6y'[=9X~W UbgU%Ŋ?Wr}OP2ԛ.xsʙNozQ6a& 7Rb<r~V[PŊWk/pc7M+ @ TCW5JM.<3[P1=Z|*, j5jRނX7ޗopsUM C@LD{A勑ѾS z?K:/%c˫J qAwH 0E{lS05.Hg%!y~Nl ɷ_6Ԫ qFI1$xw>U!d,Z-E#Pg_ݐ@O^^@R1Ջ.EXb Cؚh3cc"HzW _flA28蓌0z^H߮|H;PIvSvhž9c@ y,+SD0cUV.PܼCU`ŷh}7I'w|dW䴑ǝ%|;)=)cnc<7d["Qչ%iQΔ)4_bU ƶjl<8HGv/c '`@rs,_'_a3cywrzĎ+u)G`= wA+ dW ;Yܯw7 TpNг֛&Qa,?:O;VY~yG)2pf gYś^ #[#1/oY6HqUn"]I_1=[=;7qc诎c_**c,غy b%s/CwC__ѐƛ+@BAn٪;=FQ`c+T9{Du";Mts`db"SHiĖ a#o4XT7н{/W{ǯ~3hDIS:]<^Sza;4f-A5°-[l^wɽ+|Qc Dt9܏\vR#-WlՍќc/B5>{g,tC\T噕ӺJ ò#a4عճ3sõ w롻˲]˪,(h&.sKUAh77`F|aq$A8ǜ3Gq& he"x[t)y^i7lϱBu|]z}Qߥ2GǟrH)gH "kt:;a@"<مVgӎO̮0Ο Onu0j]H,^d1P g&U 8G*,s XҔw1qIenL* 0㑻.ś^ ;Q&_+H||Ap>Ν0#:ceчPAߛiF <қi{ytWЇ f~g;OvӀaRii%ĵ7房rzꝇi/p4+_6O1dƤG&;4qy@Ƽa`O`+Ol?PFp X+i\|=e#\9d {g \tMTuddEr8=\Fn7Jty8/UqN\`.&@R;TgޮHe9yhaᇧ 2P#M$/" ]X>VD,a^^N~ `@.:yâ0 79!܄DjfMaf>RYľKx29Mez\U'k#P?~' hG_Wͥ3ޣMgݺd<@EN =F*89hcl"O\AwOR9HזA,"`g~LUP0_#X$QW"(CQ2Tm@NT u̱&` SCRb{B_xp87~x l˲3~gl60AXW.>/а*X"^WUg0`8?F 9}+?^n2 š TQq0H1Xq1 `qnlbl&8\( (.x""16ZGut~%zgXwQ# t1%D衆TnAEJMD/x˧K*3Ln<`DQ?" NL!~eAp~ }BɺhFsv9Q}h؈s䴋|ƌ0` y v3Ө #`3x]:a)v.Ʀ2 -HX11G$01&e T^ؕ;R`[`: H2xvyRdDZBq_DPdj\92XTe$iIeO=q((ӽX]gfV|2wD8ߠi;M 5iCFE k8`C`@ъae-1B461R 7%A*GxDe 0P PL|5ƼZk4KO$ԁFRX4M{qUOu51^y N.m?L\5.h׍s呔] F0 !aE T-h 3m5._D0TQ򻲜.r rhDsD7QWK<>.:ѐQ@ x@ˀ6#S_a{Jv=97 V47/cFfФj L:X71t$L8G6W~%zЙv6~^IܚE͓jc[j@f,`wХn6iS0prvU,3CifjBVYnq館/[`(B?Qi!ǿSm=`5oʭ?fpby:Mt5b VY8!@m7}j &`vL6?9@[_H }{i1Kc3gH¹5&C >nngAu6 R] yΪO<"dA ^ewD9Kwa4`SbJ iOf7%mYzrI&V" 5]%"S#YXoAo2תK[pq> >o'ǘ!ҍ[7цP@Z6ۣ6E)ٟꝕ@O 0]%:z{t/JxXCeʯg5rr/"u(S(ks2P,D{0d)&{^F1iMu ,nqvVTbӇk^PTZ!%_V1u ?*2. dbfBՉ0Aᛃ^i&x"vۏG8m Q]R\@EVvCmD| ѓ(kؙ0_-InGY|m!Ä1 )0i,hg0P-P"s}¨!N54l鑉(WQ+vB?(C/?]>ӣsjZyюnB3b۹F:Sdcڃ0pի7iDZ\ IɓV"sMǂL&ȓ  ]'.S=$g!.x鹠k2oIȁB 0b9$,Tndzu҅Y^0jxʘ8`a70z,eu1ֱ`:^?fr˞^Z,l[7ׁ$9-O}uEb\Bw50ݤ։q9"_x]E9Oɴ3rItwyyɾ\@;Xć,*{˖_1<aK9  hr!}㌇@gr|/>Vb┺Žh#F֗x7dPQ@Pl.8O?a\0 De: C T`tA۵X =ܪ=7hOeD- Hyrh+CN )9F' ^UN]Aesuv{3@IfZ4xHuEgN h0˔,j'I yHB ,'yU_7Ǘ[V,l9\zJ _L8/7 @J0]]K>2&Xw8+z/m|& \tX[ٯʦdr} wҙMHdPzsWI| )rT}MQy* 42MM#AC΋W/(Ijɝ@44@<A`hN:e͜"jx>)\&9`B#T*\jU vr|o]X!T(Xlܶwb`a٥5hH=Pp^t &OdTA3{"Mxƺ>JD@bwծc4Nk>Bb cGb o1^55&z=?Sat Ҷ͒^Fa\H p_t8茁JvcƊ{e4fgHBw*X;O5\9lŸiVD/Vm.][J D0@@~t2uJB;me~E(n' 1=ae aW 8Ÿw s0 $\f:] 1c{_`!iJrptтl$?tQ?\|d\eNPo6ъޞ" \6En MvcǸk26m_s\nj氷qWq|[.CTy73KdqY`AW-iqMzh>S+-\n8YK)`A96ƥzqEdˮNH$TmDSF܍ 0C]=|#5 .~?nansp_w 0۬B :wԐ@h&@L#n!Il;qeo½@Go$m X BP6XO,hq+1C1XF ȋ&,\NB%V+5ZD\n6Ylãeepfe;w_d\U%Q,MFzA*r "%"L|AjOB\;X U@6USNupsq9;o:EXhl\/aX9Bt)WĿ[;yd5C T bH_c]DpɠHֵD荁dm,= \`'۞P$3ۨ/.+^q<'_,,) ̣[هԐ34,2:Ue?,ADxPPWh*E,RB D, D>P$1_Jj-Y,ަ}}|WcK{c:v3Ub)(l2x`͈=c&bOa(H2V PRgمLzskQqg1,Ԭ|U>M֑etw$q~<̭ n7)|@ ` JKr3:] @Qw% 2/S|<ԇ ]Wi- vvƠh|ޑx cSNFtB=Krm7DǷhwuz1(@huiO]r qMUqaf[j/ M1Y` pgz)״ǟm5 [ 4MtaDF wCm, N). c;_7ͣwZS}0ç6iڞ6`|=&rq`Ҩ@ÌWPDHiGrCɍg0ik0(p.W5c5c/}3 [@?Pmg3gC]iUIN΂pPU:ITyΜX@ `!Bp|4b&Rښ$vB I}SwT$&*VPfUߏHv fy2k0=GN.0̦:9sVwvN;(B/\UQe8uuժ2xs3(@Ysʔs"ߍ݄pc9;a*M>Y^!n'  4@ݑFPlI(KǞs$M5!V8êֶS!f,:giA9/ &?ƫоL77 ,yEjTCԓ+^f,Zx/:ν`3 V<``4kYېcR7.XܔFX}9ݥ8_qsQ_ݹh=}e|S3n"@p ^ɓ@4$TB2WQNԾ^W.ߢsjKhwM<{]6Lac+whl4 RZޚ1[ra*>Mn&S+3khM x/gjŔiL/8S9.s29=֮'aJ]Wr9$07Yq:#rzWkuDC` 8@xHW(by&g]]zD{`08`vݦ]uo_YB~LD)6"tE#t4ց5쥥;>/܋MpG `.ڑ}ɟA5)Z55ksŊ_Es9I p}Iկ-զW.ϡBzWz0 䞖,sI¨Vc؁fzlfjt -*prTDbr!\"G~O{"q!ԝ kMH RWٲ\edmц=?Ysa r:=aM( &ySr-b|ސ]!3DĄc.`ov7z"\:VrO6=Uʮb7tvMܮG'&˽+t&k2Ȅ*T;АԤ-uZ\GU"q-/4Y%,*ōw%m;hŀְb{>)?B=~WN ަ¨ĩ@aڨ},Gʷm>beh޻%IrX7[]Lq eLvvgh3됺y@<$B,b˸k WZIY^~Ђ 2@dFV`J4 .6o_QHfv;nZgzn(SoX⸱jIL:RDFUDXҴ@ Br :;}3tH !ʁnwFA㒨W,V~O{=?(m4Hg%}@{8q%Ba5^q湘]dF BrѸvfOMc|)Z,aTY5nD5 ~ \nՒRkNgODsvnL"nD1Еjw)#A2(cu xȕxMhL`\$$jZRR| aT>> Utǿ*nG:n$jj^:O:7-wfh1YG6 &9깵^uR+[5ѐi d IwSM-(GT:ՐCN,ZyQ wƱڢp)|2v>=_ws+Aư֘vOs֕QT0K^y 9[NHBenv]ٺAi1o_ІkOiCgMK,b70ԼZ!}o j  ./nۛWb yԐlU %KR 6Ou 51kWݻ *_H0=iYY@Cn+gZ;78DX|}Xփ.]#7o@tptB ϰ)5"۟Tx7}K$~վֵsLz8]^j+rW 0`Nz:U `'?ǻsN&qՍU I7,4:~im-4hւ2ːa OHǮø 2{hɝˮ~LD&:i|/^6M1]Φaϲ4qYD)$ 0.y74=Fd!Ez݁ ,G!=`7::dH+*ث}=&22:!glN|˩P}1Å-?`4Tfԉ/%_a!iZ"_fefcٕf QCMyEOd&PC hfٗ`2zdr7,zQqM6YK+PT"sl3l371V n1Ó]pN=(]JL1G}V.trNʞmarsf%`H| r~GkwTpv :Lȯ1[A(Vj `-O:C ׏G[ !)m&:Q`ʌTicӃ{Ț\ =ta8|K'?+sR l,IݹsCbڲw#Z0vcC!dOM! ]ZO84g< "5%'std tJ&}_G=SRv%v,ZV$F3;l۴͟YE sp)b?y`FW"XUP+iWhO6 跀8TV^?%g~"m߾^|]ˡ\Tn۶xڰq{CUUah[_KhON H@'v@hu!WZ'j lߪ+qnS[Oi2a8#UCh75@Qw^}C2G1%Q-22Nψ.=UV(k111+%2Sg6>Sqm}P@jE3hrvy;/Yw/Qöef$uת/cU6btkiO4k%%Ǧlն/H mU[&> VK4ǷJ! `xu68eӋ?ݙN^efTSdLwwa^yLw8P9[wl+ܘm{{OHXadwMlD6vIuvɏuqAp1F7ЮزomW\Tݛʶ`PF> x$3[jV`sj΁ 0M6ݤb&,jE#~rnZ6 C}a׵J`~Y-ߤ7+ a8=uUaMm< (TY r FP]h>4K[P L.9ʒj 6P܄sId4 +1LQ}V Eebw*_nanJ8IENDB`torbirdy-0.1.4/chrome/skin/images/jondo-16.png0000600000175000017500000000105512421743776016403 0ustar uuPNG  IHDRasRGBbKGD pHYs  IDAT8˕KTQ:3h90A`%A-6F;WD"nZ]J 3L|}9yy.x $UIJzR3g/mG@p!;'E8ŎJ.mD زxtI@ pY3u"+ `T1nG*M2{;ʹz)yS ʃy1e|K3-掾Wɭ f=a6Gp0|AB@:3Tj pj!U vUT WȝafpA9mq{sef3859";O^J}B |zp6Urs;p>ؚ$67$I^cJUckѫM ݔGIENDB`torbirdy-0.1.4/chrome/skin/images/whonix-16.png0000600000175000017500000000162012421743776016604 0ustar uuPNG  IHDRabKGD pHYsHHFk> vpAg\ƭpIDAT8ˍkAofclKg(%iu{̲zq3:\e'.]飌yރh1=kXpopZDo< KcP.U<*jMI029O߳9$&v0[`"QLR2mMH6P VqH=BJz/vꡓ0P2EBy cߦAWū|TwL'w$톖$aq^߽_'Yϩ >W1B++"Vx4Zb`܂vN+X7tHhˇH?ZbrnQ.SsW[bbX!^4|YHq|%tEXtdate:create2013-01-29T20:14:38-05:00H r%tEXtdate:modify2013-01-29T20:14:38-05:00tEXtjpeg:colorspace2,uU tEXtjpeg:sampling-factor2x2,1x1,1x1IIENDB`torbirdy-0.1.4/chrome/skin/images/tor-16.png0000600000175000017500000000154512421743776016102 0ustar uuPNG  IHDRasRGBbKGD pHYs  tIME%jIDAT8˅]LwobKZâvUQ@b8c gY ^S71d7x%S#įDGPJD 8hKmm)bI<90ydRPڤe5MA9^~Ϧloeb1Ø_i\ǔgWeK 甚DŜB蒗?o^#{XKAil߉i%yoHǶcm:j*䦓$~()>N]"eNO"KzAM\vy%((1ЈW.痩 _vкκZ\(m~!9L(sK>~Y![ǘ]ACCnw?n[Ŏ]린<e%xLHD<ᡑGѨK;)ˋl(Y-a±ᐊ&"mJUKEQQy'u?x${HRl-((Y$<f])q?&H'FT'_]N?v^J}tA$ vc:j}LTRk.KZB{tύ*ؔ+& CE|IENDB`torbirdy-0.1.4/chrome/content/0000700000175000017500000000000012500312174013554 5ustar uutorbirdy-0.1.4/chrome/content/firstruninfo.xul0000600000175000017500000000173612421743776017071 0ustar uu torbirdy-0.1.4/chrome/content/firstruninfo.js0000600000175000017500000000110612421743776016664 0ustar uuif (!org) var org = {}; if (!org.torbirdy) org.torbirdy = {}; if (!org.torbirdy.firstrun) org.torbirdy.firstrun = new function() { var pub = {}; pub.onLoad = function() { var strings = document.getElementById("torbirdy-strings-firstrun"); var description = document.getElementById("torbirdy-firstrun-info"); description.textContent = strings.getString("torbirdy.firstrun"); var torbirdyWebsite = strings.getString("torbirdy.website"); var website = document.getElementById("torbirdy-website"); website.value = torbirdyWebsite; }; return pub; }; torbirdy-0.1.4/chrome/content/preferences.xul0000600000175000017500000001514612421743776016642 0ustar uu torbirdy-0.1.4/chrome/content/accountpref.xul0000600000175000017500000000326512421743776016651 0ustar uu torbirdy-0.1.4/chrome/content/overlay.xul0000600000175000017500000000375312421743776016023 0ustar uu