diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org')
150 files changed, 14871 insertions, 0 deletions
diff --git a/data/extensions/https-everywhere@eff.org/Changelog b/data/extensions/https-everywhere@eff.org/Changelog new file mode 100644 index 0000000..c5f270b --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/Changelog @@ -0,0 +1,1426 @@ +3.5.1 (2014-04-25) + * Revert https://github.com/EFForg/https-everywhere/pull/134 due to YouTube + breakage. + * Re-enable ability to see all rulesets in enable/disable dialog. + * Added more Debian coverage. + * Fixes to Doubleclick, Guardian, Heroku, Home Depot, HypeMachine, IMDB, + Justin.tv, Kikatek, Mozilla, MyFitnessPal, Pinterest, XKCD, Reuters, + Technet, Tumblr, Wordpress, Yandex, Youtube, Flickr. + * Fix Australis icon positioning: + https://github.com/EFForg/https-everywhere/pull/216 + +chrome-2014.4.25 + * Ruleset fixes (same as 3.5.1) + +chrome-2014.4.16 + * Make Chrome build script compatible with Chrome release scripts. + * Fix disappearing icon: https://github.com/EFForg/https-everywhere/pull/220 + * Fix XKCD images + +chrome-2014.4.14.1 + * Revert back to chrome-2014.1.3 because of bug in Chrome release script. + +chrome-2014.4.14 + * Add SV localization + * Add persistent user-generated rules, thanks to Vijay P.: + https://github.com/EFForg/https-everywhere/pull/60 + * Use onBeforeRedirect for redirect loop detection: + https://github.com/EFForg/https-everywhere/pull/199 + * Remove unneeded onBeforeSendHeaders listener: + https://github.com/EFForg/https-everywhere/pull/172 + * Fix host-only cookie bug: + https://github.com/EFForg/https-everywhere/pull/166 + * Split incognito mode: + https://github.com/EFForg/https-everywhere/pull/165 + * Cleanup pageAction icon code: + https://github.com/EFForg/https-everywhere/pull/173 + * Add and modify some rulesets (same as 3.5) + +3.5 (2014-04-14) + * Merge all non-ruleset changes from 4.0development.16 + * Merge all new/modified rulesets from 4.0development.16 that are + in the Alexa Top 1000 using utils/alexa-ruleset-checker.py. For a full list, + see utils/alexa-logs/07042014.log. + +4.0development.16 (2014-04-14) + * Restore code that loads custom rule files: + https://github.com/EFForg/https-everywhere/pull/156 + * Use loadContext interface to get windows associated with requests + * Reduce annoying logging messages + * Report cert warning pages to SSL Observatory + * Remove SSL Observatory observers when disabled + * Don't set LOAD_REPLACE flag: + https://github.com/EFForg/https-everywhere/pull/134 + * Add script to merge rulesets in Alexa Top 1M, thanks to Claudio MOretti: + https://github.com/EFForg/https-everywhere/pull/149 + * 8 new rules + * 59 modified rules + +4.0development.15 (2014-02-05) + * Replace the single XML ruleset library with an sqlite database of rulesets + that are loaded on demand + - reduces startup time by a factor of 10-20: + https://trac.torproject.org/projects/tor/ticket/10174 + - reduces RAM usage https://trac.torproject.org/projects/tor/ticket/4804 + - Is scalable: https://trac.torproject.org/projects/tor/ticket/6118 + Further analysis in this thread: + https://lists.eff.org/pipermail/https-everywhere/2014-January/001919.html + * Implement a cleanup case to recover from some Observatory UI code bugs that + would leave the Observatory off incorrectly. + https://trac.torproject.org/projects/tor/ticket/10728 + * Fix observatory - private browsing mode interaction + https://trac.torproject.org/projects/tor/ticket/10208 + * Ship 848 new rulesets + * Update cert whitelist + +3.5android.0 (2014-01-31) + * First Firefox for Android release! :D + * Major UI changes for mobile compatibility + * Android channel update URL set to + https://www.eff.org/files/https-everywhere-android-update-2048.rdf + * Updated rulesets: Freenode, Imgur + +3.4.5 (2014-01-03) + * Updated license + * Updated README.md + * Updated contributors list + * Fix a performance bug when re-enabling HTTPS-Everywhere from its menu + * Observatory cert whitelist update + * Updated rules: Atlassian, Brightcove, MIT, Pidgin, Microsoft, Whonix, + Skanetrafiken, Stack-Exchange, Stack-Exchange-mixedcontent + +chrome-2014.1.3 + * Various ruleset fixes + * Various performance improvements, thanks to Nick Semenkovich and Jacob + Hoffman-Andrews! + * Add LRU caching for rules + * Refactor out unused code + * Reload page when rule is disabled + * Upgrade URI.js + * Add fi translation + +3.4.4tbb (2013-12-06) + * Pseudorelease, just for Tor Browser Bundle usage + * Tiny ruleset tweaks (XKCD is back)! + * Create an about:config setting that overrules mixedcontent ruleset disablement + +3.4.3 (2013-12-03) + * Fixes: Cloudfront / Amazon MP3 player, Cornell/Arxiv, FlickR, + AmazonAWS/spiegel.tv + * Disable broken: Barns and Noble, Behance, Boards.ie, Elsevier, Kohls, + OpenDNS, Spin.de, Svenskakyrkan + * Deprecate the ContentPolicy API, fixing a crash bug + lurking since Firefox 20: + https://bugzilla.mozilla.org/show_bug.cgi?id=939180 + * Fix really silly Observatory UI bug that would leave the Observatory off + for non-Tor users after they turned it on + * Update Observatory blacklist + * Bump maxVersion from Firefox 25 to 28. + +4.0development.14 (2013-11-21) + * Deprecate the ContentPolicy API, fixing a crash bug + lurking since Firefox 20: + https://bugzilla.mozilla.org/show_bug.cgi?id=939180 + * Fix really silly Observatory UI bug that would leave the Observatory off + for non-Tor users after they turned it on + * Ship 438 new rulesets + * Update Observatory blacklist + +4.0development.13 (2013-10-04) + * HTTPS Everywhere builds are now deterministic! + * Numerous new and updated rules + +3.4.2 (2013-10-04) + * HTTPS Everywhere builds are now deterministic! + * Global memory leak bug fixes + * Updated rules: Craigslist, Apple.com, Microsoft, CloudFront, UKLocalGov, + Bing, Cengage + * New rules from dev: IPTorrents.com, TvTorrents + +4.0development.12 (2013-09-12) + * Fix clients1.google.com OSCP meltdown + https://trac.torproject.org/projects/tor/ticket/9713 + * Updated rules: ConnMan, Viddler.com, ISC, GNOME, Dozuki, Thingiverse, Box, + ComputerWorld, Makerbot, McClatchy Interactive.com, Mozilla, Ohio State + University, printrbot, Thingiverse, Tradedoubler, XiTi.com, Flameeyes, Open + Clipart Library, Musopen, CERN, FilZilla, Google Services, Linux Foundation, + Debian, Python.org, Ardour, Netmarble, Drexel University, Guifi.net, + net-security.org, University of California, WordPress blogs, Perl.org + * New rules: Akira.org, AntiPolygraph.org, Banu.com, break.com, Click and + Pledge.com, DataCoup.com, linux-sunxi.org, Lockbox.com, PSC.edu, University + of Greifswald, University of Rostock, WIMM.com, ZeusClicks.com, + gayorrents.net, Addison.com.hk, Auto Ad Manager.com, Blutmagie.de, + Brixwork.com, HDtracks.com, hostname.sk, iPXE.org, Linn Records.com, + Navigant Research.com, OpenLDAP.org, Quotes and Sayings.com, Solid-Run.com, + TU-Dresden.de, Tux.Org, Ultrasurf.us, Zamzar.com, chaox.net, digilinux.ru, + iNaturalist.org, IUCNredlist.org, jensge.org, Libre Graphics World.org, + NAB.org, PengPod.com, pythonhosted.org, randombit.net, factorable.net, + JoeyH.name, Acunetix.com, Alex Cabal.com, Altera.com, Commotionwireless.net, + CounterMail.com, dotplex.de, Dyne.org, finalrewind.net, Keelog.com, + Mailinator.com, My Shadow.com, OpenMailBox.org, PwdHash.com, Silent + Sender.com, Standard Ebooks.com, Tarasic.com.tw, Barracuda.com + +4.0development.11 (2013-08-30) + * Notify users who have been accidentally updated from stable to dev + https://trac.torproject.org/projects/tor/ticket/9600 + * Added and updated numerous rules, including Craigslist + * Fixes toolbar button size + https://trac.torproject.org/projects/tor/ticket/9511 + * Declare loop variables with var to avoid global memory leaks + * Updated localizations + +3.4.1 + * Fix typo resulting in variable leak in get_prefs(), thanks to Jérémy + Bobbio + +3.4 + * Do not upgrade stable users to the development branch! + * The previous release moved extension code from the development branch into + the stable branch, and changed many stable rules + +chrome-2013.8.17 + * Urgent bugfix release for + https://trac.torproject.org/projects/tor/ticket/9507 + - release from the stable / 3.0 branch, not master + - don't ship the development ruleset library, it's not ready for prime + time yet + - avoid performance hits from repeatedly re-testing rulesets + - other possible weirdness + +chrome-2013-8.16 + * Includes all fixes from 3.3, 3.3.1, and 4.0development.10 + * This will be the first Chromium release where the bulk of the rules that + are broken because of mixed content will be disabled by default + +4.0development.10 + * Numerous rules added, modified, and deleted + * Added utils/find_rules.py, python script by Osama Khalid to apply HTTPS + Everywhere rules to URLs + * Updated readme to include more dependencies + +3.3.2 + * We merged in a bunch of non-ruleset changes from 4.0development.9: + https://trac.torproject.org/projects/tor/ticket/9480 + (Notable changes from this merge include a rewriting of fetch-source.js, + improvements to the CSS such that the icon changes color when disabled + and shows the number of applied rules when active, fixing bugs in + HTTPSRules.js and ApplicableList.js that led to undefined functions, + and rewriting makexpi.sh to accept a --fast flag.) + * The tickets described below were fixed by the merge from 4.0development.9: + https://trac.torproject.org/projects/tor/ticket/8998 + https://trac.torproject.org/projects/tor/ticket/9374 + * Add a script find_rules.py by Osama Khalid to utils/. It applies HTTPS + Everywhere rules to URLs. + * Add merge-rulesets.py from master to utils/. + * Removed default parameters for a js function that caused breakage + in older versions of FF. + * Changed mixed content blocking in FF to be based on the user's active + content blocking preferences rather than if the FF version is >=23.0. + * [Zurcher_Katonalbank] Add rule + * [LegitScript] www now supports SSL + * [DebianOwnCA] Debian self-signed cert rules + * [Debian] Update rule for non-self-signed domains + * [UKLocalGov] Add havering.gov.uk + * [aeriagames] Use CDN with valid cert + * [spu.ac.th] Disable (https site not found) + * Added rules from mishari for Loxinfo, SPU, Silkspan, Settrade, + Powerbuy, opengarden.com, Naiin, MyHappyOffice, Mirakar, + MarketingOops, Makewebeasy, m2fjob, LandandHouse, Jaymart, + Etravelway, Craigslist, Blognone, TrueCorp, dealfish, 3bbwifi, + thepiratebay, and priceza. + * [Ubuntu] Add rule for ubuntuforums.org + * [EuroBillTracker.xml] Add EuroBillTracker rule + * [wikidot] Exclusion for iframes + * [StockCharts] Add reason for disabling + * [9gag] Disable rule for breaking AJAX. + * [MayFirstPeopleLink] Updated rule + * [Derpiboo.ru] Add rule + * [Fedora Project] Split start + * [Lurkmore.to] Add rule + * [2ch.so] Add rule + * [FSF] Added the status and u subdomains + * [Reddit] Exclude blog + * [Desk.com] Fix + * [Cheezburger] Fix + * Updated debian dependencies in readme + * [Adtech.de] Add exclusion + +3.3.1 + * [Wikimedia] removed mixedcontent + +4.0development.9 + * Includes all fixes from 3.3 + +3.3 + * This major release fixed the following mixed content blocker (MCB) + related bugs in time for Firefox 23: + https://trac.torproject.org/projects/tor/ticket/9196 + https://trac.torproject.org/projects/tor/ticket/8774 + https://trac.torproject.org/projects/tor/ticket/8776 + * In effect, this update disables rulesets that cause mixed content errors + by default, and adds platform="mixedcontent" to 950 new rules. This is + necessary to prevent a massive amount of websites from breaking by default + for our users when Firefox 23 comes out. + * [Internet Archive] Moved to stable + * [Linaro] Default off per webmaster request + * [Applicom] Default off per webmaster request + +chrome-2013.7.10 + * In Chrome version, fixed css, "What is this?" link in popup, and added + favicons to popup (thanks to Jay Weisskopf) + * Includes all fixes from 3.2.4 + +3.2.4 (2013-07-10) + * [Yandex] remove maps from exclusions + * [Amazon Web Services] Add exclusion + https://trac.torproject.org/projects/tor/ticket/8907 + * [Hotmail / Live] Add exclusion + https://trac.torproject.org/projects/tor/ticket/9026 + * [Mozilla] Point labs to mozillalabs.org + https://mail1.eff.org/pipermail/https-everywhere-rules/2013-July/001636.html + * [Yandex] Exclude ll + * [Brightcove] Add exclusion + https://mail1.eff.org/pipermail/https-everywhere-rules/2013-May/001587.html + * [NYTimes] Add exclusion, disabled + * [News Corporation] Exclude 2013 images + https://trac.torproject.org/projects/tor/ticket/9040 + * [imgbox] Fix typo + https://trac.torproject.org/projects/tor/ticket/8690 + +3.2.3 (2013-06-28) + * https://trac.torproject.org/projects/tor/query?group=status&milestone=HTTPS-E+3.2.3 + +chrome-2012.6.4 + * The "factors of 12" chromium beta + * Various ruleset fixes: + https://eff.org/r.5bSj + https://trac.torproject.org/projects/tor/ticket/8584 + https://trac.torproject.org/projects/tor/ticket/8571 + * Disable Myspace by default due to mixed content + +4.0development.8 (2013-06-04) + * Fix broken ruleset dialog in Firefox 22+ + https://trac.torproject.org/projects/tor/ticket/8997 + * The toolbar button chnages to indicate active rulesets: + https://trac.torproject.org/projects/tor/ticket/4886 + * Ship 31 new rulesets + * New translations: Japanese and Sinhala + * Updated translations: Hungarian, Lithuanian, Slovenian + * Ruleset fixes from 3.2.2: + https://eff.org/r.5bSj + * Observatory cert whitelist update + +3.2.2 (2013-05-22) + * Quick turn-around release to unbreak support.apple.com + * Fixes for a number of other ruleset bugs: + https://eff.org/r.5bSj + * Incremental observatory cert whitelist update + +3.2.1 (2013-05-17) + * Implement XHR outstanding request limits to work around TCP connection + exhaustion if the SSL Observatory server is slow or down: + https://trac.torproject.org/projects/tor/ticket/8670 + https://bugzilla.mozilla.org/show_bug.cgi?id=856748 + * Overdue update to the Observatory cert whitelist + * Other known ruleset fixes: EA, Yandex, Apple + https://trac.torproject.org/projects/tor/ticket/8584 + https://trac.torproject.org/projects/tor/ticket/8571 + +4.0development.7 (2013-05-17) + * Implement XHR outstanding request limits to work around TCP connection + exhaustion if the SSL Observatory server is slow or down: + https://trac.torproject.org/projects/tor/ticket/8670 + https://bugzilla.mozilla.org/show_bug.cgi?id=856748 + * Add a note hinting users how to toggle rulesets (thanks to Pavel Kazakov) + https://trac.torproject.org/projects/tor/ticket/4967 + * Ship all fixes from 3.2: + https://eff.org/r.b9Qc + * Other known ruleset fixes: EA, Yandex + https://trac.torproject.org/projects/tor/ticket/8571 + * Ship 1308 new rulesets! + * Numerous new and updated translations + +chrome-2012.4.30 + * The "May day somewhere" chromium beta + * Ship all ruleset bugfixes from the Firefox 3.2 release: + https://eff.org/r.b9Qc + * Flag/disable mixed content rulesets: Apple Support, BBC, Dell support, + FBI, Wordpress, Zend + https://eff.org/r.1bQt + * Disable VistaX64 + https://trac.torproject.org/projects/tor/ticket/8801 + +3.2 (2013-04-25) + * Related trac bugs for this release: + https://eff.org/r.b9Qc + * New: MoinMoin + * Fixes: Adobe, Bahn.de, Cloudfront, Dell, Droplr, FBI, Google Maps, + Joomla, Juno Download, Lenovo, New York Times, SEC, Soundcloud, + Tweakers.net, Univ Strasbourg, Vkontakte, Zend + * Disable broken: AirAsia, Netvibes, Newgrounds, Pirate Bay, Russia Today, SVT, + Wolfram Alpha + * Maybe fixed: Quantcast/Tumblr: + https://trac.torproject.org/projects/tor/ticket/8406 (maybe fixed) + * Sync languages and translations from the master branch. + * New languages: Finnish, Norwegian (Bokmål), Slovak, Bulgarian. + * All HTTPS Everywhere users will be now prompted about using the + SSL Observatory. + +chrome-2012.3.7 + * The "cookies uncrumbled" chromium beta + * Ship all ruleset bugfixes from Firefox 3.1.4 + * Stop securing HTTP (non-S) cookies in weird cases!!! + https://trac.torproject.org/projects/tor/ticket/7492 + +4.0development.6 (2013-03-07) + * Disabled 26 broken or problematic rulesets + * Ship all ruleset fixes from 3.1.4 + * Ship 232 new rulesets + * Numerous ruleset fixes + * Update cert whitelist + +3.1.4 (2013-03-07) + * The circles are stable releasee + * Fixes: + AmazonAWS/Atomsforpeace.info, Disqus, Eventbrite, ImageShack.us, MySQL, + NuGet, NYTimes, Ooyala, Opera, Scientific American, SourceForge, + University of Southampton, UserVoice, WebType, Zendesk + https://trac.torproject.org/projects/tor/ticket/8056 + https://trac.torproject.org/projects/tor/ticket/8349 + https://trac.torproject.org/projects/tor/ticket/7690 + https://trac.torproject.org/projects/tor/ticket/8025 + https://trac.torproject.org/projects/tor/ticket/8077 + https://trac.torproject.org/projects/tor/ticket/8199 + https://trac.torproject.org/projects/tor/ticket/8198 + * Disable broken: + American Public Media (for real this time), Asymmetric Publications, + Salsa Labs, Vimeo + https://trac.torproject.org/projects/tor/ticket/7650 + https://trac.torproject.org/projects/tor/ticket/8280 + https://trac.torproject.org/projects/tor/ticket/7569 + * Update cert whitelist + +chrome-2013.1.18 + * "Internet Freedom" chromium beta + * Import all ruleset fixes from Firefox 3.1.3 + +4.0development.5 (2013-1-18) + * Internet Freedom Day development release + * Fix the implementation of safeToSecureCookie + - Get https://trac.torproject.org/projects/tor/ticket/7491 right(er) + - Fix https://trac.torproject.org/projects/tor/ticket/7855 + * Fix a ruleset processing bug, which would prevent <target host="*.z.com"> + from matching x.y.z.com + * Ship all ruleset fixes from 3.1.2 and 3.1.3 + - Except Etsy, where we're trying to fix rather than disable the ruleset + https://trac.torproject.org/projects/tor/ticket/7774 + * Ship 354 new rulesets + * Update cert whitelist + * Update translations: Korean, Polish, French + +3.1.3 (2013-1-18) + * Internet Freedom Day stable bugfix release + * Fixes: CloudFront/Spotify, AmazonAWS (Amazon MP3s and product images), Libav, + Google Maps, UserEcho + https://trac.torproject.org/projects/tor/ticket/7931 + https://trac.torproject.org/projects/tor/ticket/7888 + https://trac.torproject.org/projects/tor/ticket/7594 + https://trac.torproject.org/projects/tor/ticket/7539 + https://trac.torproject.org/projects/tor/ticket/7698 + * Disable broken: Coursera, EBay, Etsy, OpenOffice, Ping.fm, Pinterest :( + https://trac.torproject.org/projects/tor/ticket/7336 + https://trac.torproject.org/projects/tor/ticket/7825 + https://trac.torproject.org/projects/tor/ticket/7774 + https://trac.torproject.org/projects/tor/ticket/7695 + https://trac.torproject.org/projects/tor/ticket/7777 + https://trac.torproject.org/projects/tor/ticket/7865 + * Update cert whitelist + +3.1.2 (2013-1-2) + * Release 3.1.2, since 3.1.1 was accidentally mis-tagged + * Fixes for: AmazonAWS/Datawrapper, Cachefly, Cloudfront/C-SPAN, Hetzner.de + KeyDrive/Snapnames, QT, openDesktop, OpenTTD, WhiskeyMedia + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-December/001432.html + https://trac.torproject.org/projects/tor/ticket/7608 + https://trac.torproject.org/projects/tor/ticket/7567 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-December/001432.html + https://trac.torproject.org/projects/tor/ticket/7560 + https://trac.torproject.org/projects/tor/ticket/7796 + * Disable broken: FlossManuals, Pastebin, Poste.it, Ustream, TED, AusGamers + https://trac.torproject.org/projects/tor/ticket/7731 + https://trac.torproject.org/projects/tor/ticket/7850 + https://trac.torproject.org/projects/tor/ticket/7840 + https://trac.torproject.org/projects/tor/ticket/7548 + * Increase Observatory deployment (65%->85%) + * Update cert whitelist + +chrome-2012.12.17 + * The "overdue bugfixes" chromium beta + * Ship all ruleset bugfixes from Firefox 3.1 and 3.0.4 + * Additional fixes for: AmazonAWS/Datawrapper, Cachefly, Cloudfront/C-SPAN, + Hetzner.de, KeyDrive/Snapnames, QT + * Additionally disable: Automattic + +4.0development.4 (2012-12-17) + * Fix nasty bug that prevented Firefox downloads from Mozilla's CDN + https://trac.torproject.org/projects/tor/ticket/7717 + * Fix download from qt-project.org + * Ship 72 new rulesets + * Include all rulset fixes from 3.1 + +3.1 (2012-12-12) + * Hacky solution to a very nasty bug in which <securecookie> directives + would cause cookies to be flagged as secure even if they were set from + HTTP origins! + https://trac.torproject.org/projects/tor/ticket/7491 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-November/001397.html + * Fixes: Akamai, Biomed central, BYU, Cachefly / Topix, DuckDuckGo, Focus.de, + Fortum, Mashable, Mail.ru, MayFirst/People Link, MIT, Rackspace, + Salsa Labs, SurveyMonkey, Tumblr + * Disable: Adtech.de, AllthingsD American Public Media, Dafont, MediaFire, + Verizon, vk.com, Wired, Conde Nast + * Observatory-only translations into Hebrew and Croatian + * Offer the SSL Observatory popup to a larger cohort of users + +4.0development.3 (2012-12-3) + * Hacky solution to a very nasty bug in which <securecookie> directives + would cause cookies to be flagged as secure even if they were set from + HTTP origins! + https://trac.torproject.org/projects/tor/ticket/7491 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-November/001397.html + * Ship 245 new rulesets + * Fixes include: Internet Archive, Rackspace + * Disable broken: American Public Media, Verizon, Nieuwsblad.be, MyOpenID + * (Plus fixes and rulesets disabled between 4.0dev2 and 3.0.4) + * Observatory-only translations: Croatian, Hebrew + +3.0.4 (2012-11-9) + * Fixes: + ACLU, Amazon, Barnes & Noble, CharityNavigator, Cloudfront/Turntable.fm, + Coursera, itella.fi, posti.fi, Uservoice + https://trac.torproject.org/projects/tor/ticket/7336 + https://trac.torproject.org/projects/tor/ticket/7273 + https://trac.torproject.org/projects/tor/ticket/7227 + * Disable broken: + Asterisk, Boston Globe (separated out from NYTimes.com), Extabit, Gawker, + Google Services (Followers widget), NPR, SF.se, SonyMusic, Statcounter, WebType + https://trac.torproject.org/projects/tor/ticket/7270 + https://trac.torproject.org/projects/tor/ticket/7243 + https://trac.torproject.org/projects/tor/ticket/7361 + https://trac.torproject.org/projects/tor/ticket/7120 + https://trac.torproject.org/projects/tor/ticket/7278 + https://trac.torproject.org/projects/tor/ticket/7363 + https://trac.torproject.org/projects/tor/ticket/7294 + * No longer cacert: lawblog.de + * Offer the SSL Observatory popup to a larger cohort of users + * Update translations: Spanish, Russian, Turkish, Swedish + +chrome-2012.10.31 + * The "ghosts and goblins" chromium alpha + * Work around a nasty bug that was affecting some high-volume Live Youtube streams + (but not other live YouTube streams) + https://trac.torproject.org/projects/tor/ticket/7127 + * Other Fixes: + AdaCore, Akamai/MTV3 Katsomo, Akamai/HP, Atlassian, Bahn.de, MySQL, NPR, PBS, + Phronoix Media/Openbenchmarking, SSRN, Spoki + https://trac.torproject.org/projects/tor/ticket/7219 + https://trac.torproject.org/projects/tor/ticket/7180 + https://trac.torproject.org/projects/tor/ticket/7135 + https://trac.torproject.org/projects/tor/ticket/7206 + https://trac.torproject.org/projects/tor/ticket/7198 + * Disable broken/buggy: + CBS/Last.fm, Citibank Australia, Bytename, HP, NIFTY, Microchip, MyOpenID, NttDocomo + https://trac.torproject.org/projects/tor/ticket/6587 + https://trac.torproject.org/projects/tor/ticket/7226 + https://trac.torproject.org/projects/tor/ticket/7111 + https://trac.torproject.org/projects/tor/ticket/7161 + https://trac.torproject.org/projects/tor/ticket/7114 + https://trac.torproject.org/projects/tor/ticket/7138 + https://trac.torproject.org/projects/tor/ticket/7107 + +3.0.3 (2012-10-29) + * Work around a nasty bug that was affecting some high-volume Live Youtube streams + (but not other live YouTube streams) + https://trac.torproject.org/projects/tor/ticket/7127 + * Other Fixes: + AdaCore, Akamai/MTV3 Katsomo, Akamai/HP, Atlassian, Bahn.de, DemocracyNow, MySQL, NuGet, + PBS, Phronoix Media/Openbenchmarking, SSRN, Spoki + https://trac.torproject.org/projects/tor/ticket/7219 + https://trac.torproject.org/projects/tor/ticket/7180 + https://trac.torproject.org/projects/tor/ticket/7135 + https://trac.torproject.org/projects/tor/ticket/7206 + https://trac.torproject.org/projects/tor/ticket/7198 + * Disable broken/buggy: + CBS/Last.fm, Citibank Australia, Bytename, HP, NIFTY, Microchip, MyOpenID, NttDocomo + https://trac.torproject.org/projects/tor/ticket/6587 + https://trac.torproject.org/projects/tor/ticket/7226 + https://trac.torproject.org/projects/tor/ticket/7111 + https://trac.torproject.org/projects/tor/ticket/7161 + https://trac.torproject.org/projects/tor/ticket/7114 + https://trac.torproject.org/projects/tor/ticket/7138 + https://trac.torproject.org/projects/tor/ticket/7107 + * Updated translations: + Greek, Russian, Latvian + * New translation: + Turkish + * Offer the SSL Observatory popup to a larger cohort of users + +4.0development.2 (2012-10-25) + * Ship 67 new rulesets + * Fix broken logouts from non-US Google accounts: + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001347.html + * Other fixes: + Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer, + Optical Society, IMDB, Facebook, EzineArticles, Broadband Reports, Apache, + Akamai (exclude Zynga content to prevent breakage of some Zynga games), + Costco, Atlassian, Akamai/MTV3 Katsomo + * Disable broken/buggy: + HP, Bytename, NIFTY, Microchip, NttDocomo + * Updated translations: + Greek, Russian, Latvian + * New translation: + Turkish + +chrome-2012.10.18 + * The "even more perfect" chromium alpha + * Fixes from the last two Firefox releases: + Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer, + Optical Society, IMDB, Facebook, EzineArticles, Broadband Reports, Apache, + Akamai (exclude Zynga content to prevent breakage of some Zynga games), + Costco Akamai/SVTplay.se, Bahn.de, European Southern Observatory, IEEE, + Indeed, Java, Librivox, Pinterest, New York Times, Springer, Vimeo, + Shannon Health, O'Reilly Media + * Also fix: DemocracyNow, NuGet + * Disable: NIFTY + +3.0.2 (2012-10-16) + * Some fixes that should have shipped in 3.0.1, but actually didn't: + European Southern Observatory, Indeed, LibriVox + * New fixes: + Microsoft (Bing login button), ZeniMax, Ubuntuone, TrueCrypt, Springer + (fix / reenable), Optical Society, IMDB, Facebook, EzineArticles, + Broadband Reports, Apache, Akamai (exclude Zynga content to prevent + breakage of some Zynga games), Costco + +4.0development.1 (2012-10-11) + * Merge the 4.0 branch, which ships 884 new rulesets and expands + hundreds of others + +3.0.1 and 4.0development.1: + * Fixes: adition.com, Akamai/SVTplay.se, Bahn.de, European Southern Observatory, + IEEE, Indeed, Java, Librivox, Pinterest, New York Times, Springer, Vimeo, + Shannon Health, O'Reilly Media + https://trac.torproject.org/projects/tor/ticket/7080 + https://mail1.eff.org/pipermail/https-everywhere/2012-October/001583.html + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001339.html + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001343.html + * Disable broken: Springer + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001340.html + * Updated translations: Basque, Hungarian, Traditional Chinese + +chrome-2012.10.9 + * The "prepare for liftoff" chromium alpha + * Add an experimental Spanish translation! + * Fixes: + Akamai/CNN, GO.com/ABC, AWS/Amazon Zeitgeist MP3 player, AWS/Spiegel.tv, + Technology Review, Cloudfront/Tunein, Akamai/Discovery Channel, Beyond + Security, OCaml, Gentoo, Nokia, Widgetbox.com, Squarespace, 1and1 + Internet, American Physical Society, Baker and Taylor, Barnes and Noble, + Cloudfront, Trustguard, IEEE, Mozilla, Nrelate, OpenDNS, RFC Editor, + Symantec, Valve, Zenimax-Media + * Disable buggy: Web.de, AJC.com, Feross, Bestofmedia, Grooveshark, Gearhog + +3.0 (2012-10-04) + * Since version 2.x: + * 1,455 new active rulesets + * UI improvements: + - right-click to view ruleset source in the config window + - translate some untranslated menus + - better icons in a few places (breaking/redirecting rules, + context button) + * Numerous improvements to the SSL Observatory internals, including cached + submissions on hostile networks, better Tor and Convergence integration, + and a new setting to control self-signed cert submission + * New translations: Basque, Czech, Danish, French, Greek, Hungarian, + Italian, Korean, Malaysian, Polish, Slovak, Turkish, + Traditional Chinese + * Relative to 3.0development.8: + * Only promote the Decentralized SSL Observatory to 5% of non-Tor users + * Update the SSL Observatory whitelist of common cert chains + * Fixes, mostly in the CDN/media playback department: + Akamai/CNN, GO.com/ABC, AWS/Amazon Zeitgeist MP3 player, + AWS/Spiegel.tv, Technology Review, Cloudfront/Tunein, + Akamai/Discovery Channel, Beyond Security, OCaml, Gentoo, + Nokia, Widgetbox.com, Squarespace + https://trac.torproject.org/projects/tor/ticket/4199 + https://trac.torproject.org/projects/tor/ticket/6871 + https://trac.torproject.org/projects/tor/ticket/6992 + https://trac.torproject.org/projects/tor/ticket/7000 + https://trac.torproject.org/projects/tor/ticket/7020 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-October/001324.html + * Disable buggy: Web.de, AJC.com, Feross, Bestofmedia + * Remove a lot of off-by-default rulesets from the code, since they have + some costs in terms of startup speed and RAM usage + +3.0development.8 (2012-10-03) + * 3.0 stable release candidate 1 + * Fixes: AOL, 1and1 Internet, American Physical Society, Antispam.de, BBC, + Baker and Taylor, Barnes and Noble, BitTorrent, CacheFly, + CheezBurger, Cleverbridge, Cloudfront, Facebook, Trustguard, + IEEE, Link Plus Catalog, Microsoft, Mozilla, News Corp, Nrelate, + OpenDNS, PassThePopcorn, Pidgin, Piriform, RFC Editor, Symantec, + Telegraph, Transmission, Valve, Zenimax-Media, + kirjoitusalusta.fi, uTorrent + * Reenable: CodingTeam + * Disable broken: GrooveShark, Gearhog, Paper.li, Soton.ac.uk, SVT.se + * Various translation improvements + * Support a new platform="mixedcontent" attribute + * Switch to the actual HTTPS Everywhere logo for the context menu button + + +chrome-2012.9.21 + * Workaround for breakage in Amazon Look Inside the Book (via Cloudfront) + https://trac.torproject.org/projects/tor/ticket/6848 + * Replace jsURI with URI.js, fixing a number of bugs in the Chrome port + - https://trac.torproject.org/projects/tor/ticket/6197 + - Also breakage on other random pages like + http://venturebeat.com/2012/09/13/how-do-not-track-could-destroy-the-internet-as-you-know-it/ + * Fixes: AOL, Antispam.de, BBC, BitTorrent, Facebook, Gearhog, LinkPlus + Catalog, Microsoft, Mother Jones, Mozilla, Office.co.uk, OpenDNS, + PassThePopcorn, Piriform, WhatCD, uTorrent + * Disable broken: Paper.li, SVT.se, Soton.ac.uk + * Reenable: Referly + +chrome-2012.9.10 + * The "just add eleven" chromium alpha + * Time to test the updating mechanism from direct -> Chrome Web Store + installs + * Ruleset changes in addition to those in FF 3.0dev7: + * Fixes: News Corp, Cheezburger, CacheFly, Cleverbridge, Nrelate, + Pidgin, Telegraph + * Improvements: Global Marketing Strategies + + +3.0development.7 (2012-09-07) + * Add a cleanup routine for profiles affected by a 2.2 defaults bug: + https://mail1.eff.org/pipermail/https-everywhere/2012-August/001511.html + * Make Decentralized SSL Observatory-Tor interactions saner in the wake of + Torbutton transitioning to "always on" (we now detect a local Tor instance + on port 9050 and use it) + https://trac.torproject.org/projects/tor/ticket/6541 + * Fix some other bugs in the Observatory proxy-wrangling code + * Disable broken/buggy rulesets: Voxel, Mapquest, Imgur, Justin.tv, + F-Secure, Valve, SpringFiles, openDesktop, syllabushare, Playboy, FAZ + * Fixes / Improvements: Eloqua, OpenDNS, Mashable, News Corp, Sony, Yahoo!, + Examiner.com, FBI, Adtechus, Mozilla, Dreamhost, Lenovo / Thinkpad, Pirate + Party, Scribd + * New Czech translation + +3.0development.6 (2012-08-16) + * Prevent ruleset bugs from crashing the UI + https://trac.torproject.org/projects/tor/ticket/6280 + * Fix a lack-of-translation bug in the context menu + https://trac.torproject.org/projects/tor/ticket/6516 + (although coverage will probably be patchy for a while) + * Add hooks to use our new Firefox internal rewrite API, if the browser + has it (this should address + https://trac.torproject.org/projects/tor/ticket/5477 + https://trac.torproject.org/projects/tor/ticket/3190 + ) + * Fixes: OpenStreetMap, Okcupid, Yandex, Valve, Atlantic Media, AWS, + XDA developers, Tumblr, MetaPress, Mixpanel, VideoLAN, JBoss, + Yourhosting, Pypi, QT, Imgur, Scientific American, + Chronicle, ISOC, Wikimedia, Xmission, Tumblr, OpenDNS + Mobygames, Telegraph Media, Dailymotion, RFC-editor, US gov, + Discogs, Costco, Brightcove, PirateParty, BrownPaperTickets + * Improvements: Apple, MIT + * Disable buggy/broken: ZDNet, Globe and Mail, Malwarebytes, Plenty of Fish, + Raymond.CC, Blip.tv, Governo Portugês, adf.ly, + McAfee :( :( :( + * New translations: Italian, Turkish, Traditional Chinese, Korean + * Numerous updated translations + +chrome-2012.8.16 + * The "exponential bifurcation" alpha + * Change the update URI to the specific one blessed by the Chrome Web Store + (they tell us that, despite appearances, the request will actually be + https) + +chrome-2012.8.15 + + * The "Happiness in the Cloud" Alpha + * We still suffer from the horrible Appcache bug, so this is still an alpha: + https://trac.torproject.org/projects/tor/ticket/5585 + https://code.google.com/p/chromium/issues/detail?id=121325 + * Enslave ourselves to the Chrome Web Store, because Google has made it + very tricky to install .crx files in Chrome version 21 + https://code.google.com/p/chromium/issues/detail?id=133818 + https://code.google.com/p/chromium/issues/detail?id=128748 + * Do a better job of displaying the context menu, especially for error pages: + https://trac.torproject.org/projects/tor/ticket/6085 + (should be fixed for real this time) + * Fancier Chrome context menus by Jay Weisskopf + * Fixes: OpenStreetMap, Okcupid, Yandex, Valve, Atlantic Media, AWS, + XDA developers, Tumblr, MetaPress, Mixpanel, VideoLAN, JBoss, + Yourhosting, Pypi, QT, Imgur, Scientific American, + Chronicle, ISOC, Wikimedia, Xmission, Tumblr, OpenDNS + Mobygames, Telegraph Media, Dailymotion, RFC-editor, US gov, + Discogs, Costco, Brightcove, PirateParty, BrownPaperTickets, + * Improvements: Apple, MIT + * Disable buggy/broken: ZDNet, Globe and Mail, Malwarebytes, Plenty of Fish, + Raymond.CC, Blip.tv, Governo Portugês, adf.ly + McAfee :( :( :( + +3.0development.5 (2012-06-26) + * Fix the enable/disable button in Firefox 15 + https://trac.torproject.org/projects/tor/ticket/6212 + * Fixes: GetFirebug, Gentoo, Ebay, Yandex (extensive), Maxmind, Blogger, HP, + Jottit + * Disable broken: Project Syndicate, Alton Towers, Network for Good + https://trac.torproject.org/projects/tor/ticket/6222 + * The Decentralized SSL Observatory client now saves up some certificates if + the network blocks or MITMs attempts to submit them. + +chrome-2012.6.21 + * The Autonomous Greenland Beta Release + * Allow rulesets to be toggled when the page breaks completely + https://trac.torproject.org/projects/tor/ticket/6085 + * Fixes: Github, Gentoo, HP, Maxmind, Orange + * Disable broken: Alton Towers, Project Syndicate + * Only ship 1 new ruleset (we're in a freeze) + +3.0development.4 (2012-06-18) + * Fix compatibility bug with Firefox 15: + https://trac.torproject.org/projects/tor/ticket/5893 + * Ship 217 new rulesets (frozen; new rulesets now have to wait until 4.0 + development) + * Fixes: numerous, including: Boxee, CiteULike, MozillaMessaging, + Yandex, Demonoid, Pirate Party, Gentoo, NYTimes, Microsoft, + Wikipedia, Lenovo, MyWOT + https://trac.torproject.org/projects/tor/ticket/5912 + https://trac.torproject.org/projects/tor/ticket/6091 + https://trac.torproject.org/projects/tor/ticket/5703 + https://trac.torproject.org/projects/tor/ticket/5931 + https://trac.torproject.org/projects/tor/ticket/5958 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001190.html + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-May/001186.html + https://mail1.eff.org/pipermail/https-everywhere/2012-May/001433.html + * Disable broken: MarketWatch, Disqus, Magento, Lavasoft, + Typepad/Say Media, Thomas Cook, Thomson Reuters clients, + Science Daily, BinRev, Ikea, Interpol + https://trac.torproject.org/projects/tor/ticket/5899 + https://trac.torproject.org/projects/tor/ticket/5496 + +chrome-2012.6.18 + * The Divisible By Six Chromium Beta Release + * Ship 444 new Rulesets + * Fixes: numerous, including: Boxee, omgubuntu, Microsoft + https://trac.torproject.org/projects/tor/ticket/5899 + https://trac.torproject.org/projects/tor/ticket/5703 + https://trac.torproject.org/projects/tor/ticket/5931 + https://trac.torproject.org/projects/tor/ticket/5958 + * Disable broken: Disqus, uTorrent, Thomas Cook, Thomson Reuters clients, + Science Daily, Say Media, BinRev, Ikea, Interpol + * Not fixed: + The horrible appcache / CSS bug: + https://trac.torproject.org/projects/tor/ticket/5585 + Occasional extension compatibility glitches: + https://trac.torproject.org/projects/tor/ticket/5731 + +3.0development.3 (2012-05-11) + * Ship 361 new rulesets + * Do a better job of disabling CACert rulesets by default on non-CAcert + platforms + * Fix for compatibility with some other Firefox extensions: + https://trac.torproject.org/projects/tor/ticket/5682 + * Fixes: Wordpress stylesheets, USENIX, Mozilla, Opera, Valve, and many + others + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-April/001105.html + https://trac.torproject.org/projects/tor/ticket/5831 + * Disable broken: Pandora, Miranda IM, Pastebin.ca + https://trac.torproject.org/projects/tor/ticket/5804 + https://trac.torproject.org/projects/tor/ticket/5776 + * Testing our new more automated release process + +chrome-2012.5.1 + * The May Day Chromium Beta Release + * Ship 886 new rulesets (thanks mostly to Negres!) + * Fix two downgrade attacks that might allow attackers to deny HTTPS + Everywhere protection for cookies on some domains. + https://trac.torproject.org/projects/tor/ticket/5676 + https://trac.torproject.org/projects/tor/ticket/2199 + * More efficient ruleset storage shrinks the .crx download by a factor of + about 4 (thanks fauxfaux) + https://trac.torproject.org/projects/tor/ticket/5275 + * Disable buggy rulesets: IBM, Scribd, Wunderground, ReadWriteWeb, + Pastebin.ca + https://trac.torproject.org/projects/tor/ticket/5344 + https://trac.torproject.org/projects/tor/ticket/5435 + https://trac.torproject.org/projects/tor/ticket/5630 + * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, + OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble, + Pastebin.ca + https://trac.torproject.org/projects/tor/ticket/5509 + https://trac.torproject.org/projects/tor/ticket/5491 + https://trac.torproject.org/projects/tor/ticket/5303 + * Numerous other improvements, fixes, and exciting new bugs :) + + +3.0development.2 (2012-04-26) + * License change: the tree now includes some code from Convergence, which + is GPL v3+. Other code remains licensable as GPLv2+ + * Ship 696 new rulesets (!!!), thanks to a lot of amazing work by Negres + * Fix a downgrade attack that might allow attackers to deny HTTPS + Everywhere protection for cookies on some domains. + https://trac.torproject.org/projects/tor/ticket/5676 + * Fix a weird wrong DOM-origin bug that occurred while redirects were in + progress (this might have security implications, although we are unsure + if it was exploitable). + https://trac.torproject.org/projects/tor/ticket/5477 + * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, + OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble + https://trac.torproject.org/projects/tor/ticket/5509 + https://trac.torproject.org/projects/tor/ticket/5491 + https://trac.torproject.org/projects/tor/ticket/5303 + * Stumble across more horrible security holes in the Verizon website: + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-February/001003.html + * Disable the Gentoo ruleset on non-CAcert platforms + * Disable buggy rulesets: IBM, Scribd, Wunderground, ReadWriteWeb :( :( :( + https://trac.torproject.org/projects/tor/ticket/5344 + https://trac.torproject.org/projects/tor/ticket/5435 + https://trac.torproject.org/projects/tor/ticket/5630 + * Better cohabitation between the Decentralized SSL Observatory and + Convergence + * Separate Observatory option to control self-signed cert submission + * Numerous other ruleset enhancements, fixes, and probably exciting new bugs + in Negres's ruleset changes + +3.0development.1 (2012-03-14) + * By default, use https://google.co.cctld instead of + encrypted.google.com + https://trac.torproject.org/projects/tor/ticket/5152 + * Add an optional ruleset to use https://www.google.com + instead of encrypted.google.com, too + * Add a new context menu in the rulesets list: + - toggle a ruleset + - reset it to the default + https://trac.torproject.org/projects/tor/ticket/3762 + - view the ruleset source + https://trac.torproject.org/projects/tor/ticket/5237 + * Show the Observatory popup to all users once, not just TorButton users + * Four new translations: Basque, French, Polish, Slovak + * Ship 125 new rulesets + +chrome-2012.3.14 + * Ship 109 new rulesets since the last Chromium release + * Add an optional ruleset to search on https://www.google.com + instead of encrypted.google.com + * Switch non-US google searches to country sites by default + * Better chrome context UI + +2.2.3 (2012-09-25) + * Workaround for breakage in Amazon Look Inside the Book (via Cloudfront) + https://trac.torproject.org/projects/tor/ticket/6848 + * Fix logout for AOL users + * Other fixes: PassThePopcorn, WhatCD, Antispam.de, RFCeditor, + Weatherspark / GoogleMaps + * Disable broken: SVT.se + +2.2.1 (2012-08-17) + * Fix a configuration-parsing bug in 2.2 that would + ignore default_off rules if this was a first install + https://mail1.eff.org/pipermail/https-everywhere/2012-August/001511.html + * Add a cleanup routine for profiles affected by that bug. + +2.2 (2012-08-15) + * Prevent ruleset bugs from crashing the UI + https://trac.torproject.org/projects/tor/ticket/6280 + * Fix the enable/disable button in Firefox 14 + https://trac.torproject.org/projects/tor/ticket/6212 + * Fix a nasty bug in the optional "Search www.google.com" ruleset: + https://gitweb.torproject.org/https-everywhere.git/commitdiff/50ca41a1e189ef8383781f803e51ec7a06688a3b + * Disable buggy/broken: ZDNet, Globe and Mail, Blip.tv, Governo Portugês, + Alton Towers, McAfee :( :( :( + * Fixes: Yandex, Wikipedia, PirateParty, JBoss, Gentoo + * Hopefully the last 2.x release before 3.0 stable + +2.1 (2012-06-18) + * Fix context menu breakage when URIs lack a host + * Fixes: CiteULike, MozillaMessaging, Yandex, Demonoid, Pirate Party, + Gentoo, NYTimes, Microsoft, Wikipedia, Lenovo + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html + https://trac.torproject.org/projects/tor/ticket/6091 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001190.html + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-May/001186.html + https://mail1.eff.org/pipermail/https-everywhere/2012-May/001433.html + * Disable broken: MarketWatch, Disqus, Magento, Lavasoft, Project Syndicate, + Typepad/Say Media + https://trac.torproject.org/projects/tor/ticket/5899 + https://trac.torproject.org/projects/tor/ticket/5496 + +2.0.5 (2012-05-16) + * Rebuild 2.0.4 without a bug in the release scripts that prevented all the + rulesets from being absent + +2.0.4 (2012-05-16) + * Fix for compatibility with some other Firefox extensions: + https://trac.torproject.org/projects/tor/ticket/5682 + * Fixes: Wordpress stylesheets, USENIX, Mozilla, Opera, Indymedia + https://trac.torproject.org/projects/tor/ticket/5905 + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-April/001105.html + * Disable broken: Pandora, Miranda IM, Pastebin.ca, PaidContent + https://trac.torproject.org/projects/tor/ticket/5804 + https://trac.torproject.org/projects/tor/ticket/5776 + + +2.0.3 (2012-04-26) + + * Fix a downgrade attack that might allow attackers to deny HTTPS + Everywhere protection for cookies on some domains. + https://trac.torproject.org/projects/tor/ticket/5676 + * Minor redirection mechanism fixes + * Fixes: WordPress, Yandex, OpenDNS, Via.me/AWS + * Improvements: Mozilla + * Disable broken: ReadWriteWeb + +2.0.2 (2012-04-19) + + * Fix a weird wrong DOM-origin bug that occurred while redirects were in + progress (this might have security implications, although we are unsure + if it was exploitable). + https://trac.torproject.org/projects/tor/ticket/5477 + * By default, use https://google.co.cctld instead of + encrypted.google.com + https://trac.torproject.org/projects/tor/ticket/5152 + * Add an optional ruleset to use https://www.google.com + instead of encrypted.google.com, too + * Ruleset fixes: Debian, Kohls, Malwarebytes, Yandex, Wikipedia, Mises.org, + OpenDNS, Wizards of the Coast, Lenovo, Barnes and Noble + https://trac.torproject.org/projects/tor/ticket/5509 + https://trac.torproject.org/projects/tor/ticket/5491 + https://trac.torproject.org/projects/tor/ticket/5303 + * Stumble across more horrible security holes in the Verizon website: + https://mail1.eff.org/pipermail/https-everywhere-rules/2012-February/001003.html + * Disable the Gentoo ruleset on non-CAcert platforms + * Disable buggy rulesets: IBM, Scribd, Wunderground :( :( :( + https://trac.torproject.org/projects/tor/ticket/5344 + https://trac.torproject.org/projects/tor/ticket/5435 + https://trac.torproject.org/projects/tor/ticket/5630 + +2.0.1 (2012-02-27) + * 2.0 is now Stable! + * Fix tiny settings window on some versions of Windows: + https://trac.torproject.org/projects/tor/ticket/5197 + * Fix drop down menu bug for the non-English versions of the UI + * Added Farsi and Arabic translations + * Disable Netflix, which was demonstrating a lot of breakage + * Improvements: Wikipedia + * Fixes: Google, Samba + * Ship 4 new rulesets since 2.0development.6 + (404 new rulesets since 1.2.2!) + * Check ruleset grammaticity with xmllint/RelaxNG + +chrome-2012.2.27 + * Split Google Translate out of the Google APIs rule, and turn it off by + default on Chrome only: + Fixes https://trac.torproject.org/projects/tor/ticket/5196 + * Ship 19 new rulesets since last Chromium release + +chrome-2012.2.9 + * make <exclusion pattern> rulesets elements work in the Chrome version + https://trac.torproject.org/projects/tor/ticket/5042 + (also disable the LinkedIn ruleset) + * Support for Google Sorry + * 6 new rulesets + +2.0development.6 (2012-02-08) + * Fix a nasty UI crash bug on Windows + https://trac.torproject.org/projects/tor/ticket/5020 + * Ruleset fixes: Google Video, Yandex, LDS + https://trac.torproject.org/projects/tor/ticket/5026 + https://trac.torproject.org/projects/tor/ticket/5042 + * Disable problematic LinkedIn ruleset + * An experimental ruleset for the Google "Sorry" page + * Improved Nederlands translation + * Ship 6 new rulesets + +chrome-2012.02.06{,.01} + * First "Official" EFF alpha Chrome release + (Thanks to Mike Perry and Aaron Swartz for leading the porting effort!) + * Installable on Chrome|Chromium 18+ + * Two point versions, to test the autoupdating mechanism + +2.0development.5 (2012-02-02) + * Fix some data structure inefficiencies that should reduce RAM consumption + by 25-75MB (!) + https://trac.torproject.org/projects/tor/ticket/4804 + * Global enable / disable option + https://trac.torproject.org/projects/tor/ticket/4060 + * Google Cache is back! :) + * Ship 126 new rulesets + * Fixes: Wikipedia, Identi.ca, Verizon, CCC.de, UserScripts, Yandex, + Hidemyass, Mozilla, Pogo, Google, Google Images, Google Video, + The Pirate Bay, AK Vorrat, JBoss + * Improvements: EFF, Flickr, RedHat, Diaspora, PrivatePaste, KDE, + Portugese Govt + * Disable broken: NSF.gov, WHO.int, Economist + * New experimental Yahoo! ruleset (off by default) + * New translations: Spanish, Nederlands + +2.0development.4 (2011-11-15) + * The translations actually work + * Add new translations: Chinese, Russian + * Ship 37 new rulesets + * Exclude Userscript paths as an insecure workaround for the Greasemonkey + and Scriptish instances of this bug: + https://trac.torproject.org/projects/tor/ticket/3190 + * Fixes: Java.com, Yandex, Wordpress, Wikipedia, Bahn.de, UNSW, Apache, + DuckDuckGo, Google Images + * Improvements: Debian, Tumblr, Apple, Facebook, VeriSign, Google Services, + Flickr, Youtu.be + * Disable broken: Target, OpenUniversity, TV.com, Radio Shack, + Yahoo Mail :( :(, + Google Cache coverage in Google Services :( :( :( + +2.0development.3 (2011-10-19) + * Selectively reenable nsIContentPolicy::shouldLoad() + Fixes: https://trac.torproject.org/projects/tor/ticket/4194 + Fixes: https://trac.torproject.org/projects/tor/ticket/4149 + * Crazy experimental IOUtils hacks from NoScript + https://bugzilla.mozilla.org/show_bug.cgi?id=677643#c75 + (Appears to fix + https://mail1.eff.org/pipermail/https-everywhere/2011-October/001208.html, + which is probably a general redirection bug) + * Secure cookies set by JavaScript as well as those set by HTTP + Fixes: https://trac.torproject.org/projects/tor/ticket/3766 + * Perform initialisation synchronously, reducing races during startup + Fixes: https://trac.torproject.org/projects/tor/ticket/3533 + * Ship 9 new rulesets + * Disable: MikeWest + * Improvements: YouTube, Google Images + +2.0development.2 (2011-10-05) + * Enable YouTube by default + (also closes https://trac.torproject.org/projects/tor/ticket/4032) + * Merge nsIContentPolicy disablement from stable + (closes https://trac.torproject.org/projects/tor/ticket/3882) + * Context menu should work on error pages + (https://trac.torproject.org/projects/tor/ticket/3815) + * Fix the ASN setting button in the observatory prefs + (https://trac.torproject.org/projects/tor/ticket/4170) + * Make the Observatory much more efficient + * Ship 46 new rulesets + * Update for new Wikipedia HTTPS deployment + * Ruleset Fixes and Enhancements: Yandex, Identica, SBB, Polldaddy, XKCD, + Statcounter, Caltech, UCSD, FlickR, Android + * Disable broken: LastPass, Avast, EPEAT, Bloglines + * Improve the state of our translations-in progress + * Fancy new Python build scripts + +2.0development.1 (2011-09-15) + * Begin alpha testing for the Decentralized SSL Observatory! + (currently opt-in, with a popup prompt if you have Tor Button installed) + * Ship 164 new rulesets + * Enable Google Maps by default + * Pending translations: Arabic, Dutch, German, Portugese, Latvian, Russian, + Swedish + * Fixes: OpenDNS, WordPress, Flickr + * Expansions & Improvements: Google Services, Twitter, Gowalla, Apple, Bit.ly + AdBlock Plus, KLM, Adobe, UCSD, Heroku, Wikipedia + * Disable broken rulesets: Deviantart, Bandcamp, Securityfocus + * Improved build scripts + +1.2.2 (2012-01-09) + * Google Cache is back! + * Fixes: Wikipedia, Identi.ca, Verizon, CCC.de, UserScripts, + Yandex + * Improvements: EFF + * Disable broken: NSF.gov, WHO.int + +1.2.1 (2011-10-15) + * Google Cache is broken, remove it from GoogleServices :( :( :( + * Fix for the Google Image Search homepage + * Exclude help.duckduckgo.com: + https://trac.torproject.org/projects/tor/ticket/4399 + * Disable Yahoo! Mail: + https://trac.torproject.org/projects/tor/ticket/4441 + * Installable on Firefox 10 + +1.2 (2011-10-14) + * Fixes: WordPress, Statcounter, Java, Bahn.de, SICS.se + * Improvements: use fancy new HTTPS Wikipedia + * Disable broken: OpenUniversity, TV.com, Random.org, kb.CERT + +1.1 (2011-10-19) + * Further tweaks to internals, will hopefully fix a number of weird issues: + https://trac.torproject.org/projects/tor/ticket/4194 + https://trac.torproject.org/projects/tor/ticket/4149 + https://mail1.eff.org/pipermail/https-everywhere/2011-October/001208.html + * YouTube is enabled by default! + * Fixes: Yandex, Statcounter, Polldaddy, SBB.ch + * Improvements: Facebook+ + * Disable broken: Bloglines, EPEAT + +1.0.3 (2011-09-26) + * Mozilla is about to release Firefox 7, the stable branch needs to be + installable there! + * Disabling nsIContentPolicy callbacks should fix this crash bug: + https://trac.torproject.org/projects/tor/ticket/3882 + https://bugzilla.mozilla.org/show_bug.cgi?id=677643 + It /might/ cause us to fail to rewrite requests in obscure corner cases. + We haven't found any in testing, but vigilance will be required. + * Support for Google Maps + * Fixes: WordPress, Lenovo, OpenDNS, Avast, Ripe.net, TV.com, 38.de + * Disable broken: Seagate + +1.0.2 (2011-09-20) + * Major improvements to the Wikipedia ruleset + * Disable broken/buggy rulesets: DeviantArt, eHow, About.me, Bandcamp, + StudiVZ, Securityfocus, BankofAmerica :( :( :( + * Small fixes: OpenDNS, WordPress, links in the "About" page + * Declare incompatibility with Firefox 7 & 8 until Mozilla fixes this: + https://bugzilla.mozilla.org/show_bug.cgi?id=677643 + +1.0.1 (2011-08-10) + * Disable some rulesets with partial compatibility issues: Reddit, + StumbleUpon, Heroku + * Small Yandex fix + * Fix/improvement for Google Instant outside the US + +1.0.0 (2011-08-04) + * Release 1.0 into the stable branch! + * Improve toolbar UI for error pages somewhat (it still isn't perfect) + * Bugfixes: Microsoft, Dropbox, Netflix, MySQL + * Disable a couple of broken rules + +1.0.0development.5: (2011-07-13) + * Ship rulesets as a single "default.rulesets" file, shrinking the .xpi from + ~370 kB to ~120kB and speeding Firefox startup: + https://trac.torproject.org/projects/tor/ticket/3404 + * Fix an ephemeral bug where disabled-by-default rules would be briefly + enabled when first installed + * Wikipedia shows up in the toolbar/context menu + * Fixes to netflix & netzpolitik + * Toolbar/context menu can be opened with left or right click + +1.0.0development.4: (2011-07-06) + * Fix a bug with Google Translate + * Unbreak the Netflix blog + * Toolbar button now looks OK in Seamonkey + * Declare compatibility with the next round of Firefox alphas + +1.0.0development.3: (2011-07-04) + * Do not show a bizarre popup when people click the HTTPS toolbar button on + error pages + * Fix a GoogleServices bug that broke logout from non-US google accounts :( + +1.0.0development.2: (2011-07-01) + * Fix bugs that arose when trying to move the toolbar menu icon: + https://trac.torproject.org/projects/tor/ticket/3497 + * Handle usernames and passwords in URIs more explicitly + https://trac.torproject.org/projects/tor/ticket/2199 + * By default, move context menu from toolbar to addons bar + * Ship 22 new rulesets + * Add support for Google Plus, Accounts and AdWdords + * Improvements to Microsoft, Twitter and Gitorious + +1.0.0development.1: (2011-06-27) + * Add a context menu to let users toggle rulesets that are/might be + applicable to the current page (we can now stabilise the dev branch!) + * Ship 42 new rulesets + * Support for Google Image Search (except the very first landing page :/) + * Fixes: Netflix, Plone + * Improvements: Google APIs, Google Services, Mediawiki + * Disable broken rules: OKCupid, Surveymonkey + * Declare compatibility with recent Seamonkey releases + +0.9.9.development.6: + * Optimistically declare compatibility with Firefoxes up to v 7.* + * Ship 193 new rulesets + * Fixes & Improvements: Wikipedia, AmazonAWS, Google Images, Microsoft, + Mozilla, Netflix, Google User Content, Twitter, Gitorious, AdBlock Plus, + Youtube, he.net, Bitcoin + * Remove broken rules: Match.com + +0.9.9.development.5: + * Compatible with Firefox 4.0.1+ + * New ruleset management UI (thanks to katmagic and Stefan Tomanek) + * Ship 136 new rulesets + * Fixes: reCAPTCHA, Google Images, Gentoo, Gitorious + * Improvements: Bit.ly, Yahoo, Nokia + * Disable: WashingtonPost :(, Doubleclick, OpenSSL.org (!) + +0.9.9.development.4: + * Ship 117 new rulesets + * Fixes: MySQL, GroupOn, country-specific Google news sites, + * Improvements: mail.com, WordPress + * Leave WashingtonPost ruleset on in the hope that it gets fixed soon :/ + * Disable broken rules: HTC, I2P ... + +0.9.9.development.3: + + * In the settings dialogue, offer "Reset defaults" instead of "Enable all" + * Merge fixes from NoScript that avoid some torbutton bugs + * Ship 56 new rulesets + * Numerous tweaks + fixes, including NYTimes and AddThis + +0.9.9.development.2: + + * Prevent the preferences window from swallowing the screen on OS X / Windows + * Stop the StartCom rule from breaking StartCom OCSP/CRLs (which can't be HTTPS) + * Attempt to do the same for for CAcert + * Fixes to: Reddit, Drupal.org + * Disable some problematic rulesets: Cisco, Opera + * Enable: Reddit + * Ship another 62 rulesets + +0.9.9.development.1: + + * The efficient ruleset checking implementation should now hopefully be... + efficient + * Ship all the rulesets (!!!) + * Except the ones that cause cert warnings, which are there but off by default + * Build scripts attempt to validate rulesets before making a .xpi + +0.9.7: + * Support firefox 5 and 6 betas + * Numerous improvements and fixes to Google and GoogleServices support + * Fixes to AmazonAWS + * Secure j.mp via bit.ly + * Fix gentoo bugs + +0.9.6: + * Support firefox 4.0.1 + * Unbreak recaptcha + * Disable google.com/jsapi (which was breaking some embedded maps, though + that bug *might* have been fixed) + +0.9.5: + * WashingtonPost is broken and seems to be staying that way; disable it :( + * Replace "Enable All" with "Reset Defaults" + * Fixes & Improvements to WordPress + Mozilla + +0.9.4: + * Significant performance improvements + * Disable Cisco by default + * Fixes & improvements to: NYTimes, WashingtonPost, Cisco, WordPress + * Support Google Code + * Disable Google Custom Search Engines (they don't work) + * Support global installation for OS distributions (thanks dm0) + + +0.9.3: + * Significant performance improvements + * Disable Cisco by default + * Fixes & improvements to: NYTimes, WashingtonPost, Cisco, WordPress + * Support Google Code + * Disable Google Custom Search Engines (they don't work) + * Support global installation for OS distributions (thanks dm0) + +0.9.2: + * Fix a bug in our redirection loop detection that was causing touble with + some parts of NYTimes, Facebook, and other sites + (closes: https://trac.torproject.org/projects/tor/ticket/2217) + +0.9.1: + * Unbreak the "all x news articles" links in Google News + * Exclude nytimes.com/roomfordebate, since it's broken in https. + +0.9.0: + * This is our "Firesheep" release. It has numerous anti-firesheep + improvements! + * Split the stricter parts of the Facebook rule into a "Facebook+" rule. + It's what's required to protect Facebook from Firesheep and similar cookie + theft attacks, but it may break apps, because apps.facebook.com currently + has the wrong cert. + * Allow rulesets to specify that the secure flag should be set on some + cookies even if the site operator failed to do so + * Ship rules for: + - Amazon S3 (AWS) + - Github + - Bit.ly + - Dropbox + - Evernote + - Cisco + * Extensive improvements (including secure cookies) in the Twitter and + Facebook rules + * Support for full Live / Hotmail encryption + * Significant performance optimisation decreases CPU load + Fixes: + https://trac.torproject.org/projects/tor/ticket/1656 + https://trac.torproject.org/projects/tor/ticket/2194 + * Rearrange our Channel Replacement code! + Fixes https://trac.torproject.org/projects/tor/ticket/1684 + https://bugzilla.mozilla.org/show_bug.cgi?id=548102 + Thanks to Giorgio Maone and Boris Zbarsky! + * Add scrollbars if there are a lot of rules present in the Preferences + dialog (may still be somewhat buggy...) + * Optimise GoogleServices.xml and support Google code search + * Patch for future compatiability with Request Policy: + https://trac.torproject.org/projects/tor/ticket/1574 + * Support for the Firefox 4 API + * The Amazon rule was causing a lot of glitches; it is now off by default + * Control log verbosity with an about:config variable + * Numerous minor rule improvements + +0.2.2: + * Fix a glitch in the Content Policy path that may or may not have been + responsible for these bugs: + https://trac.torproject.org/projects/tor/ticket/1700 + https://trac.torproject.org/projects/tor/ticket/1672 + https://trac.torproject.org/projects/tor/ticket/1673 + The patch breaks toolbar search suggestions. And who knows what else? + * Don't send some country homepages to https://www.google.com/webhp?hl= ; + use https://encrypted.google.com instead + * Cleanup and refactor the URI replacement and rewriting code. Should + hopefully fix https://trac.torproject.org/projects/tor/ticket/1649 + * Add a Google APIs rule + * Remove some Extremely Nasty code that would delete malformed rulesets (!) + (it was pasted from Torbutton's cookie handling logic...) + * Add code.google.com to Google Services + * The client=firefox* workaround is no longer necessary once we're sending + non-US users to encrypted.google.com rather than www.google.com + * Better coverage for GMX, Google services, Twitter + * Scroogle homepage in HTTPS + * Add rules for + - Mail.com logins + - Microsoft (limited coverage) + * Fix a nasty Google/Wikipedia bug within 0.2.2.development.{1,2} + +0.2.1: + * Although google said https://www.google.com would continue to work, that + wasn't absolutely true. + * The new encyrpted.google.com seems to require queries to be #q=thing + rather than search?q=thing, at least some of the time. So let's do that. + +0.2.0: + * Work around the fact that Google does not allow client=firefox* HTTPS + searches from outside the US, by rewriting those URIs + * Add rules for: + - Amazon + - GMX + - Live.com (Hotmail logins) + - Meebo + - the Netherlands Government + - Wordpress.com + - Zoho + * Remove the assumption that non-US searches would always start with an hl= + language parameter + * Handle searches to the google.com/firefox script better + * Remove accidental duplicates of a couple of rules! + * Bump maxVersion into the future so we're compatible with Firefox alphas + * Fix more legacy eff.org bugs + +0.1.2: + * Apparently, we are not actually compatible with Firefox 2.0.0.x, so don't + install with it! + * Further generalisation of Wikimedia rules + * Fix bugs in the handling of obscure parts of eff.org and torproject.org + * A bug in a user rules file should produce an error, rather than causing all + rules to fail to load + +0.1.1: + * Generalise the Wikipedia rules to other Wikimedia services + * In preferences window, add a link to instructions for writing one's own + rules diff --git a/data/extensions/https-everywhere@eff.org/chrome.manifest b/data/extensions/https-everywhere@eff.org/chrome.manifest new file mode 100644 index 0000000..4869afe --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome.manifest @@ -0,0 +1,53 @@ +content https-everywhere chrome/content/ +override chrome://https-everywhere/content/rulesets.sqlite defaults/rulesets.sqlite + +locale https-everywhere en chrome/locale/en/ +locale https-everywhere lt chrome/locale/lt/ +locale https-everywhere lv chrome/locale/lv/ +locale https-everywhere pt chrome/locale/pt/ +locale https-everywhere sv chrome/locale/sv/ +locale https-everywhere de chrome/locale/de/ +locale https-everywhere ru chrome/locale/ru/ +locale https-everywhere zh-CN chrome/locale/zh-CN/ +locale https-everywhere zh-TW chrome/locale/zh-TW/ +locale https-everywhere es chrome/locale/es/ +locale https-everywhere nl chrome/locale/nl/ +locale https-everywhere ar chrome/locale/ar/ +locale https-everywhere fa chrome/locale/fa/ +locale https-everywhere eu chrome/locale/eu/ +locale https-everywhere fr chrome/locale/fr/ +locale https-everywhere pl chrome/locale/pl/ +locale https-everywhere sk chrome/locale/sk/ +locale https-everywhere ms chrome/locale/ms/ +locale https-everywhere da chrome/locale/da/ +locale https-everywhere el chrome/locale/el/ +locale https-everywhere hu chrome/locale/hu/ +locale https-everywhere it chrome/locale/it/ +locale https-everywhere tr chrome/locale/tr/ +locale https-everywhere ko chrome/locale/ko/ +locale https-everywhere cs chrome/locale/cs/ +locale https-everywhere hr chrome/locale/hr/ +locale https-everywhere he chrome/locale/he/ +locale https-everywhere fi chrome/locale/fi/ +locale https-everywhere nb chrome/locale/nb/ +locale https-everywhere sl chrome/locale/sl/ +locale https-everywhere bg chrome/locale/bg/ +locale https-everywhere ja chrome/locale/ja/ +locale https-everywhere si chrome/locale/si/ + +skin https-everywhere classic/1.0 chrome/skin/ + +component {32c165b4-fe5e-4964-9250-603c410631b4} components/https-everywhere.js +contract @eff.org/https-everywhere;1 {32c165b4-fe5e-4964-9250-603c410631b4} + +category profile-after-change HTTPSEverywhere @eff.org/https-everywhere;1 +category content-policy HTTPSEverywhere @eff.org/https-everywhere;1 + +overlay chrome://browser/content/browser.xul chrome://https-everywhere/content/toolbar_button.xul +overlay chrome://navigator/content/navigator.xul chrome://https-everywhere/content/toolbar_button.xul + +style chrome://global/content/customizeToolbar.xul chrome://https-everywhere/skin/https-everywhere.css +component {0f9ab521-986d-4ad8-9c1f-6934e195c15c} components/ssl-observatory.js +contract @eff.org/ssl-observatory;1 {0f9ab521-986d-4ad8-9c1f-6934e195c15c} + +category profile-after-change SSLObservatory @eff.org/ssl-observatory;1 diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/about.xul b/data/extensions/https-everywhere@eff.org/chrome/content/about.xul new file mode 100644 index 0000000..cf57e9d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/about.xul @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> + +<dialog id="https-everywhere-about" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + buttons="accept" + title="&https-everywhere.about.title;" + width="640" + height="480" + align="center"> + + <script type="application/x-javascript" + src="chrome://https-everywhere/content/preferences.js"/> + <vbox style="overflow:auto" flex="1"> + <label style="text-align:center; font-weight:bold; font-size:22px;">&https-everywhere.about.ext_name;</label> + <label style="text-align:center; font-size:18px; margin-bottom:10px;">&https-everywhere.about.ext_description;</label> + + <groupbox> + <caption label="&https-everywhere.about.version;" /> + <label>3.5.1</label> + </groupbox> + + <groupbox> + <caption label="&https-everywhere.about.created_by;" /> + <label>Mike Perry and Peter Eckersley</label> + </groupbox> + + <groupbox> + <caption label="&https-everywhere.about.librarians;" /> + <label>Seth Schoen, MB and Andreas Jonsson</label> + </groupbox> + + <groupbox> + <caption label="&https-everywhere.about.thanks;" /> + <label>Many many contributors, including Aaron Swartz, Alec Moskvin, + Aleksey Kosterin, Alex Xu, Anas Qtiesh, Artyom Gavrichenkov, Brian + Carpenter, Chris Palmer, Christian Inci, Christopher Liu, Claudio + Moretti, Colonel Graff, Dan Auerbach, Daniel Kahn Gillmor, dm0, The + Doctor, Felix Geyer, Fruitless Creek, George Kargiotakis, haviah, Heiko + Adams, Jeroen van der Gun, Jay Weisskopf, Jacob Taylor, Jonathan Davies, Jorge Bernal, + katmagic, Kevin Jacobs, Korte, Liam K, Leonardo Brondani Schenkel, Marti Raudsepp, Micah Lee, Mike + Cardwell, Mangix, Matthias-Christian Ott, Mikko Harhanen, Mishari Muqbil, Neheb, Ori Avtalion, Osama Khalid, + nitrox, Pablo Castellano, Paul Wise, Pavel Kazakov, Phol Paucar, Richard + Green, Roan Kattouw, Rules Moore, Stefan Tomanek, Sam Reed, Steve + Milner, Sujit Rao, TK-999, Vendo, Victor Garin, Weiland Hoffmann, Whizz + Mo and Yan Zhu. Also, portions of HTTPS Everywhere are based on code + from NoScript, by Giorgio Maone and others. We are grateful for their + excellent work!</label> + </groupbox> + + <label style="font-weight:bold; margin-top:10px;"> + &https-everywhere.about.contribute; + <label id="donate link" + value="&https-everywhere.about.donate_tor;" + style="color: blue; cursor:hand; text-decoration:underline; font-style:bold" + onmouseover="event.target.style.cursor='pointer'" + onmouseout="event.target.style.cursor='default'" + onclick="window_opener('https://www.torproject.org/donate/donate.html.en')"/> + or + <label id="donate link2" + value="&https-everywhere.about.donate_eff;" + style="color: blue; cursor:hand; text-decoration:underline; font-style:bold" + onmouseover="event.target.style.cursor='pointer'" + onmouseout="event.target.style.cursor='default'" + onclick="window_opener('https://www.eff.org/donate')"/> + </label> + </vbox> +</dialog> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js new file mode 100644 index 0000000..6949167 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js @@ -0,0 +1,266 @@ +// An ApplicableList is a structure used to keep track of which rulesets +// were applied, and which ones weren't but might have been, to the contents +// of a given page (top level nsIDOMWindow) + +serial_number = 0; + +function ApplicableList(logger, doc, domWin) { + this.domWin = domWin; + this.uri = doc.baseURIObject.clone(); + if (!this.uri) { + this.log(WARN,"NULL CLONING URI " + doc); + if (doc) + this.log(WARN,"NULL CLONING URI " + doc.baseURIObject); + if (doc.baseURIObject) + this.log(WARN,"NULL CLONING URI " + doc.baseURIObject.spec); + } + this.home = doc.baseURIObject.spec; // what doc we're housekeeping for + this.log = logger; + this.active = {}; + this.breaking = {}; // rulesets with redirection loops + this.inactive = {}; + this.moot={}; // rulesets that might be applicable but uris are already https + this.all={}; // active + breaking + inactive + moot + serial_number += 1; + this.serial = serial_number; + this.log(DBUG,"Alist serial #" + this.serial + " for " + this.home); +} + +ApplicableList.prototype = { + + empty: function() { + // Empty everything, used when toggles occur in order to ensure that if + // the reload fails, the resulting list is not eroneous + this.active = {}; + this.breaking = {}; + this.inactive = {}; + this.moot={}; + this.all={}; + }, + + active_rule: function(ruleset) { + this.log(INFO,"active rule " + ruleset.name +" in "+ this.home +" -> " + + this.domWin.document.baseURIObject.spec+ " serial " + this.serial); + this.active[ruleset.name] = ruleset; + this.all[ruleset.name] = ruleset; + }, + + breaking_rule: function(ruleset) { + this.log(NOTE,"breaking rule " + ruleset.name +" in "+ this.home +" -> " + + this.domWin.document.baseURIObject.spec+ " serial " + this.serial); + this.breaking[ruleset.name] = ruleset; + this.all[ruleset.name] = ruleset; + }, + + inactive_rule: function(ruleset) { + + this.log(INFO,"inactive rule " + ruleset.name +" in "+ this.home +" -> " + + this.domWin.document.baseURIObject.spec+ " serial " + this.serial); + this.inactive[ruleset.name] = ruleset; + this.all[ruleset.name] = ruleset; + }, + + moot_rule: function(ruleset) { + this.log(INFO,"moot rule " + ruleset.name +" in "+ this.home + " serial " + this.serial); + this.moot[ruleset.name] = ruleset; + this.all[ruleset.name] = ruleset; + }, + + dom_handler: function(operation,key,data,src,dst) { + // See https://developer.mozilla.org/En/DOM/UserDataHandler + if (src && dst) + dst.setUserData(key, data, this.dom_handler); + }, + + populate_list: function() { + // The base URI of the dom tends to be loaded from some /other/ + // ApplicableList, so pretend we're loading it from here. + HTTPSEverywhere.instance.https_rules.rewrittenURI(this, this.uri); + this.log(DBUG, "populating using alist #" + this.serial); + }, + + populate_menu: function(document, menupopup, weird) { + this.populate_list(); + this.document = document; + + var https_everywhere = CC["@eff.org/https-everywhere;1"].getService(Components.interfaces.nsISupports).wrappedJSObject; + + // get the menu popup + this.menupopup = menupopup; + + // empty it all of its menuitems + while(this.menupopup.firstChild.tagName != "menuseparator") { + this.menupopup.removeChild(this.menupopup.firstChild); + } + + // add global enable/disable toggle button + var strings = document.getElementById("HttpsEverywhereStrings"); + + var enableLabel = document.createElement('menuitem'); + var text = strings.getString("https-everywhere.menu.globalDisable"); + if(!https_everywhere.prefs.getBoolPref("globalEnabled")) + text = strings.getString("https-everywhere.menu.globalEnable"); + + enableLabel.setAttribute('label', text); + enableLabel.setAttribute('command', 'https-everywhere-menuitem-globalEnableToggle'); + this.prepend_child(enableLabel); + + // add the label at the top + var any_rules = false; + for(var x in this.all) { + any_rules = true; // how did JavaScript get this ugly? + break; + } + var label = document.createElement('menuitem'); + label.setAttribute('label', strings.getString('https-everywhere.menu.enableDisable')); + label.setAttribute('command', 'https-everywhere-menuitem-preferences'); + var label2 = false; + if (!any_rules) { + label2 = document.createElement('menuitem'); + if (!weird) text = strings.getString('https-everywhere.menu.noRules'); + else text = strings.getString('https-everywhere.menu.unknownRules'); + label2.setAttribute('label', text); + label2.setAttribute('command', 'https-everywhere-menuitem-preferences'); + label2.setAttribute('style', 'color:#909090;'); + } + + // create a commandset if it doesn't already exist + this.commandset = document.getElementById('https-everywhere-commandset'); + if(!this.commandset) { + this.commandset = document.createElement('commandset'); + this.commandset.setAttribute('id', 'https-everywhere-commandset'); + var win = document.getElementById('main-window'); + win.appendChild(this.commandset); + } else { + // empty commandset + while(this.commandset.firstChild) + this.commandset.removeChild(this.commandset.firstChild); + } + + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] + .getService(Components.interfaces.nsIWindowMediator); + + var domWin = wm.getMostRecentWindow("navigator:browser").content.document.defaultView.top; + var location = domWin.document.baseURIObject.asciiSpec; //full url, including about:certerror details + + if(location.substr(0, 6) == "about:"){ + //"From" portion of the rule is retrieved from the location bar via document.getElementById("urlbar").value + + var fromHost = document.getElementById("urlbar").value; + + //scheme must be trimmed out to check for applicable rulesets + if(fromHost.indexOf("://") != -1) + fromHost = fromHost.substr(fromHost.indexOf("://") + 3, fromHost.length); + + //trim off any page locations - we only want the host - e.g. domain.com + if(fromHost.indexOf("/") != -1) + fromHost = fromHost.substr(0, fromHost.indexOf("/")); + + // Search for applicable rulesets for the host listed in the location bar + var plist = HTTPSRules.potentiallyApplicableRulesets(fromHost); + for (var i = 0 ; i < plist.length ; i++){ + //For each applicable rulset, determine active/inactive, and append to proper list. + var ruleOn = false; + try { + if(https_everywhere.rule_toggle_prefs.getBoolPref(plist[i].name)) + ruleOn = true; + } catch(e) { + if(https_everywhere.https_rules.rulesetsByName[plist[i].name].active) + ruleOn = true; + } + if(ruleOn) + this.active_rule(plist[i]); + else + this.inactive_rule(plist[i]); + } + } + + // add all applicable commands + for(var x in this.breaking) + this.add_command(this.breaking[x]); + for(var x in this.active) + this.add_command(this.active[x]); + for(var x in this.moot) + this.add_command(this.moot[x]); + for(var x in this.inactive) + this.add_command(this.inactive[x]); + + if(https_everywhere.prefs.getBoolPref("globalEnabled")){ + // add all the menu items + for (var x in this.inactive) + this.add_menuitem(this.inactive[x], 'inactive'); + // rules that are active for some uris are not really moot + for (var x in this.moot) + if (!(x in this.active)) + this.add_menuitem(this.moot[x], 'moot'); + // break once break everywhere + for (var x in this.active) + if (!(x in this.breaking)) + this.add_menuitem(this.active[x], 'active'); + for (var x in this.breaking) + this.add_menuitem(this.breaking[x], 'breaking'); + + if (label2) this.prepend_child(label2); + this.prepend_child(label); + } + + }, + + prepend_child: function(node) { + this.menupopup.insertBefore(node, this.menupopup.firstChild); + }, + + add_command: function(rule) { + var command = this.document.createElement("command"); + command.setAttribute('id', rule.id+'-command'); + command.setAttribute('label', rule.name); + command.setAttribute('oncommand', 'toggle_rule("'+rule.id+'")'); + this.commandset.appendChild(command); + }, + + // add a menu item for a rule -- type is "active", "inactive", "moot", + // or "breaking" + + add_menuitem: function(rule, type) { + // create the menuitem + var item = this.document.createElement('menuitem'); + item.setAttribute('command', rule.id+'-command'); + item.setAttribute('class', type+'-item menuitem-iconic'); + item.setAttribute('label', rule.name); + + // we can get confused if rulesets have their state changed after the + // ApplicableList was constructed + if (!rule.active && (type == 'active' || type == 'moot')) + type = 'inactive'; + if (rule.active && type == 'inactive') + type = 'moot'; + + // set the icon + var image_src; + if (type == 'active') image_src = 'tick.png'; + else if (type == 'inactive') image_src = 'cross.png'; + else if (type == 'moot') image_src = 'tick-moot.png'; + else if (type == 'breaking') image_src = 'loop.png'; + item.setAttribute('image', 'chrome://https-everywhere/skin/'+image_src); + + // all done + this.prepend_child(item); + }, + + show_applicable: function() { + this.log(WARN, "Applicable list number " + this.serial); + for (var x in this.active) + this.log(WARN,"Active: " + this.active[x].name); + + for (var x in this.breaking) + this.log(WARN,"Breaking: " + this.breaking[x].name); + + for (x in this.inactive) + this.log(WARN,"Inactive: " + this.inactive[x].name); + + for (x in this.moot) + this.log(WARN,"Moot: " + this.moot[x].name); + + } +}; + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js new file mode 100644 index 0000000..551bcab --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js @@ -0,0 +1,387 @@ +function CtxCapturingListener(tracingChannel, captureObserver) {
+ this.originalListener = tracingChannel.setNewListener(this);
+ this.captureObserver = captureObserver;
+}
+CtxCapturingListener.prototype = {
+ originalListener: null,
+ originalCtx: null,
+ onStartRequest: function(request, ctx) {
+ this.originalCtx = ctx;
+ if (this.captureObserver) {
+ this.captureObserver.observeCapture(request, this);
+ }
+ },
+ onDataAvailable: function(request, ctx, inputStream, offset, count) {},
+ onStopRequest: function(request, ctx, statusCode) {},
+ QueryInterface: xpcom_generateQI([Ci.nsIStreamListener])
+};
+
+function ChannelReplacement(chan, newURI, newMethod) {
+ return this._init(chan, newURI, newMethod);
+}
+
+ChannelReplacement.supported = "nsITraceableChannel" in Ci;
+
+ChannelReplacement.runWhenPending = function(channel, callback) {
+ if (channel.isPending()) {
+ callback();
+ return false;
+ } else {
+ new LoadGroupWrapper(channel, callback);
+ return true;
+ }
+};
+
+
+ChannelReplacement.prototype = {
+ listener: null,
+ context: null,
+ oldChannel: null,
+ channel: null,
+ window: null,
+ suspended: false,
+
+ get _unsupportedError() {
+ return new Error("Can't replace channels without nsITraceableChannel!");
+ },
+
+ get _classifierClass() {
+ delete this.__proto__._classifierClass;
+ return this.__proto__._classifierClass = Cc["@mozilla.org/channelclassifier"];
+ },
+
+ _autoHeadersRx: /^(?:Host|Cookie|Authorization)$|Cache|^If-/,
+ visitHeader: function(key, val) {
+ try {
+ // we skip authorization and cache-related fields which should be automatically set
+ if (!this._autoHeadersRx.test(key)) this.channel.setRequestHeader(key, val, false);
+ } catch (e) {
+ dump(e + "\n");
+ }
+ },
+
+ _init: function(chan, newURI, newMethod) {
+ if (!(ChannelReplacement.supported && chan instanceof Ci.nsITraceableChannel))
+ throw this._unsupportedError;
+
+ newURI = newURI || chan.URI;
+
+ var newChan = IOS.newChannelFromURI(newURI);
+
+ this.oldChannel = chan;
+ this.channel = newChan;
+
+ // porting of http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2750
+
+ var loadFlags = chan.loadFlags;
+
+ if (chan.URI.schemeIs("https"))
+ loadFlags &= ~chan.INHIBIT_PERSISTENT_CACHING;
+
+
+ newChan.loadGroup = chan.loadGroup;
+ newChan.notificationCallbacks = chan.notificationCallbacks;
+ newChan.loadFlags = loadFlags | newChan.LOAD_REPLACE;
+ + if (!(newChan instanceof Ci.nsIHttpChannel))
+ return this;
+
+ // copy headers
+ chan.visitRequestHeaders(this);
+
+ if (!newMethod || newMethod === chan.requestMethod) {
+ if (newChan instanceof Ci.nsIUploadChannel && chan instanceof Ci.nsIUploadChannel && chan.uploadStream ) {
+ var stream = chan.uploadStream;
+ if (stream instanceof Ci.nsISeekableStream) {
+ stream.seek(stream.NS_SEEK_SET, 0);
+ }
+
+ try {
+ let ctype = chan.getRequestHeader("Content-type");
+ let clen = chan.getRequestHeader("Content-length");
+ if (ctype && clen) {
+ newChan.setUploadStream(stream, ctype, parseInt(clen, 10));
+ }
+ } catch(e) {
+ newChan.setUploadStream(stream, '', -1);
+ }
+
+ newChan.requestMethod = chan.requestMethod;
+ }
+ } else {
+ newChan.requestMethod = newMethod;
+ }
+
+ if (chan.referrer) newChan.referrer = chan.referrer;
+ newChan.allowPipelining = chan.allowPipelining;
+ newChan.redirectionLimit = chan.redirectionLimit - 1;
+ if (chan instanceof Ci.nsIHttpChannelInternal && newChan instanceof Ci.nsIHttpChannelInternal) {
+ if (chan.URI == chan.documentURI) {
+ newChan.documentURI = newURI;
+ } else {
+ newChan.documentURI = chan.documentURI;
+ }
+ }
+
+ if (chan instanceof Ci.nsIEncodedChannel && newChan instanceof Ci.nsIEncodedChannel) {
+ newChan.applyConversion = chan.applyConversion;
+ }
+
+ // we can't transfer resume information because we can't access mStartPos and mEntityID :(
+ // http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2826
+
+ if ("nsIApplicationCacheChannel" in Ci &&
+ chan instanceof Ci.nsIApplicationCacheChannel && newChan instanceof Ci.nsIApplicationCacheChannel) {
+ newChan.applicationCache = chan.applicationCache;
+ newChan.inheritApplicationCache = chan.inheritApplicationCache;
+ }
+
+ if (chan instanceof Ci.nsIPropertyBag && newChan instanceof Ci.nsIWritablePropertyBag)
+ for (var properties = chan.enumerator, p; properties.hasMoreElements();)
+ if ((p = properties.getNext()) instanceof Ci.nsIProperty)
+ newChan.setProperty(p.name, p.value);
+
+ if (chan.loadFlags & chan.LOAD_DOCUMENT_URI) {
+ this.window = IOUtil.findWindow(chan);
+ if (this.window) this.window._replacedChannel = chan;
+ }
+
+ return this;
+ },
+
+ _onChannelRedirect: function() {
+ var oldChan = this.oldChannel;
+ var newChan = this.channel;
+
+ if (this.realRedirect) {
+ if (oldChan.redirectionLimit === 0) {
+ oldChan.cancel(NS_ERROR_REDIRECT_LOOP);
+ throw NS_ERROR_REDIRECT_LOOP;
+ }
+ } else newChan.redirectionLimit += 1;
+
+
+
+ // nsHttpHandler::OnChannelRedirect()
+
+ const CES = Ci.nsIChannelEventSink;
+ const flags = CES.REDIRECT_INTERNAL;
+ this._callSink(
+ Cc["@mozilla.org/netwerk/global-channel-event-sink;1"].getService(CES),
+ oldChan, newChan, flags);
+ var sink;
+
+ for (let cess = Cc['@mozilla.org/categorymanager;1'].getService(CI.nsICategoryManager)
+ .enumerateCategory("net-channel-event-sinks");
+ cess.hasMoreElements();
+ ) {
+ sink = cess.getNext();
+ if (sink instanceof CES)
+ this._callSink(sink, oldChan, newChan, flags);
+ }
+ sink = IOUtil.queryNotificationCallbacks(oldChan, CES);
+ if (sink) this._callSink(sink, oldChan, newChan, flags);
+
+ // ----------------------------------
+
+ newChan.originalURI = oldChan.originalURI;
+
+ sink = IOUtil.queryNotificationCallbacks(oldChan, Ci.nsIHttpEventSink);
+ if (sink) sink.onRedirect(oldChan, newChan);
+ },
+
+ _callSink: function(sink, oldChan, newChan, flags) {
+ try {
+ if ("onChannelRedirect" in sink) sink.onChannelRedirect(oldChan, newChan, flags);
+ else sink.asyncOnChannelRedirect(oldChan, newChan, flags, this._redirectCallback);
+ } catch(e) {
+ if (e.toString().indexOf("(NS_ERROR_DOM_BAD_URI)") !== -1 && oldChan.URI.spec !== newChan.URI.spec) {
+ let oldURL = oldChan.URI.spec;
+ try {
+ oldChan.URI.spec = newChan.URI.spec;
+ this._callSink(sink, oldChan, newChan, flags);
+ } catch(e1) {
+ throw e;
+ } finally {
+ oldChan.URI.spec = oldURL;
+ }
+ } else if (e.message.indexOf("(NS_ERROR_NOT_AVAILABLE)") === -1) throw e;
+ }
+ },
+
+ _redirectCallback: ("nsIAsyncVerifyRedirectCallback" in Ci)
+ ? {
+ QueryInterface: xpcom_generateQI([Ci.nsIAsyncVerifyRedirectCallback]),
+ onRedirectVerifyCallback: function(result) {}
+ }
+ : null
+ ,
+
+ replace: function(realRedirect, callback) {
+ let self = this;
+ let oldChan = this.oldChannel;
+ this.realRedirect = !!realRedirect;
+ if (typeof(callback) !== "function") {
+ callback = this._defaultCallback;
+ }
+ ChannelReplacement.runWhenPending(oldChan, function() {
+ if (oldChan.status) return; // channel's doom had been already defined
+
+ let ccl = new CtxCapturingListener(oldChan, self);
+ self.loadGroup = oldChan.loadGroup;
+
+ oldChan.loadGroup = null; // prevents the wheel from stopping spinning
+
+
+ if (self._redirectCallback) { // Gecko >= 2
+ // this calls asyncAbort, which calls onStartRequest on our listener
+ oldChan.cancel(NS_BINDING_REDIRECTED);
+ self.suspend(); // believe it or not, this will defer asyncAbort() notifications until resume()
+ callback(self);
+ } else {
+ // legacy (Gecko < 2)
+ self.observeCapture = function(req, ccl) {
+ self.open = function() { self._redirect(ccl); };
+ callback(self);
+ };
+ oldChan.cancel(NS_BINDING_REDIRECTED);
+ }
+
+
+ });
+ },
+
+ observeCapture: function(req, ccl) {
+ this._redirect(ccl);
+ },
+
+ _defaultCallback: function(replacement) {
+ replacement.open();
+ },
+
+ open: function() {
+ this.resume(); // this triggers asyncAbort and the listeners in cascade
+ },
+ _redirect: function(ccl) {
+ let oldChan = this.oldChannel,
+ newChan = this.channel,
+ overlap;
+
+ if (!(this.window && (overlap = this.window._replacedChannel) !== oldChan)) {
+ try {
+ if (ABE.consoleDump && this.window) {
+ ABE.log("Opening delayed channel: " + oldChan.name + " - (current loading channel for this window " + (overlap && overlap.name) + ")");
+ }
+
+ oldChan.loadGroup = this.loadGroup;
+
+ this._onChannelRedirect();
+ newChan.asyncOpen(ccl.originalListener, ccl.originalCtx);
+
+ if (this.window && this.window != IOUtil.findWindow(newChan)) {
+ // late diverted load, unwanted artifact, abort
+ IOUtil.abort(newChan);
+ } else {
+ // safe browsing hook
+ if (this._classifierClass)
+ this._classifierClass.createInstance(Ci.nsIChannelClassifier).start(newChan, true);
+ }
+ } catch (e) {
+ ABE.log(e);
+ }
+ } else {
+ if (ABE.consoleDump) {
+ ABE.log("Detected double load on the same window: " + oldChan.name + " - " + (overlap && overlap.name));
+ }
+ }
+
+ this.dispose();
+ },
+
+ suspend: function() {
+ if (!this.suspended) {
+ this.oldChannel.suspend();
+ this.suspended = true;
+ }
+ },
+ resume: function() {
+ if (this.suspended) {
+ this.suspended = false;
+ try {
+ this.oldChannel.resume();
+ } catch (e) {}
+ }
+ },
+
+ dispose: function() {
+ this.resume();
+ if (this.loadGroup) {
+ try {
+ this.loadGroup.removeRequest(this.oldChannel, null, NS_BINDING_REDIRECTED);
+ } catch (e) {}
+ this.loadGroup = null;
+ }
+
+ }
+};
+
+function LoadGroupWrapper(channel, callback) {
+ this._channel = channel;
+ this._inner = channel.loadGroup;
+ this._callback = callback;
+ channel.loadGroup = this;
+}
+LoadGroupWrapper.prototype = {
+ QueryInterface: xpcom_generateQI([Ci.nsILoadGroup]),
+
+ get activeCount() {
+ return this._inner ? this._inner.activeCount : 0;
+ },
+ set defaultLoadRequest(v) {
+ return this._inner ? this._inner.defaultLoadRequest = v : v;
+ },
+ get defaultLoadRequest() {
+ return this._inner ? this._inner.defaultLoadRequest : null;
+ },
+ set groupObserver(v) {
+ return this._inner ? this._inner.groupObserver = v : v;
+ },
+ get groupObserver() {
+ return this._inner ? this._inner.groupObserver : null;
+ },
+ set notificationCallbacks(v) {
+ return this._inner ? this._inner.notificationCallbacks = v : v;
+ },
+ get notificationCallbacks() {
+ return this._inner ? this._inner.notificationCallbacks : null;
+ },
+ get requests() {
+ return this._inner ? this._inner.requests : this._emptyEnum;
+ },
+
+ addRequest: function(r, ctx) {
+ this.detach();
+ if (this._inner) try {
+ this._inner.addRequest(r, ctx);
+ } catch(e) {
+ // addRequest may have not been implemented
+ }
+ if (r === this._channel)
+ try {
+ this._callback(r, ctx);
+ } catch (e) {}
+ },
+ removeRequest: function(r, ctx, status) {
+ this.detach();
+ if (this._inner) this._inner.removeRequest(r, ctx, status);
+ },
+
+ detach: function() {
+ if (this._channel.loadGroup) this._channel.loadGroup = this._inner;
+ },
+ _emptyEnum: {
+ QueryInterface: xpcom_generateQI([Ci.nsISimpleEnumerator]),
+ getNext: function() { return null; },
+ hasMoreElements: function() { return false; }
+ }
+};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js new file mode 100644 index 0000000..9afe0a8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js @@ -0,0 +1,148 @@ +function Cookie(s, host) {
+ this.parse(s, host);
+}
+Cookie.computeId = function(c) {
+ return c.name + ";" + c.host + "/" + c.path;
+};
+Cookie.find = function(f) {
+ var cc = Cookie.prototype.cookieManager.enumerator;
+ var c;
+ while (cc.hasMoreElements()) {
+ if (f(c = cc.getNext())) return c;
+ }
+ return null;
+};
+
+Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' };
+Cookie.prototype = {
+
+ name: '',
+ value: '',
+ source: '',
+ domain: '',
+ host: '',
+ rawHost: '',
+ path: '',
+ secure: false,
+ httponly: false,
+ session: true,
+ expires: 0,
+
+ id: '',
+
+
+ toString: function() {
+ var c = [this['name'] + "=" + this.value];
+ var v;
+ const aa = Cookie.attributes;
+ for (var k in aa) {
+ var p = aa[k];
+ v = this[k];
+ switch(typeof(v)) {
+ case "string":
+ if (v) c.push(p + "=" + v);
+ break;
+ case "boolean":
+ if (v) c.push(p);
+ break;
+ case "number":
+ if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString());
+ break;
+ }
+ }
+ return c.join("; ");
+ },
+ parse: function(s, host) {
+ var p;
+ if (this.source) {
+ // cleanup for recycle
+ for (p in this) {
+ if (typeof (p) != "function") delete this[p];
+ }
+ }
+ this.source = s;
+ this.host = host;
+
+ var parts = s.split(/;\s*/);
+ var nv = parts.shift().split("=");
+
+ this.name = nv.shift() || '';
+ this.value = nv.join('=') || '';
+
+ var n, v;
+ for each (p in parts) {
+ nv = p.split("=");
+ switch (n = nv[0].toLowerCase()) {
+ case 'expires':
+ v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000);
+ break;
+ case 'domain':
+ case 'path':
+ v = nv[1] || '';
+ break;
+ case 'secure':
+ case 'httponly':
+ v = true;
+ break;
+ default:
+ n = 'unknown';
+ }
+ this[n] = v;
+ }
+ if (!this.expires) {
+ this.session = true;
+ this.expires = Math.round(new Date() / 1000) + 31536000;
+ }
+ if (this.domain) {
+ if (!this.isDomain) this.domain = "." + this.domain;
+ this.host = this.domain;
+ }
+ this.rawHost = this.host.replace(/^\./, '');
+
+ this.id = Cookie.computeId(this);
+ },
+
+
+ get cookieManager() {
+ delete Cookie.prototype.cookieManager;
+ var cman = Cc["@mozilla.org/cookiemanager;1"]
+ .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager);
+ return Cookie.prototype.cookieManager = cman;
+ },
+ belongsTo: function(host, path) {
+ if (path && this.path && path.indexOf(this.path) != 0) return false;
+ if (host == this.rawHost) return true;
+ var d = this.domain;
+ return d && (host == d || this.isDomain && host.slice(-d.length) == d);
+ },
+ save: function() {
+ this.save = ("cookieExists" in this.cookieManager)
+ ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); }
+ : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);}
+ ;
+ return this.save();
+ },
+ exists: function() {
+ var cc = this.cookieManager.enumerator;
+ while(cc.hasMoreElements()) {
+ if (this.sameAs(cc.getNext())) return true;
+ }
+ return false;
+ },
+
+ sameAs: function(c) {
+ (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2);
+ return Cookie.computeId(c) == this.id;
+ },
+
+ // nsICookie2 interface extras
+ get isSecure() { return this.secure; },
+ get expiry() { return this.expires; },
+ get isSession() { return this.session; },
+ get isHttpOnly() { return this.httponly; },
+ get isDomain() { return this.domain && this.domain[0] == '.'; },
+ policy: 0,
+ status: 0,
+ QueryInterface: xpcom_generateQI([Ci.nsICookie, Ci.nsICookie2])
+
+};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js new file mode 100644 index 0000000..c39a0ef --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js @@ -0,0 +1,296 @@ +INCLUDE('Cookie');
+// XXX: Disable STS for now.
+var STS = {
+ isSTSURI : function(uri) {
+ return false;
+ }
+};
+
+// Hack. We only need the part of the policystate that tracks content
+// policy loading.
+const PolicyState = {
+ attach: function(channel) {
+ IOUtil.attachToChannel(channel, "httpseverywhere.policyLoaded", true);
+ },
+
+ extract: function(channel) {
+ var res = IOUtil.extractFromChannel(channel,
+ "httpseverywhere.policyLoaded", true);
+ return res;
+ },
+};
+
+const HTTPS = {
+ ready: false,
+
+ secureCookies: true,
+ secureCookiesExceptions: null,
+ secureCookiesForced: null,
+ httpsForced: null,
+ httpsForcedExceptions: null,
+ httpsRewrite: null,
+
+ replaceChannel: function(applicable_list, channel) {
+ var blob = HTTPSRules.rewrittenURI(applicable_list, channel.URI.clone());
+ if (null == blob) return false; // no rewrite
+ var uri = blob.newuri;
+ if (!uri) this.log(WARN, "OH NO BAD ARGH\nARGH");
+
+ var c2 = channel.QueryInterface(CI.nsIHttpChannel);
+ this.log(DBUG, channel.URI.spec+": Redirection limit is " + c2.redirectionLimit);
+ // XXX This used to be (c2.redirectionLimit == 1), but that's very
+ // inefficient in a case (eg amazon) where this may happen A LOT.
+ // Rather than number like 10, we should use the starting value
+ // in network.http.redirection-limit minus some counter
+ if (c2.redirectionLimit < 10) {
+ this.log(WARN, "Redirection loop trying to set HTTPS on:\n " +
+ channel.URI.spec +"\n(falling back to HTTP)");
+ if (!blob.applied_ruleset) {
+ this.log(WARN,"Blacklisting rule for: " + channel.URI.spec);
+ https_everywhere_blacklist[channel.URI.spec] = true;
+ }
+ https_everywhere_blacklist[channel.URI.spec] = blob.applied_ruleset;
+ var domain = null;
+ try { domain = channel.URI.host; } catch (e) {}
+ if (domain) https_blacklist_domains[domain] = true;
+ return false;
+ }
+
+ // Check for the new internal redirect API. If it exists, use it.
+ if (!"redirectTo" in channel) {
+ this.log(WARN, "nsIHTTPChannel.redirectTo API is missing. This version of HTTPS Everywhere is useless!!!!\n!!!\n");
+ return false;
+ }
+
+ this.log(INFO, "Using nsIHttpChannel.redirectTo: " + channel.URI.spec + " -> " + uri.spec);
+ try {
+ channel.redirectTo(uri);
+ return true;
+ } catch(e) {
+ // This should not happen. We should only get exceptions if
+ // the channel was already open.
+ this.log(WARN, "Exception on nsIHttpChannel.redirectTo: "+e);
+
+ // Don't return: Fallback to NoScript ChannelReplacement.js
+ }
+ this.log(WARN,"Aborting redirection " + channel.name + ", should be HTTPS!");
+ IOUtil.abort(channel);
+ return false;
+ },
+
+ // getApplicableListForContext was remove along with the nsIContentPolicy
+ // bindings and the and forceURI path that used them.
+
+ onCrossSiteRequest: function(channel, origin, browser, rw) {
+ try {
+ this.handleCrossSiteCookies(channel, origin, browser);
+ } catch(e) {
+ this.log(WARN, e + " --- " + e.stack);
+ }
+ },
+
+ registered: false,
+ handleSecureCookies: function(req) {
+
+ try {
+ req = req.QueryInterface(CI.nsIHttpChannel);
+ } catch(e) {
+ this.log(WARN, "Request is not an nsIHttpChannel: " + req);
+ return;
+ }
+ if (!this.secureCookies) return;
+ var uri = req.URI;
+ if (!uri) {
+ this.log(WARN,"No URI inside request " +req);
+ return;
+ }
+ //this.log(DBUG, "Cookie hunting in " + uri.spec);
+ var alist = HTTPSEverywhere.instance.getApplicableListForChannel(req);
+ if (!alist)
+ this.log(INFO, "No alist for cookies for "+(req.URI) ? req.URI.spec : "???");
+
+ if (uri.schemeIs("https")) {
+ var host = uri.host;
+ try {
+ var cookies = req.getResponseHeader("Set-Cookie");
+ } catch(mayHappen) {
+ //this.log(VERB,"Exception hunting Set-Cookie in headers: " + mayHappen);
+ return;
+ }
+ if (!cookies) return;
+ var c;
+ for each (var cs in cookies.split("\n")) {
+ this.log(DBUG, "Examining cookie: ");
+ c = new Cookie(cs, host);
+ if (!c.secure && HTTPSRules.shouldSecureCookie(alist, c, true)) {
+ this.log(INFO, "Securing cookie: " + c.domain + " " + c.name);
+ c.secure = true;
+ req.setResponseHeader("Set-Cookie", c.source + ";Secure", true);
+ }
+ }
+
+ }
+ },
+
+ handleInsecureCookie: function(c) {
+ if (HTTPSRules.shouldSecureCookie(null, c, false)) {
+ this.log(INFO, "Securing cookie from event: " + c.domain + " " + c.name);
+ var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]
+ .getService(Components.interfaces.nsICookieManager2);
+ //some braindead cookies apparently use umghzabilliontrabilions
+ var expiry = Math.min(c.expiry, Math.pow(2,31));
+ cookieManager.remove(c.host, c.name, c.path, false);
+ cookieManager.add(c.host, c.path, c.name, c.value, true, c.isHTTPOnly, c.isSession, expiry);
+ }
+ },
+
+ handleCrossSiteCookies: function(req, origin, browser) {
+
+ var unsafeCookies = this.getUnsafeCookies(browser);
+ if (!unsafeCookies) return;
+
+ var uri = req.URI;
+ var dscheme = uri.scheme;
+
+ var oparts = origin && origin.match(/^(https?):\/\/([^\/:]+).*?(\/.*)/);
+ if (!(oparts && /https?/.test(dscheme))) return;
+
+ var oscheme = oparts[1];
+ if (oscheme == dscheme) return; // we want to check only cross-scheme requests
+
+ var dsecure = dscheme == "https";
+
+ if (dsecure && !ns.getPref("secureCookies.recycle", false)) return;
+
+ var dhost = uri.host;
+ var dpath = uri.path;
+
+ var ohost = oparts[2];
+ var opath = oparts[3];
+
+ var ocookieCount = 0, totCount = 0;
+ var dcookies = [];
+ var c;
+
+ for (var k in unsafeCookies) {
+ c = unsafeCookies[k];
+ if (!c.exists()) {
+ delete unsafeCookies[k];
+ } else {
+ totCount++;
+ if (c.belongsTo(dhost, dpath) && c.secure != dsecure) { // either secure on http or not secure on https
+ dcookies.push(c);
+ }
+ if (c.belongsTo(ohost, opath)) {
+ ocookieCount++;
+ }
+ }
+ }
+
+ if (!totCount) {
+ this.setUnsafeCookies(browser, null);
+ return;
+ }
+
+ // We want to "desecurify" cookies only if cross-navigation to unsafe
+ // destination originates from a site sharing some secured cookies
+
+ if (ocookieCount == 0 && !dsecure || !dcookies.length) return;
+
+ if (dsecure) {
+ this.log(WARN,"Detected cross-site navigation with secured cookies: " + origin + " -> " + uri.spec);
+
+ } else {
+ this.log(WARN,"Detected unsafe navigation with NoScript-secured cookies: " + origin + " -> " + uri.spec);
+ this.log(WARN,uri.prePath + " cannot support secure cookies because it does not use HTTPS. Consider forcing HTTPS for " + uri.host + " in NoScript's Advanced HTTPS options panel.");
+ }
+
+ var cs = CC['@mozilla.org/cookieService;1'].getService(CI.nsICookieService).getCookieString(uri, req);
+
+ for each (c in dcookies) {
+ c.secure = dsecure;
+ c.save();
+ this.log(WARN,"Toggled secure flag on " + c);
+ }
+
+ if (cs) {
+ dcookies.push.apply(
+ dcookies, cs.split(/\s*;\s*/).map(function(cs) { var nv = cs.split("="); return { name: nv.shift(), value: nv.join("=") }; })
+ .filter(function(c) { return dcookies.every(function(x) { return x.name != c.name; }); })
+ );
+ }
+
+ cs = dcookies.map(function(c) { return c.name + "=" + c.value; }).join("; ");
+
+ this.log(WARN,"Sending Cookie for " + dhost + ": " + cs);
+ req.setRequestHeader("Cookie", cs, false); // "false" because merge syntax breaks Cookie header
+ },
+
+
+ cookiesCleanup: function(refCookie) {
+ var downgraded = [];
+
+ var ignored = this.secureCookiesExceptions;
+ var disabled = !this.secureCookies;
+ var bi = DOM.createBrowserIterator();
+ var unsafe, k, c, total, deleted;
+ for (var browser; browser = bi.next();) {
+ unsafe = this.getUnsafeCookies(browser);
+ if (!unsafe) continue;
+ total = deleted = 0;
+ for (k in unsafe) {
+ c = unsafe[k];
+ total++;
+ if (disabled || (refCookie ? c.belongsTo(refCookie.host) : ignored && ignored.test(c.rawHost))) {
+ if (c.exists()) {
+ this.log(WARN,"Cleaning Secure flag from " + c);
+ c.secure = false;
+ c.save();
+ }
+ delete unsafe[k];
+ deleted++;
+ }
+ }
+ if (total == deleted) this.setUnsafeCookies(browser, null);
+ if (!this.cookiesPerTab) break;
+ }
+ },
+
+ get cookiesPerTab() {
+ return ns.getPref("secureCookies.perTab", false);
+ },
+
+ _globalUnsafeCookies: {},
+ getUnsafeCookies: function(browser) {
+ return this.cookiesPerTab
+ ? browser && ns.getExpando(browser, "unsafeCookies")
+ : this._globalUnsafeCookies;
+ },
+ setUnsafeCookies: function(browser, value) {
+ return this.cookiesPerTab
+ ? browser && ns.setExpando(browser, "unsafeCookies", value)
+ : this._globalUnsafeCookies = value;
+ },
+
+ _getParent: function(req, w) {
+ return w && w.frameElement || DOM.findBrowserForNode(w || IOUtil.findWindow(req));
+ }
+
+};
+
+(function () {
+ ["secureCookies", "secureCookiesExceptions", "secureCookiesForced"].forEach(function(p) {
+ var v = HTTPS[p];
+ delete HTTPS[p];
+ HTTPS.__defineGetter__(p, function() {
+ return v;
+ });
+ HTTPS.__defineSetter__(p, function(n) {
+ v = n;
+ if (HTTPS.ready) HTTPS.cookiesCleanup();
+ return v;
+ });
+ });
+})();
+
+HTTPS.ready = true;
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js new file mode 100644 index 0000000..ecbaf76 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js @@ -0,0 +1,762 @@ +// Compilation of RegExps is now delayed until they are first used... + +function Rule(from, to) { + this.to = to; + this.from_c = from; // This will become a RegExp after compilation +} + +function Exclusion(pattern) { + this.pattern_c = pattern; // Will become a RegExp after compilation +} + +function CookieRule(host, cookiename) { + this.host = host; + this.name = cookiename; + + // These will be made during compilation: + + //this.host_c = new RegExp(host); + //this.name_c = new RegExp(cookiename); +} + +function RuleSet(id, name, xmlName, match_rule, default_off, platform) { + if(xmlName == "WordPress.xml" || xmlName == "Github.xml") { + this.log(NOTE, "RuleSet( name="+name+", xmlName="+xmlName+", match_rule="+match_rule+", default_off="+default_off+", platform="+platform+" )"); + } + + this.id=id; + this.on_by_default = true; + this.compiled = false; + this.name = name; + this.xmlName = xmlName; + this.notes = ""; + if (match_rule) this.ruleset_match_c = new RegExp(match_rule); + else this.ruleset_match_c = null; + if (default_off) { + // Perhaps problematically, this currently ignores the actual content of + // the default_off XML attribute. Ideally we'd like this attribute to be + // "valueless" + this.notes = default_off; + this.on_by_default = false; + } + if (platform) + if (platform.search(HTTPSRules.localPlatformRegexp) == -1) { + this.on_by_default = false; + this.notes = "Only for " + platform; + } + + this.rules = []; + this.exclusions = []; + this.cookierules = []; + + this.rule_toggle_prefs = HTTPSEverywhere.instance.rule_toggle_prefs; + + try { + // if this pref exists, use it + this.active = this.rule_toggle_prefs.getBoolPref(name); + } catch(e) { + // if not, use the default + this.active = this.on_by_default; + } +} + +var dom_parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser); + +RuleSet.prototype = { + + ensureCompiled: function() { + // Postpone compilation of exclusions, rules and cookies until now, to accelerate + // browser load time. + if (this.compiled) return; + var i; + + for (i = 0; i < this.exclusions.length; ++i) { + this.exclusions[i].pattern_c = new RegExp(this.exclusions[i].pattern_c); + } + for (i = 0; i < this.rules.length; ++i) { + this.rules[i].from_c = new RegExp(this.rules[i].from_c); + } + + for (i = 0; i < this.cookierules.length; i++) { + var cr = this.cookierules[i]; + cr.host_c = new RegExp(cr.host); + cr.name_c = new RegExp(cr.name); + } + + this.compiled = true; + }, + + apply: function(urispec) { + // return null if it does not apply + // and the new url if it does apply + var i; + var returl = null; + this.ensureCompiled(); + // If a rulset has a match_rule and it fails, go no further + if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) { + this.log(VERB, "ruleset_match_c excluded " + urispec); + return null; + } + // Even so, if we're covered by an exclusion, go home + for (i = 0; i < this.exclusions.length; ++i) { + if (this.exclusions[i].pattern_c.test(urispec)) { + this.log(DBUG,"excluded uri " + urispec); + return null; + } + } + // Okay, now find the first rule that triggers + for (i = 0; i < this.rules.length; ++i) { + // This is just for displaying inactive rules + returl = urispec.replace(this.rules[i].from_c, this.rules[i].to); + if (returl != urispec) return returl; + } + + return null; + }, + log: function(level, msg) { + https_everywhereLog(level, msg); + }, + + wouldMatch: function(hypothetical_uri, alist) { + // return true if this ruleset would match the uri, assuming it were http + // used for judging moot / inactive rulesets + // alist is optional + + // if the ruleset is already somewhere in this applicable list, we don't + // care about hypothetical wouldMatch questions + if (alist && (this.name in alist.all)) return false; + + this.log(DBUG,"Would " +this.name + " match " +hypothetical_uri.spec + + "? serial " + (alist && alist.serial)); + + var uri = hypothetical_uri.clone(); + if (uri.scheme == "https") uri.scheme = "http"; + var urispec = uri.spec; + + this.ensureCompiled(); + + if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) + return false; + + for (var i = 0; i < this.exclusions.length; ++i) + if (this.exclusions[i].pattern_c.test(urispec)) return false; + + for (var i = 0; i < this.rules.length; ++i) + if (this.rules[i].from_c.test(urispec)) return true; + return false; + }, + + transformURI: function(uri) { + // If no rule applies, return null; if a rule would have applied but was + // inactive, return 0; otherwise, return a fresh uri instance + // for the target + var newurl = this.apply(uri.spec); + if (null == newurl) + return null; + var newuri = Components.classes["@mozilla.org/network/standard-url;1"]. + createInstance(CI.nsIStandardURL); + newuri.init(CI.nsIStandardURL.URLTYPE_STANDARD, 80, + newurl, uri.originCharset, null); + newuri = newuri.QueryInterface(CI.nsIURI); + return newuri; + }, + + enable: function() { + // Enable us. + this.rule_toggle_prefs.setBoolPref(this.name, true); + this.active = true; + }, + + disable: function() { + // Disable us. + this.rule_toggle_prefs.setBoolPref(this.name, false); + this.active = false; + }, + + toggle: function() { + this.active = !this.active; + this.rule_toggle_prefs.setBoolPref(this.name, this.active); + }, + + clear: function() { + try { + this.rule_toggle_prefs.clearUserPref(this.name); + } catch(e) { + // this ruleset has never been toggled + } + this.active = this.on_by_default; + } +}; + +const RuleWriter = { + + getCustomRuleDir: function() { + var loc = "ProfD"; // profile directory + var file = + CC["@mozilla.org/file/directory_service;1"] + .getService(CI.nsIProperties) + .get(loc, CI.nsILocalFile) + .clone(); + file.append("HTTPSEverywhereUserRules"); + // Check for existence, if not, create. + if (!file.exists()) { + file.create(CI.nsIFile.DIRECTORY_TYPE, 0700); + } + if (!file.isDirectory()) { + // XXX: Arg, death! + } + return file; + }, + + chromeToPath: function (aPath) { + if (!aPath || !(/^chrome:/.test(aPath))) + return; //not a chrome url + + var ios = + CC['@mozilla.org/network/io-service;1'] + .getService(CI.nsIIOService); + var uri = ios.newURI(aPath, "UTF-8", null); + var cr = + CC['@mozilla.org/chrome/chrome-registry;1'] + .getService(CI.nsIChromeRegistry); + var rv = cr.convertChromeURL(uri).spec; + + if (/^file:/.test(rv)) + rv = this.urlToPath(rv); + else + rv = this.urlToPath("file://"+rv); + + return rv; + }, + + urlToPath: function (aPath) { + if (!aPath || !/^file:/.test(aPath)) + return ; + + var ph = + CC["@mozilla.org/network/protocol;1?name=file"] + .createInstance(CI.nsIFileProtocolHandler); + var rv = ph.getFileFromURLSpec(aPath).path; + + return rv; + }, + + read: function(file, rule_store, ruleset_id) { + if (!file.exists()) + return null; + if ((rule_store.targets == null) && (rule_store.targets != {})) + this.log(WARN, "TARGETS IS NULL"); + var data = ""; + var fstream = CC["@mozilla.org/network/file-input-stream;1"] + .createInstance(CI.nsIFileInputStream); + var sstream = CC["@mozilla.org/scriptableinputstream;1"] + .createInstance(CI.nsIScriptableInputStream); + fstream.init(file, -1, 0, 0); + sstream.init(fstream); + + var str = sstream.read(4096); + while (str.length > 0) { + data += str; + str = sstream.read(4096); + } + + sstream.close(); + fstream.close(); + return this.readFromString(data, rule_store, ruleset_id); + }, + + readFromString: function(data, rule_store, ruleset_id) { + try { + var xmlruleset = dom_parser.parseFromString(data, "text/xml"); + } catch(e) { // file has been corrupted; XXX: handle error differently + this.log(WARN,"Error in XML data: " + e + "\n" + data); + return null; + } + this.parseOneRuleset(xmlruleset.documentElement, rule_store, ruleset_id); + }, + + parseOneRuleset: function(xmlruleset, rule_store, ruleset_id) { + // Extract an xmlruleset into the rulestore + if (!xmlruleset.getAttribute("name")) { + this.log(WARN, "This blob: '" + xmlruleset + "' is not a ruleset\n"); + return null; + } + + this.log(DBUG, "Parsing " + xmlruleset.getAttribute("name")); + + var match_rl = xmlruleset.getAttribute("match_rule"); + var dflt_off = xmlruleset.getAttribute("default_off"); + var platform = xmlruleset.getAttribute("platform"); + var rs = new RuleSet(ruleset_id, xmlruleset.getAttribute("name"), xmlruleset.getAttribute("f"), match_rl, dflt_off, platform); + + // see if this ruleset has the same name as an existing ruleset; + // if so, this ruleset is ignored; DON'T add or return it. + if (rs.name in rule_store.rulesetsByName) { + this.log(WARN, "Error: found duplicate rule name " + rs.name); + return null; + } + + // Add this ruleset id into HTTPSRules.targets if it's not already there. + // This should only happen for custom user rules. Built-in rules get + // their ids preloaded into the targets map, and have their <target> + // tags stripped when the sqlite database is built. + var targets = xmlruleset.getElementsByTagName("target"); + for (var i = 0; i < targets.length; i++) { + var host = targets[i].getAttribute("host"); + if (!host) { + this.log(WARN, "<target> missing host in " + xmlruleset.getAttribute("name")); + return null; + } + if (! rule_store.targets[host]) + rule_store.targets[host] = []; + this.log(DBUG, "Adding " + host + " to targets, pointing at " + ruleset_id); + rule_store.targets[host].push(ruleset_id); + } + + var exclusions = xmlruleset.getElementsByTagName("exclusion"); + for (var i = 0; i < exclusions.length; i++) { + var exclusion = new Exclusion(exclusions[i].getAttribute("pattern")); + rs.exclusions.push(exclusion); + } + + var rules = xmlruleset.getElementsByTagName("rule"); + for (var i = 0; i < rules.length; i++) { + var rule = new Rule(rules[i].getAttribute("from"), + rules[i].getAttribute("to")); + rs.rules.push(rule); + } + + var securecookies = xmlruleset.getElementsByTagName("securecookie"); + for (var i = 0; i < securecookies.length; i++) { + var c_rule = new CookieRule(securecookies[i].getAttribute("host"), + securecookies[i].getAttribute("name")); + rs.cookierules.push(c_rule); + this.log(DBUG,"Cookie rule "+ c_rule.host+ " " +c_rule.name); + } + + rule_store.rulesets.push(rs); + rule_store.rulesetsByID[rs.id] = rs; + rule_store.rulesetsByName[rs.name] = rs; + }, + + enumerate: function(dir) { + // file is the given directory (nsIFile) + var entries = dir.directoryEntries; + var ret = []; + while(entries.hasMoreElements()) { + var entry = entries.getNext(); + entry.QueryInterface(Components.interfaces.nsIFile); + ret.push(entry); + } + return ret; + }, +}; + + + +const HTTPSRules = { + init: function() { + try { + this.rulesets = []; + this.targets = {}; // dict mapping target host pattern -> list of + // applicable ruleset ids + this.rulesetsByID = {}; + this.rulesetsByName = {}; + var t1 = new Date().getTime(); + this.checkMixedContentHandling(); + var rulefiles = RuleWriter.enumerate(RuleWriter.getCustomRuleDir()); + this.scanRulefiles(rulefiles); + + // Initialize database connection. + var dbFile = new FileUtils.File(RuleWriter.chromeToPath("chrome://https-everywhere/content/rulesets.sqlite")); + var rulesetDBConn = Services.storage.openDatabase(dbFile); + this.queryForRuleset = rulesetDBConn.createStatement( + "select contents from rulesets where id = :id"); + + // Preload the mapping of hostname target -> ruleset ID from DB. + // This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD), + // but is faster than loading all of the rulesets. If this becomes a + // bottleneck, change it to load in a background webworker, or load + // a smaller bloom filter instead. + var targetsQuery = rulesetDBConn.createStatement("select host, ruleset_id from targets"); + this.log(DBUG, "Loading targets..."); + while (targetsQuery.executeStep()) { + var host = targetsQuery.row.host; + var id = targetsQuery.row.ruleset_id; + if (!this.targets[host]) { + this.targets[host] = [id]; + } else { + this.targets[host].push(id); + } + } + this.log(DBUG, "Loading adding targets."); + } catch(e) { + this.log(DBUG,"Rules Failed: "+e); + } + var t2 = new Date().getTime(); + this.log(NOTE,"Loading targets took " + (t2 - t1) / 1000.0 + " seconds"); + + var gitCommitQuery = rulesetDBConn.createStatement("select git_commit from git_commit"); + if (gitCommitQuery.executeStep()) { + this.GITCommitID = gitCommitQuery.row.git_commit; + } + + try { + if (HTTPSEverywhere.instance.prefs.getBoolPref("performance_tests")) { + this.testRulesetRetrievalPerformance(); + } + } catch(e) { + this.log(WARN, "Exception during testing " + e); + } + return; + }, + + checkMixedContentHandling: function() { + // Firefox 23+ blocks mixed content by default, so rulesets that create + // mixed content situations should be disabled there + var appInfo = CC["@mozilla.org/xre/app-info;1"].getService(CI.nsIXULAppInfo); + var platformVer = appInfo.platformVersion; + var versionChecker = CC["@mozilla.org/xpcom/version-comparator;1"] + .getService(CI.nsIVersionComparator); + var prefs = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService).getBranch(""); + + + // If mixed content is present and enabled, and the user hasn't opted to enable + // mixed content triggering rules, leave them out. Otherwise add them in. + if(versionChecker.compare(appInfo.version, "23.0a1") >= 0 + && prefs.getBoolPref("security.mixed_content.block_active_content") + && !prefs.getBoolPref("extensions.https_everywhere.enable_mixed_rulesets")) { + this.log(INFO, "Not activating rules that trigger mixed content errors."); + this.localPlatformRegexp = new RegExp("firefox"); + } else { + this.log(INFO, "Activating rules that would normally trigger mixed content"); + this.localPlatformRegexp = new RegExp("(firefox|mixedcontent)"); + } + }, + + scanRulefiles: function(rulefiles) { + var i = 0; + var r = null; + for(i = 0; i < rulefiles.length; ++i) { + try { + this.log(DBUG,"Loading ruleset file: "+rulefiles[i].path); + var ruleset_id = "custom_" + i; + RuleWriter.read(rulefiles[i], this, ruleset_id); + } catch(e) { + this.log(WARN, "Error in ruleset file: " + e); + if (e.lineNumber) + this.log(WARN, "(line number: " + e.lineNumber + ")"); + } + } + }, + + resetRulesetsToDefaults: function() { + // Callable from within the prefs UI and also for cleaning up buggy + // configurations... + for (var i in this.rulesets) { + this.rulesets[i].clear(); + } + }, + + rewrittenURI: function(alist, input_uri) { + // This function oversees the task of working out if a uri should be + // rewritten, what it should be rewritten to, and recordkeeping of which + // applicable rulesets are and aren't active. Previously this returned + // the new uri if there was a rewrite. Now it returns a JS object with a + // newuri attribute and an applied_ruleset attribute (or null if there's + // no rewrite). + var i = 0; + userpass_present = false; // Global so that sanitiseURI can tweak it. + // Why does JS have no tuples, again? + var blob = {}; blob.newuri = null; + if (!alist) this.log(DBUG, "No applicable list rewriting " + input_uri.spec); + this.log(NOTE, "Processing " + input_uri.spec); + + var uri = this.sanitiseURI(input_uri); + + // Get the list of rulesets that target this host + try { + var rs = this.potentiallyApplicableRulesets(uri.host); + } catch(e) { + this.log(NOTE, 'Could not check applicable rules for '+uri.spec + '\n'+e); + return null; + } + + // ponder each potentially applicable ruleset, working out if it applies + // and recording it as active/inactive/moot/breaking in the applicable list + for (i = 0; i < rs.length; ++i) { + if (!rs[i].active) { + if (alist && rs[i].wouldMatch(uri, alist)) + alist.inactive_rule(rs[i]); + continue; + } + blob.newuri = rs[i].transformURI(uri); + if (blob.newuri) { + // we rewrote the uri + this.log(DBUG, "Rewrote "+input_uri.spec); + if (alist) { + if (uri.spec in https_everywhere_blacklist) + alist.breaking_rule(rs[i]); + else + alist.active_rule(rs[i]); + } + if (userpass_present) blob.newuri.userPass = input_uri.userPass; + blob.applied_ruleset = rs[i]; + return blob; + } + if (uri.scheme == "https" && alist) { + // we didn't rewrite but the rule applies to this domain and the + // requests are going over https + if (rs[i].wouldMatch(uri, alist)) alist.moot_rule(rs[i]); + continue; + } + } + return null; + }, + + sanitiseURI: function(input_uri) { + // Rulesets shouldn't try to parse usernames and passwords. If we find + // those, apply the ruleset without them (and then add them back later). + // When .userPass is absent, sometimes it is false and sometimes trying + // to read it raises an exception (probably depending on the URI type). + var uri = input_uri; + try { + if (input_uri.userPass) { + uri = input_uri.clone(); + userpass_present = true; // tweaking a global in our caller :( + uri.userPass = null; + } + } catch(e) {} + + // example.com. is equivalent to example.com + // example.com.. is invalid, but firefox would load it anyway + try { + if (uri.host) + try { + var h = uri.host; + if (h.charAt(h.length - 1) == ".") { + while (h.charAt(h.length - 1) == ".") + h = h.slice(0,-1); + uri = uri.clone(); + uri.host = h; + } + } catch(e) { + this.log(WARN, "Failed to normalise domain: "); + try {this.log(WARN, input_uri.host);} + catch(e2) {this.log(WARN, "bang" + e + " & " + e2 + " & "+ input_uri);} + } + } catch(e3) { + this.log(INFO, "uri.host is explosive!"); + try { this.log(INFO, "(" + uri.spec + ")"); } // happens for about: uris and soforth + catch(e4) { this.log(WARN, "(and unprintable!!!!!!)"); } + } + return uri; + }, + + setInsert: function(intoList, fromList) { + // Insert any elements from fromList into intoList, if they are not + // already there. fromList may be null. + if (!fromList) return; + for (var i = 0; i < fromList.length; i++) + if (intoList.indexOf(fromList[i]) == -1) + intoList.push(fromList[i]); + }, + + loadAllRulesets: function() { + for (var host in this.targets) { + var ruleset_ids = this.targets[host]; + for (var i = 0; i < ruleset_ids.length; i++) { + var id = ruleset_ids[i]; + if (!this.rulesetsByID[id]) { + this.loadRulesetById(id); + } + } + } + }, + + // Load a ruleset by numeric id, e.g. 234 + // NOTE: This call runs synchronously, which can lock up the browser UI. Is + // there any way to fix that, given that we need to run blocking in the request + // flow? Perhaps we can preload all targets from the DB into memory at startup + // so we only hit the DB when we know there is something to be had. + loadRulesetById: function(ruleset_id) { + this.log(DBUG, "Querying DB for ruleset id " + ruleset_id); + this.queryForRuleset.params.id = ruleset_id; + + try { + if (this.queryForRuleset.executeStep()) { + this.log(INFO, "Found ruleset in DB for id " + ruleset_id); + RuleWriter.readFromString(this.queryForRuleset.row.contents, this, ruleset_id); + } else { + this.log(WARN,"Couldn't find ruleset for id " + ruleset_id); + } + } finally { + this.queryForRuleset.reset(); + } + }, + + // Get all rulesets matching a given target, lazy-loading from DB as necessary. + rulesetsByTarget: function(target) { + var rulesetIds = this.targets[target]; + + var output = []; + if (rulesetIds) { + this.log(INFO, "For target " + target + ", found ids " + rulesetIds.toString()); + for (var i = 0; i < rulesetIds.length; i++) { + var id = rulesetIds[i]; + if (!this.rulesetsByID[id]) { + this.loadRulesetById(id); + } + if (this.rulesetsByID[id]) { + output.push(this.rulesetsByID[id]); + } + } + } else { + this.log(INFO, "For target " + target + ", found no ids in DB"); + } + return output; + }, + + potentiallyApplicableRulesets: function(host) { + // Return a list of rulesets that declare targets matching this host + var i, tmp, t; + var results = []; + + var attempt = function(target) { + this.setInsert(results, this.rulesetsByTarget(target)); + }.bind(this); + + attempt(host); + + // replace each portion of the domain with a * in turn + var segmented = host.split("."); + for (i = 0; i < segmented.length; ++i) { + tmp = segmented[i]; + segmented[i] = "*"; + t = segmented.join("."); + segmented[i] = tmp; + attempt(t); + } + // now eat away from the left, with *, so that for x.y.z.google.com we + // check *.z.google.com and *.google.com (we did *.y.z.google.com above) + for (i = 2; i <= segmented.length - 2; ++i) { + t = "*." + segmented.slice(i,segmented.length).join("."); + attempt(t); + } + this.log(DBUG,"Potentially applicable rules for " + host + ":"); + for (i = 0; i < results.length; ++i) + this.log(DBUG, " " + results[i].name); + return results; + }, + + testRulesetRetrievalPerformance: function() { + // We can use this function to measure the impact of changes in the ruleset + // storage architecture, potentiallyApplicableRulesets() caching + // implementations, etc. + var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(Ci.nsIXMLHttpRequest); + req.open("GET", "https://eff.org/files/alexa-top-10000-global.txt", false); + req.send(); + var domains = req.response.split("\n"); + var domains_l = domains.length - 1; // The last entry in this thing is bogus + var prefix = ""; + this.log(WARN, "Calling potentiallyApplicableRulesets() with " + domains_l + " domains"); + var count = 0; + var t1 = new Date().getTime(); + for (var n = 0; n < domains_l; n++) { + if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0) + count++; + } + var t2 = new Date().getTime(); + this.log(NOTE, count + " hits: average call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds"); + count = 0; + t1 = new Date().getTime(); + for (var n = 0; n < domains_l; n++) { + if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0) + count++; + } + t2 = new Date().getTime(); + this.log(NOTE, count + " hits: average subsequent call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds"); + }, + + shouldSecureCookie: function(applicable_list, c, known_https) { + // Check to see if the Cookie object c meets any of our cookierule citeria + // for being marked as secure. + // @applicable_list : an ApplicableList or record keeping + // @c : an nsICookie2 + // @known_https : true if we know the page setting the cookie is https + + this.log(DBUG," rawhost: " + c.rawHost + "\n name: " + c.name + "\n host" + c.host); + var i,j; + var rs = this.potentiallyApplicableRulesets(c.host); + for (i = 0; i < rs.length; ++i) { + var ruleset = rs[i]; + if (ruleset.active) { + ruleset.ensureCompiled(); + // Never secure a cookie if this page might be HTTP + if (!known_https && !this.safeToSecureCookie(c.rawHost)) + continue; + for (j = 0; j < ruleset.cookierules.length; j++) { + var cr = ruleset.cookierules[j]; + if (cr.host_c.test(c.host) && cr.name_c.test(c.name)) { + if (applicable_list) applicable_list.active_rule(ruleset); + this.log(INFO,"Active cookie rule " + ruleset.name); + return true; + } + } + if (ruleset.cookierules.length > 0) + if (applicable_list) applicable_list.moot_rule(ruleset); + } else if (ruleset.cookierules.length > 0) { + if (applicable_list) applicable_list.inactive_rule(ruleset); + this.log(INFO,"Inactive cookie rule " + ruleset.name); + } + } + return false; + }, + + safeToSecureCookie: function(domain) { + // Check if the domain might be being served over HTTP. If so, it isn't + // safe to secure a cookie! We can't always know this for sure because + // observing cookie-changed doesn't give us enough context to know the + // full origin URI. + + // First, if there are any redirect loops on this domain, don't secure + // cookies. XXX This is not a very satisfactory heuristic. Sometimes we + // would want to secure the cookie anyway, because the URLs that loop are + // not authenticated or not important. Also by the time the loop has been + // observed and the domain blacklisted, a cookie might already have been + // flagged as secure. + + if (domain in https_blacklist_domains) { + this.log(INFO, "cookies for " + domain + "blacklisted"); + return false; + } + + // If we passed that test, make up a random URL on the domain, and see if + // we would HTTPSify that. + + try { + var nonce_path = "/" + Math.random().toString(); + nonce_path = nonce_path + nonce_path; + var test_uri = "http://" + domain + nonce_path; + } catch (e) { + this.log(WARN, "explosion in safeToSecureCookie for " + domain + "\n" + + "(" + e + ")"); + return false; + } + + this.log(INFO, "Testing securecookie applicability with " + test_uri); + var rs = this.potentiallyApplicableRulesets(domain); + for (var i = 0; i < rs.length; ++i) { + if (!rs[i].active) continue; + var rewrite = rs[i].apply(test_uri); + if (rewrite) { + this.log(INFO, "Yes: " + rewrite); + return true; + } + } + this.log(INFO, "(NO)"); + return false; + } +}; diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js new file mode 100644 index 0000000..96c2500 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js @@ -0,0 +1,263 @@ +const IO = { + readFile: function(file, charset) { + var res; + + const is = Cc["@mozilla.org/network/file-input-stream;1"] + .createInstance(Ci.nsIFileInputStream ); + is.init(file ,0x01, 256 /*0400*/, null); + const sis = Cc["@mozilla.org/scriptableinputstream;1"] + .createInstance(Ci.nsIScriptableInputStream); + sis.init(is); + + res = sis.read(sis.available()); + is.close(); + + if (charset !== null) { // use "null" if you want uncoverted data... + const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] + .createInstance(Ci.nsIScriptableUnicodeConverter); + try { + unicodeConverter.charset = charset || "UTF-8"; + } catch(ex) { + unicodeConverter.charset = "UTF-8"; + } + res = unicodeConverter.ConvertToUnicode(res); + } + + return res; + }, + writeFile: function(file, content, charset) { + const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] + .createInstance(Ci.nsIScriptableUnicodeConverter); + try { + unicodeConverter.charset = charset || "UTF-8"; + } catch(ex) { + unicodeConverter.charset = "UTF-8"; + } + + content = unicodeConverter.ConvertFromUnicode(content); + const os = Cc["@mozilla.org/network/file-output-stream;1"] + .createInstance(Ci.nsIFileOutputStream); + os.init(file, 0x02 | 0x08 | 0x20, 448 /*0700*/, 0); + os.write(content, content.length); + os.close(); + }, + + safeWriteFile: function(file, content, charset) { + var tmp = file.clone(); + var name = file.leafName; + tmp.leafName = name + ".tmp"; + tmp.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, file.exists() ? file.permissions : 384 /*0600*/); + this.writeFile(tmp, content, charset); + tmp.moveTo(file.parent, name); + } +}; + + +function nsISupportsWrapper(wrapped) { + this.wrappedJSObject = wrapped; +} +nsISupportsWrapper.prototype = { + QueryInterface: xpcom_generateQI([]) +}; + +const IOUtil = { + asyncNetworking: true, + proxiedDNS: 0, + + attachToChannel: function(channel, key, requestInfo) { + if (channel instanceof Ci.nsIWritablePropertyBag2) + channel.setPropertyAsInterface(key, requestInfo); + }, + extractFromChannel: function(channel, key, preserve) { + if (channel instanceof Ci.nsIPropertyBag2) { + let p = channel.get(key); + if (p) { + if (!preserve && (channel instanceof Ci.nsIWritablePropertyBag)) channel.deleteProperty(key); + if (p.wrappedJSObject) return p.wrappedJSObject; + p instanceof Ci.nsIURL || p instanceof Ci.nsIURL; + return p; + } + } + return null; + }, + + extractInternalReferrer: function(channel) { + if (channel instanceof Ci.nsIPropertyBag2) { + const key = "docshell.internalReferrer"; + if (channel.hasKey(key)) + try { + return channel.getPropertyAsInterface(key, Ci.nsIURL); + } catch(e) {} + } + return null; + }, + extractInternalReferrerSpec: function(channel) { + var ref = this.extractInternalReferrer(channel); + return ref && ref.spec || null; + }, + + getProxyInfo: function(channel) { + return Ci.nsIProxiedChannel && (channel instanceof Ci.nsIProxiedChannel) + ? channel.proxyInfo + : Components.classes["@mozilla.org/network/protocol-proxy-service;1"] + .getService(Components.interfaces.nsIProtocolProxyService) + .resolve(channel.URI, 0); + }, + + + canDoDNS: function(channel) { + if (!channel || IOS.offline) return false; + + var proxyInfo = this.getProxyInfo(channel); + switch(this.proxiedDNS) { + case 1: + return !(proxyInfo && (proxyInfo.flags & Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST)); + case 2: + return true; + default: + return !proxyInfo || proxyInfo.type == "direct"; + } + + }, + + abort: function(channel, noNetwork) { + channel.cancel(Cr.NS_ERROR_ABORT); + }, + + findWindow: function(channel) { + for each(var cb in [channel.notificationCallbacks, + channel.loadGroup && channel.loadGroup.notificationCallbacks]) { + if (cb instanceof Ci.nsIInterfaceRequestor) { + if (Ci.nsILoadContext) try { + // For Gecko 1.9.1 + return cb.getInterface(Ci.nsILoadContext).associatedWindow; + } catch(e) {} + + try { + // For Gecko 1.9.0 + return cb.getInterface(Ci.nsIDOMWindow); + } catch(e) {} + } + } + return null; + }, + + readFile: IO.readFile, + writeFile: IO.writeFile, + safeWriteFIle: IO.safeWriteFile, + + _protocols: {}, // caching them we gain a 33% speed boost in URI creation :) + newURI: function(url) { + try { + let scheme = url.substring(0, url.indexOf(':')); + return (this._protocols[scheme] || + (this._protocols[scheme] = + Cc["@mozilla.org/network/protocol;1?name=" + scheme] + .getService(Ci.nsIProtocolHandler))) + .newURI(url, null, null); + } catch(e) { + return IOS.newURI(url, null, null); + } + }, + + unwrapURL: function(url) { + try { + if (!(url instanceof Ci.nsIURI)) + url = this.newURI(url); + + switch (url.scheme) { + case "view-source": + return this.unwrapURL(url.path); + case "feed": + let u = url.spec.substring(5); + if (u.substring(0, 2) == '//') u = "http:" + u; + return this.unwrapURL(u); + case "wyciwyg": + return this.unwrapURL(url.path.replace(/^\/\/\d+\//, "")); + case "jar": + if (url instanceof Ci.nsIJARURI) + return this.unwrapURL(url.JARFile); + } + } + catch (e) {} + + return url; + }, + + + get _channelFlags() { + delete this._channelFlags; + const constRx = /^[A-Z_]+$/; + const ff = {}; + [Ci.nsIHttpChannel, Ci.nsICachingChannel].forEach(function(c) { + for (var p in c) { + if (constRx.test(p)) ff[p] = c[p]; + } + }); + return this._channelFlags = ff; + }, + humanFlags: function(loadFlags) { + var hf = []; + var c = this._channelFlags; + for (var p in c) { + if (loadFlags & c[p]) hf.push(p + "=" + c[p]); + } + return hf.join("\n"); + }, + + queryNotificationCallbacks: function(chan, iid) { + var cb; + try { + cb = chan.notificationCallbacks.getInterface(iid); + if (cb) return cb; + } catch(e) {} + + try { + return chan.loadGroup && chan.loadGroup.notificationCallbacks.getInterface(iid); + } catch(e) {} + + return null; + }, + + + anonymizeURI: function(uri, cookie) { + if (uri instanceof Ci.nsIURL) { + uri.query = this.anonymizeQS(uri.query, cookie); + } else return this.anonymizeURL(uri, cookie); + return uri; + }, + anonymizeURL: function(url, cookie) { + var parts = url.split("?"); + if (parts.length < 2) return url; + parts[1] = this.anonymizeQS(parts[1], cookie); + return parts.join("?"); + }, + + _splitName: function(nv) nv.split("=")[0], + _qsRx: /[&=]/, + _anonRx: /(?:auth|s\w+(?:id|key)$)/, + anonymizeQS: function(qs, cookie) { + if (!qs) return qs; + if (!this._qsRx.test(qs)) return ''; + + var cookieNames, hasCookies; + if ((hasCookies = !!cookie)) cookieNames = cookie.split(/\s*;\s*/).map(this._splitName); + + let parms = qs.split("&"); + for (j = parms.length; j-- > 0;) { + let nv = parms[j].split("="); + let name = nv[0]; + if (this._anonRx.test(name) || cookie && cookieNames.indexOf(name) > -1) + parms.splice(j, 1); + } + return parms.join("&"); + }, + + get TLDService() { + delete this.TLDService; + return this.TLDService = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService); + } + +}; + + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js new file mode 100644 index 0000000..97a7e78 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js @@ -0,0 +1,491 @@ +// Copyright (c) 2011 Moxie Marlinspike <moxie@thoughtcrime.org> +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3 of the +// License, or (at your option) any later version. + +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA + + +/** + * This class manages the ctypes bridge to the NSS (crypto) libraries + * distributed with Mozilla. + * + **/ + +function NSS() { + +} + +NSS.initialize = function(nssPath) { + var sharedLib; + + try { + sharedLib = ctypes.open(nssPath); + } catch (e) { + dump("Failed to find nss3 in installed directory, checking system paths.\n"); + sharedLib = ctypes.open(ctypes.libraryName("nss3")); + } + + NSS.types = new Object(); + + NSS.types.CERTDistNames = ctypes.StructType("CERTDistNames"); + + NSS.types.SECItem = ctypes.StructType("SECItem", + [{'type' : ctypes.int}, + {'data' : ctypes.unsigned_char.ptr}, + {'len' : ctypes.uint32_t}]); + + NSS.types.PLArenaPool = ctypes.StructType("PLArenaPool"); + + NSS.types.CERTCertificateList = ctypes.StructType("CERTCertificateList", + [{'certs' : NSS.types.SECItem.ptr}, + {'len' : ctypes.int}, + {'arena' : NSS.types.PLArenaPool.ptr}]), + + NSS.types.CERTAVA = ctypes.StructType("CERTAVA", + [{'type' : NSS.types.SECItem}, + {'value' : NSS.types.SECItem}]); + + NSS.types.CERTRDN = ctypes.StructType("CERTRDN", + [{'avas' : NSS.types.CERTAVA.ptr.ptr}]); + + NSS.types.SECAlgorithmID = ctypes.StructType("SECAlgorithmID", + [{'algorithm' : NSS.types.SECItem}, + {'parameters' : NSS.types.SECItem}]); + + NSS.types.CERTSignedData = ctypes.StructType("CERTSignedData", + [{'data' : NSS.types.SECItem}, + {'signatureAlgorithm' : NSS.types.SECAlgorithmID}, + {'signature' : NSS.types.SECItem}]); + + NSS.types.CERTOKDomainName = ctypes.StructType("CERTOKDomainName"); + + NSS.types.NSSCertificateStr = ctypes.StructType("NSSCertificateStr"); + + NSS.types.CERTAuthKeyID = ctypes.StructType("CERTAuthKeyID"); + + NSS.types.CERTName = ctypes.StructType("CERTName", + [{'arena' : ctypes.voidptr_t}, + {'rdns' : NSS.types.CERTRDN.ptr.ptr}]); + + NSS.types.CERTValidity = ctypes.StructType("CERTValidity", + [{'arena' : ctypes.voidptr_t}, + {'notBefore' : NSS.types.SECItem}, + {'notAfter' : NSS.types.SECItem}]); + + NSS.types.CERTCertExtension = ctypes.StructType("CERTCertExtension", + [{'id' : NSS.types.SECItem}, + {'critical' : NSS.types.SECItem}, + {'value' : NSS.types.SECItem}]); + + NSS.types.CERTCertDBHandle = ctypes.StructType("CERTCertDBHandle"); + + NSS.types.PK11SlotInfo = ctypes.StructType("PK11SlotInfo"); + + NSS.types.PK11SlotListElement = ctypes.StructType("PK11SlotListElement", + [{'next' : ctypes.StructType("PK11SlotListElement").ptr}, + {'prev' : ctypes.StructType("PK11SlotListElement").ptr}, + {'slot' : NSS.types.PK11SlotInfo.ptr}, + {'refCount' : ctypes.int}]), + + NSS.types.PK11SlotList = ctypes.StructType("PK11SlotList", + [{'head' : NSS.types.PK11SlotListElement.ptr}, + {'tail' : NSS.types.PK11SlotListElement.ptr}, + {'lock' : ctypes.StructType("PZLock").ptr}]), + + NSS.types.SECKEYPrivateKey = ctypes.StructType("SECKEYPrivateKey", + [{'arena' : NSS.types.PLArenaPool.ptr}, + {'keyType' : ctypes.int}, + {'pkcs11Slot' : NSS.types.PK11SlotInfo.ptr}, + {'pkcs11ID' : ctypes.unsigned_long}, + {'pkcs11IsTemp' : ctypes.int}, + {'wincx' : ctypes.voidptr_t}, + {'staticflags' : ctypes.int32_t}]); + + NSS.types.SECKEYPublicKey = ctypes.StructType("SECKEYPublicKey"); + + NSS.types.CERTSubjectPublicKeyInfo = ctypes.StructType("CERTSubjectPublicKeyInfo", + [{'arena' : NSS.types.PLArenaPool.ptr}, + {'algorithm' : NSS.types.SECAlgorithmID}, + {'subjectPublicKey' : NSS.types.SECItem}]); + + NSS.types.CERTCertificateRequest = ctypes.StructType("CERTCertificateRequest"); + + NSS.types.SEC_ASN1Template = ctypes.StructType("SEC_ASN1Template", + [{'kind' : ctypes.unsigned_long}, + {'offset' : ctypes.unsigned_long}, + {'sub' : ctypes.voidptr_t}, + {'size' : ctypes.unsigned_int}]); + + NSS.types.PK11RSAGenParams = ctypes.StructType("PK11RSAGenParams", + [{'keySizeInBits' : ctypes.int}, + {'pe' : ctypes.unsigned_long}]); + + NSS.types.CERTCertTrust = ctypes.StructType("CERTCertTrust", + [{'sslFlags' : ctypes.uint32_t}, + {'emailFlags' : ctypes.uint32_t}, + {'objectSigningFlags' : ctypes.uint32_t}]); + + NSS.types.CERTSubjectList = ctypes.StructType("CERTSubjectList"); + + NSS.types.CERTGeneralName = ctypes.StructType("CERTGeneralName"); + + NSS.types.CERTCertificate = ctypes.StructType("CERTCertificate", + [{'arena' : NSS.types.PLArenaPool.ptr}, + {'subjectName' : ctypes.char.ptr}, + {'issuerName' : ctypes.char.ptr}, + {'signatureWrap' : NSS.types.CERTSignedData}, + {'derCert' : NSS.types.SECItem}, + {'derIssuer' : NSS.types.SECItem}, + {'derSubject' : NSS.types.SECItem}, + {'derPublicKey' : NSS.types.SECItem}, + {'certKey' : NSS.types.SECItem}, + {'version' : NSS.types.SECItem}, + {'serialNumber' : NSS.types.SECItem}, + {'signature' : NSS.types.SECAlgorithmID}, + {'issuer' : NSS.types.CERTName}, + {'validity' : NSS.types.CERTValidity}, + {'subject' : NSS.types.CERTName}, + {'subjectPublicKeyInfo' : NSS.types.CERTSubjectPublicKeyInfo}, + {'issuerID' : NSS.types.SECItem}, + {'subjectID' : NSS.types.SECItem}, + {'extensions' : NSS.types.CERTCertExtension.ptr.ptr}, + {'emailAddr' : ctypes.char.ptr}, + {'dbhandle' : NSS.types.CERTCertDBHandle.ptr}, + {'subjectKeyID' : NSS.types.SECItem}, + {'keyIDGenerated' : ctypes.int}, + {'keyUsage' : ctypes.unsigned_int}, + {'rawKeyUsage' : ctypes.unsigned_int}, + {'keyUsagePresent' : ctypes.int}, + {'nsCertType' : ctypes.uint32_t}, + {'keepSession' : ctypes.int}, + {'timeOK' : ctypes.int}, + {'domainOK' : NSS.types.CERTOKDomainName.ptr}, + {'isperm' : ctypes.int}, + {'istemp' : ctypes.int}, + {'nickname' : ctypes.char.ptr}, + {'dbnickname' : ctypes.char.ptr}, + {'nssCertificate' : NSS.types.NSSCertificateStr.ptr}, + {'trust' : NSS.types.CERTCertTrust.ptr}, + {'referenceCount' : ctypes.int}, + {'subjectList' : NSS.types.CERTSubjectList.ptr}, + {'authKeyID' : NSS.types.CERTAuthKeyID.ptr}, + {'isRoot' : ctypes.int}, + {'options' : ctypes.voidptr_t}, + {'series' : ctypes.int}, + {'slot' : NSS.types.PK11SlotInfo.ptr}, + {'pkcs11ID' : ctypes.unsigned_long}, + {'ownSlot' : ctypes.int}]); + + NSS.types.CERTBasicConstraints = ctypes.StructType("CERTBasicConstraints", + [{'isCA': ctypes.int}, + {'pathLenConstraint' : ctypes.int}]); + + + NSS.lib = { + SEC_OID_MD5 : 3, + SEC_OID_SHA1 : 4, + SEC_OID_X509_KEY_USAGE : 81, + SEC_OID_NS_CERT_EXT_COMMENT : 75, + CKM_RSA_PKCS_KEY_PAIR_GEN : 0, + buffer : ctypes.ArrayType(ctypes.char), + ubuffer : ctypes.ArrayType(ctypes.unsigned_char), + + // CERT_CertificateTemplate : sharedLib.declare("CERT_CertificateTemplate", + // NSS.types.SEC_ASN1Template), + + NSS_Get_CERT_CertificateTemplate : sharedLib.declare("NSS_Get_CERT_CertificateTemplate", + ctypes.default_abi, + NSS.types.SEC_ASN1Template.ptr), + + PK11_HashBuf : sharedLib.declare("PK11_HashBuf", + ctypes.default_abi, + ctypes.int, + ctypes.int, + ctypes.unsigned_char.ptr, + ctypes.unsigned_char.ptr, + ctypes.int32_t), + + CERT_GetDefaultCertDB : sharedLib.declare("CERT_GetDefaultCertDB", + ctypes.default_abi, + NSS.types.CERTCertDBHandle.ptr), + + CERT_ChangeCertTrust : sharedLib.declare("CERT_ChangeCertTrust", + ctypes.default_abi, + ctypes.int32_t, + NSS.types.CERTCertDBHandle.ptr, + NSS.types.CERTCertificate.ptr, + NSS.types.CERTCertTrust.ptr), + + CERT_FindCertByNickname : sharedLib.declare("CERT_FindCertByNickname", + ctypes.default_abi, + NSS.types.CERTCertificate.ptr, + NSS.types.CERTCertDBHandle.ptr, + ctypes.char.ptr), + + CERT_FindCertByDERCert : sharedLib.declare("CERT_FindCertByDERCert", + ctypes.default_abi, + NSS.types.CERTCertificate.ptr, + NSS.types.CERTCertDBHandle.ptr, + NSS.types.SECItem.ptr), + + CERT_VerifyCertNow : sharedLib.declare("CERT_VerifyCertNow", + ctypes.default_abi, + ctypes.int, + NSS.types.CERTCertDBHandle.ptr, + NSS.types.CERTCertificate.ptr, + ctypes.int, + ctypes.int, + ctypes.voidptr_t), + + CERT_CertChainFromCert : sharedLib.declare("CERT_CertChainFromCert", + ctypes.default_abi, + NSS.types.CERTCertificateList.ptr, + NSS.types.CERTCertificate.ptr, + ctypes.int, + ctypes.int), + + PK11_FindKeyByAnyCert : sharedLib.declare("PK11_FindKeyByAnyCert", + ctypes.default_abi, + NSS.types.SECKEYPrivateKey.ptr, + NSS.types.CERTCertificate.ptr, + ctypes.voidptr_t), + + PK11_GetInternalKeySlot : sharedLib.declare("PK11_GetInternalKeySlot", + ctypes.default_abi, + NSS.types.PK11SlotInfo.ptr), + + PK11_GetAllSlotsForCert : sharedLib.declare("PK11_GetAllSlotsForCert", + ctypes.default_abi, + NSS.types.PK11SlotList.ptr, + NSS.types.CERTCertificate.ptr, + ctypes.voidptr_t), + + PK11_GetTokenName : sharedLib.declare("PK11_GetTokenName", + ctypes.default_abi, + ctypes.char.ptr, + NSS.types.PK11SlotInfo.ptr), + + PK11_GenerateKeyPair : sharedLib.declare("PK11_GenerateKeyPair", + ctypes.default_abi, + NSS.types.SECKEYPrivateKey.ptr, + NSS.types.PK11SlotInfo.ptr, + ctypes.int, + NSS.types.PK11RSAGenParams.ptr, + NSS.types.SECKEYPublicKey.ptr.ptr, + ctypes.int, + ctypes.int, + ctypes.voidptr_t), + + PK11_SetPrivateKeyNickname : sharedLib.declare("PK11_SetPrivateKeyNickname", + ctypes.default_abi, + ctypes.int, + NSS.types.SECKEYPrivateKey.ptr, + ctypes.char.ptr), + + SEC_ASN1EncodeItem : sharedLib.declare("SEC_ASN1EncodeItem", + ctypes.default_abi, + NSS.types.SECItem.ptr, + NSS.types.PLArenaPool.ptr, + NSS.types.SECItem.ptr, + ctypes.voidptr_t, + NSS.types.SEC_ASN1Template.ptr), + + SEC_DerSignData : sharedLib.declare("SEC_DerSignData", + ctypes.default_abi, + ctypes.int, + NSS.types.PLArenaPool.ptr, + NSS.types.SECItem.ptr, + ctypes.unsigned_char.ptr, + ctypes.int, + NSS.types.SECKEYPrivateKey.ptr, + ctypes.int), + + SEC_GetSignatureAlgorithmOidTag : sharedLib.declare("SEC_GetSignatureAlgorithmOidTag", + ctypes.default_abi, + ctypes.int, + ctypes.int, + ctypes.int), + + SECOID_SetAlgorithmID : sharedLib.declare("SECOID_SetAlgorithmID", + ctypes.default_abi, + ctypes.int, + NSS.types.PLArenaPool.ptr, + NSS.types.SECAlgorithmID.ptr, + ctypes.int, + NSS.types.SECItem.ptr), + + + CERT_Hexify : sharedLib.declare("CERT_Hexify", + ctypes.default_abi, + ctypes.char.ptr, + NSS.types.SECItem.ptr, + ctypes.int), + + CERT_AsciiToName : sharedLib.declare("CERT_AsciiToName", + ctypes.default_abi, + NSS.types.CERTName.ptr, + ctypes.char.ptr), + + SECKEY_CreateSubjectPublicKeyInfo : sharedLib.declare("SECKEY_CreateSubjectPublicKeyInfo", + ctypes.default_abi, + NSS.types.CERTSubjectPublicKeyInfo.ptr, + NSS.types.SECKEYPublicKey.ptr), + + CERT_CreateCertificateRequest : sharedLib.declare("CERT_CreateCertificateRequest", + ctypes.default_abi, + NSS.types.CERTCertificateRequest.ptr, + NSS.types.CERTName.ptr, + NSS.types.CERTSubjectPublicKeyInfo.ptr, + NSS.types.SECItem.ptr.ptr), + + CERT_CreateCertificate : sharedLib.declare("CERT_CreateCertificate", + ctypes.default_abi, + NSS.types.CERTCertificate.ptr, + ctypes.uint32_t, + NSS.types.CERTName.ptr, + NSS.types.CERTValidity.ptr, + NSS.types.CERTCertificateRequest.ptr), + + CERT_DestroyCertificate : sharedLib.declare("CERT_DestroyCertificate", + ctypes.default_abi, + ctypes.int, + NSS.types.CERTCertificate.ptr), + + CERT_DestroyCertificateList : sharedLib.declare("CERT_DestroyCertificateList", + ctypes.default_abi, + ctypes.int, + NSS.types.CERTCertificateList.ptr), + + CERT_NewTempCertificate : sharedLib.declare("CERT_NewTempCertificate", + ctypes.default_abi, + NSS.types.CERTCertificate.ptr, + NSS.types.CERTCertDBHandle.ptr, + NSS.types.SECItem.ptr, + ctypes.char.ptr, + ctypes.int, + ctypes.int), + + CERT_CreateValidity : sharedLib.declare("CERT_CreateValidity", + ctypes.default_abi, + NSS.types.CERTValidity.ptr, + ctypes.int64_t, + ctypes.int64_t), + + CERT_CertListFromCert : sharedLib.declare("CERT_CertListFromCert", + ctypes.default_abi, + NSS.types.CERTCertificateList.ptr, + NSS.types.CERTCertificate.ptr), + + CERT_StartCertExtensions : sharedLib.declare("CERT_StartCertExtensions", + ctypes.default_abi, + ctypes.voidptr_t, + NSS.types.CERTCertificate.ptr), + + CERT_AddExtension : sharedLib.declare("CERT_AddExtension", + ctypes.default_abi, + ctypes.int, + ctypes.voidptr_t, + ctypes.int, + NSS.types.SECItem.ptr, + ctypes.int, + ctypes.int), + + + CERT_EncodeBasicConstraintValue : sharedLib.declare("CERT_EncodeBasicConstraintValue", + ctypes.default_abi, + ctypes.int, + NSS.types.PLArenaPool.ptr, + NSS.types.CERTBasicConstraints.ptr, + NSS.types.SECItem.ptr), + + CERT_EncodeAndAddBitStrExtension : sharedLib.declare("CERT_EncodeAndAddBitStrExtension", + ctypes.default_abi, + ctypes.int, + ctypes.voidptr_t, + ctypes.int, + NSS.types.SECItem.ptr, + ctypes.int), + + CERT_EncodeAltNameExtension : sharedLib.declare("CERT_EncodeAltNameExtension", + ctypes.default_abi, + ctypes.int, + NSS.types.PLArenaPool.ptr, + NSS.types.CERTGeneralName.ptr, + NSS.types.SECItem.ptr), + + CERT_FinishExtensions : sharedLib.declare("CERT_FinishExtensions", + ctypes.default_abi, + ctypes.int, + ctypes.voidptr_t), + + CERT_ImportCerts : sharedLib.declare("CERT_ImportCerts", + ctypes.default_abi, + ctypes.int, + NSS.types.CERTCertDBHandle.ptr, + ctypes.int, + ctypes.int, + NSS.types.SECItem.ptr.ptr, + NSS.types.CERTCertificate.ptr.ptr.ptr, + ctypes.int, + ctypes.int, + ctypes.char.ptr), + + PORT_NewArena : sharedLib.declare("PORT_NewArena", + ctypes.default_abi, + NSS.types.PLArenaPool.ptr, + ctypes.uint32_t), + + PORT_ArenaZAlloc : sharedLib.declare("PORT_ArenaZAlloc", + ctypes.default_abi, + ctypes.voidptr_t, + NSS.types.PLArenaPool.ptr, + ctypes.int), + + PORT_FreeArena : sharedLib.declare("PORT_FreeArena", + ctypes.default_abi, + ctypes.void_t, + NSS.types.PLArenaPool.ptr, + ctypes.int), + + CERT_GetCommonName : sharedLib.declare("CERT_GetCommonName", + ctypes.default_abi, + ctypes.char.ptr, + NSS.types.CERTName.ptr), + + CERT_GetOrgUnitName : sharedLib.declare("CERT_GetOrgUnitName", + ctypes.default_abi, + ctypes.char.ptr, + NSS.types.CERTName.ptr), + + CERT_GetCertificateNames : sharedLib.declare("CERT_GetCertificateNames", + ctypes.default_abi, + NSS.types.CERTGeneralName.ptr, + NSS.types.CERTCertificate.ptr, + NSS.types.PLArenaPool.ptr), + + CERT_DecodeDERCertificate : sharedLib.declare("__CERT_DecodeDERCertificate", + ctypes.default_abi, + NSS.types.CERTCertificate.ptr, + NSS.types.SECItem.ptr, + ctypes.int, + ctypes.char.ptr), + + CERT_FindCertExtension : sharedLib.declare("CERT_FindCertExtension", + ctypes.default_abi, + ctypes.int, + NSS.types.CERTCertificate.ptr, + ctypes.int, + NSS.types.SECItem.ptr), + }; + +}; diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js new file mode 100644 index 0000000..49777fa --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js @@ -0,0 +1,348 @@ +// These are concatenated md5 and sha1 fingerprints for the Firefox and +// Microsoft root CAs as of Aug 2010 + +root_ca_hashes = { + '00531D1D7201D423C820D00B6088C5D143DDB1FFF3B49B73831407F6BC8B975023D07C50' : true, + '015A99C3D64FA94B3C3BB1A3AB274CBFFC219A76112F76C1C508833C9A2FA2BA84AC087A' : true, + '019408DE857F8D806CE602CA89522848750251B2C632536F9D917279543C137CD721C6E0' : true, + '0208EE8CAAB8387A6824DCB4E26A52337E206939CC5FA883635F64C750EBF5FDA9AEE653' : true, + '0226C3015E08303743A9D07DCF37E6BF323C118E1BF7B8B65254E2E2100DD6029037F096' : true, + '034287D7C1167D18AFA4703CB8312C3E4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9' : true, + '03DC08EEC4703FFA20E5E179E81AE7C59ED18028FB1E8A9701480A7890A59ACD73DFF871' : true, + '044BFDC96CDA2A32857C598461468A64BEB5A995746B9EDF738B56E6DF437A77BE106B81' : true, + '0468E9247E41CED76C441630703DDDB9AB16DD144ECDC0FC4BAAB62ECF0408896FDE52B7' : true, + '068690F2195471FDDD3DE6EEA161CAFF7030AABF8432A800666CCCC42A887E42B7553E2B' : true, + '069F6979166690021B8C8CA2C3076F3A627F8D7827656399D27D7F9044C9FEB3F33EFA9A' : true, + '06F0171EB1E961ED7A363CA594A1374AFAAA27B8CAF5FDF5CDA98AC3378572E04CE8F2E0' : true, + '06F9EBECCC569D88BA90F5BAB01AE00216D424FE9610E17519AF232BB68774E24144BE6E' : true, + '076192047EA6B9CD5E6B007AE3BF1D0434D499426F9FC2BB27B075BAB682AAE5EFFCBA74' : true, + '087C581F522B44B43B79CD01F8C5C3C995E6ADF8D77146024DD56A21B2E73FCDF23B35FF' : true, + '0B092C1CD721866F94376FE6A7F3224D0409565B77DA582E6495AC0060A72354E64B0192' : true, + '0C412F135BA054F596662D7ECD0E03F4DA79C1711150C23439AA2B0B0C62FD55B2F9F580' : true, + '0C5ADD5AAE29F7A77679FA4151FEF035B865130BEDCA38D27F69929420770BED86EFBC10' : true, + '0C7FDD6AF42AB9C89BBD207EA9DB5C3760D68974B5C2659E8A0FC1887C88D246691B182C' : true, + '0CF89E17FCD403BDE68D9B3C0587FE8433A335C23CE8034B04E13DE5C48E791AEB8C3204' : true, + '0E40A76CDE035D8FD10FE4D18DF96CA9A9E9780814375888F20519B06D2B0D2B6016907D' : true, + '0EFA4BF7D760CD65F7A7068857986239D29F6C98BEFC6D986521543EE8BE56CEBC288CF3' : true, + '0FA01300C3558AB7D37E2D04739EDE3C8B1A1106B8E26B232980FD652E6181376441FD11' : true, + '100EADF35C841D8E035F2DC93937F552742CDF1594049CBF17A2046CC639BB3888E02E33' : true, + '10FC635DF6263E0DF325BE5F79CD6767742C3192E607E424EB4549542BE1BBC53E6174E2' : true, + '119279403CB18340E5AB664A679280DFA9628F4B98A91B4835BAD2C1463286BB66646A8C' : true, + '14F108AD9DFA64E289E71CCFA8AD7D5E3921C115C15D0ECA5CCB5BC4F07D21D8050B566A' : true, + '155EF5117AA2C1150E927E66FE3B84C3B38FECEC0B148AA686C3D00F01ECC8848E8085EB' : true, + '15ACA5C2922D79BCE87FCB67ED02CF36E7B4F69D61EC9069DB7E90A7401A3CF47D4FE8EE' : true, + '15B298A354704048703A375582C45AFA0048F8D37B153F6EA2798C323EF4F318A5624A9E' : true, + '15EE9F5AA08528DF6BDD34A3A056D8307F8A77836BDC6D068F8B0737FCC5725413068CA4' : true, + '160A1613C17FF01D887EE3D9E71261CCF88015D3F98479E1DA553D24FD42BA3F43886AEF' : true, + '173574AF7B611CEBF4F93CE2EE40F9A2925A8F8D2C6D04E0665F596AFF22D863E8256F3F' : true, + '1802B00127036A191B323B83DE9AA985D6BF7994F42BE5FA29DA0BD7587B591F47A44F22' : true, + '1898C0D6E93AFCF9B0F50CF74B014417FAB7EE36972662FB2DB02AF6BF03FDE87C4B2F9B' : true, + '18AE695D15CAB917673267D597B260C04BA7B9DDD68788E12FF852E1A024204BF286A8F6' : true, + '1AD00CB9A6E68A3B6E95860C5B8CD8195A4D0E8B5FDCFDF64E7299A36C060DB222CA78E4' : true, + '1B2E00CA2606903DADFE6F1568D36BB367650DF17E8E7E5B8240A4F4564BCFE23D69C6F0' : true, + '1BD75F76734CC0DC98CA442BCC0F78DD31E2C52CE1089BEFFDDADB26DD7C782EBC4037BD' : true, + '1C4BE2C62DB9AC3114F4400769CB1F4011C5B5F75552B011669C2E9717DE6D9BFF5FA810' : true, + '1D3554048578B03F42424DBF20730A3F02FAF3E291435468607857694DF5E45B68851868' : true, + '1D6496AF2D821A300BA0620D76BC53AA7FBB6ACD7E0AB438DAAF6FD50210D007C6C0829C' : true, + '1E240EA0F876D785A3F5F8A1493D2EBAFD1ED1E2021B0B9F73E8EB75CE23436BBCC746EB' : true, + '1E42950233926BB95FC07FDAD6B24BFCCCAB0EA04C2301D6697BDD379FCD12EB24E3949D' : true, + '1E74C3863C0C35C53EC27FEF3CAA3CD9209900B63D955728140CD13622D8C687A4EB0085' : true, + '200B4A7A88A7A942868A5F74567B880593E6AB220303B52328DCDA569EBAE4D1D1CCFB65' : true, + '206BD68B4A8F48ABE488090DE5651A500CFD83DBAE44B9A0C8F676F3B570650B94B69DBF' : true, + '2124A681C1D8F219AF4998E39DFE0BF46A174570A916FBE84453EED3D070A1D8DA442829' : true, + '21BC82AB49C4133B4BB22B5C6B909C198BAF4C9B1DF02A92F7DA128EB91BACF498604B6F' : true, + '21D84C822B990933A2EB14248D8E5FE84054DA6F1C3F4074ACED0FECCDDB79D153FB901D' : true, + '21EFB85040393F756F27FEE3EA5870EBA59C9B10EC7357515ABB660C4D94F73B9E6E9272' : true, + '222DA601EA7C0AF7F06C56433F7776D3FEB8C432DCF9769ACEAE3DD8908FFD288665647D' : true, + '224D8F8AFCF735C2BB5734907B8B22163E2BF7F2031B96F38CE6C4D8A85D3E2D58476A0F' : true, + '246DABD2F2EA4A66AE5BBCAE50AD6E56F9DD19266B2043F1FE4B3DCB0190AFF11F31A69D' : true, + '2477D9A891D13BFA882DC2FFF8CD3393D8C5388AB7301B1B6ED47AE645253A6F9F1A2761' : true, + '252AC6C5896839F9557202165EA39ED23C71D70E35A5DAA8B2E3812DC3677417F5990DF3' : true, + '255BA669B87BF8780DC18FA6EAE47063FA0882595F9CA6A11ECCBEAF65C764C0CCC311D0' : true, + '257ABA832EB6A20BDAFEF5020F08D7AD81968B3AEF1CDC70F5FA3269C292A3635BD123D3' : true, + '259DCF5EB3259D95B93F00865F47943D43F9B110D5BAFD48225231B0D0082B372FEF9A54' : true, + '266D2C1998B6706838505419EC9034600B77BEBBCB7AA24705DECC0FBD6A02FC7ABD9B52' : true, + '27DE36FE72B70003009DF4F01E6C0424DE3F40BD5093D39B6C60F6DABC076201008976C9' : true, + '27EC3947CDDA5AAFE29A016521A94CBB4D2378EC919539B5007F758F033B211EC54D8BCF' : true, + '2A5D003739469475397B11A6F29341E13F85F2BB4A62B0B58BE1614ABB0D4631B4BEF8BA' : true, + '2A954ECA79B2874573D92D90BAF99FB6A43489159A520F0D93D032CCAF37E7FE20A8B419' : true, + '2B508718392D3BFFC3917F2D7DC08A97B19DD096DCD4E3E0FD676885505A672C438D4E9C' : true, + '2B7020568682A018C807531228702172F17F6FB631DC99E3A3C87FFE1CF1811088D96033' : true, + '2C20269DCB1A4A0085B5B75AAEC201378C96BAEBDD2B070748EE303266A0F3986E7CAE58' : true, + '2C6F17A39562012065D2076EFCB83F6DB1EAC3E5B82476E9D50B1EC67D2CC11E12E0B491' : true, + '2C8C175EB154AB9317B5365ADBD1C6F2A073E5C5BD43610D864C21130A855857CC9CEA46' : true, + '2C8F9F661D1890B147269D8E86828CA96252DC40F71143A22FDE9EF7348E064251B18118' : true, + '2CC2B0D5D622C52E901EF4633F0FBB324A058FDFD761DB21B0C2EE48579BE27F42A4DA1C' : true, + '2DBBE525D3D165823AB70EFAE6EBE2E1B3EAC44776C9C81CEAF29D95B6CCA0081B67EC9D' : true, + '2E03FDC5F5D72B9464C1BE8931F1169B96995C7711E8E52DF9E34BECEC67D3CBF1B6C4D2' : true, + '30C908DDD73E63A4092814C74EB97E2CCFE4313DBA05B8A7C30063995A9EB7C247AD8FD5' : true, + '30C9E71E6BE614EB65B216692031674D3BC0380B33C3F6A60C86152293D9DFF54B81C004' : true, + '31853C62949763B9AAFD894EAF6FE0CF1F4914F7D874951DDDAE02C0BEFD3A2D82755185' : true, + '324A4BBBC863699BBE749AC6DD1D4624AD7E1C28B064EF8F6003402014C3D0E3370EB58A' : true, + '3327D16CFC9185FC8C7E98FA854EF305E70715F6F728365B5190E271DEE4C65EBEEACAF3' : true, + '33B784F55F27D76827DE14DE122AED6F0747220199CE74B97CB03D79B264A2C855E933FF' : true, + '343339FC6D033A8FA25385443270DEC45E5A168867BFFF00987D0B1DC2AB466C4264F956' : true, + '34FCB8D036DB9E14B3C2F2DB8FE494C7379A197B418545350CA60369F33C2EAF474F2079' : true, + '354895364A545A72968EE064CCEF2C8CC90D1BEA883DA7D117BE3B79F4210E1A5894A72D' : true, + '370971C4AFEB7501AE636C3016BFD1E5A399F76F0CBF4C9DA55E4AC24E8960984B2905B6' : true, + '3741491B18569A26F5ADC266FB40A54C4313BB96F1D5869BC14E6A92F6CFF63469878237' : true, + '3785445332451F20F0F395E125C4434EF48B11BFDEABBE94542071E641DE6BBE882B40B9' : true, + '37A56ED4B1258497B7FD56157AF9A200B435D4E1119D1C6690A749EBB394BD637BA782B7' : true, + '3916AAB96A41E11469DF9E6C3B72DCB6879F4BEE05DF98583BE360D633E70D3FFE9871AF' : true, + '3AB2DE229A209349F9EDC8D28AE7680D36863563FD5128C7BEA6F005CFE9B43668086CCE' : true, + '3AE550B039BEC7463633A1FE823E8D943CBB5DE0FCD6397C0588E56697BD462ABDF95C76' : true, + '3B0AE4BB416A84B39D2C575E6542BE478E1032E9245944F84791983EC9E829CB1059B4D3' : true, + '3C4C25CC0A19CAEE6AEB55160086725F23E833233E7D0CC92B7C4279AC19C2F474D604CA' : true, + '3D4129CB1EAA1174CD5DB062AFB0435BDDE1D2A901802E1D875E84B3807E4BB1FD994134' : true, + '3E455215095192E1B75D379FB187298AB1BC968BD4F49D622AA89A81F2150152A41D829C' : true, + '3E80175BADD77C104BF941B0CF1642B000EA522C8A9C06AA3ECCE0B4FA6CDC21D92E8099' : true, + '3F459639E25087F7BBFE980C3C2098E62AC8D58B57CEBF2F49AFF2FC768F511462907A41' : true, + '400125068D21436A0E43009CE743F3D5F9CD0E2CDA7624C18FBDF0F0ABB645B8F7FED57A' : true, + '410352DC0FF7501B16F0028EBA6F45C5DAC9024F54D8F6DF94935FB1732638CA6AD77C13' : true, + '41B807F7A8D109EEB49A8E704DFC1B787A74410FB0CD5C972A364B71BF031D88A6510E9E' : true, + '4265CABE019A9A4CA98C4149CDC0D57F293621028B20ED02F566C532D1D6ED909F45002F' : true, + '42769768CFA6B43824AAA11BF267DECA4178AB4CBFCE7B4102ACDAC4933E6FF50DCF715C' : true, + '4281A0E21CE35510DE558942659622E6E0B4322EB2F6A568B654538448184A5036874384' : true, + '429BD669C6D445AD2E81511D355A89624F555CE20DCD3364E0DC7C41EFDD40F50356C122' : true, + '45E1A572C5A93664409EF5E45884678C6B2F34AD8958BE62FDB06B5CCEBB9DD94F4E39F3' : true, + '45F750114EC5ADBD53688663EC7B6AE1C09AB0C8AD7114714ED5E21A5A276ADCD5E7EFCB' : true, + '468C210EAB92214659DBA6DB0061DE265A5A4DAF7861267C4B1F1E67586BAE6ED4FEB93F' : true, + '48D11E627801C26E4369A42CEE130AB564902AD7277AF3E32CD8CC1DC79DE1FD7F8069EA' : true, + '4963AE27F4D5953DD8DB2486B89C0753D3C063F219ED073E34AD5D750B327629FFD59AF2' : true, + '497904B0EB8719AC47B0BC11519B74D0D1EB23A46D17D68FD92564C2F1F1601764D8E349' : true, + '49EFA6A1F0DE8EA76AEE5B7D1E5FC4463E42A18706BD0C9CCF594750D2E4D6AB0048FDC4' : true, + '4B1C568CA0E8C79E1EF5EE32939965FE4C95A9902ABE0777CED18D6ACCC3372D2748381E' : true, + '4B6771BE33B90DB64B3A400187F08B1F7AC5FFF8DCBC5583176877073BF751735E9BD358' : true, + '4B798DD41D0392AA51EE04E5906F474954F9C163759F19045121A319F64C2D0555B7E073' : true, + '4BE2C99196650CF40E5A9392A00AFEB28CF427FD790C3AD166068DE81E57EFBB932272D4' : true, + '4C5641E50DBB2BE8CAA3ED1808AD43390483ED3399AC3608058722EDBC5E4600E3BEF9D7' : true, + '4D56677ECCE6457259B74F511172E169C0DB578157E9EE82B5917DF0DD6D82EE9039C4E2' : true, + '4FEBF1F070C280635D589FDA123CA9C4E392512F0ACFF505DFF6DE067F7537E165EA574B' : true, + '50193E2FE8B6F4055449F3AEC98B3E1947AFB915CDA26D82467B97FA42914468726138DD' : true, + '5186E81FBCB1C371B51810DB5FDCF62078E9DD0650624DB9CB36B50767F209B843BE15B3' : true, + '556EBEF54C1D7C0360C43418BC9649C1245C97DF7514E7CF2DF8BE72AE957B9E04741E85' : true, + '565FAA80611217F66721E62B6D61568E8025EFF46E70C8D472246584FE403B8A8D6ADBF5' : true, + '58EB470764D62CBAE29B96552B9700B56A6F2A8B6E2615088DF59CD24C402418AE42A3F1' : true, + '59736628512B98B410FF7D06FA22D6C8A0F8DB3F0BF417693B282EB74A6AD86DF9D448A3' : true, + '5A11B922850289E1C3F22CE14EC101844B421F7515F6AE8A6ECEF97F6982A400A4D9224E' : true, + '5B6F532CBB8188FA6C042C325DA56B967CA04FD8064C1CAA32A37AA94375038E8DF8DDC0' : true, + '5B9EFD3B6035EA688E52FE1319144AA36B81446A5CDDF474A0F800FFBE69FD0DB6287516' : true, + '5C48DCF74272EC56946D1CCC713580756631BF9EF74F9EB6C9D5A60CBA6ABED1F7BDEF7B' : true, + '5E397BDDF8BAEC82E9AC62BA0C54002BCA3AFBCF1240364B44B216208880483919937CF7' : true, + '5E809E845A0E650B1702F355182A3ED7786A74AC76AB147F9C6A3050BA9EA87EFE9ACE3C' : true, + '5F944A7322B8F7D131EC5939F78EFE6E9FC796E8F8524F863AE1496D381242105F1B78F5' : true, + '60847C5ACEDB0CD4CBA7E9FE02C6A9C0101DFA3FD50BCBBB9BB5600C1955A41AF4733A04' : true, + '649CEF2E44FCC68F5207D051738FCB3DDA40188B9189A3EDEEAEDA97FE2F9DF5B7D18A41' : true, + '65295911BB8F5166890D47824002C5AFC4674DDC6CE2967FF9C92E072EF8E8A7FBD6A131' : true, + '6558AB15AD576C1EA8A7B569ACBFFFEBE5DF743CB601C49B9843DCAB8CE86A81109FE48E' : true, + '67AC0D773011DED143AE7B737190BCA9ED8DC8386C4886AEEE079158AAC3BFE658E394B4' : true, + '67CB9DC013248A829BB2171ED11BECD4D23209AD23D314232174E40D7F9D62139786633A' : true, + '689B17C654E0E0E099551642F75A86D8027268293E5F5D17AAA4B3C3E6361E1F92575EAA' : true, + '6960ECBE8C94D76E6F2EC4782F55F08397226AAE4A7A64A59BD16787F27F841C0A001FD0' : true, + '6C397DA40E5559B23FD641B11250DE435F3B8CF2F810B37D78B4CEEC1919C37334B9C774' : true, + '6CC9A76E47F10CE3533B784C4DC26AC5B72FFF92D2CE43DE0A8D4C548C503726A81E2B93' : true, + '6D38C49B22244CA3A8B3A09345E157FA89C32E6B524E4D65388B9ECEDC637134ED4193A3' : true, + '70B57C4881953E80DC289BBAEF1EE4854072BA31FEC351438480F62E6CB95508461EAB2F' : true, + '711F0E21E7AAEA323A6623D3AB50D66996974CD6B663A7184526B1D648AD815CF51E801A' : true, + '71AA6AAF1FA5C0D50E90D40BF6AADFCC55C86F7414AC8BDD6814F4D86AF15F3710E104D0' : true, + '71E265FBCD7B0B845BE3BCD76320C598CFF810FB2C4FFC0156BFE1E1FABCB418C68D31C5' : true, + '72E44A87E369408077EABCE3F4FFF0E15F43E5B1BFF8788CAC1CC7CA4A9AC6222BCC34C6' : true, + '733A747AECBBA396A6C2E4E2C89BC0C3AEC5FB3FC8E1BFC4E54F03075A9AE800B7F7B6FA' : true, + '739DD35FC63C95FEC6ED89E58208DD897FB9E2C995C97A939F9E81A07AEA9B4D70463496' : true, + '74014A91B108C458CE47CDF0DD11530885A408C09C193E5D51587DCDD61330FD8CDE37BF' : true, + '747B820343F0009E6BB3EC47BF85A5934463C531D7CCC1006794612BB656D3BF8257846F' : true, + '74A82C81432B35609B78056B58F36582CFF360F524CB20F1FEAD89006F7F586A285B2D5B' : true, + '770D19B121FD00429C3E0CA5DD0B028E25019019CFFBD9991CB76825748D945F30939542' : true, + '774AF42C9DB027B747B515E4C762F0FCDF646DCB7B0FD3A96AEE88C64E2D676711FF9D5F' : true, + '782A02DFDB2E14D5A75F0ADFB68E9C5D4F65566336DB6598581D584A596C87934D5F2AB4' : true, + '78A5FB104BE4632ED26BFBF2B6C24B8EEC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3' : true, + '79E4A9840D7D3A96D7C04FE2434C892EA8985D3A65E5E5C4B2D7D66D40C6DD2FB19C5436' : true, + '7A79544D07923B5BFF41F00EC739A298C060ED44CBD881BD0EF86C0BA287DDCF8167478C' : true, + '7BB508999A8C18BF85277D0EAEDAB2AB24BA6D6C8A5B5837A48DB5FAE919EA675C94D217' : true, + '7C62FF749D31535E684AD578AA1EBF239F744E9F2B4DBAEC0F312C50B6563B8E2D93C311' : true, + '7CA50FF85B9A7D6D30AE545AE342A28A59AF82799186C7B47507CBCF035746EB04DDB716' : true, + '7D86908F5BF1F240C0F73D62B5A4A93B72997913EC9B0DAE65D1B6D7B24A76A3AEC2EE16' : true, + '7E234E5BA7A5B425E90007741162AED67F8AB0CFD051876A66F3360F47C88D8CD335FC74' : true, + '7F667A71D3EB6978209A51149D83DA20BE36A4562FB2EE05DBB3D32323ADF445084ED656' : true, + '803ABC22C1E6FB8D9B3B274A321B9A0147BEABC922EAE80E78783462A79F45C254FDE68B' : true, + '8135B9FBFB12CA186936EBAE6978A1F1DCBB9EB7194BC47205C111752986835B53CAE4F8' : true, + '81D6ED354F1F26D031D040DD8AE5810DE0925E18C7765E22DABD9427529DA6AF4E066428' : true, + '8212F789E10B9160A4B6229F9468119268ED18B309CD5291C0D3357C1D1141BF883866B1' : true, + '824AD493004D66B6A32CA77B3536CF0B687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44' : true, + '8292BA5BEFCD8A6FA63D55F984F6D6B7F9B5B632455F9CBEEC575F80DCE96E2CC7B278B7' : true, + '84901D95304956FC4181F045D776C46B439E525F5A6A47C32CEBC45C63ED39317CE5F4DF' : true, + '852FF4764CD5426CCB5E7DF717E835BD4EFCED9C6BDD0C985CA3C7D253063C5BE6FC620C' : true, + '85CA765A1BD16822DCA22312CAC680345BCDCDCC66F6DCE4441FE37D5CC3134C46F47038' : true, + '86386D5E49636C855CDB6DDC94B7D0F7ACED5F6553FD25CE015F1F7A483B6A749F6178C6' : true, + '86420509BCA79DEC1DF32E0EBAD81DD01D8259CA2127C3CBC16CD932F62C65298CA88712' : true, + '86ACDE2BC56DC3D98C2888D38D16131ECE6A64A309E42FBBD9851C453E6409EAE87D60F1' : true, + '86EF8E319D9F8569A2A41A127168BA1B90DECE77F8C825340E62EBD635E1BE20CF7327DD' : true, + '8714AB83C4041BF193C750E2D721EBEF30779E9315022E94856A3FF8BCF815B082F9AEFD' : true, + '879055F2CE31153C33D927C876E37DE13070F8833E4AA6803E09A646AE3F7D8AE1FD1654' : true, + '87CE0B7B2A0E4900E158719B37A893720563B8630D62D75ABBC8AB1E4BDFB5A899B24D43' : true, + '882C8C52B8A23CF3F7BB03EAAEAC420B74207441729CDD92EC7931D823108DC28192E2BB' : true, + '8949548CC8689A8329ECDC067321AB97A60F34C8626C81F68BF77DA9F667588A903F7D36' : true, + '8956AA4D441E59D805A1886DEAC828B26372C49DA9FFF051B8B5C7D4E5AAE30384024B9C' : true, + '8BCA525F7553D02C6F630D8F882E1CD78EB03FC3CF7BB292866268B751223DB5103405CB' : true, + '8CCADC0B22CEF5BE72AC411A11A8D81291C6D6EE3E8AC86384E548C299295C756C817B81' : true, + '8CD79FEBC7B8144C5478A7903BA935671F55E8839BAC30728BE7108EDE7B0BB0D3298224' : true, + '8D26FF2F316D5929DDE636A7E2CE6425720FC15DDC27D456D098FABF3CDD78D31EF5A8DA' : true, + '8D639B56C114E4EE9A128586119082A3D2441AA8C203AECAA96E501F124D52B68FE4C375' : true, + '8D7251DBA03ACF2077DFF265065EDFEFC8C25F169EF85074D5BEE8CDA2D43CAEE75FD257' : true, + '8EADB501AA4D81E48C1DD1E1140095193679CA35668772304D30A5FB873B0FA77BB70D54' : true, + '8F5D770627C4983C5B9378E7D77D9BCC7E784A101C8265CC2DE1F16D47B440CAD90A1945' : true, + '8F91E7EEE3FCDA86CAFCDC70EDB7B70C8250BED5A214433A66377CBC10EF83F669DA3A67' : true, + '911B3F6ECD9EABEE07FE1F71D2B36127E19FE30E8B84609E809B170D72A8C5BA6E1409BD' : true, + '91DE0625ABDAFD32170CBB25172A84672796BAE63F1801E277261BA0D77770028F20EEE4' : true, + '91F4035520A1F8632C62DEACFB611C8E21FCBD8E7F6CAF051BD1B343ECA8E76147F20F8A' : true, + '9265588BA21A317273685CB4A57A0748E621F3354379059A4B68309D8A2F74221587EC79' : true, + '932A3EF6FD23690D7120D42B47992BA6CBA1C5F8B0E35EB8B94512D3F934A2E90610D336' : true, + '937F901CED846717A4655F9BCB3002978781C25A96BDC2FB4C65064FF9390B26048A0E01' : true, + '93C28E117BD4F30319BD2875134A454AAB48F333DB04ABB9C072DA5B0CC1D057F0369B46' : true, + '93EB36130BC154F13E7505E5E01CD4375F4E1FCF31B7913B850B54F6E5FF501A2B6FC6CF' : true, + '93F1AD340B2BE7A85460E2738CA49431705D2B4565C7047A540694A79AF7ABB842BDC161' : true, + '9414777E3E5EFD8F30BD41B0CFE7D03075E0ABB6138512271C04F85FDDDE38E4B7242EFE' : true, + '96897D61D1552B27E25A39B42A6C446F8EFDCABC93E61E925D4D1DED181A4320A467A139' : true, + '9760E8575FD35047E5430C94368AB06290AEA26985FF14804C434952ECE9608477AF556F' : true, + '978FC66B3B3E40857724750B76BB55F8B5D303BF8682E152919D83F184ED05F1DCE5370C' : true, + '9A771918ED96CFDF1BB70EF58DB9882ECF74BFFF9B86815B08335440363E87B6B6F0BF73' : true, + '9AAEF722F533FB4EEC0A249DC63D7D255E997CA5945AAB75FFD14804A974BF2AE1DFE7E1' : true, + '9B340D1A315B97462698BCA6136A71969E6CEB179185A29EC6060CA53E1974AF94AF59D4' : true, + '9D666ACCFFD5F543B4BF8C16D12BA8998939576E178DF705780FCC5EC84F84F6253A4893' : true, + '9DFBF9ACED893322F428488325235BE0A69A91FD057F136A42630BB1760D2D51120C1650' : true, + '9E80FF78010C2EC136BDFE96906E08F34ABDEEEC950D359C89AEC752A12C5B29F6D6AA0C' : true, + '9F6C1F0F07AC1921F915BBD5C72CD82AF5C27CF5FFF3029ACF1A1A4BEC7EE1964C77D784' : true, + '9FDDDBABFF8EFF45215FF06C9D8FFE2B9656CD7B57969895D0E141466806FBB8C6110687' : true, + 'A10B44B3CA10D8006E9D0FD80F920AD1B80186D1EB9C86A54104CF3054F34C52B7E558C6' : true, + 'A208E4B33EEFDE084B60D0BF7952498D8CC4307BC60755E7B22DD9F7FEA245936C7CF288' : true, + 'A2339B4C747873D46CE7C1F38DCB5CE985371CA6E550143DCE2803471BDE3A09E8F8770F' : true, + 'A26F53B7EE40DB4A68E7FA18D9104B7269BD8CF49CD300FB592E1793CA556AF3ECAA35FB' : true, + 'A33D88FE161BDDF95C9F1A7FD8C89008A3E31E20B2E46A328520472D0CDE9523E7260C6D' : true, + 'A37D2C27E4A7F3AA5F75D4C49264026AB6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6' : true, + 'A3EC750F2E88DFFA48014E0B5C486FFB37F76DE6077C90C5B13E931AB74110B4F2E49A27' : true, + 'A66B6090239B3F2DBB986FD6A7190D46E0AB059420725493056062023670F7CD2EFC6666' : true, + 'A771FD26FC3CE540F19906EBC1936DE9E619D25B380B7B13FDA33E8A58CD82D8A88E0515' : true, + 'A7F2E41606411150306B9CE3B49CB0C9E12DFB4B41D7D9C32B30514BAC1D81D8385E2D46' : true, + 'A80D6F3978B9436D77426D985ACC23CAD6DAA8208D09D2154D24B52FCB346EB258B28A58' : true, + 'A8EDDEEB938866D82FC3BD1DBE45BE4D7639C71847E151B5C7EA01C758FBF12ABA298F7A' : true, + 'A923759BBA49366E31C2DBF2E766BA87317A2AD07F2B335EF5A1C34E4B57E8B7D8F1FCA6' : true, + 'A981C0B73A9250BC91A521FF3D47879FCB658264EA8CDA186E1752FB52C397367EA387BE' : true, + 'AA088FF6F97BB7F2B1A71E9BEAEABD79CF9E876DD3EBFC422697A3B5A37AA076A9062348' : true, + 'AA8E5DD9F8DB0A58B78D26876C823555409D4BD917B55C27B69B64CB9822440DCD09B889' : true, + 'AABFBF6497DA981D6FC6083A957033CA394FF6850B06BE52E51856CC10E180E882B385CC' : true, + 'AB57A65B7D428219B5D85826285EFDFFB12E13634586A46F1AB2606837582DC4ACFD9497' : true, + 'ABAB8D2DB740E5973D2FF2A63BDA6A05C18211328A92B3B23809B9B5E2740A07FB12EB5E' : true, + 'ABBFEAE36B29A6CCA6783599EFAD2B802F173F7DE99667AFA57AF80AA2D1B12FAC830338' : true, + 'ACB694A59C17E0D791529BB19706A6E4D4DE20D05E66FC53FE1A50882C78DB2852CAE474' : true, + 'AD8E0F9E016BA0C574D50CD368654F1ECFDEFE102FDA05BBE4C78D2E4423589005B2571D' : true, + 'AFB8336E7CDDC60264AD58FC0D4F7BCFBC7B3C6FEF26B9F7AB10D7A1F6B67C5ED2A12D3D' : true, + 'B001EE14D9AF291894768EF169332A846E3A55A4190C195C93843CC0DB722E313061F0B1' : true, + 'B147BC1857D118A0782DEC71E82A9573204285DCF7EB764195578E136BD4B7D1E98E46A5' : true, + 'B39C25B1C32E32538015309D4D02773E6782AAE0EDEEE21A5839D3C0CD14680A4F60142A' : true, + 'B3A53E77216DAC4AC0C9FBD5413DCA0658119F0E128287EA50FDD987456F4F78DCFAD6D4' : true, + 'B44ADBE85916461E5AD86EDA064352622964B686135B5DFDDD3253A89BBC24D74B08C64D' : true, + 'B465220A7CADDF41B7D544D5ADFA9A75BC9219DDC98E14BF1A781F6E280B04C27F902712' : true, + 'B4819E89AC1724FD2A4285271D0C2B5D20CB594FB4EDD895763FD5254E959A6674C6EEB2' : true, + 'B5E83436C910445848706D2E83D4B805039EEDB80BE7A03C6953893B20D2D9323A4C2AFD' : true, + 'B75274E292B48093F275E4CCD7F2EA263BC49F48F8F373A09C1EBDF85BB1C365C7D811B3' : true, + 'B774CD487C5F9A0D3BF3FE66F41B3DFA5B4E0EC28EBD8292A51782241281AD9FEEDD4E4C' : true, + 'B7B0D1EC1A033ECEA91511CCB16FB2AEE3D73606996CDFEF61FA04C335E98EA96104264A' : true, + 'B8089AF003CC1B0DC86C0B76A1756423A0A1AB90C9FC847B3B1261E8977D5FD32261D3CC' : true, + 'B816334C4C4CF2D8D34D06B4A65B4003838E30F77FDD14AA385ED145009C0E2236494FAA' : true, + 'B8D312034E8C0C5A47C9B6C59E5B97FD0560A2C738FF98D1172A94FE45FB8A47D665371E' : true, + 'BA21EA20D6DDDB8FC1578B40ADA1FCFC801D62D07B449D5C5C035C98EA61FA443C2A58FE' : true, + 'BA926442161FCBA116481AF6405C59870456F23D1E9C43AECB0D807F1C0647551A05F456' : true, + 'BC6C5133A7E9D366635415721B2192935922A1E15AEA163521F898396A4646B0441B0FA9' : true, + 'BD8ACE34A8AE6148E85EC87A1CE8CCBFD2EDF88B41B6FE01461D6E2834EC7C8F6C77721E' : true, + 'BDD6F58A7C3CC4A6F934CCC38961F6B2CABB51672400588E6419F1D40878D0403AA20264' : true, + 'BE395ABE078AB1121725CC1D46343CB2DE990CED99E0431F60EDC3937E7CD5BF0ED9E5FA' : true, + 'BF6059A35BBAF6A77642DA6F1A7B50CF5D989CDB159611365165641B560FDBEA2AC23EF1' : true, + 'BFB5E77D3DEA6F1DF08A50BC8C1CFA1DE4554333CA390E128B8BF81D90B70F4002D1D6E9' : true, + 'C1623E23C582739C03594B2BE977497F2AB628485E78FBF3AD9E7910DD6BDF99722C96E5' : true, + 'C1D43E07AEEBECFD7589E67EA84CEBCD76B76096DD145629AC7585D37063C1BC47861C8B' : true, + 'C1D951C084B86A75E82FD7D65F7EAC460B972C9EA6E7CC58D93B20BF71EC412E7209FABF' : true, + 'C22A59ABCF152F4CF7E631A316AE840C9158C5EF987301A8903CFDAB03D72DA1D88909C9' : true, + 'C2DBAB8E9652C5EEAEF25500896D55953913853E45C439A2DA718CDFB6F3E033E04FEE71' : true, + 'C45D0E48B6AC28304E0ABCF938168757D8A6332CE0036FB185F6634F7D6A066526322827' : true, + 'C463AB44201C36E437C05F279D0F6F6E97E2E99636A547554F838FBA38B82E74F89A830A' : true, + 'C4D7F0B2A3C57D6167F004CD43D3BA5890DEDE9E4C4E9F6FD88617579DD391BC65A68964' : true, + 'C570C4A2ED53780CC810538164CBD01D23E594945195F2414803B4D564D2A3A3F5D88B8C' : true, + 'C5A1B7FF73DDD6D7343218DFFC3CAD8806083F593F15A104A069A46BA903D006B7970991' : true, + 'C5DFB849CA051355EE2DBA1AC33EB028D69B561148F01C77C54578C10926DF5B856976AD' : true, + 'C5E67BBF06D04F43EDC47A658AFB6B19339B6B1450249B557A01877284D9E02FC3D2D8E9' : true, + 'C69F6D5CB379B00389CBF03FA4C09F8AEF2DACCBEABB682D32CE4ABD6CB90025236C07BC' : true, + 'C7BD11D6918A3582C53666017C6F4779634C3B0230CF1B78B4569FECF2C04A8652EFEF0E' : true, + 'C86E97F335A729144782892391A6BEC84A3F8D6BDC0E1ECFCD72E377DEF2D7FF92C19BC7' : true, + 'C91962D0DA7E1020FCA4CD0380872DF551A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE' : true, + 'C9982777281E3D0E153C8400B88503E656E0FAC03B8F18235518E5D311CAE8C24331AB66' : true, + 'CA3DD368F1035CD032FAB82B59E85ADB97817950D81C9670CC34D809CF794431367EF474' : true, + 'CB17E431673EE209FE455793F30AFA1C4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5' : true, + 'CBBDC3682DB3CB1859D32952E8C66489C9321DE6B5A82666CF6971A18A56F2D3A8675602' : true, + 'CC4DAEFB306BD838FE50EB86614BD2269C615C4D4D85103A5326C24DBAEAE4A2D2D5CC97' : true, + 'CD3B3D625B09B80936879E122F7164BA67EB337B684CEB0EC2B0760AB488278CDD9597DD' : true, + 'CD68B6A7C7C4CE75E01D4F5744619209132D0D45534B6997CDB2D5C339E25576609B5CC6' : true, + 'CD996CDB2AC296155ABF879EAEA5EE93EE29D6EA98E632C6E527E0906F0280688BDF44DC' : true, + 'CDF439F3B51850D73EA4C591A03E214BE1A45B141A21DA1A79F41A42A961D669CD0634C1' : true, + 'CE78335C5978016E18EAB936A0B92E23AE5083ED7CF45CBC8F61C621FE685D794221156E' : true, + 'CF8F3B62A3CACA711BA3E1CB4857351F5D003860F002ED829DEAA41868F788186D62127F' : true, + 'CFF4270DD4EDDC6516496D3DDABF6EDE3A44735AE581901F248661461E3B9CC45FF53A1B' : true, + 'D2EDEE7992F78272180BFED98BEC13D8A7F8390BA57705096FD36941D42E7198C6D4D9D5' : true, + 'D35376E3CE58C5B0F29FF42A05F0A1F2211165CA379FBB5ED801E31C430A62AAC109BCB4' : true, + 'D3D9BDAE9FAC6724B3C81B52E1B9A9BD4A65D5F41DEF39B8B8904A4AD3648133CFC7A1D1' : true, + 'D3F3A616C0FA6B1D59B12D964D0E112E74F8A3C3EFE7B390064B83903C21646020E5DFCE' : true, + 'D474DE575C39B2D39C8583C5C065498A5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25' : true, + 'D480656824F9892228DBF5A49A178F14016897E1A0B8F2C3B134665C20A727B7A158E28F' : true, + 'D59788DA6416E71D664AA6EA37FC7ADCEC93DE083C93D933A986B3D5CDE25ACB2FEECF8E' : true, + 'D5BEFFB5EE826CF0E2578EA7E5346F03D904080A4929C838E9F185ECF7A22DEF99342407' : true, + 'D5E98140C51869FC462C8975620FAA7807E032E020B72C3F192F0628A2593A19A70F069E' : true, + 'D63981C6527E9669FCFCCA66ED05F296B51C067CEE2B0C3DF855AB2D92F4FE39D4E70F0E' : true, + 'D6A5C3ED5DDD3E00C13D87921F1D3FE4B31EB1B740E36C8402DADC37D44DF5D4674952F9' : true, + 'D6ED3CCAE2660FAF10430D779B0409BF85B5FF679B0C79961FC86E4422004613DB179284' : true, + 'D7343DEF1D270928E131025B132BDDF7B172B1A56D95F91FE50287E14D37EA6A4463768A' : true, + 'D87E32EF69F8BF72031D4082E8A775AF42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA' : true, + 'DA26B6E6C7C2F7B79E4659B3577718653E84D3BCC544C0F6FA19435C851F3F2FCBA8E814' : true, + 'DB233DF969FA4BB9958044735E7D4183273EE12457FDC4F90C55E82B56167F62F532E547' : true, + 'DBC8F2272EB1EA6A29235DFE563E33DFC8EC8C879269CB4BAB39E98D7E5767F31495739D' : true, + 'DC32C3A76D2557C768099DEA2DA9A2D18782C6C304353BCFD29692D2593E7D44D934FF11' : true, + 'DC6D6FAF897CDD17332FB5BA9035E9CE7F88CD7223F3C813818C994614A89C99FA3B5247' : true, + 'DD753F56BFBBC5A17A1553C690F9FBCC24A40A1F573643A67F0A4B0749F6A22BF28ABB6B' : true, + 'DF0DBC7CC836B77699A1ABF0D20F896A342CD9D3062DA48C346965297F081EBC2EF68FDC' : true, + 'DF168A83EA83845DB96501C6A65D193EDBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8' : true, + 'DF3C735981E7395081044C34A2CBB37B61573A11DF0ED87ED5926522EAD056D744B32371' : true, + 'DFF28073CCF1E66173FCF542E9C57CEE99A69BE61AFE886B4D2B82007CB854FC317E1539' : true, + 'E006A1C97DCFC9FC0DC0567596D862139BAAE59F56EE21CB435ABE2593DFA7F040D11DCB' : true, + 'E14B5273D71BDB9330E5BDE4096EBEFB216B2A29E62A00CE820146D8244141B92511B279' : true, + 'E1C07EA0AABBD4B77B84C228117808A7CDD4EEAE6000AC7F40C3802C171E30148030C072' : true, + 'E2D52023ECEEB872E12B5D296FFA43DA9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7' : true, + 'E2D8F867F4509435FC5E05FC822295C30446C8BB9A6983C95C8A2E5464687C1115AAB74A' : true, + 'E2F8E080D0083F1EC1E9D23F8069AE06C73026E325FE21916B55C4B53A56B13DCAF3D625' : true, + 'E60BD2C9CA2D88DB1A710E4B78EB024140E78C1D523D1CD9954FAC1A1AB3BD3CBAA15BFC' : true, + 'E77ADCB11F6E061F746C591627C34BC07454535C24A3A758207E3E3ED324F816FB211649' : true, + 'E8CC9FB09B40C51F4FBA7421F952857A688B6EB807E8EDA5C7B17C4393D0795F0FAE155F' : true, + 'EBB04F1D3A2E372F1DDA6E27D6B680FA18F7C1FCC3090203FD5BAA2F861A754976C8DD25' : true, + 'EBF59D290D61F9421F7CC2BA6DE3150928903A635B5280FAE6774C0B6DA7D6BAA64AF2E8' : true, + 'EC407D2B765267052CEAF23A4F65F0D8A5EC73D48C34FCBEF1005AEB85843524BBFAB727' : true, + 'ED41F58C50C52B9C73E6EE6CEBC2A8261B4B396126276B6491A2686DD70243212D1F1D96' : true, + 'EE2931BC327E9AE6E8B5F751B4347190503006091D97D4F5AE39F7CBE7927D7D652D3431' : true, + 'EE7A41E0CF757D889280A21A9A7BA157679A4F81FC705DDEC419778DD2EBD875F4C242C6' : true, + 'EEFE6169656EF89CC62AF4D72B63EFA29FAD91A6CE6AC6C50047C44EC9D4A50D92D84979' : true, + 'EF5AF133EFF1CDBB5102EE12144B96C4A1DB6393916F17E4185509400415C70240B0AE6B' : true, + 'F058C503826717AB8FDA0310278E19C2CB44A097857C45FA187ED952086CB9841F2D51B5' : true, + 'F096B62FC510D5678E832532E85E2EE52388C9D371CC9E963DFF7D3CA7CEFCD625EC190D' : true, + 'F09E639376A595BC1861F19BFBD364DD80BF3DE9A41D768D194B293C85632CDBC8EA8CF7' : true, + 'F16A2218C9CDDFCE821D1DB7785CA9A57998A308E14D6585E6C21E153A719FBA5AD34AD9' : true, + 'F1BC636A54E0B527F5CDE71AE34D6E4A36B12B49F9819ED74C9EBC380FC6568F5DACB2F7' : true, + 'F20598E5964BBE5D55181B55B388E3929078C5A28F9A4325C2A7C73813CDFE13C20F934E' : true, + 'F27DE954E4A3220D769FE70BBBB3242B049811056AFE9FD0F5BE01685AACE6A5D1C4454C' : true, + 'F37E3A13DC746306741A3C38328CFBA9253F775B0E7797AB645F15915597C39E263631D1' : true, + 'F3D752A875FD18ECE17D35B1706EA59C968338F113E36A7BABDD08F7776391A68736582E' : true, + 'F4FF97428070FE66168BBED35315819BF44095C238AC73FC4F77BF8F98DF70F8F091BC52' : true, + 'F520DA5203862B92768D5CB72D8B93ADA65CB4733D94A5C865A864647C2C01272C89B143' : true, + 'F775AB29FB514EB7775EFF053C998EF5DE28F4A4FFE5B92FA3C503D1A349A7F9962A8212' : true, + 'F7B661AB03C25C463E2D2CF4A124D854FAA7D9FB31B746F200A85E65797613D816E063B5' : true, + 'F8387C7788DF2C16682EC2E2524BB8F95F3AFC0A8B64F686673474DF7EA9A2FEF9FA7A51' : true, + 'F8BEC46322C9A846748BB81D1E4A2BF661EF43D77FCAD46151BC98E0C35912AF9FEB6311' : true, + 'FB1B5D438A94CD44C676F2434B47E731F18B538D1BE903B6A6F056435B171589CAF36BF2' : true, + 'FC11B8D8089330006D23F97EEB521E0270179B868C00A4FA609152223F9F3E32BDE00562' : true, + 'FD49BE5B185A25ECF9C354851040E8D4086418E906CEE89C2353B6E27FBD9E7439F76316' : true +}; diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js new file mode 100644 index 0000000..17999aa --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js @@ -0,0 +1,228 @@ +// http://lists.w3.org/Archives/Public/www-archive/2009Sep/att-0051/draft-hodges-strict-transport-sec-05.plain.html
+
+const STS = {
+
+ enabled: false,
+
+ get db() {
+ delete this.db;
+ return this.initPersistentDB();
+ },
+
+ initPersistentDB: function() {
+ return this.db = new STSDB(STSPersistence);
+ },
+
+ processRequest: function(chan) {
+ if (this.enabled) {
+ var uri = chan.URI;
+ if (uri.schemeIs("https")) {
+ try {
+ this.db.processHeader(uri.asciiHost, chan.getResponseHeader("Strict-Transport-Security"));
+ } catch (e) {}
+ }
+ }
+ },
+
+ isSTSURI: function(uri) {
+ return this.enabled && this.db.matches(uri.asciiHost);
+ },
+
+ enterPrivateBrowsing: function() {
+ try {
+ this.db.save();
+ } catch(e) {}
+
+ this.db = new STSDB(this.db);
+ },
+
+ exitPrivateBrowsing: function() {
+ this.initPersistentDB();
+ },
+
+ eraseDB: function() {
+ this.db.reset();
+ STSPersistence.save(this.db);
+ },
+
+ patchErrorPage: function(docShell, errorURI) {
+ // see #errors-in-secure-transport-establishment
+ if (!this.enabled) return;
+
+ if (!(/^about:certerror?/.test(errorURI.spec) &&
+ this.isSTSURI(docShell.currentURI))
+ ) return;
+
+ Thread.delay(function() {
+ docShell.document.getElementById("expertContent").style.display = "none";
+ }, 100);
+ },
+
+ dispose: function() {
+ this.db.save();
+ }
+};
+
+function STSDB(source) {
+ this._entries = {};
+ if (source && source._entries) { // clone
+ var entries = source._entries;
+ for (var p in entries) {
+ this._entries[p] = entries[p];
+ }
+ } else {
+ if (source && source.load) {
+ this._persistence = source;
+ this.load();
+ }
+ }
+}
+
+STSDB.prototype = {
+ _persistence: null,
+ _dirty: false,
+ _saveTimer: null,
+
+ processHeader: function(host, header) {
+ if (DNS.isIP(host)) return;
+
+ var m = header.match(/^\s*max-age\s*=\s*(\d+)\s*(;\s*includeSubDomains)?/i);
+ if (!m) return;
+ var maxAge = parseInt(m[1]);
+ var includeSubDomains = !!m[2];
+ var expiration = Math.round(Date.now() / 1000) + maxAge;
+ if (host in this._entries) {
+ var e = this._entries[host];
+ if (e.expiration == expiration && e.includeSubDomains == includeSubDomains)
+ return;
+
+ e.expiration = expiration;
+ e.includeSubDomains = includeSubDomains;
+ } else {
+ this.add(new STSEntry(host, expiration, includeSubDomains));
+ }
+ this.saveDeferred();
+ },
+
+ add: function(entry) {
+ this._entries[entry.host] = entry;
+ },
+
+ matches: function(host, asSuperDomain) {
+ if (host in this._entries) {
+ var e = this._entries[host];
+
+ if (e.expiration >= Date.now() / 1000) {
+ if ((!asSuperDomain || e.includeSubDomains))
+ return true;
+ } else {
+ delete this._entries[host];
+ }
+ }
+
+ var dotPos = host.indexOf(".");
+ var lastDotPos = host.lastIndexOf(".");
+
+ if (dotPos == lastDotPos)
+ return false;
+
+ return this.matches(host.substring(dotPos + 1), true);
+ },
+
+ serialize: function() {
+ var lines = [], ee = this._entries;
+ var e;
+ for (var h in ee) {
+ e = ee[h];
+ lines.push([e.host, e.expiration, e.includeSubDomains ? "*" : ""].join(";"));
+ }
+ return lines.join("\n");
+ },
+ restore: function(s) {
+ s.split(/\s+/).forEach(function(line) {
+ if (line) {
+ var args = line.split(";");
+ if (args.length > 1)
+ this.add(new STSEntry(args[0], parseInt(args[1]), !!args[2]));
+ }
+ }, this);
+ },
+
+ load: function() {
+ if (this._persistence) {
+ this._persistence.load(this);
+ this.purgeExpired();
+ }
+ },
+
+ save: function() {
+ if (this._dirty && this._persistence) {
+ this.purgeExpired();
+ this._persistence.save(this);
+ this._dirty = false;
+ }
+ },
+
+ saveDeferred: function() {
+ if (this._dirty || !this._persistence) return;
+ this._dirty = true;
+ if (!this._timer) this._timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+ this._timer.initWithCallback(this, 10000, Ci.nsITimer.TYPE_ONE_SHOT);
+ },
+ notify: function(timer) {
+ this.save();
+ },
+
+ purgeExpired: function() {
+ var now = Math.round(Date.now() / 1000);
+ for (var h in this._entries) {
+ if (this._entries[h].expiration < now) delete this._entries[h];
+ }
+ },
+
+ reset: function() {
+ this._entries = {};
+ this._dirty = false;
+ }
+};
+
+function STSEntry(host, expiration, includeSubDomains) {
+ this.host = host;
+ this.expiration = expiration;
+ if (includeSubDomains) this.includeSubDomains = includeSubDomains;
+}
+
+STSEntry.prototype = {
+ includeSubDomains: false
+};
+
+
+const STSPersistence = {
+ get _file() {
+ delete this._file;
+ var f = Cc["@mozilla.org/file/directory_service;1"].getService(
+ Ci.nsIProperties).get("ProfD", Ci.nsIFile);
+ f.append("NoScriptSTS.db");
+ return this._file = f;
+ },
+ load: function(db) {
+ var f = this._file;
+ try {
+ if (f.exists()) db.restore(IO.readFile(f));
+ } catch (e) {
+ dump("STS: Error loading db from " + f.path + "!" + e + "\n");
+ return false;
+ }
+ return true;
+ },
+ save: function(db) {
+ var f = this._file;
+ try {
+ IO.safeWriteFile(f, db.serialize());
+ } catch(e) {
+ dump("STS: Error saving db to " + f.path + "!" + e + "\n");
+ return false;
+ }
+ return true;
+ }
+};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js new file mode 100644 index 0000000..8c9daf6 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js @@ -0,0 +1,100 @@ +
+var Thread = {
+
+ hostRunning: true,
+ activeLoops: 0,
+ _timers: [],
+
+ spin: function(ctrl) {
+ ctrl.startTime = ctrl.startTime || Date.now();
+ ctrl.timeout = false;
+ this.activeLoops++;
+ this._spinInternal(ctrl);
+ this.activeLoops--;
+ ctrl.elapsed = Date.now() - ctrl.startTime;
+ return ctrl.timeout;
+ },
+
+ _spinInternal: function(ctrl) {
+ var t = ctrl.startTime;
+ var maxTime = parseInt(ctrl.maxTime);
+ if (maxTime) {
+ while(ctrl.running && this.hostRunning) {
+ this.yield();
+ if (Date.now() - t > maxTime) {
+ ctrl.timeout = true;
+ ctrl.running = false;
+ break;
+ }
+ }
+ } else while(ctrl.running && this.hostRunning) this.yield();
+ },
+
+ yield: function() {
+ this.current.processNextEvent(true);
+ },
+
+ yieldAll: function() {
+ var t = this.current;
+ while(t.hasPendingEvents()) t.processNextEvent(false);
+ },
+
+ get current() {
+ delete this.current;
+ var obj = "@mozilla.org/thread-manager;1" in Cc
+ ? Cc["@mozilla.org/thread-manager;1"].getService()
+ : Cc["@mozilla.org/thread;1"].createInstance(Ci.nsIThread);
+ this.__defineGetter__("current", function() { return obj.currentThread; });
+ return this.current;
+ },
+
+ get currentQueue() {
+ delete this.currentQueue;
+ var eqs = null;
+ const CTRID = "@mozilla.org/event-queue-service;1";
+ if (CTRID in Cc) {
+ const IFace = Ci.nsIEventQueueService;
+ eqs = Cc[CTRID].getService(IFace);
+ }
+ this.__defineGetter__("currentQueue", eqs
+ ? function() { return eqs.getSpecialEventQueue(IFace.CURRENT_THREAD_EVENT_QUEUE); }
+ : this.__lookupGetter__("current")
+ );
+ return this.currentQueue;
+ },
+
+ delay: function(callback, time, self, args) {
+ var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+ this._timers.push(timer);
+ timer.initWithCallback({
+ notify: this._delayRunner,
+ context: { callback: callback, args: args || DUMMY_ARRAY, self: self || null }
+ }, time || 1, 0);
+ },
+
+ dispatch: function(runnable) {
+ this.current.dispatch(runnable, Ci.nsIEventTarget.DISPATCH_NORMAL);
+ },
+
+ asap: function(callback, self, args) {
+ this.current.dispatch({
+ run: function() {
+ callback.apply(self, args || DUMMY_ARRAY);
+ }
+ }, Ci.nsIEventTarget.DISPATCH_NORMAL);
+ },
+
+ _delayRunner: function(timer) {
+ var ctx = this.context;
+ try {
+ ctx.callback.apply(ctx.self, ctx.args);
+ } finally {
+ this.context = null;
+ var tt = Thread._timers;
+ var pos = tt.indexOf(timer);
+ if (pos > -1) tt.splice(pos, 1);
+ timer.cancel();
+ }
+ }
+
+};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js new file mode 100644 index 0000000..b32b6e4 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js @@ -0,0 +1,1007 @@ + +// These are SHA256 fingerprints for the most common chains observed by the +// Decentralized SSL Observatory. These should not be resubmitted. +// This file is automatically generated by utils/mk_client_whitelist.py + +const X509ChainWhitelist = { + '000AA4E99FE86D84F762DFB2DC29323D0614B95AA335A270AF204EBA2F2240AF' : true, + '00487384DE9545F7F6D6709574920DB9743F0DDC4D5E1518EC00ACCCC6F9866F' : true, + '0077DFC8E3CFE0E4398F208CDCB1BC5A7A78BEEF101ED256315FCB9833283B58' : true, + '012AAE6B27B392684695FA22F87C8DD3F60CDAB564EE4D4D58DF98575D99153B' : true, + '01FC275FB7BB83082EA2C546876545030D74F68355AF2B0CCB1972993B393E58' : true, + '0261C3970364E15EC2BB646934FE28F8FCE6E1D5E0B99C7539DF636ED03A9DF0' : true, + '027017BAD8EC764424A5DB3B647AD769E78F1653A92F800FAF21212C4DB6CEF8' : true, + '034AA8D4F147FC9E93CC18EB5BC06F28FE3DF4923CA61A9CAE92F4E3E078C5F3' : true, + '03985CA59706D4A023A5CE0B2E4F870EA465A8E3803CEB2AD859FC86D3569852' : true, + '04376F22DBF0B17201EB6871797B1D31FC00EBC4743317793B9C5A5BEA8CECF4' : true, + '046C78CE6601C4D88EAC305EE65068225CED3988A6BEC42E50B57B1979742245' : true, + '04AEEFBC8685B2668E25C23D77C6D63B95C7C0BA1B8ABBF434F5EAA66BC3E7F4' : true, + '052592AA10AFA8D750861F47C540D3A0653A87138ED7427BFD02C9D197D3EF8B' : true, + '0544DC1E0D529429A1C86E848D1C78B8511CC1A2128405D276FD864B452890EF' : true, + '055C88BD28194042771FF813973E086A30710231DB219FF377B79FA075E7F2AD' : true, + '05CB56F00C8DA64EEF10F2305EF696AF839CF8DD541910D760772AC86811FDAB' : true, + '05CE45708C3882B0DB81A4504FBE064C1ACD7DABDD071A7F263744FAAF040CF5' : true, + '05F70EA23C890F1C382FB250E40DFFD3488C271006DB6B10DC96BF34B6F74420' : true, + '06808645F29D708E4C31AC40FA00000733238E10A56D2067AA62803C9736E923' : true, + '0699966F623E746BF97DB3B6BBBEB83BCF2E8CAE89D907A49A731951B158216A' : true, + '06B35EEE47D7E55F278C5DB13FF137B269B6EF91B58FEB4B2E70E7CC1DB757D2' : true, + '07CF2A06F1718D6E476B98C2B42E370A35FAFE4C1F41CF7A1DE115CDB6222FAC' : true, + '07E7123B20A807889C384460FFCE4A7F53593A5C872B0E8FD45795D71CD0F9FE' : true, + '07FC57E4C188422B53059AD4839F467B9269E4EABBF902C99B30E25DEC5EB1B7' : true, + '0834241C7C2B598E20698047C331B173BCA189B96E528FA1993AFAAE3F7D51F6' : true, + '087FAD2F33E4D28A13CCFDE11F270188E01AE0EED615D2F433DA4EF05CA6BD4C' : true, + '089979504BECAC25640130E65E562AA3E3B5D49EE148FEF6A2B77A2A1CF5FC06' : true, + '08BD4BE042F6DA7D627143ED6B2BACE65615683C3C272123AC55105DE4BD723A' : true, + '08E5080C1D69F2C11524050C9C0EFDAEBFE68A27FD30EC04AAF4DE2D590F22EB' : true, + '09250AF23BC74D92973DD48812D5ED28CE1F5C110EE5F7CA791D9CFDE04A131C' : true, + '096800FDAFA82029B3B5E3947E0EAB6FB1F1D6958DE04E9256969F99F7518C57' : true, + '0A122B87C038CAEA46E8944009B11C2168E47F4DACAA9D3BBFB92CB5F5E1BCDE' : true, + '0A36586C8EEE28E5ECA1F542691D12B3CE7815CDCF722CDF7074AA71413C2550' : true, + '0A6A1FECBADAF7F1B473305A71E454F6AA8C1B0F40941FF4660B814BFF4984B3' : true, + '0A903D7CCFBB18FFEC8E3AB05FC7E592C1E7509D0EC2DBD9A2C05236BA9FD7C9' : true, + '0A91A9CAC951DA1739ABB2F29D16A6F5FAA9F49AC87516AB59CA77150D282528' : true, + '0AA5730256323B66DBE88E3056AA3F45E52BE5E2B87C1C9DBC1986CEAF97B5D9' : true, + '0B2D2C539D3D922820B6D08E159E6763D22AE797B2C32F8202B632BB93588588' : true, + '0B39ADF22CBA98C15754A7A899C5B96871337D2178EB3EBF0B5D5F88332EA971' : true, + '0B901F548AE4E0F25EF38010E311945FB198E497F203A88FE7C44970F7ECDC40' : true, + '0C114EDF67FB7C09C532297D79A5743EE5F8576A8EBE3DF69A728B8CFC0A167C' : true, + '0C7E90EF8BCD379CB001FD07530718DCC0A33E9D7D1D333F505F0143BC6A8FD6' : true, + '0CA932C2E0929B9B6C0A8822D3F094F671522419835049CAEAC51755D1F44777' : true, + '0D4F42B386775FF404B84D58859BC5AB029F1F9CC6B7AFFF32B838F8B8C71F3E' : true, + '0D8FC5F202A5668F7F3EA7F6A73521E0C7FEB5DBF6E58BA68AB7C7E01F4C532C' : true, + '0D91DE20988EA155526570498A1A6289FEC55994A5BA888C9134765F2A0B0580' : true, + '0E3AE0C9BEDFCFB38239DC4214A3AF3E6386720E2E5F8A85EEB52BD152E4DF09' : true, + '0EEAAD4FE6818F1D723A5567CD0A6569D45E346E2DA2896222A7F3367F4AE8C7' : true, + '0EF8FA5AAD4BACDB842959378F18935855B027B0BADDCBDEADC9CC958C4C603B' : true, + '0F39AF5CA9615B05CBC12DE3C94A8C4FBA71CA8CEF541952315A9D0658DB5B28' : true, + '0F7DE9806919EBD5EE47188428BF7FE13495E4684ADBB5BA980BB15D4D0B0C22' : true, + '0F8F66953B0F42560CDD573A013D3FB809D9747210E58F28F4878CDA5A8B8AD2' : true, + '0F97235268233245499D6C1319DF1BCA3AAAFB13CF9B06EB294FCA328022E82C' : true, + '0F9E066578F4AFB0ACBDC408CB25B7D7200BC5CB7FC4DA6D32532D827EA5B232' : true, + '0FA392F6EABCE0F4DA14C7B5237B21BEEE6BDA55832A8A6090CAEBB53AC8D77B' : true, + '1049EFDE8BD0E7D94AE05D50D326ABCE41E79B0572F86FDF1F7387738262F09A' : true, + '10552D044AD79FBF1AF5357998DAB9B1FFD66D7B53C8107FC2280148D66475E3' : true, + '10E82776E55D0C2D58F6598E615CF38AA14161D1EAD97C4A09182FE1D44E695B' : true, + '10FD669D6DA882678AEAFB35A5F8A0963C2E2B3084883EA515C8956FEC4207ED' : true, + '114ED15D4B557A16DDE1D01CB4074215CE6773C180FEF60F08267CEAFB670D5E' : true, + '116A5D5F3E99CFE5F72A4AFAC8699CC225C130F4B8520CDB350A1262D9585973' : true, + '118FF53B6BEB35CBFE6592D45BE082BA1228D1817E46B2CC14B8855FCC5C9D59' : true, + '11EC553AB76EED159FE553B52E7475FA71A0FF3F4B3038CF91BC7138F50B0A7E' : true, + '11F7A939F33BDF6270E16C747C0B0918902CD4501AF1843D9EA4445A2E708C58' : true, + '1243C75D0F805DA54E780D0D9C55247B1ABB31FC09EB65A7017695945F2A0D4A' : true, + '124CE9CD70225896BB3C9DF372E0457CABCEE8585D1BCB8E16D0E6D95B94AF2F' : true, + '124E430E0E0B103B580A0436D7CF436F6ECE55908279FA8EBDF475AED08A9CE9' : true, + '12826065A034136FFC2258AA1A65F9E550A582B4017E396077917C775D42E553' : true, + '1363B86EDA0BFAF10F1141CBE7569647F2FFB370F539694288101128A38261B8' : true, + '137E64BF679E2CD24F034125EC926D48F34C7404CFD6B61B23BA9E91E55D3560' : true, + '13ECB3394571030912CDF82DDAFA05B242398929BD3ACE1598B79DBF28B701F8' : true, + '142A33AB96C13ED7C7B8782D764F374B5A8F9C4E33B4DFE9B7750E878E7C5D0D' : true, + '14587E25D8BF0150F429924144E88AC551C1F77CB5DC84F6CDDE7079014ED2EE' : true, + '14E443C709A20C11205371C5BC54C20CCD53AC434750EBC91C45B30DD0D8B53A' : true, + '14F5D6BA3842E708E3AADC26B8A9CD89FE9CF2BEF46398369521839733A4504F' : true, + '150F5BC3D839579BD7DD1254A6C3C3AFE3485D7DED21C3B8123BA6875886A91A' : true, + '154C4C43AAF5F838B7B9BE748FF671521BDF0ECF3D749EB85487F9C315239778' : true, + '15F46CDF488A5BAD54DBA0F2E2F825F956F8ECF9E3AF294551E88F62A8A0CECD' : true, + '16BE849F33D16B22C495B9793329BE704AD9C681C2A963C71FDB303D526E09B3' : true, + '17A0318A02B4E7EB14792644E1E28966257748F8162A53AF4E49697A4707C9F7' : true, + '17BE5D468B1EA071C36079A4843B8A1E69B9FCAFFA0565FB54B10A02D78B7FA8' : true, + '17D0A909CE750C728FBD0F33589A3EBFDA452D00C757A18557DB4697289287B6' : true, + '17E110287D04C595DAE0C73090051A1F30F165A37429CD78C1F8FC1754549D41' : true, + '17EC9E8F98C207F4CA7FD0680193A54DC33BC97CB364669442F5B7492D36839E' : true, + '17FD21D68D53F369EEC1E22EFCC3B79B255EB8E1031D147F6461291C4D980037' : true, + '183AE55CFEE1CAC5CCBC1C58D813DED429DF750E023362FB8BEDCB27A9F94559' : true, + '186DC5DF9C693C311857A94BF9B2810BDD02F22DAD527D2BFBC0CDF24BCE26FD' : true, + '1882C2D8D817DD1078933D244E379CFC5BA8EAAE302BCF9FA22636B08FAC86CE' : true, + '188F5D081FD0D98429D1747FFBFEAB39733EA7C2B61C8BF6B0ED62F71264C619' : true, + '1974EFA39EBF5C2D3B53D5089EF28F6545D5B4937DB660385AF579A28FD17A3F' : true, + '19778EECDA512FBEFDD9AD0507A1F828AE67C35594C20831D1D531B79F8B2F99' : true, + '19AD483D37D656F9D7844F14C53281FDD56683C0C8FB2A8F3F77DE7C810C1CFC' : true, + '19C76F18839C90F94AB9E4CD3ABC4C15E0A8DA9B8705E7DD872962CF8409DAF2' : true, + '1A5C89F300E3A9835759D6588CE3361993E336D76EF4B2F64F1DFC4D913BC6F3' : true, + '1AA7EB7CB182FF1BA09FCDFD088DE1F25F8551DAE53CE2C16D4D72D1B6091CA5' : true, + '1ADFE710199AE62734EAD27EEE6D6A4EC4D6FF19D6978A7CFBDCABA69C1617E1' : true, + '1B5827F9E4B66B4895AB47A0395BB1E135D15F7A23712147C5D382C1AD805ED5' : true, + '1B8AC4A31C75996D44252AED8CCF639282DF3A180900C660804483597238D8BF' : true, + '1BAF1A75711BC2EF2C4EB8C2BEA4B5B1B183E95ACCB247DB89B3098C324870C2' : true, + '1C1BD271327C7721AFDE3C5BE6FA98B132F2EE1911BDF05F0649121349A4537F' : true, + '1C1DAB84FAA0FC35AAA8A54760840F8A48EB449B338D7CF3902397514F4D1CD7' : true, + '1C363FBCE719D6567E55DE267E6662A454494FA085180F23FE84139E9E83527C' : true, + '1C573E491ECF04E3240144B2A63D8DDB457367055B90F5947CEFB55174A6B959' : true, + '1C923C0DC4E99E8F807E44A5499EAC4BC48022C63A3EB4CE819D556349FB57BA' : true, + '1D4D6D7E6B04F507E28EEA37367012166A6E4AFD02D2F325129A70F76894512E' : true, + '1D602FC8C0A6E38288593AF300D73F04B3A5AF89F5B08A0DAC3D935A9B69D7B9' : true, + '1E15FDE9774DDD452B000A3FD8118DAE63D16F8EAC19D26806BB08A70677F42F' : true, + '1E294231C72B07AAA6E2FE3B18BA14F1095F82718B42AF1DEE071D011740550E' : true, + '1E5D810BCB8DA3AF393761C59CC88D22669ECB7D4F926760BE1EC6CD83E60765' : true, + '1E5DD6CDAA3AAB8BB891B8D7B4E99AF2EBB7F08719F1D3B3C7B8694962EE8668' : true, + '1E84A8F15A3EB4B7921D7462C1FFF8DDC182E4E0682EB48C42FB3645BA43A6E2' : true, + '1EC6CF08000A6583160FEDE1C117794E75CA5533B666D04FAB138D8F12A4ABC1' : true, + '1F1A125828C6F4A21A9D035C28E5493FACE0F4D7DE6B6F2DD5B9FD5D426B6FC7' : true, + '1F3C4550EEA0B9B8F4608632610548B64126E8929450D285DBF906752241CEF3' : true, + '1F4C963A9BA39CE44E46F135EFEAD5B30D6A0A3A43545E18CBE59DE452A6468B' : true, + '1F6AF055216D53382D7D42AE6893552B4C04C0D6CE31A2A71B7FD24F7A607A67' : true, + '1FB6F7F8DD4B392D4BEAA5E707AAF882D2AA83C5E9720C58B616F8DDDFFA6F77' : true, + '206A33714BD518CEFF68A6904E19B0837230BCADEADEA6E056EE3745774BE3EB' : true, + '20714569334D93E90D2200B253E447A249EC53311A379538BFACDCEE457D9656' : true, + '20BE732FDB6D751C0991700E7C9D401093135652D25B1A29D3387E21D60B776B' : true, + '20F2E0109442ED3DB805D939B1FCC9F4C8E17414F748FDE98883C9EFA504397E' : true, + '20FD7A6E1659C35B1870F698D182820EADD8E02ABE97A9FCD691681B4A6493E6' : true, + '215C6D97B01A9EA11CDCB7D4D62EF74D31231F99CA59F3D21104097AD5D52868' : true, + '22BA6A5C28A505A68F7C025447822720E4772BC380FD9EA58EA71C32682CF0FC' : true, + '22DD516BE482B2A7F3C5EE268E8110EB9814E86E4102654C3CF5705743BCF870' : true, + '22E6BB3D9964F458D462BAF404323775B20EEF02F174CDBB442D4381DB98C61D' : true, + '23223C3601CC5682B21E4D4C236BB85C9098082EE3942070E33CC791CDFAD31A' : true, + '23980A7B935B10CA69315CDA05E61B4ABAE7876724C0E0C3CC7BE9748E41ACCC' : true, + '243D9193A5D38C9F2C21409EA470757D3903F8C418709E12C47F01C4EC08E5D5' : true, + '24540FC5876A301AF83E2494013ED0B4F7B1312D7238EDDFA1DB0E7736082856' : true, + '24789DF7D8F1D393F224621E436675778CAFD595AF6988D2995F28553F28B629' : true, + '24AEFDF5AA4C36F89987C960EA14B8A90CB2670CCCC66957652A21E0231D2E4E' : true, + '25531D59643B0F5E1CEE67B9CE42B0332FCF9688659F62D990C77CB8C1349E10' : true, + '258296CAC41A779D819E37CB4B120D2270F55AD8BDA24747C572165BE31849D2' : true, + '25B87ACDCD18628D9B64EB9F6366C970B2FE922B39EBB7E3DD1354899260B180' : true, + '2601092E7F1A7841A9E65C6D24D0BBC0CFE986404E6DAFF628E2C2D70667EB59' : true, + '2635178113FBBCC75EABC09C497D411C994AD0170CF9DF999A4FF5C16872CDBB' : true, + '2643995B1EC6D06457AB936E18B5A5721CEDDCC82F4E116C36EEC5096BB04DC4' : true, + '2677470F2FBD067904B7014B88988BB94F72403C014240B9843AE5A5FA21661D' : true, + '26B163AB60042EB690FF4549F6086019E19A99A3B69332AD1FE85D9C46491AA9' : true, + '26D184F574A19836878B10B209825413B48BB1C92195AB69F6B01D359FD4D07E' : true, + '2710EBB98F6790081E34A1961D7716533511A1746616DDBAB9A3D64ED32B1875' : true, + '271B4C5B8689BD69CCA837BC080C554DBEE0B20C5B1C505F68544AEC29588277' : true, + '2774F85336B9446490224280339F361F69E44891C5D8F078F03FEC5BC7C37437' : true, + '27C6EFE085FD0EF2DD467630B0A650BD3624BB4065F811F5F99CA976B4C0B871' : true, + '28002E2FB259DA7341B69C144F4EC6B5B12CB9A981C34387044926957CF9152C' : true, + '28082C3B3FB30995C3ED4D971AF00E3114C75B9FA47540DEA79E120E01C03562' : true, + '28445F7C648AB6025EB469E9C5FD10C6C8D0D21B6A20F078854EFF406C55D3F7' : true, + '287821696D43B83F1EA4A3AF5F6E5695F86D770148341106757B98DACB5C979F' : true, + '287AC69E23A84ED6C79668FD778A1C5F89D93D9E85B1F84110731B3EF007852D' : true, + '288B79B657E95C6E9FF6FF795A3E36528FDD26538925F67411B0F1F715DC9905' : true, + '2895D775D2F7F4D7BFF504B3C204939766B2C2734BC607B154CB1B2E52D76012' : true, + '28B2F8B5E2ED8681AE3D47EBB733718E32FF81FD736E97EEE68E12A6CFD3C9D6' : true, + '29AE4E3FA75E6A40E5C2D8BB9446BC39D672780F4CD6334CA2527FFEC0FBBFD3' : true, + '2A00C2E13F83FE2640D9DA1B802219AED52B811CCD54F7632622FB05531CB829' : true, + '2A227A780950EC49D49437E4FBD2306EC1D213A25343B752F116B3C4203C641A' : true, + '2A2EE56590084C2B144125731B45BDF927C357840E997888F52EF90AD6361EA5' : true, + '2AE917E3AB4B867883088BCFFED53EBEF9F87988C77AE47FE325547B181931A1' : true, + '2B372D2A09743CB535C71949D24612C108A95D542D5235B443C116426F4EC740' : true, + '2B5FC256FE24DB51001FBB200C80DEDE29EF2CCA290DEDA0EA7FA5627A8400E6' : true, + '2B804DA0656D06DB6CFF31AF9EE7A41E9621F5062C855A3FA3E69208C6BED1BB' : true, + '2B96B9494AB9EF09B7D4ACC0F7C7C8B27BB23772D8203F98A635285335B476FA' : true, + '2BB158B54FA26B5A7FDA92096D214B5AB548D13D4CD0D275B967703750B03097' : true, + '2BDDDA7C2F05123A014AFE1044AE6AD3B1AA14F0BEAE4FDE812BE52DA271F992' : true, + '2C27A3FBE2D833ED7FA00DE8A00EB1E16F40043D68C21C6FAA72A34DD839A5EB' : true, + '2C43EC0374BC603A1B191B88ADBCD5C1A0409120427995C2684A1590C7AB1432' : true, + '2C6E83BE981FD0EB0ECE7D8977D665C1B7665DFEE4C0F7DBDF5138FEC3974EBB' : true, + '2D75CD1232720CFFABA233953EB8CFD860C23034BD9CF969E8D104485B251ECE' : true, + '2D978BE3F44F069B366DB5D8E3B1FE4B02775498DE8D17EA68B423259B681FDD' : true, + '2DBAF94C053FCCFA1EC09CBB22F54DAFF2DB4ABE1B3C61CFF1BEBC31260F4821' : true, + '2E23B68E6E803E74BA36D9C9006F96D8BAC39DB4CAEEBF1C12C6CC01CFDFAD6D' : true, + '2E50DDF50FA4B9220202816F9B79405227BA4F803E61FD96D6BC95A0263E49EC' : true, + '2E6193577D9F6627E5D23883970975541C6807F1DD1F48971EECF07C204C16BD' : true, + '2E726E5D6C08B18944773DECBBBA88F95E25D586248B145354596BA8DB31DDC1' : true, + '2F0D2656CFB3D34F4775E89AD96E2AA7D3A1FCDE399BCB2E03AA2BA0A035946B' : true, + '2F36C6E796C7C4047152AD68B781475E3FA3AA785DE5CC277DA2DA20F35AD52C' : true, + '2FE442C9741D5351A016B9796E3021A01BAC6867A567ABBD1C7EB08DD359DF94' : true, + '30354519FFD4794257A7EBEDB0D47DEC9A547B4E7213199000F41EB65C233EF7' : true, + '304039981650BCAEA6BAC7B1FF2E03A9BFBC8AF4C37F37E66D59D327776EAE77' : true, + '305B4CDDF744AA543DA713E7E60C19ED5537D49ED2252330B46B7E664C4E588C' : true, + '30AF2F588C872B174436F3B68ED432C0495D651C84A04787CC8C13D6D61DF63B' : true, + '3102A33CF44D88924253BC149D22198D046E6571E79D0C6CFE106F8A725364FC' : true, + '3141118408E436FF8489E07BACF80B260A33E842C5BEC83C763B6AE73701A76A' : true, + '31C4E7F6630486BF42150967E951D3DA5ED8D382AA596FD571231CA96E0F352E' : true, + '31F411310C7FCAAF8CC265F557CF93BF32E5E277589E932442A3A840E141809D' : true, + '32CFE4F78C2B8737E9A31F4E0A2513535FE242D02F1DD83C04ADA77839CC4442' : true, + '32D398E73D053561EC78257EB01F0945C2A38D9F80674F6F2B4B10BA35A2B4E4' : true, + '32FA61C84B195BCADA9A65448CD3C8CA66B1DFE252CF97D46567ACEB59BD2D83' : true, + '330457913F88C2037F663003C36F0B6B2B3071AD972C9A4DA54998A7CEB8B148' : true, + '331C02F8B180F4E4F15DFAC71D1F03F3ACA9438FEE138AC2A60264BCA35DA54A' : true, + '3379517964657D6F875971C1ED6218D9F890BEFC7390CA654C79A666D1989A18' : true, + '3386FCF2133229E0BB6481DD2149E9D87540B5277E3FC3C3DFAE50A8D81D0653' : true, + '339C59871E132711D25988F0DDB86E0EE5D34B119972C0A5E3C3B556BC293D74' : true, + '33AD12326DC0DE4AD1CCDF7B3F1E0202B8476857E1C911B056F53CC6D4A60187' : true, + '34CADA62CE9D32857D65E868355E258447C0111D3F78CDCF4360F5B7B9F7E3E4' : true, + '34F904FEE6E8CF59E4FFE90F627D688210910D0176C9B5ACF7DAE8CABA722B63' : true, + '357E325CD50420D15B1E6779D32E62FB6029A9710017B14CC23AD41DE08A400B' : true, + '35931DC7CBFF8F707BEF6D02988B66FC79B77D05DA0A09F439040F4099A69883' : true, + '359D692646482C906B77BC217B7C262E81B6D80441DAC6FC2E317C5A0C1A72DF' : true, + '35A88292416784CF9D883274B422DDA092B8692CB98FCC788C9B926987854291' : true, + '35C8C522026971801A41CE23438829BBA27D3902953FE183E2E3B84415F6ECEC' : true, + '36267B2A60E0B5997DEEE17CDBE6AC7F7D54D279C6AB4F06CD469919F442E6AE' : true, + '362BF6E353729E4F8FDA7D87DD726C825E2661DA801BB75B857F4DA622BB9704' : true, + '363C229BA74BC61CAD1DEF35B5B808146FB5D1D34E5D37C02E1FE19B5EC6C37A' : true, + '366B123FA1EA2FF7FDBCA0422E504C8E0AB62334AC8941D307060F5ACDFB58AA' : true, + '3761FB4C3FDF80BD66FB31A506612BE2B98FAC57691A6125227B4787C35C32F6' : true, + '379F1BE4B67E89183FCD2AB1C0A3B930DE70D33CAE2C8629819DB4951600A398' : true, + '37A8C0FE01BCC73FA73F8A161566E23F12C22BAD0461D7CB9D9386EB7DD63800' : true, + '383BB79AFA098696BE4D3605F26A60FDD7C455D31FB03BE8553C3EA348F479F2' : true, + '386702317DA5549A08139017D14AC498D7DD4837E0E16F91BCAD37684AA6EB97' : true, + '388AF939697463B651AFF01141B625DC877D0FB31CBC5E234A5526BAAB68E660' : true, + '392080D12E0D8985A6C35526FCCF9CFF55219D7E62E92BF05863F7CFFC42596D' : true, + '39CA68E75049A34F875DEE1CD6929FA61DE4B250B5060D613BA9088810D60B9A' : true, + '39EC99D4093CF0A60A947685856F20DBF85966FBCAB4033890361A650294A8A8' : true, + '3A9480EEDF0D65938DD92A7FE7E9BE4D797CEB0662CADDA2321D47C04818A57D' : true, + '3AFA38F8367A45AAFBA949076A38537CBAE4A0774FC4CC40BE52F944F29F7F19' : true, + '3B00662EE3F01FFE2C40842F0F3B76C039ABB785962E371767E89E2AFA311A74' : true, + '3B1FDB5890A3C11F7149C13019F3EE43D3D3A8C174E485512E946EDCBBFFFE55' : true, + '3B3A1C7A8131E1E6A66039972C1AEF65797E783ACC2C645CF10EEAA5F20BD297' : true, + '3C40EF3135CB1E82D0E6518EF75EAEDAC43DE347CB74E2A09CBC0C5A56DB2636' : true, + '3C49B9DC9307C6B33E0DBE135836504ACB9F6204B7172A412C28E797E56CA02A' : true, + '3C91A39CC52452FB91463E511257D3BFCDCA3A149EBF39978F39E55F20FB061E' : true, + '3C96B0CE3855D125998B8DDA63F2A37AA1FC5967949393D7428C1FA97D2542B4' : true, + '3CFD92A9ACFC3B9D7BF81B2994D398500413E7B57C711D711F98DB009FD142D4' : true, + '3D04D60DD221BA390696E262A7B522815BAD5A03B79D1176931F2AD5435D494F' : true, + '3D7A71BB494A12E1F21A1EB9033CBEFCD1FE81F358B131016DAF92C1C06F1A38' : true, + '3D81B541D1B04B15AFEF518152CF8DDDB9300EE0A1BADC916FB366FA034120ED' : true, + '3D9910368BB2A01AF8277EA5E26F9CFCB045DC63CEC7397EEB2827B16C0344AE' : true, + '3DE5855D87575043D52CE7496F7486CBD8177FCB9F8C686B55F5F0EE761B2DFF' : true, + '3E09F448ED5A72584FA305F82A25706D2AE756083530B4E18665DA2AE46C1410' : true, + '3E18B028DAFB97BD9A036F1743316C8EC963C17066E362328FEA24D6FF8B2A7C' : true, + '3E486CEF660870234BD56B008730D8B318B7FBD047B55939D74545B98D8176DC' : true, + '3E5558CB92AEDC7E01DB0FBCD0825CC0F51AA7B683ABFD01D1E5E04C8A4D716B' : true, + '3E7FC707C590EECFA7E9DBBD270452366C0E2F0ABA7768B3F18E7DE34B3E15BD' : true, + '3EA82DE5DF72699D567B865AACE54C72AFF800647415E5E49D4260F422C26DA7' : true, + '3EFD44B1F0C8400130C35FE003FA304C2E47FD20612A4D1C83F88723B885CE66' : true, + '3FC8022D0C28EBFD45DC1D07E14F9E83F0CAD2E7ECEDBFDB991E01EBF2400F54' : true, + '3FC92874F07DB0DEE11CCB2CA7BDF187641DC78ECE4C76E71B2253FBBC17E3FE' : true, + '3FCBCC65096D7D731244167CCEAA21757E56D6EFC05A632AB3E062643E5B380F' : true, + '402FA5AD0E7932A07356FB849DCC1AEF11649D516ED1C5617C48F3E7F9B02356' : true, + '4093A7B65486890D2575D57070237C586DC489B3A68FA913DEF136370F2DDF9F' : true, + '40E66AA57071722F0B8E8B59A74998F82E8D5020BDDBB35D0E941851ED11921D' : true, + '4147C9CD6ECA16D7C6A8939E15E419220C822956FE754DCB2F08F2C78A99C3DC' : true, + '414CB8A3E4E86E2B4E03EB2FE71312CFE17B78945B41597F8E03AF04CFFAECC9' : true, + '4196DA17789961AAEB04CEBF7F1F77621F89102F48350D3B95E66E955FA8AA8D' : true, + '4247E57738776992C6640ACA48156C9DE580F0A739CAF0A353CDDFE3417F7C46' : true, + '4248F09AC0B07BCF41B413A2D8FF50AC42C6943D6F6D20F9C37502FDD2315171' : true, + '426334353C51D4E625F2DE937D9AD9FE6769E0F4E1425AF23D7802385103B583' : true, + '429DA945C771332087229D2822684175DC050F832EB9F0ED90F868E99B6FBFC1' : true, + '42D6DFA920BABBF7876416C3F5B30598040F6A748F22E3C3E0E2D32DEF098AD1' : true, + '431F835569D356C0C577FFCF90DDBF9B17E16D7FA9027888B708071B696E818F' : true, + '4321F690235447D71149C54E13896C885D07524C80CBA133428E1BD235123234' : true, + '43555C20820B179886354E63251A21247292B3B7BA46D8BEE860A0313258136A' : true, + '4373B2B85D4FEFE97E79B4C7935AD1762380D97FAE2C64FD61E58593F8BC8C4A' : true, + '43CFA30A34E75D16640693DF32B691B40219631AFFFC6A09DA97006AFD2811FC' : true, + '44338B3B7D1302BEC14439BFF723B5AF93DC549A7E1E417112C76C1455108EB3' : true, + '44CE10B295D3908C5CB40661F3F07EA13B27A31F32041B79D12AB7F5250B4227' : true, + '44CE6D5CE40E8F7BE79569A66792B181CA71DF0C80D3CEDA59A151F2E7CD32E3' : true, + '4533B5CC20DF3613F517118ED8D5AA328EDE18610AE99E16A5B6AF21EC0FFE17' : true, + '45CFA75EF370F3B3C2271E4AA0F99106B3339B6FEFDA5B335CC863F0C6F66323' : true, + '4603C35A8304F6057C253381D39404E8B40AE0958B4EB2CEAB7777CD85802C0C' : true, + '46236B9468DB40FAF467AFB0C35B517E514251530785695F54440E6730AAE44A' : true, + '46584E2D9BFE069862BC6449C85E904AF29A71887DCAEB14C191D75ED0AC1FCF' : true, + '46853D3090658137B446AC75E481E4593CFF61E22115C348521D70EF398C05F8' : true, + '46C05D7E95263B17CE368AAED872817DB0517CD9F388396CF42568DF88C96C67' : true, + '46E74AF8240C97D2E91E118761CA4F74371BF7D2266601BAF6084BB1924B62D6' : true, + '475971EE29368BC1FB6B66D497096A1ABA32C66A30C7D554CB11FE848345B46D' : true, + '47828F3C65E9FB0113793E5B60E19A44BC9775611C44ACB65481842FEE2FA819' : true, + '478D230215F850914D64BD43327923DEC9E52B4F14EF5E7E9122B16F40B2733D' : true, + '47A1BDC994354BC3EB242FFC12768EA8633719084BB5A159E30FC4388BED59B7' : true, + '47BE050E9E76AE62AED5EFF6EA9F2E0DF1FF0E7A3EE2B6B68D60B3C849E070EA' : true, + '47E134C83737EE674C6AC46306C325701EFF7B0A4C887B968593CC1F5FCAAF0D' : true, + '480ABF7202B5437D84FC1F475A30A19C18C7F598BDA1375E8AB84829B966D596' : true, + '4810562E0CC4EFD265AC19316F353D660806DC54231D65C906C6DB1E86EEDAC2' : true, + '486F62E8D5F6323416CF210DDBD26A256AF9AD33F70A2C1CF8915866F74C149D' : true, + '48DF42F374FDCD58EB650256F421F6C1A73F663DCB8DE0972DF9421205509F8C' : true, + '49AC28CE0DDCDA953E64E7D131DEA9EF57169FF3280EC9FC6DAA88C943EA9E76' : true, + '49B7DA13E82D9DEB867193B30E48CD1279A66A6FB44236E1B93AAF62F58EE077' : true, + '49CB0BC132E548E6D6A5BCC31C2254016BC2A181755B5B13D1D27218404D1C74' : true, + '4A12F9678B1A5B4677054BDA1CB6B41AD8A4F556A184E7E4C33669EDD31EA50D' : true, + '4A60AA57F2A0858D4A3A9696C5652432997B73BDDE06880BB3DE7879FE79B87B' : true, + '4AE41D7B98B74E61B0D6EED291348B881E5531B4ECEB9940631835EF6A8CC60F' : true, + '4AF1D354BDAA3AB076BB6A02BAA3E1BAA2503D21ABE54B54001BCF62C0982721' : true, + '4B2851A38CCC082ED3A24F9DCB8C917F572D9F064CEF218D2E07ECBAAF6EDAAB' : true, + '4B6B616E1EE80E17D1BB037A2831C3AAD7E6CDE3D89A205D1F7D6E0854F3C21A' : true, + '4BF10AC1958BCBEFA06944AC7866E3458EA70E6ED97DBDDF01A84A360C3B71CA' : true, + '4C1A5506EA02230980E66C1CA936B268A3C453E997733E44074640CF4653594C' : true, + '4C3F647343026A15ADA9E047A8B4527FF88F9D01A2B7AB7241947443F75D5E96' : true, + '4C6FC9852280F11829BD4066C38BE6C1FE4E4C053F6126EE03D15EC3D0BD5B15' : true, + '4CCB36D30DA2AD2DEFBFA838DE32AE64AC8F6AE138E0A1FA46D1E0CDB688974F' : true, + '4CE6DB77F8EF355DF6EC2ABA7A5989DD0F2D0BB228DB5DE69BE7C83E3603C69E' : true, + '4CE78AB01352DC6AD84A195DD333207A43CBA0372546FEDEC9E6803DA6375403' : true, + '4D26A014A4C4007564C743D9BBF9C2DC9A5A881C05E549DFFDAFCD3814F3966C' : true, + '4D53CEABA15DE7DACABA8689C96832B59F66AC55E9E94CB595405004A1A9AF29' : true, + '4DC47950ADC2B7FF5A9A57167E343AFDDB27155DE0D031F25149B622E608B8CB' : true, + '4DD59EC33898319B54EE610C9A4DA78A87504FB8631FCA5783223F306529FABF' : true, + '4DDCB0EAA387111F7C2E0355AFF2C3325514BD9D9A3812295F7506999838B7ED' : true, + '4E0E281DBED708FB0AF032A0233F134D3BD309224DD8BE9894E749D1AE9BA37D' : true, + '4E5AD8D52C37A505176F9BA95BAF43CB5FD5A7FC4654DC71178ABEA8188E7ED6' : true, + '4E88949F1AA84802EB493CA5C6CDA9C6DED49A4DBA0C8453139C89A9CEC2E041' : true, + '4ED3C78D58943651EDB04EDDCB696F91F7B33450831CB18ACE714720AF4523EA' : true, + '4F212E4C3A8E4EA8F7D258A988D5930F05A8E61E78D86DBF9478DA2DE8F01B54' : true, + '509A3662D987A2D5D9CE7943D1878A36DFC4A786CC185CC9DE1D58E15E2EE02A' : true, + '50C1358C5AA5556E967E2CCC1397BEA364DE2E7C6704B6950E423AD5D5BBE798' : true, + '50D5DCC8D0668D34E90722924EB28C37C803E34156DE8E61DAB296DBD37F5993' : true, + '5112E6A8D06852BA07669C1DF31EFA1BA2BE7894C3F0F7B7282FEEBB698F7F4F' : true, + '512EFAAE67E525C0DC3D7AF491ABA9FFA1B7439031207D293622E9286F0BB562' : true, + '51452CADA5B15129E04773A1BAFC3166F56C59B4CCF905060BA52EB6A877E1E9' : true, + '5184A3AD148B610511D8D02CFBCD2993AFC3BBD576721B617FE7CB1DF53C070D' : true, + '51ABE9BEDE2D96CA84110007FD6626F0ADF9881A3C74870C119CEDBFF2B4CE54' : true, + '51EE14CDF007AFBCE34D598602831B21661F6FD7B6C04B0D34817757B4D007D7' : true, + '52B8E665B8191D828F946C041ABC28AC6A5719A4AA21B1C403F7611F11A84F31' : true, + '52C584E4DA8D3FD6FD63E83B2EA0FD6D98DB0413776C26122FF0420A3F0F91A0' : true, + '52F208427F03726C6DE3F5308C776D690F580EA39DDB01595DFB54364C48377D' : true, + '5376577409E17E8F37B2CC6FD486FBD356FF2AD0B5EF520DB7CDAD06C6A6F3E0' : true, + '538735DC5CF27D0DACB0FBC4FC24E0598D8838682CBE3DA8C37CDA60F60BE64C' : true, + '53C57169154423529775809598828294B218B2D2AFBCD3F2561FD072376CA188' : true, + '552771717F5948A7FBF93067CF25E5D1D67A63C8A3DD09EF98603165874E3281' : true, + '5545F754EE0194995FACDF3F30F3E6A8B0749DD750B0B5964B16A5D9B21E9FAC' : true, + '55E0EF8E07B79720C78F3E2303981BAC4BE4FB417D858E3531716DEA81BB8D67' : true, + '56B5B8AD95FC9A853F180196FAF9BF2896A8D2E053474ECA3A19295B1D214AD1' : true, + '56B6BEB3100D40CAB0EA4E450188CDDA653F473F3F182578AAB314006E66FA5C' : true, + '56CC8586CAB1C99C3EA4C1D35E91FAA568DED02AA74364D08F480A0EEE4E4FF7' : true, + '57383F2DCB3A5959514A8C0CB208205EEF70D3A899BEA2AA7D1B6FD13BB23BD8' : true, + '57A0B57635F2D75EBC9C3B166E68E35E1CF91BD074AA9D5CBCB3359D93F02859' : true, + '585CCB444BDE628F6778320DE64727701AABA22F826C31063082CFC5835742BB' : true, + '597C180F976AF183984FD9B1D015D000C55AF0B873FE4A4F8E782D191285BAC1' : true, + '5999169B7C3C7ED6E94A194BF0DFF7D07EB7581BE8C82E77B83DE42263F6A673' : true, + '59E0DDB8377B568DA0FC1E2B7C482CC6331DA441F85E7F52FA8AE280DA90D051' : true, + '59FF0CC641EA56CD3670E81E4BD76A487163C70CCA729E0710D49AD1EAD70634' : true, + '5AA16CEF791C27E12F900F07D5FC9D0B3386A1FCCF2F547D08E94AD34BABB775' : true, + '5AA7341552FF047164227AEFB41437582F7116D76B854F54920A5D6A9B72271C' : true, + '5AEDDAC786E11B696A37E5506BF5CB702A3B803BC8506BBFF720788401D595A2' : true, + '5AFD1775AD2CAA741FCF1201AE206C4A1286C0DBF751AC035BAADE571F002927' : true, + '5B11479053C46A16C629C58DD5EB40529814B75A6BBDCD6BD6FC6BA9483D9669' : true, + '5B1D47E25C53FAFDB2894D342FB536794A99B4D0F4C0BB994DAC22CF9247F166' : true, + '5B67A7FC34D1885F7351DC949794160E0DB6E6C193286145DF8E483F21E90B80' : true, + '5B9F8603E75E06129C216E4A2DF6FB4EC184CE685F6C229BB85233DFFD2335A6' : true, + '5C07B9D0BC6C5C3634102DAF631A330FC02BF579A3421E1B8483E076953FCDF5' : true, + '5C2484F4DCA59EC5D77C5935BF71EC473995A9F7D39B0F26D2264A279C6DEC96' : true, + '5C25116119EA6FCA1D13D54D4870475E5B3D34B060605E02F9C7521D3EC47441' : true, + '5C34509E57E6B30A28891841EFB2A5F0D051493059DD80157C19B2822A97EAF4' : true, + '5C95EA9F41391B1D2609E3CBFEDDC0B9B865326B4526176D5305DF2EEF5AED52' : true, + '5CDF3C4C27BB3B1BBE8C6AB81EFF3FA995BBDFE662A0BCDED869E462BE748486' : true, + '5CE0E2F94DE7BFC370B5C429E1CE1A0635E4F38D55BAF122748D4307F1709DE9' : true, + '5CF08039C4F9AC5947E941DB6D681C0CD7971AD6E068262D919060C1A66D5FB2' : true, + '5D2112B7777AF1BBA029F1DB3D166086C0379669C01C03FCB1667645F32EAA35' : true, + '5D5F5FC12AC675264FB7F2783EF62458304D84B09BF62E19EC1B91243E3E5487' : true, + '5D77443F3FFBBAEAB8C88714A8EEE37196F7D9CE89517806EDBF897DE0215763' : true, + '5DB16AA171CA274D753222AA4EC17827814F5A69CFE72D092397F048CEEB2370' : true, + '5DFF17B36C6CED5E5607FC2A8B6559964A23AB8B08181E1CAC94E3B213767A1B' : true, + '5E579D296D274F9A01D1E1A7410A24029948FFA01595E64BD2E492EEFDD1F702' : true, + '5EC75158F235F80BBFC25F40D96AB89CC35D8578BAD11410B5D32CC33428A00E' : true, + '5F05ACF54EAA38008B650AAA2DBB3722805C793616B1A21B43E1879107254E38' : true, + '5F6795C104B707429A3E966D32F847FF1B18497C73A45F6EA5E47378EF1D3823' : true, + '5F98F1AC11CB74885CCC871AB7CB1B95989E9E3E7482BDFC32895A65A783AFE9' : true, + '5FB819ACDB4D470232F59DBE853A5BC55C3713062ED6F75AD35982304E14B32A' : true, + '5FCCA125301032F32C5C915A1AF5191FB7E0ADB6E36AB4210099490CF54C2C27' : true, + '5FEFA4F01BA5AA16F36E2A4125C2E0F808B9503355BF09B3189A623B8EA42E69' : true, + '5FFD23170DA2D4AF8278447F473A80F69D41889D6C91F3A598E41B4C1170E43E' : true, + '60234A884EF08293BDFED2AA0F7A12164317F1453966758A66FEA4AA422E9A14' : true, + '6085325DD4C19C14024B66E50D6FB600D161AE12B569A70B9C1EFFECBE9C2A3D' : true, + '60B1AE233D6CEE231FA2D0B3D5888FC9842087D2ABB3CBCC6E9C230D974F5D7E' : true, + '60B7233177358390EAA910658D1D063B57CC3D5B76F70E521CB81E39DB9AD50C' : true, + '60CC6E8C652D1CCBFFA42DAD8158217DFB7F42B9EEF9DBDB795ED372EB2AA728' : true, + '613E70A1BE3CA6314EDB7C00B2477990271E0C8DE8210EED56ACD391E8CFF28F' : true, + '6167E58071C283AEE1B24B692C593747D5FAD1B3A001B1CF11569E80FDA44152' : true, + '61F83ABFF7740C9144959145660E563D682A8D21E20B92AF581237F621A5187C' : true, + '623760585A2256D234ACE51A98E31B982EB5E5BA2D3CBD673C747FC832529F60' : true, + '624A2686ED8B75686FCCC3FD9DB8284E94981BF30BDD2453817BD653F3BD9CF2' : true, + '626042CAC6DE8C95C77C0E732144FCBD63418D72ED04CCB42FCBF260B38B21D5' : true, + '62C06D5EC111BEA1222B57F5BF5FA974B5025C3554BCFC2677048DF4A2EC0170' : true, + '62C4876E637B0361493822910A5FEBD70113B70407AEE4FDEBF249585FC4A069' : true, + '62C9A052080F8EBA5E8FEB9615B5CDDFFF1D74F8467653030CB1BA12337EB5D7' : true, + '63448627F20BDD4F11B278941D82DE56AD3A689CC06064D867FF060FCFE29A49' : true, + '634783AC64589BF61818D6D57D8C3628FBECF3354AE91725CC1CC3A6B62E4E0E' : true, + '63591FA550D322410D6B2617A3B70A23046032A8CB2F96F2CFFF9111D46489BB' : true, + '635B65E10638CE83AC12795BB42A235C6DF75DCE35AB6901255D4A3B0DE05FA0' : true, + '63C46A097FF0E3D00C6ACAC2029979168DC83ACF453ABD79E9502AEDFC9736A2' : true, + '63DBD2E32AFC1025D4AC5CABF8E6E61ED4DF6D0DE50533BFBD6E3918F40E6EEB' : true, + '63E6A22E453B17B4EA3E35C6E39EB315DBB77A237B1BBA9BFB2B3BCF675A63B9' : true, + '64261C63D988D7AD86D209177AEF7DB6EE3E62151B54C6FADF8F100C2750D0CB' : true, + '644E41BA23C44182CD1D12265833CF5D62553B2192496B051118DE945E0B5BBC' : true, + '64831454483CA9CA55859BBD324F492638DA8179EAAED19EA3CC8E16FCE7A83B' : true, + '65B9EA850436692D74A1A350E112A63BB4F2B9E4B10A602707ADBEFE76B247F2' : true, + '65E435C88F831D080BA50F37D0668230281DB9A679D705FBA84820A44D822540' : true, + '668B926F5EAA59F351B7ABFCBBE5FA17B547B01C5A7D4AE385736CE8FD13359E' : true, + '66E91987E1C56D61C6210022B93C24BBFA83C039C8C13E71A4E949A252792B77' : true, + '66E9E8A83F938165FE2D1F3E6669FD46132CFF7A2F99E5D23CC3CEEE0A07EFDA' : true, + '66F68579A292313FF975514DFBE38463C59215775C62323FD02302F539E3B252' : true, + '671DBED9969959A1ADA0F9DBAAFB7DD35CB71FB06D0337DB178E34BB5CAFA9C1' : true, + '676EC356B302BAC4392ABCD0702056E398C3092F6F3C66B61CA17171FB8196A5' : true, + '67E6D8DB673E4B9ADC12C134F94EFEBC055068A7B255AC721582D7AE3FCD3D6C' : true, + '68EE7C99FB1E2B8F0DA74C5339E58C6A1F7C2697CDE363B2A8A6D8E012D2C773' : true, + '692C08B2A888E8B373FCCDB491C531D58002CAC55188368BB037DDA1F2C829F5' : true, + '692C7B1D9E68C51DE61E300811DE5521D900BFBE44AA0E5211A4622C51A1193F' : true, + '6981222723F6C1FB0E7C14D8181D0799F0657E123C470C759F70A78D995B7102' : true, + '69A828B3AAE09B3F1EFBC53DB56353AF2444809A08F188668225B2A0EB520FC3' : true, + '69C135C5854B93D0B081254262DAFDB0FB3C0603D45EE6F5E91BD6678CF5A6E9' : true, + '69D7A817007EC6958CDE66700AE1372870F1AE4710026D3F93EE1A15E024C880' : true, + '69EEB2BDE9BE075A2C6927DCF5DB9E9427FBD153953D3843BE5151A6ECC3D560' : true, + '6A14524124841DA5A7C0A27539973C88C77C79EE8C190068EAAA9218CC35AE76' : true, + '6A525C84FBFEF83BEA806634766F1530D9C5964DFAE49BD2F678984AF29FB474' : true, + '6ABF9C8C111E6353439EF682EDBFECE4F8AF8029D4E9F3F0E638C27A347DBA14' : true, + '6AC112C1828538894A1FAC7CECE0ACFEE75658118041513498E880274BD2B7C9' : true, + '6B02CD14A3675354A800006220E94D8D4D5F9774D60EC984955FF720D927E529' : true, + '6B59DAD53B5D9FAD67626890D678177BE94BBD7C8E7815986BB28C09BD60E9D2' : true, + '6BF07AE522AE438A1736D449CDFF0D8F72F7690C120CD9F51FA2CF88160E8980' : true, + '6C636B0095B2D2ADC0DA3BEA01B82A14130410220A5692C3FA2F374E07EC03AA' : true, + '6CC97CE9EB4776E7E4EE831B97F15D992FDDE766B9AA2233B41770271C0BDD88' : true, + '6D13CD353D7F6723CC79620F59D5ADC6FF6FD185B9482C0D3044B69E8B60434B' : true, + '6D3BBB6612DF6B07FDB7630F79AE3C8B7609A853AC5E95FA5061E4248BE9CE97' : true, + '6DDA1CB95F5505512C2759E9F6ACB12B2F66CDEA160527EFA91D2F1CE057079F' : true, + '6DF2BF0E57C2A025F1FFACF32B574A50464D613CA9873BD8DF692B62CB1DFD74' : true, + '6DF8AC95B45A03538483369BAEE17EC1610F591F633E29A9A4DFD0C29E28397D' : true, + '6E01105B0FBC4CEC9790A2501D4DC5536754CD3B71480AB7C200B7A671A643B5' : true, + '6E61AF6B9F05C441F3AE6B3FE2D5A6ECF9885A2B223703D1C9660D14E6102F7F' : true, + '6E7E91E395DCD00520BAB2D41630963493456B73BF32E23ACBF4C2BBD5F0A703' : true, + '6E8D6125A9037938869D2D9C291AC9A2AC3731A6E7429D9E2037970069B7659C' : true, + '6E95E8980B03A9FF276C6A4F68B46DE8D29410A9FCF4285633DA91647BE7E10C' : true, + '6F6CA3B04E355CFF85B89EEB861EDD2D91CC874EEFE99A2D9B0A3095653D9E97' : true, + '6F8652847DB9289EECB5A58CA15FA522DA5F26A60E0BAFAA1BAAA37B32FBF465' : true, + '6FBABED892623FA77A93005871EF0A6374050AE9F3D3A346A8BD4558EE3959C1' : true, + '6FCE4CF77E254C2920BE515857DAB1929ECE7638DD8C370C1AF6A374F36517A6' : true, + '701E5C167D1D2A47E29F6E0EF64D59D978CA3287D20E3590ABF531EEFDDD885F' : true, + '70202315E3423BCD73E6A3CE51D0F541A78350111E683D8BA64AE9271A9C6369' : true, + '7066B709F68AFBA83E93FC497B97DAEE440AA3B27F8E6E32DFBB1365C3F2EE68' : true, + '70751440BEBC64501417A81F17FDB0FD31052D19DC361383EDE63E647ED1D8DA' : true, + '7081C7813097A8602BE2DFE4BF202EF4574BCD4DDF51FE8C7A2F872F93481E83' : true, + '709A501B0835742664FB4C650498359C1576F74186B0D12129A6E96A5C09080F' : true, + '70EE22590F5CFBBC659A9EA9BCFA0C876694116323562076D6FA6471E79907E9' : true, + '71168AF1899C2122E92CE1FAFCB2EE64B9CDE6D14069E7412F492C9078704F26' : true, + '713C52C05CB8B1EA3B27FBBE33649956A33D8E1AC4F222EC3B90428E52C28E00' : true, + '714F1E26865618BA75AD738AD3B843B14D776EC9B7D617CA4E7C2DBC98C8E7D2' : true, + '7180F1CD379E01A81DB181F3A839C48E64734FD493D1013367A7287181C4A7DA' : true, + '72FB0C9D7767CD725184EC22406246CC4E130E49E4630E2D5BF248187EA583D0' : true, + '72FC451177A264EC01165ACC89684C137EB92467BB44EE64962C5D1AED5F8409' : true, + '731D2388EDB673DEAA419BD26B43D6AE7D27EFDFB47B6A1124EB20D30F90965F' : true, + '7356E86E8C181E623D168491A780BA7011327CF716B416619FED3C3878A425B5' : true, + '73B26EBA4831AC03380E60772E12BE78303E9A6816058678BC432BA8D640B3F6' : true, + '745D3184B509466217C4305CF4082681DA91C917D7C176D5C8FB8C9810C1EFF0' : true, + '7464C196FA42968ABF359C05DE1A029FA4CC551380CBBE661CCBFBB1C7865E70' : true, + '74711F9774C66CEC41DE4FD32197132B13A40A6758A106DC95BCADB9298A6241' : true, + '747E80C10894375B82C313C81766E6757B1B28E5BAE75AAB0BDE87A9242E8655' : true, + '74C7149B1B6739C22FC0102A7EA2DBCA770432A85F2095812DC7961831F73EC2' : true, + '74D4CF230B19F9B9E3C674DB1B1754DEBA59A837534135CEA2A9DA3496876FD2' : true, + '74E0485AFE164965FF9F982F0999B980CF05DE73016EB7F6B38B105A5E07564D' : true, + '750C7E44BD7AE01B7D2ABEE54139FF35FC53DDE34A4E0802432CB08764E211C5' : true, + '7567AE3D698B690FB2349D4468F155CEFE64ED1975B768E791D934332970791B' : true, + '7572D3C2860E9D28159C0337E8DC7C693F307AE0F1F02E0C35E091AC1C1571F6' : true, + '75B0A587771EFCF6AD7AF92EFBDEFF0F4E5CAF9883AF521B9B13C78D247B5A4E' : true, + '75B50B0EBC80D619AC5A04DBDF5C622B1FBEE1F299594B0E4CD6B6363BEFF8CB' : true, + '75F12E7E7FEE1F0AE3C22D1B94D33E4A31EC9C3B0B30338AF4EAD52856A11D26' : true, + '7607259BFE14402887557E6AC9BB570FD9D3927DA048FF9C7926758ECE32B824' : true, + '7633A1503B4C364C9C55BAAE30CC899238244FC16BEEDF7DC22E54CB9B569A6C' : true, + '765511648B44C53C9335BA4041B2808D4B9BE5A3223FFB901ED32673D5898A4A' : true, + '767EB0B508322CA5B9E37A4A1CE1CC43F5AFEB557D509AD50261F25DA73ED0DE' : true, + '76A266265F7454F38CBC307C9FECDBE80081097444B97BCA9C722D93219EA358' : true, + '76B1A25306D53B410FE5318EF1D077B29081025ADDD40CA55ED4A0A1EF557E65' : true, + '76EBE04192726D45EAEF654FC3DFE992E2297DFDEE303BBE89C8F425269F41E7' : true, + '770784FC2B1A52F110194800E972006E868F055C52A8BE467F3AD7BCD7E441CC' : true, + '77C5EFEDC19C242BDC746C5EF4A1DF4117918CBE078CF6DD65FC274DB64CFBAD' : true, + '77CDA7C1BAC564BA322B350C6CEC0B9E813104332905F2D556603B8F661AC19A' : true, + '78C30D03D640DB32D06E482ABA1084A967544E9081BE94CA87CA4FBC2141C6E9' : true, + '79244B0AFBB3B26770A470A4F23555757DC25D3856F56D0096D9F06EB47D5889' : true, + '792EE0B202E6A45AAA85E918497D9C9F16FEAC99500A7940C0FC812ECC42120C' : true, + '79B0B3A8D1BDB11D40FE8B93868460B339CEE667DE3E94C880AD9BB14E50CBFD' : true, + '79B893E3487215CD87BE3BB3CD5CE1359CF8385BEA49A5E45BD03624A0DB3D08' : true, + '79F9792935CFEB56CBCCF76F92C17E93606B2774C0F3618F2DE9BFE9506AA04F' : true, + '7A081DEE8006EF40615953A1EF9BA820BADAA31338157E69660B3EBE7852838C' : true, + '7A0F440C38F18E15DE15BBD496D670B48571AC7A71EE56F0F696E26FE1C06C92' : true, + '7A898AD8A9DC791DD00EC4F1C6CA3F1AFBF711D2A26E99E6D0740B1B5FCEFA49' : true, + '7A938A727247270556F67BCA523A333A2F22573331A6D696E6C559302C9C1912' : true, + '7B3234A53D173A266510B9777DBDA7F372E40651E07B910899A0C1063A560787' : true, + '7B40E5E9E8A2F63FFF19CE2F4EFEC73C902CD146E75DF866ED274651288DEC80' : true, + '7B45E99CAD17290A002ED52128572713BDD96FC1544094FE297EDF28E4D40063' : true, + '7B6DCA23E77F3424FAA26C0DB800ACB6E3BBC3DC13A11EE4679049EE3DF03A02' : true, + '7C6BB49D3E96F1125169FEB59751BE733ABD4F0D2860EA0A8F1A5C9B14A62968' : true, + '7CE1119D84CDCA99D2C1040485C894E22A02106EEEAB39FD20650BFBF7CC5948' : true, + '7CEE465792A72473B5B70A88F140AA27C5DAFC6C876AD88D2E45423D9CDC6C06' : true, + '7D100CF85EE12F47C6C9755F00CEDCEBBFA513CEC80993AE5E7FAF6F68289C23' : true, + '7D3EF8DEBFDDD39FA7CA90EAC62E660639521686926488A315B10FB2A0005F6A' : true, + '7D7753734C01837BEC44A0E459A049D96683FF8D0DB78878C3BEC4C9574B412A' : true, + '7D817F280F1D664E0C9E717287D6AADB1132D4F3A3E2001B94009119733C9434' : true, + '7D886B62A526E2B996C9F715AC5B23D07EDA09AD69D18E8F54F5210166AE0C8D' : true, + '7DAB96077DBBA3345EB176EDF7919AF6889938AFD1D9BD32105BD82B0D1CBCA1' : true, + '7DBF7C36818F0BBE711267E6192080F75CE8908B48C9E6EB9626DD9B05308A7D' : true, + '7DE8C95508E4933243E3EC7D7C222F82A250E1B71C5619C547FCDA51146392FD' : true, + '7E0CD7D375698FDB4C4FFDA33ECBEEDCC86ECE5ED8942F85B216B022812A3504' : true, + '7E47F4F45DE3FCA19673D070AA99E0DBFD6049A98B94D090B6B2168A1347D6E7' : true, + '7E770FF8F54B17E68443C8D43DCF1661C1082C024BF46DC66716D39B7BC6FA80' : true, + '7F0F7FB9B5975CD10469ECD29F69E5C11CDE9EC561684535E8A36CBC514D3DBC' : true, + '7F3B3BE589085EF5F314845A6F850F9411F0594FAFDDF725D3AD3BB189BBBE99' : true, + '7FCD0B25EEE0A63FA151354DC39D42CA58AC10D8ED9EB4E0B215C652C07D4E28' : true, + '8035EB81467C64D22C3624A58022AF1B5D0D4047328109CABB74CE6B580A9A8E' : true, + '806791E1F1BCA3B3AFECAB7D1EC6FD66C2616C6CF13A3256AF0D53AB0A759BCF' : true, + '8126A7034869686473438C4C7C005631DF665491A9CE81D9B3ABAA27D327CF75' : true, + '813CF894750BE7FE8A0C8B5003B362D62D400F6F08BC1FCABF247172A63B17E7' : true, + '814461D429FB2539D44E02913E03F0698FC1ECFF7894260AD3AA9C2716B99E0B' : true, + '81A524F4768E8D164B51E023E9FDC90DFBD9EB3D6111C0DA5328B8743253BE8A' : true, + '81C82F1726447A63776BE2F5E36CC6DEDF0C62F3B11C7C8B7CE17E10309C4569' : true, + '81F32F8C3E868A588E5F34A64C6FBDB483891716BABC5C59D75391A58D8C6146' : true, + '8249977B7E0D31F533255488A5416349A1C6AAA59C330D6274C82364324C3870' : true, + '8256476D83180014AF0D76C02D405990926003E2052E205DD66B158E69DAD7AC' : true, + '82668C1629CB39A7B5D9DF6BC94349FA113F915999799DDFE31FF1862FACD095' : true, + '82C49DF2DF809141CB5FB30EAA8E41A3E510AC7F51CF203FAC2B16F20C96C2E4' : true, + '82D1AEF2AFC46271D18C5FE50811DF9A5EAB812156C2FE6F531A34FD529E75A9' : true, + '837CFD4C8E9033F38B46225EAF78A12DA6636DAA0CCA197FC964B51092C55634' : true, + '83BBDAE22AE7CC2EEC0698B2435650633DEE4E0DCF849789C974976D4D641C33' : true, + '83DD8D43E88B8D6ABAEA06F3A3A2455C8F6F79059923A08A8D2AF33233F5A63F' : true, + '840B5405310320AE110F3410F585B799CE365AC1076CA0CDCD94CA6867A9166A' : true, + '84A8C623C4304D57CE03893ACBF4E51FC9975C58658B89127508E5C33BE992A7' : true, + '84F98B7850FF7A169D5642E9EF4401DDEBE465DFD5BE957C9EF18CE9988C11AD' : true, + '8524BF9691E1C2AB2BA091218096105A335A0315C8282E59B6E8346B11E36608' : true, + '8583DD0B4F3B4EF42A66A8D6E369B1E2FCB8B7C64846B242384DF6B8FA0570BD' : true, + '85C4AABFC4B38B9B5D0A4B854DC02527DEC6BA1761B28F5698141AE36ECB15D1' : true, + '85DFEE3DF0EC8DFD281A3DE35C80A220A42FC9CFA1EA353349D98FBB58DB6E64' : true, + '86154D1D0FD89E4E1FCF72511C74A8B2B0DDF4F38E675B649192ED0C9DAF84CE' : true, + '8685E22CF1BE901D8E954A0674DB6EC013D9627DDC9FB81D3EEF752BB410DCB5' : true, + '87108514AFAE3DC15C9F52574F918D7FAE18350602652906E289802FC543E61E' : true, + '8769B55BC6349F2874697988D13507CC28F9EC6630431A7A9D360046DCBB3190' : true, + '8769C6220722FE98F6EA21C5456ED2BFDD9112CBAE15847B239AFB2E6A630DBF' : true, + '87C002662AAAB5BE7B6A7CF4B1CE9036E3A2A70A0A3CD80F64005C889ECCDDBE' : true, + '87D35135D0372CC692C261453242880BE00159B60C2450AC7D7B84DF963FCF8B' : true, + '87D61B9AF0E0A2D9F836AC304E2F5A84C543275820BC4BABBE3B75A0D182DAA0' : true, + '8858520A8D4E5C88D777C33963CC7F43E796B555E7FC573681B59DCFAFB43EFA' : true, + '887A5D0381838CCC20D204BBCFFDD864AB71C20D2BA06842921BD96BB171A796' : true, + '88BDA25A602E57FFD8A0837257CE1618DEA23AFB0051874072E85CD98F740F07' : true, + '88EBF5BCAB2CF8C43095EC58E1BD0E375518B5C734CDC394BEB34F3A7B0480EC' : true, + '8919E46CD5418E4CBC8FEA766240D5918B48BB28BAE25743EB276B996E6E7B73' : true, + '89489486E767E3C410896A44B28109680C653391FA763E7A21ED1FEB13540DFE' : true, + '8974A885ADD3112CB168E00C10557410A89955EDFA94CCC4EBA3F5A51759D8E5' : true, + '899F08AAF5A4105B9B6CD106464D7634D5B27A444CDBC70264B8CFB56D290DEF' : true, + '89CBF98E81A0F82966E19BF3BB997A2E0BCC7C90FB83A2D4627FB311B6FD1D58' : true, + '89F5AB7CB2C9A8F6123C4D2F3F4FE378BEEE92B2EF506202BFE847DB058631E8' : true, + '8BA43B5CC73958FF059423C2AC018F994F6FE3A7E88C4B4E6E89ADEC692FF1E9' : true, + '8BB672CAE5B222514864A8E4FB8C89A774200D7773F2A56347C75D5094514C74' : true, + '8BE5E1A7C8736600D204B7C20EDDA49E72107EDA9AA5E03F971FB24FA8F8C686' : true, + '8C2DDBA5CA9E4CF79937A5A3AFCA79F371B6F235B37308EB53ADF12C319A7EC9' : true, + '8C6DDA18A4CB339717E1321FBFDC9A3ACC52F2FEF6FB453EA389A2B43FFFC63C' : true, + '8C7CFA7D4BB49D306857772722769DB1FB9CDC09F565F22A8EC082D956E93694' : true, + '8C85C2F6E697880B740C96BF35FAA02B4B2F718DDBC4A8ED6ECF9EBD7FBEC1E4' : true, + '8CB93E0ED93C6730B58CC0314B8158A7A92184312C53A7CDABF05B369CC7E730' : true, + '8D0CF6F0B227BE9394DA0DADABAB81A44900D104A915645ABF030220F3AE187C' : true, + '8D0EC1B68E24C1C390A7DCE081085A14CB27FE8B5CE652A60529E04825F289DC' : true, + '8D7E00642EF079DCB1B9DE964075E3FD44C63D7DD6493AA3507D87D0E277CD25' : true, + '8E6419A3781E9E9C262AFDF8318332504EEA56B39EF770B9882523D132B85AE9' : true, + '8F8515B35B665B69D0DB9661EAE9FF0829B71CF4AFEB3BBF988BEE73985F5D3B' : true, + '8F9CE539058EA5E0587C8E79E554DBFD1971FDE7C5A96DD1EF7277AFC2EF70D3' : true, + '8FDA31393381A23479C8BFCADEA59DA75A1C390693F72CB7B546C641BC698256' : true, + '8FDDF56677555109B03ACCF8F39EAF657767096D71F1652125BBF487FC6BAEFC' : true, + '903081B318092837E460229248FA67A70B01EC6DF9C9D279188ACED18F1E6BB8' : true, + '905AF56BB5517C973A43C5B576B40C5EB69F00E615BEAA8538D294E40BBA836C' : true, + '90859FF52A82829F7DC99392C6AAD9F346F54ED3D468426C26233AD5D189FBC7' : true, + '90BDE9F4CB3DD673BDB6C641361BD8B076A985903DF004AF7E74DAD95EF82E50' : true, + '90D6AE9953E31E3DA34A67533E444BC924E67CC2C610FA468DB31E59B1A35471' : true, + '90FF35B27260290E94BE3E2FD6F62F412A3FF4303E38ACF6315E190A1980A095' : true, + '916A17B983FBECECABBDBC4ECA80A330919B2EC1F3F4BE4A54832B3874EEE5AF' : true, + '91CD0D276921BD32F4C8616BF2676078C24E39AE1B30943C5263AE0377F41F21' : true, + '91CE410FCEA8EC201D33AB8E7419BC60E8EC83509B51D10BBAD728E2B6EAFB1C' : true, + '91EE28B14AB2C7571BE6CDE2D75FD4C05C960FB033DA819EDD463D5D3C494591' : true, + '92624A843DE27E186FB6C18ADEE88F30E00A984E44BAB93108BFF565AFFD2A15' : true, + '927546232861B1DE9D105031E4A2502A170A06D65340705EE3D7ADDD34F9FE0A' : true, + '930971709C7B3F9D52B30CD42E61D03BB430A1D8641F685F5A9F730760FC78A5' : true, + '9343EA576B49D46887962DA39BEBE09276ED97EBDF47A82AA8CA4F28A04AC789' : true, + '936EC5E6437D79832DE6B015C38725C84A4638D73770965D82F3CBA4EC35C0BA' : true, + '9394C03EA88D9DCD628AACC140CF1FAAEC364252F318F577380BF2623009DFFF' : true, + '93AFEA0BFBF153CA77357087301C0F31B095EF2D5A53F7E2D02F9B13DD6E7325' : true, + '93D45B29473CACF1E89444ADB8FCB8C3626C278E2339E897C88C2A51119C1C25' : true, + '93DCEAA3D67BD8992097C446EECE4A6A02DCF89EAB0008EFAE7D0C9BE26B7C00' : true, + '94C5E69A5644B4BBFF863312752633025D60B905984BC297D103F7B58F8F1CAA' : true, + '94CE12FB5F69E4273C8F813ED37ECB954AD667BC81C4E37DD27A40C291DDB12E' : true, + '951E14CC4823E3E83E2DD0CE75826B7BDBCD45CB16FCB70A1CFBE6C6BE1157D0' : true, + '95EEDB5E6C8B8552E29D7FB0C607EC68AB3D3F88A3FF97F4C70D7BA9D69C8521' : true, + '9658D54C28C27DD6E9B79098D7D86C1EA32215492E8AE9DB225E3410EEBC39CE' : true, + '96735DA929F88A1A3292D120F963FF675FD13315DECAE2555139CCF71822F408' : true, + '96B9BCDC21A4E9187BC7BB7B5BB052A1953140044A59ECFB2F1DB1C0FC648FE6' : true, + '96BC0612871BA526E0F8AB96612077A50930AD430147A0BFD37E1BE21E0C64DD' : true, + '96DC92A327E33DF81946BB760B8C22FD7F74A2C9592987BA110F7A9D211F47B8' : true, + '974149DB587C53796C2752AE8D14C7F3E7C9A1002EECE93420AEDF52B1F48558' : true, + '9787EFF64AF68F280E2778414020672F24C44010549900A5A0487F11CADF9A41' : true, + '97907F0BB6A5CFB411D9975E742C8DD55AED77AA373C56DD74ABE6B7C9892A60' : true, + '97B09B0E6CD2378FA7CED47F365C77266C94B867F8F87B01D8B667D0DB2F5DC8' : true, + '98323FED7420A24CE2E1D0A4445B73918FA0C867BF19E2FEA18449B429D935CD' : true, + '984E447F3A932B79E9373A9EA9786E0637ADEE21B6EAA6B8127B05F26D7181FF' : true, + '98AD6C8A91B962AFCC223C26F0026802B688AE55C204BA0A4ED5BFA5619D979C' : true, + '98D9DCCD4C1EF004D7F000B29AC540E935ADC074DAB919F8ABBAC7507FC35EBF' : true, + '990477B5471E1BFF7187E419CFAFEDE674FAF3E6325182F9F8C686A2BAB085B5' : true, + '99E437DA5156E02DE52D0D95AFDE0FDBAF8F626F4D3BAD2FFFE7F4C75D76BD60' : true, + '9AE40265F51732A5A72BFE9B4C3CAA7106EE84D320F7C675C443C91550E5F701' : true, + '9B340670FFFA8B98B78247E2A470627E05F1AE05ADA505FDD049350B5A8521EC' : true, + '9B573154350FBEDA3CAC21F90DC0E59C9EB0DED7F069650E099F62B0871F3615' : true, + '9B80DD5C98B0F0A7AE343DBB896DBCE45DA52EB4E31BE057287A2A738D9CE3D6' : true, + '9B98284571E5FBB2A2BE676AE24830A6F0048748FA38D1F11CBCB252505D2E62' : true, + '9B9C56A1228EFF3D6520261D3CE06F38597A96199CEE7BFEE71D95F7EA6EB54D' : true, + '9BD01B7914B81371F2FBF23E7A0876608CAC69218A0DDB78C2AE45909744E5BE' : true, + '9BE0DD4F76D60653F0C3DF854026C8A73C5403B593504B80187730E6562FC67B' : true, + '9BF6A4CE27AD782886988DB3FC3AF54CC857946C7C5E32A9A6AB13A9F7504DB1' : true, + '9C0F47FE70B9E636409CD37362B052B40B3CF765DFE80E71D999E7EB1AE1D4C2' : true, + '9C102F918224790C649D916B43E1CC9EFC4C16ACD141E22E85F199C1C6BE7DA2' : true, + '9C109FBEC4A2FC259F1C89666AFC54EC974EF4CC52C858B3C612689CC8A943FF' : true, + '9C1C2898E71561BB2B87D8859A5066940BA97950DE95E12ED293822111EC3D35' : true, + '9C7F9776163746C45FBC96E2985B57C6AF769E83428F910C3EEF0918BC5CE593' : true, + '9CF455322FC12AA2FFE88CCC43388419F61C41ED1AEC560E11D627A009DA62EC' : true, + '9D484D53782C2FC0798843979D991B84A180C1A833D717AE002E75F90E954EFB' : true, + '9D93BBA3F1A3E4BE5D1146849473DC18A987B0CF48566E506564D4386B29C50F' : true, + '9DF287B6058B72D28B1B7E4A46CEC187EC1FF32561A6B681E2F6B6E5A4937F88' : true, + '9E2F5DDC11A878B6A7D27F9FECBF10861EF27BACAA208D8EC7ADBE2682FADE95' : true, + '9E531CB7619C8C0D5C97E7ED9B20C3A269ACE189AFC5D80DF6D2034BFFD0E804' : true, + '9E6937E5BD26C280FA683490204D1347BD8662325524F0BE4B25FC17381923E8' : true, + '9E837E2CEACD82AEE4D2CCFDFCCDD0331D305E5B2D123B317E2F3C0376BAC850' : true, + '9EA5F3B71232ACCBFFFAD71FCCD08B459DEE53DE93399DCE0A212D0034E9FE6F' : true, + '9ED22741CDF43DC2AA238D354F0BD95C28F1B5557ECE9489AABA4CC37CBFC9AF' : true, + '9EF5444454DA21B0B7D6110C9B040BDD005EA0BEA27788D00BB3F1C48D9D0F36' : true, + '9F7385E656F0E8237CE9A5E9C96A1B3CA17920EE75C112ABE9219C18F77E9E97' : true, + '9F9E4DC55925D2944C0ADE2959EED5F6E55A14BC2F6109F8864A8AAD2E4A7997' : true, + '9FC08812780624B21DB7596E278F22F0023D27DE99277E37CF07BBBD4B351590' : true, + '9FC5DF8E8AECAEAA4939A5BD94A078371135107A7AAA15ED5728C9887FF4DD8B' : true, + 'A0142CE676C4FA2524F53E7626D21042BFD8A903AC54F8AB2FB977ABB760D6D5' : true, + 'A029D3A07D53CF4D88E75038E45EA719A7A04F1084FA5C327E5AE66B229E7761' : true, + 'A03D7CE2FA040738CCFEF1F20872DDC1E321745B2C34095822A51B3BDC07D9F5' : true, + 'A03DFE739C80E109658E0B3EB41D9EE1F03EEE48162C4EB97EBC3548760402AF' : true, + 'A0AF36C48B0FB8F827459F8AFE6FB82AD1CF7D5D193057AA7BE7DE3EF5E4F69A' : true, + 'A0E9635A0A993A3C15F0D7362D4D7C1EC21A50B04AFDEC18685B4A21F69E42B3' : true, + 'A1504C131B0FE702B64AA259B901DA2D9B2AE9D85AADE02F1528C1147F98E535' : true, + 'A1712F04B99848A73D978552028EB84039AB331DCFCE329E8A7A59F678139F28' : true, + 'A1B71E94B84076BBF29645578CA796F299D5FC07CA4C2049D41760F9B53035F2' : true, + 'A2152E5BF42DA70683BFF5526B3F9B90045F74B82A034EDDDFD2F8674BD20D7F' : true, + 'A21C3F2CE357822C64D1F9C26446235137559939DBE7C7C3E5CDA218376EC1EB' : true, + 'A277B893194AE7687EBBCFA344178B3578AA6228D2B430BBE2FC8D5EAEE43135' : true, + 'A2E6C7ED88E5F8103D95E02F792372AB66EEDA5AF35CE4884316493325F971E9' : true, + 'A3554186EC7CFF6B11D03F042B490700287F9CCE71A4F581B0C5C13C2A0CE643' : true, + 'A37B9444FE3BB0FB2EC43F2677926EF458D0ED4F0688FEA6443A5F243F10C2AB' : true, + 'A44473407C78C1A951194CB7DBBFBD5010A60A0C82565E02AE1E372975C8D8E4' : true, + 'A450EA9215B45056104180FAA52CD6635B94625D0FA383A2000CD8FB0B203E28' : true, + 'A45C0F1FB81BDEAED2EF4302BD5AF171F31496B6A8D502B488BC8E3E22D5E992' : true, + 'A45C8546DF176BCD32BD7D15FFE732DA2B73EDB38D387108ADABBE4B20066275' : true, + 'A4C6A2F0F5175D6C5C1D87E61ECCECB368E6B5374F056F222FEDBD0857B83F2A' : true, + 'A4D07A0F8A6A11935F63B66461D06DAFE3D8AAC0E0001B5E842A2232F327137F' : true, + 'A5278398DC472DC37141AA3EFCF4953AD7B14AC25D3730D2E99020353CDEEA25' : true, + 'A558DE705EC13AE6FF7DF6E6B1BFDB54A7CB7FFAC1499954FB109E6B884CFC03' : true, + 'A59F7C5EA7F5C48B71DC6BB678541E4982BBA6FE8E181F5C91DBB9F9FBF49A66' : true, + 'A5B9EDB84D5E06BB960BD23A73B0AFC8A0F35C95B782BB54004EEF2430CD3351' : true, + 'A6584C2334B3B29B3F7DC858D65AC229F679D8134C75DBD5A6CC1A4B897ABB2D' : true, + 'A68F08DECE7FAEC73E7F00AFE4C758B2742EA6BCB9FFC0F3D09C3D3E79E41EBF' : true, + 'A6B6702113E87CFB26DA2066CE2151698C68EC71EA906F632FD65DD35B3E0094' : true, + 'A6D113CA991875E854CB226297662EE3B083F5D4E15E03D1FBD96AF0FA6691DB' : true, + 'A6D1CFE508A9E64AC65FDE0FB8EDB8A808D3083125E2BFA975B4A1F0373FE8B9' : true, + 'A718CF6FB0B4672FDB9BA1CDB812CDB98423DD8ACC8991780BE5E0FAEB863FBC' : true, + 'A74DA51FDF285B66F86065496D236FADC4D44051DA6400B743DAB15A81FF3B13' : true, + 'A7636BE0A08F56D7F05A8D69AF0B7199FA7C05AAC123DCE71AB57C538A4D910A' : true, + 'A806A89477E76D5B381113AFAF7D082B543E172A38A1C4B5E23645A81A411E8A' : true, + 'A84DC1DB143EEE938A45743268683770BA0FB2EE69A4EB4B131841555CF1E124' : true, + 'A8E146E7A32922CB9F5908D8FC85B2928D4BBAF44E8917F370E57C60EC479EBF' : true, + 'A9266E0A665A00C7C4360A7CE3FE0B5ADBD6E7E20A32677E43BA30FCFE112E30' : true, + 'A93B07A90F55AB3B6BDD56958FD69A808C8DEFA838DB35D323F080A4AB1E4B60' : true, + 'A982473B3AABC66BDE83F206E260A07267088862EF71389082A98858BB12C3EB' : true, + 'A99953DEB7EA51793C1A353F91A070E4702D42AECC9808E4F14805A755D1866C' : true, + 'A9C8BD62DD64EBE49F3DC28459A7756B6D7D6168A9195E8C52D41D2AB9D9CE05' : true, + 'A9DAFB7E89AA7141CD52F08D5740F09F388419744351D889C96D2B4C3153A424' : true, + 'AA1716CB8EAE12CAD75B01F3A4EC5516140813349BF4041369089A6063625EDB' : true, + 'AA55A82D7DDFFAE695312FA5ADFE893D1430057D1D8ECCCD2A9E985CEBAE3989' : true, + 'AA9F7FEBC74FE835504EE24501DB2D00409FC761AACAFA92DC8A696388AE843D' : true, + 'AAA011E89B2581C1863FB1DA1E41A8FB8EF14ED0817976F16909C68E27F4E70B' : true, + 'AAB01A25BB1EE114084DBA1E0B2B8E5C84936196D40CAAA26A16E58FC50E2B93' : true, + 'AAD7DA6E17F164E00B0B63A6338330219F40EE683F8E0CA5F6B709F2E13FB3E5' : true, + 'AADA8A48FB9966CCB61E4B8C97DB2DE50F0AF34422D74D1A770501AD00C40119' : true, + 'AB34CB23DF8A006DD182B01EBBD38DC13785C4DDD433564B5CA7579DEBF3B1AC' : true, + 'AB47045D4B45B0821E851EEEF7EA9D6571F9759DAE4F3DB1EF92597BFD2B4FF9' : true, + 'ABB5673AF0583FF328D23B1D4F35B33EF6B68DDCDD482BB3BC1DCB43D2A0367D' : true, + 'ABB5D30080E3CFE6F83F249F3F8A22C731F318DDF1BAC4D4895B2B7F7A6287E4' : true, + 'ABE9809D21AFE6E0FB253DCD55E10C31DBAB32A973EC52DFDA1C15068F89D333' : true, + 'AC3D6D1C64348ED7E068376BFDDA866A015317B4AA8A7FC0C16F7E7ED4DA9682' : true, + 'ACBD5C965EBDEE4D8D3EDEE2A5FC407A6A3A7AD5E6EC120EF1854C18118953B2' : true, + 'AD046A8C4DE2A89F32973F0566452CFD38CE0586998717364C528F5995B5E2F2' : true, + 'AD05645C0957254FE67FC48F7BFAFC24D30BEBE233B82D87DAFF3B44EF7314B4' : true, + 'AD3FC05D383E384659DA700279CE3C48DAB804AC74DE2B3DD3687F6ED355F99B' : true, + 'AD40C15657CEFAB57F6A71035796462F0184B0AAA489E601087DE329F35CD757' : true, + 'AD679FC990B740191DF7F88D51947A1F23D79F862160E3C94A22BB1169A7567D' : true, + 'AE03E5FDACD94805484DE44DB4BABB96D1D2EED4F0B9CB528CB30210C8005C6A' : true, + 'AE176A4F7AAFCDBBDC0B7A69ED5D5AE0A8FD0A5BD37BE887ED0F098239D11CE6' : true, + 'AE7960061D5D4739E2A6C0BEC6BE8E98ECE3E97994940C9BF5AB2E1C2C0D9702' : true, + 'AE7BAFD9FB7AB3D87D0D58774420B314E46538D2894DC58DF5F5614DFE7F0435' : true, + 'AEF7E370874D2001D989B258853C1974A5E45676D3D7595F74662C0B650BFE8D' : true, + 'AFEC41B1302FD09F03015FB573960516918EFAE30F68D97D027D45A51C4115B7' : true, + 'B06CD6AF9B4156B4379FF3C6C1F8CA182A923527D0DD92905394DB3446A11D5C' : true, + 'B09F332B8A115069BAC41865E1F1228DFD8ADCF3A66C1F2EC9DFF41173EE7A85' : true, + 'B0FD996D85E74BF51328181823707C4FE5E96C0028C2B3FAC104A96237B63EC6' : true, + 'B0FF4F8A6FD3F8FBB19A188351CD4925C951DC2D64633B9E0446F026670A47D1' : true, + 'B15FFE5C987B12D7299D96F1DBC1C7E85B0528D1AFAF9C6FE808361F7B0D1D06' : true, + 'B183D8E672345AABE24C849B4A13D0BD99C296AAB273ABE88C00CAA229A27154' : true, + 'B1991ED1894F821B66AEF2E26E0834CC796FFB43971A79588A44CCBF7E8B3076' : true, + 'B1D9B3EE2512A48A8E703E2D2263EEB4B0A3D24963F5165DB3719CD4750D2986' : true, + 'B20BEB685F3FB617FC974C4C624ED894EB2F7FA61DE28104C7B9EDA1F52F46FE' : true, + 'B295FDC9D7462488EBD4E5FA8E5B062FE5E2D0432C6A02B99F4CAD1F9BE6D0BB' : true, + 'B319CB30FD80959806C6836129AF6E1A8A32B8B8D39AF65674532BBCAFA2CF8C' : true, + 'B31C07387E56AA457F17CA3D3A4C485683253CF387E6DCE37469B6A8E51CBF29' : true, + 'B3251BB9A1B4F219400E69789FB08CA2BBA396C6D2FD3C4B69F4B7E1C0DDB615' : true, + 'B3381C627EFBEF5DF3BCC9DB71A9B6E4C0A4F3114F7E7408A356FB33FBA5D20B' : true, + 'B36D72C8B1F436DA49520421FC0A2869A9952DA405DA5E29EC3A1919453DD6F5' : true, + 'B38D0B1FCAFA3F435FECB2B3A25804FB004BF11DE5CD691C1461A4D76792A4B0' : true, + 'B4130785116E5A84BF7B191696B213BA8877228388B18C2DA38DCB9EE14AC8CA' : true, + 'B440A043514252DA267A339059C789BB14D1339B7964B0945262D978D9AD021E' : true, + 'B5008FE6CBE7E0EC5B158E8C9CE487FB6E5349F47007F3CDD2B1AAA69098FA40' : true, + 'B51BFFBF094EBB26247D54321DE8F7CC10B24BE9EA6D9383BF908E765D5D9594' : true, + 'B5453C09F38363BC702FCACE4B64A74538B1BE40617640C00150CA9129FCDF52' : true, + 'B55BBD123C4262662BC144E0CF4BC9B47059C4BD0A136C075BB9B3E82830799D' : true, + 'B56769F28FE8395FCD50E7552BFBC2AA549F30E1092A54921BE76B07A6A800F5' : true, + 'B5A9BD7AB128FDCB0DE3C7EAE193904867BAC57822BE195F3060369520403D6A' : true, + 'B5C58EAB37201F8A7F3C520FECBB3C016A30960C5931DD7C43ECA217A1E31774' : true, + 'B5D38F895E2681F656FEE774C8677D29749C3E5ADD3DAF7A2A91043BF5A4DDA5' : true, + 'B5F004A0997E3448A1ABE7DCE45D8BD263AC631D14B05A04CA195E98D665B679' : true, + 'B61D7AEFD0BDF0DF2C8C8E68D4E3D92EF45CF9F79AFD9EDC4729D71375916019' : true, + 'B633827A97472541F7DFF77C347301FB40604D6076D08FF4244C070FCFC9B731' : true, + 'B663B6C8C60A5969BEE4F6844813AAB8945EE2CE2253CFBA67500B991CD8A07F' : true, + 'B6CEE930054D71DEE1D167A566B9881B8971F7EB4BC4A34FCFD9DDB3DE311B9C' : true, + 'B6FAC01424B5C332C72B6B218DC93AEBE54318DDBFC5BD1277E262FA7831E5B1' : true, + 'B70CE73DC10ECA5F97059AFEA5A65F1B1CD45F3137BADD7F3A12DD1D6A468D82' : true, + 'B7135730040D8EC88C4228AF1C9482AE97526F30CEED5AA117387D20A61D7159' : true, + 'B72D29A0BC3BE16C085CE7AD38D1B7A945DC96F4A6F20F126138FC5202A072C4' : true, + 'B745A72DD07E5FED73CFA723D6BC2E98FA62B6E03ED378804EBEF7DCD83725C0' : true, + 'B76BD62A287E68C2CC8F8CA7FD5196938DF4C39E6F46DD81A3A37D22B761C158' : true, + 'B7E6A641053C86E17A4A328D98700AF4BA3BDD35E5208359AF120C2690F51E3E' : true, + 'B7EC03174DAD602E897345B072749AA86CAF05151062989E183C3039DE25569D' : true, + 'B839688B9303FEF8860B4FB2EDF19FF2A0BF5306DAC007E8CE074CBA13B39A03' : true, + 'B86F85494700264E918D8706B711B9E8C3C12AA776E0B63AF35B73CE56B15BBA' : true, + 'B8845702F28C3AF9B35D8B5F1DFFFA014CE411CF592B18395F700CD8B937F3B9' : true, + 'B8F0936622984493F4B74D087ACA8438AABAB1111DA258806EA86C23C6F6617E' : true, + 'B9772693C35DE8A4B6EDC9457AFC3B4B52ECAFDBF612CEF1A27AE7F7FAB8F79C' : true, + 'B9D8E2EC3C47B6130DB45DE0741CDB790E36E4617986AAD5A2BA232B8BD8A85D' : true, + 'BA4052C530EB5FDDBBFD98FA9EB99660BC084678009D5AFB2F9996BCA40C354B' : true, + 'BAC88F443D9F2F03CC7ABFB27373EF9600AC918E084967BB77E80650B3724266' : true, + 'BADED8CA137A9AFC4A0FE344F663C743D1A549D0A8DE663426B90E788868024C' : true, + 'BB7E9348A57593802F083CAA99351386DBDF348C83AB35E554BB7BA44FE1FA55' : true, + 'BB7F20108F934620F741F678F3D25F7DB4A50A2CD216FBAA1F4773767F645AB9' : true, + 'BBAA50F752648522389B89EDD345BF8C41FE10D4593A8A1DF467B2FFA7BF870B' : true, + 'BBB99D57C9ECE54B1634DB4BD6211C5167A5EB4DC310340BDE14B1BBCE275937' : true, + 'BBEF78F8C05ED5A5C2142C3598696B0674FF3DADFC8156896025A13EC892ECC2' : true, + 'BC0B758091A4613FE070BECD6CDC0BF1FE89727C3482DB4A2353CEC027E3AB11' : true, + 'BC17CA376A3CA716F41BFA9D3A2CED2B1941431D70543BD600B7596F4EA2E440' : true, + 'BC1FE50662610B7D575931031B1EE60479D9D9E3D94048DE6FBD44C88B9FDAF1' : true, + 'BC447B8A11DA8F1DE19285AAFB97AF1A26A35157AB8FE1E4AF80AA70B11AB65B' : true, + 'BC568DC8C01D8D7595FFCA2A7E000780F15EC24CD38AAF25EDDCE7BCD41E4FAE' : true, + 'BC622EDE87E66E364218B38609D792F6906F7CF95EE5EDD1A76BE0C48B8533F3' : true, + 'BCE02BE648B8A1EE092574F3D453388649082A1B72E7AFE7ADBA310EFBD38DE6' : true, + 'BCE27288DAB9DD76CB73B5754152983F14B11DD0466B1D4F6F55B61E27A3353D' : true, + 'BCEAEC2D8B8C18B58BD320D77850EC38285F419ACA8A9E939DAE7DFDF26696D0' : true, + 'BDE511A7E1B38D779BD9E758B2EE8F7F2DD5A242D37CA573394808CB01B78FA1' : true, + 'BEDF91AB2008A01DA4111518C8065D4BFD9ED614A29CF89A16E94CBCD5F5D17F' : true, + 'BF38E5D5BE0CC67C1CFAC96B40DFD91DE065F2DAAE427AA54893FFC5ADC73707' : true, + 'BF9B71E2C87C03CF421733610A1BDAB430C041EB20DB75ADBD9ECB3D342072CA' : true, + 'BFA0CD61FEFB0FE90D0F9025E67C62A735DC730F13B5D5FBED9B54A3DB882F91' : true, + 'BFA5B4A3751715409895D27F7C9F057F2C31EE560DB075008A3BAA21DE838FF3' : true, + 'BFE49B659622D1011F4BB655CDA77638665D068FBCAF11C73829D2DE16E43BE4' : true, + 'BFEC93327E0A7A92EB67CB3E00D29C97411077E06CFD010BB84A5C0836CD2F1B' : true, + 'C0AF523C6E9B52801FCA62602022547B25D8A107CC7008C67C438E1A093FA69B' : true, + 'C0DA5CBD6F39A5B707B0E7DD33004811FD6F925DE713C817F3E2719393163E9F' : true, + 'C1AF26C31745338DD2E13C1BA98A2E643AAA3271CF1FD5B878E93B1DDA2DB868' : true, + 'C1AFF08543BBDC3D2D796884D099D8A7B8D40FBA1F37AA31CEC16EBE2AFF0D0A' : true, + 'C27D64BA2F133417986FC42073BCD7DB4668A2FA7D2D217CDE215F25D2BD5E23' : true, + 'C284387A9875E45662ACE976D665D6A33C36F3EF2B053AF26C0918DEECBE7CB6' : true, + 'C2C65F50563C7E96AFE6602B9A0B68DE74F3C7AE5C00ECDB39B98960BDFE5B91' : true, + 'C2CE30C7F0723F2D2B25A18FA209B1CBC66662624FA8CD1EBA96BF051D969625' : true, + 'C2E60ADC4803F0F11F83C644D8DAF80DAD4B9D6A67FC108B3C2CE6F2576EB69C' : true, + 'C32E558AC4FEACD1690C227683DFC38CD26FEF103953FCEC9CBE0FAB08C176DF' : true, + 'C391E32BB11DD8F6F13BF71E0B9CE225364A50006E3F91147EDE39D2AA6E70E0' : true, + 'C3C07C187D95222D855EBFDFF827193F71C471BAA3A1B51242BFE963FD4A63F1' : true, + 'C3DEDA7A5C280862654DD266D482AF59CD7CE5C09020F8F32EDA0D0FE2345B02' : true, + 'C46DC6888470BF64D41C297E1FA082ABB128D4D0EC44DAB62E05E4FF8496B18B' : true, + 'C4D51A111115A7D06422BBB16B67ECFC73D636DB08551B27596FEB532D8CC2BA' : true, + 'C4F8364FC0A36A73AA0BDA4074FF1490B3AE07A7BEA479385BF28078288F9C3E' : true, + 'C520C3FFB5C5107BEF2E8DC44C74803713E13D9BCC99A57C6838BE15ADAAC04A' : true, + 'C55B18B5DF187AE68174C086FA4E692C6443B01FF4A19DCA743EC1F6E1B7E332' : true, + 'C58F0FF2DF810FAC8EA095F349A2E6D7E0D9C09D6FBE7D45895408530E1C75F4' : true, + 'C5B2A636DE1FD6629B4BA41FD1693F261F50577130A05366D298F9CD282E4BA7' : true, + 'C5E4575B4442687C80E6F9F290846CE80217AEE8892B9977C5F455BEBE285EDA' : true, + 'C610F374CDA9036FCB01F526005ED8561D16A27790491AFB26D56A1BF0716007' : true, + 'C6479E02F20A3596203FF184483F1F6A29EF9F95DAD258EF2A84BC6125B299DC' : true, + 'C66BA6D7D5EE44E268D2DFE0A00284BA59F2FD86AE8F738E84718A1B4C5927D3' : true, + 'C6983038573EE575734E531266D91772390BDF63A276B49E9360C81F8C813EA6' : true, + 'C69E1305EEEB633DAB5055D952D0A8FFAF35FE57D0E1896A7BB24EE37F29959B' : true, + 'C6A38936450B0D72D5C38EC5BE6FA683D25CBFE604C7415BC5E55E2DEB06A946' : true, + 'C71294A0124420512711C918C36F77192D2B45CDF8C99824B4BC862D0B31C3B0' : true, + 'C7E74023ADA70B7F3BE9085E1554B8EC7AA20B0E0A38A08B2A05DD377F7177D9' : true, + 'C821C2140114FA7DDE92FA497EED3E4B9131919A9EF3D6750013C6CE7FEE0B72' : true, + 'C86D8AEC465B23370C4D5086141E9C98935D91524E3CF68BBE62C0AB231EEEBD' : true, + 'C8726499B7FA3B32022A21230BC27CC59901DF584C69F33232EE76FD7A554F3D' : true, + 'C88BF2F611A7EE5307733DC2950EFF56A96BC832961FF595196EB88EFDDF4932' : true, + 'C8B4AB5E690CF9E14D079125CBD13232EACD4FA3F15276D2D7BC48FB84BDC0C3' : true, + 'C8CC1B97C420851221D3997B0C0E3A6B87B4D9F86D348917FF90BF710DE79351' : true, + 'C950A2AC5B35DEC3F384099AD2E3BA7FDBE79E93362A132380CB5ADD1EC2E94D' : true, + 'C9F2002F6542DA1BC5833AF9A11F6F5F144B76539CDB9E1738C7DB37097523D9' : true, + 'CA157632863D3E7B499F141741724FA84DBA48AEB51B04A53A9D3DFEA7F70BF1' : true, + 'CA362B0DE34C54F91953DDCDE461D54BF30DB252EC07AB6B4C449E45750BACED' : true, + 'CA46DA728E76E97AD214DBB6AC9CB1EA2DC87202C88C35E87CE574FC1F2E0438' : true, + 'CA846077B68DCA99AE30BAC33929143E856784B64E70098CBC7FF5BBD85C824B' : true, + 'CB42AB965E2C1CC7F20BE15F308C2173AE531C532DBBF8A36B292B1E1A891A07' : true, + 'CB6C703326037CB5C4456097438DF15387452C0CACD89D9DDAB1475A2111C197' : true, + 'CB7FF00DBEDF16D72C8A10151A30595AEEEB9A2317D3F44269966624417141F4' : true, + 'CBC3C62B44E2C35250AB62FB2C3993C55F251559259727D5F76A63002148F17A' : true, + 'CC1A62E8FD6FCF9A3BE4BAAA64AE2FC0BDEA2C2F34BAEF8F9123D991262DB210' : true, + 'CC815184FE74CDD53947DCC9733B1D5E9B9E8F31C8C96154355ABAF389BF7D63' : true, + 'CCF6435DDA033106286D7A69A4C8DD727B59C4E334826CDBCF6F66C801580FF4' : true, + 'CD35C7ABA0839C0D865DEA4C1DB624F709E5EA041A68DB55842E2C189F38BAC1' : true, + 'CD7C028069F371EBE93537094CB57A51CA0CA421B9A7F8C1422D9C454F864FD3' : true, + 'CDA01229ED05A3825448BF81C4479F02828C6E02DC3F303ADC153BC0600D1FE3' : true, + 'CDE7AA628678D4BCAEF4240A9D09B5BC7BC1A1757010006931949C83DA299B9E' : true, + 'CE01F10B612255CCF31E03F308F45E0A091C0FC41A13280F575BAA7F4F7B4A58' : true, + 'CE318D567E77FA3E2B87268B09B1FE99484916CDBC7A56B99900CE7BB7B4F967' : true, + 'CE34361030AA71334FC8EAC253C91EDDDAD3E2AF0974931325384B9A445CD116' : true, + 'CEA9DC1557689CC8AFBC740C095ABE8AA617C19AB92B761EA71F19AB2B3FBA4A' : true, + 'CF19B1004488D5D9C882E2C4D0A47789618E0BCD6475F6D9C6B5591C2BF333C9' : true, + 'CF3457D98980F7909742C974AE4EEABF2007967D9870705867C18A5B47CEB2B4' : true, + 'D010B9708329342E43370125857DBFD443ABC95CF5778898A7343E5F1C61F4E9' : true, + 'D0927B6D60E3441E11D75A8FD593A38665AA7D211F691BDA3D0E815EBE303C25' : true, + 'D0ADA8B3F0D09BD13AE5877B5E448C18376D129F92DCF2D4F1BB182725A62D3D' : true, + 'D0E5727B39200CF1054391FD251191C38F6754C103612F442673BC53F1C1634D' : true, + 'D18241A820196F4910694FBB37556273E54236F41FD53B3AF75B6C6430D93B15' : true, + 'D1B116326075EB6F65C4F8F8E6742B639DB23B56CD8420F42F8219CE615303C7' : true, + 'D1C4E4D1F014FB8F889F45AFA39485BE742F64268C662BB28494855E393ADE96' : true, + 'D1C684802932EB8EBBFA0DBD55EFA5345AB3A928653CC222D548CD29D91EEBFE' : true, + 'D249C8E95880A20CAEEFADA9A9B8E80386234DBCA6D990E78CE574B430C0E6A2' : true, + 'D2D9C57B19EABF7A90BCB421283733EABE5ECC6311B1D05089D4F4251D157E3D' : true, + 'D3525FAE9E537DD0A56F0311A27A603C422DB0376928C707A12A1E3785F2BEE7' : true, + 'D387A162888C2556F1D3B9A73201A8608A57085E1115214BD2588F315B89776A' : true, + 'D41844AFC9E00E17DC87F0ED1AE4A0559C418770A4FD7033E3D9A9997C5E204E' : true, + 'D44D1A7D80BD2F9B4A62E11BFEBBB74A5780B0366CB6038CEC9FBC8C8E19439A' : true, + 'D44DF644880E56596405F1364D8C3E5301F05ACBF82FD66B671D895288C75360' : true, + 'D53C334638CE54CB75DAA15D1AAAAD70081C9A52A2393DFC79E9C3A92D54F4D6' : true, + 'D5D9E3A7DAB437D5F8967A307F6BEDD3B2AEFCF59B229BA649C4E549F01668B5' : true, + 'D5E62D9B8F9EB17D8BA84646BC72AE6271E24D0C7787D302965A92ABAEDEE2FB' : true, + 'D6061064FEC9DF923123EDB3050700BE1532B68D9FC12FAECABB9FA82CE2B887' : true, + 'D6200C1744EDDC3BA40857A1089A20F7E86EC3B29FF413CA2BE49C060A79D19C' : true, + 'D63DF52A3A887D35ED58C64463BF73252738FDDFD73E0F8B378E318AD3057D36' : true, + 'D646154250C7883E951B03FBBE9EF7D3D00E74D60281FC82876A913A23AACB1B' : true, + 'D6ADFC439E8E9FAD7C281DF1117E0030BAE78D15E481B7886F54E72DB7DD352A' : true, + 'D7266CBBD307F97B7284312CD4C2A5BADA7D4EB123237EFA43E55D8D2F5B16A6' : true, + 'D737A5AE5F875A566A4ED4CB025D07D076998270F0D25292661B4CD581B0805C' : true, + 'D7632272521683A38E88A18C2CC6AED79B2C5E854483BDB6EE83D82BF41B96CA' : true, + 'D77C2904CEF8726B748EE36E43BE65BDBD12FC48E4A4ECA4885537745B0BFD15' : true, + 'D77D31A02283F81A4E64F7512C59BD71FF603FED5EC57F24F0A240F04B846999' : true, + 'D782121A27D3EFEBF791EFE34D5A81385358DA939F5DEB17530252BFBC8E2F02' : true, + 'D78220C9BDCD563F71BD8139B40A495879DAE9FB1968AE3225BD0D04DAF294BF' : true, + 'D796DA6F4413295EF05E79C798E92CF8A6AE172A091C862D7176384D520BA2FA' : true, + 'D7D1D7F326D3DE85FC1DFA7F45F9D5A3C64473B37143EB09DA66CE56F6258FCE' : true, + 'D82602A79F22AF46AD32D0AD123D30464371FFCB7A8AFB8C51A74841463A20FF' : true, + 'D86562629BA86C435C0965C4AC302160729F27804FEBA36E211F96CDEFB5DF8E' : true, + 'D86996C0C019AAD9DF5531836BC48F54427021AB8E24BA1AD073895574A143FA' : true, + 'D8AA8D8A7A48ACCB4C1B7E6C2228B7BFBC297EAFAB1315643744E3EE4DFA7E6C' : true, + 'D9065B6D9F7F27507D51170FB465FA6250DF528EC38BB46DAD0311C1DF63ACA1' : true, + 'D9259A35701E881FD41A9939C4AB82EDAA83A18D1ABCBBBF8329FC6850A0C6DD' : true, + 'D94290750677E2B5ECE7C2DC41AD4618C6995F173EC44DF80B23CC0E333EA654' : true, + 'D9FDB29EF83808BC82A97839FB2F22C2D20DAB2E6B67BF5862C8922BB1FA9068' : true, + 'DA5D20F1A6CF6CEC3AA7028A6E17D8F2E1A60069E497758B0CC938C08F4E76BC' : true, + 'DAA384D0D2A94A18A14E3DDF7A963E59BE41C06B978F3DC8862E1EE6C8E76DD0' : true, + 'DACA572539398A22DF7049B23BA3E59DAD6F34A44ED7D5E275457D9F79B880A8' : true, + 'DB7B1361B066EC2F777AE104F88A846DC163200AEB05B47D5BFEC91B6F13AC53' : true, + 'DB995D854C4EDEF4DB5CCF20B2B30719056F3EDAA0CCF4B9D9C5C898407C5C7A' : true, + 'DBBF19EB75C47A8473F59CE4B2A318B493EEFEE4B6719BDF40FAB2E81D9DB2D9' : true, + 'DC90A8BEF7B1C62F9E4B3D3345665DBB5D6CB46077F5E7ED0628A5C0E3DFB742' : true, + 'DCC87ABAA2524536C43A280BC52710BF117E56EBB39444873F93AEF18519A502' : true, + 'DCCFAA33D28DE7243AB2C1514FF36012E967B0C0C6E62E940325CFCE982BFC23' : true, + 'DCF5F2D0FD496B041393D2151A3C6366DB5D9E3E6FC5EEAF236CEA93B7E0126D' : true, + 'DD5A1FC87107218C43D2C1C73075C5506D6901CE1289F86DC0162E6BBB80B84C' : true, + 'DD79B321EF333A6C39D48DB57DC5A138F023A111D56851CD4CBC8EB1BD094893' : true, + 'DD7B5992561C1F706A82F7D9318E45DCB1CF508A564263893350E2D3CBC41241' : true, + 'DDB4149166CCAC259D826E4E6649B5F59DB8DE3A2ABE0D0CA88F192AC891B331' : true, + 'DDC51B2E6531407BA185447AD1A9825344FCD12E93D120D81825613F016DF297' : true, + 'DDCA648AB82DF2A942AAD4B384839255D5D98ABEAFB602B2BBA2F4B115072EDC' : true, + 'DE65D592D65A64794CCF2911A10DB5DB27C28E6C88BBBF75B75FCBC2CAF5A02A' : true, + 'DEC7DC8AB8ED70C1D2FB2875F0F99FA99FB53E6BED70CD47B244ABA2104DA5AD' : true, + 'DEEBA70EA985BD2637FA63B79F69B0EEE5D261E95E3699B97855296B23D82C3D' : true, + 'DF32CD36F2BAE47DB4BDD2610D77629F44819723F9BA4FCFF6CC7F6E5709FFFD' : true, + 'DF4482289B54CB444569A5436AEEBEBFB348D966D2FBC8C5115376F3E5496303' : true, + 'DF464344337A60D78868FE886F92848BFF8713D641C9AC5EBA29524842656CCA' : true, + 'E0BD7FDC3544BBBF78F401148ADE378A4A85214C0469EDD5EC23C5246A6F5555' : true, + 'E0EFCF7FC7033248F1933BE975F931485787F32928E47DABAC84FEC9D7365CFB' : true, + 'E0F0A23CA9D564C9EF7CCD977D01D6E6E7EF5ABD585819EE64520CF369967353' : true, + 'E18545BD6D070F0C6AFE93153C190792C4921FC90953FAA775E351B1FB1BCC44' : true, + 'E25454E967CE89CBD0F51AC02466D60FC091BDDD9CBD3093ABD027B0AC4E8174' : true, + 'E26F4C34273553354334DC7A22DC56A781F2491181799287CC91F12871FEB50D' : true, + 'E27966B8B9C67C751F9AB8315D0BD1CEE334D96A8C5F60C764070EF8B8FCE61A' : true, + 'E2C42D4BD3807D802CE3B9EBC6FACC04E34EF327F4BBEC1C7A48618A1271F5E4' : true, + 'E2FBB7B66934E9C420D496089F2C0FB5AFA193A1E6F49BF35A751EE1E1F983DA' : true, + 'E2FC1229FE0EDF06A3706DB8DBD2344B61A9364840A3E61E6B29CE49A966AC8F' : true, + 'E315468836F77DF6AA146AF392C5DB7262A83AA83FD7CD75771C70D29C3F16CB' : true, + 'E35CE61842F1093D8D4AA9923AC66D17F8D1870A03C9CFCA1A27361CE8091CBC' : true, + 'E381DF6792973BFE322D23C6CF2A6C24A4ECFC77F43F03D2FC04EE39FAD7C683' : true, + 'E3EADC69740DF00FD147B0718CB1063D7E90E172E196C96956920235CF9DB382' : true, + 'E3FFE980C209BCBE10F594806CAA472BA2D4702F6E2549AEB86DC52B46DCF773' : true, + 'E4A79C0CBC9966A44EC1185DD6E66371FF395D0FAC53C1FD2619B02F6ACC9C6D' : true, + 'E4E88DE573C9161962C072B7A9C966BE3070A6027A061DE32630C553C09EB046' : true, + 'E4F069C24D7162E3C94AB295EA33C8926BDDF79934CA28D8982A35650EB60B05' : true, + 'E50C2EC0BA6891F60BB325C0762AB06271161EFA9E0B2ADD50FF520128092FBF' : true, + 'E556C54852E6E0E61097B2A34DDCB87F12EF74CA847CE07C4CAD2348FF41D3E5' : true, + 'E5E046397DC23925AB8CAD7CB66E2A12EBD989350CE41F89EED455248A109098' : true, + 'E5FB4DB1871BDADEE779D366E7BD007F7A963FBCB00B90EC14C8077477E436AD' : true, + 'E68C4E54088AD4A308EC6053041A4A8B04A213347BAE2CE86D3F1587B1518981' : true, + 'E692108B3683F3C6362DF92476D62BAE60687035B70B9119F962190C9C215B04' : true, + 'E6A029856494D7FE48E048D60E7BDE80D2B6217FF084F64A929056E166F479C2' : true, + 'E6A6EDA8D60BE3C0A5A19631D1BC3262EDABEBFCD0144F3D19513C8F6342CD12' : true, + 'E6EB9DC7D407B4A2F308B4822E5BEA7428CD4520C59934214831D61E95F2BA34' : true, + 'E70FC0431E5B6632A30C04F99A4E0E55C860187A04CCCDA4FDC08E926E94964D' : true, + 'E7382549110E59A8E0AEADFBD5D29FFA2350B5FB2923F2095744FBFD8AD54C97' : true, + 'E7CF336F6E4E8CC153474F240D9238D41091EBA635F25CDAFCFCFC3AF2A6BA43' : true, + 'E7E7A31551051BC4346069C741DF38908FB54470BEA2FAAA789DDED2D627F09D' : true, + 'E80FA3BD00D99AF27B013B520D3CEB1A8DF8BE355EC971F08B4AE44FFCE44147' : true, + 'E8165BA89FE5F637FA2B3428FCC54E7E92BDDBB80505188C61320FC70E24F86F' : true, + 'E83B3C3A3EAA32F6C60BE4D4DA918AA4A5432FF3380D4886C2844D69094EC571' : true, + 'E893B898F708775C51A0A60748972C53C4B62787A591B96EFBF8CE28E29E87D8' : true, + 'E8AD1B8DA833226A37C21D1608E0DBA8C758EED7A943EDF323ACBB779E227C86' : true, + 'E9A176C583F8B5522A9A86B6A4409AFAF614D6A7650A5D6C32E4499319F5280B' : true, + 'E9BB3A11B595B1D403FE21DF47A3A4EB4CF43ED49259DA83FB0FAAEC048422D7' : true, + 'E9DDA8C162F91A7D746A5567060DD636491C8C1441697B600F56C00FE73AC594' : true, + 'EA64F2625FAFE2EC122B493D4754C2B090153F167213AB6F07A87C1D993E5292' : true, + 'EA6973A28807C80D7558B7636F875574C9FAD887BACF23B0F686A61C26EDBFA7' : true, + 'EA9369F9AEF701B1F9699363254A2AE007F47AA824AECE077B82F1C0B6A69197' : true, + 'EB11019A7642C75F4DDC1DC9CF3B469BFB4C44B71C615693C73175F16DCA036C' : true, + 'EB5F60FED8FCE35455A15B9A8E9E200FCF1B8B5B278D1511C8C5EE67BD99FB46' : true, + 'EBABE928B643E1B9FD6F61D67ACC4BA6A9BFCC95927D31D265F701AC4613B9AE' : true, + 'EBB8403BAC78C842A81201893DC86184BE82BC2BFEC8A51748651F938F4051B0' : true, + 'EBC9928117D91D999CC375930982E891C5DC4F9E02A3960FE692DAB13D96ADA5' : true, + 'EC3097F047F40894368CA744A97CBB177C1122963AFF3D958DDBAC299F793E71' : true, + 'EC4FC179A9A40EBCF5F9508C94C0209D9C28ABFB21EE932FE11BC87F2887C490' : true, + 'EC810B437C1FF46BD3F0DABC2AE11DBC7ADE12B9889580BCF20C097540C97A7B' : true, + 'EC869ABCCE3A1C036F1AFABE5ECD4FDA581D16C0E81E16A2734E6004A55896BC' : true, + 'ECA27FBA9090EAD50CEE16362AB7462FBD060DF8B4BE27C107328E49214D6758' : true, + 'ECA4B72D4C90C2889F21F4084AE4CB53F5B8EA5D147529B0CF72D3A9093532B4' : true, + 'ED310E1BAEB1759D2AEC00BCDE6D9A86DFA33B17563EB5105585F15327831032' : true, + 'EDEEFEA60ECD1F9063448654B3D1285B8D340B4AAE455A26C34AF221F6F96F85' : true, + 'EE5D710097EAD11639F98940D1F32793ECC114F0408856CCB6536F1EF2366704' : true, + 'EE82E118167C83EC466137DE867DF824A5063074FC61CD164D21F26976741A2E' : true, + 'EF162B09A3D267BB7B8C79D44D06A7AF21EF260518D0EF3A8CFA1730D7B89231' : true, + 'EF55226DCFD0FA606BFD3496633BFCBC146925B2D6685AB4875E142D79233600' : true, + 'F010781D39EBF1A76700CA71DB56877685A52CEC2E7250D2C5684AF659887AC8' : true, + 'F055D488944F4779BE3F17FBEAD728843701CE6598D01286AA1D525F26AEDAAB' : true, + 'F07E7F2A7106743D8C1FF2E201F944E3227363968C5A0AE31112473B93BACC7B' : true, + 'F0A9E452CB90B0B6C50FB794AAE7ECBF5E56801A10124C95292B28592FA9B003' : true, + 'F0FD8D8E64636B1A1CC2557C50DBADE7A1F0536B905F5FFC06AFEF630AB9A40B' : true, + 'F1C66D3A1C4917A59AF8ADC68A0722F7193D345BD978BA00FF669E7948D44F29' : true, + 'F1DE4066AF24E5744C9075CFE974CCEAAEC75EF9E6028B48090B1A46CC218C37' : true, + 'F205928C933AFF1F1A6411AB779CFAE3FAAF43754AB86735DB52F74DB1DA81D2' : true, + 'F233DDE8F7165F2D7AA4E736E6FE1F913570FA7CA3E3C134EFD22D5F303075DE' : true, + 'F2835EDF2E61A29F9E62FEF97476165D5FF40E553A2A4F955EDE30C0A5149E12' : true, + 'F28F54684E233C9EEC646C6E1336E33684DA3732ECBEEDB2A606E09DD29801FA' : true, + 'F2C91876EDB36EAD7E4821C2A6581144F1E5A67B2DEF4A5E4AFDF79F5E1CC4D7' : true, + 'F2F7938B7E294F17565B2833CC2E0A657DA80A237814C24B5C0AAAF35C4608F8' : true, + 'F3160DD030C118B5D5835743E78CCADD0620E5C08460E0CD1F5D9D437352105B' : true, + 'F319741878D155ED3E5DD4955A82B842700A64D86AB782B511F0CB9B25C48AFA' : true, + 'F3A6A1A957C3BC86EFB3772C6153D97C33B908124CA58480AD1F62C54CD89013' : true, + 'F3B356D9CE5B37D2B690C4EBB2E04A643CB542273C1754D2EC9803D831781737' : true, + 'F3D202454336E948C83BCA2342C4D1A0DBB4335E829229BEAE04B4125F0D508E' : true, + 'F3F90821BD1454FC7AC92F768D2C9F75B5CD79FF4DD3251F4B9D647D34024F73' : true, + 'F456775CCC8DEC02CF2F92A48101E18EBCC9C880D41FA87EBE5E2EAA0E24620D' : true, + 'F460158348B017310570CAB302E33DD12FF72526698115EEE8D3DE318383ED9C' : true, + 'F47CA7623AEE6A1849B4F3F90818A93AA937A0EFA65D6674EA769BD7EC113BF8' : true, + 'F48CB2C1C2551290BA59502BBFCEC7BF137B5176967BB92B38E79D4EAA63B7E0' : true, + 'F4AD6AEF9BCAC58CF21EA81D65C3B8C85CBC9BCF6A2807FB0C5CD332C5F9BF49' : true, + 'F4C119D9DB2CD569E75B9B1F0884B990575EFD920E8C62177990AE650B7AA274' : true, + 'F4EDB536BE8520B583202E17C56768579613187741195347DDB9BCE3AE2D5150' : true, + 'F5B52148D7155BEE637459A918CE58D22D4E024FB715325FC1B36DA4C6255357' : true, + 'F5DBA16527D871BEFEEAE706C232AD0B76FA1384EFB86A844C7BA46B96917B9D' : true, + 'F5EB7AFA398131FF3966EE221B9C8F332BEFCB634D42631E349AC0BCF367E920' : true, + 'F5F8E7786E1F61643C7D2805D86031E5C4CC97AE93FC3785FE289FBC44C381E4' : true, + 'F66ABF80914FBDBE53F794409F4E0DC895129066609E8B491506FCE246A2EEB8' : true, + 'F69B01FAC28E6126F1BA71159D0273519683F2317EA764B4C483B32BB97614B0' : true, + 'F6A08E63AF8E62D51930BCE0FA7CF25DD2944512652EFA275E150EDD9C11CF51' : true, + 'F6A7FA219283E5B13E256B4E039E4CCD93CB72B84D84086E398D5534ECA42DFE' : true, + 'F74D9E23F4CB53775CA60178347F2A029F77579000B21AA08EC62A1C2932348A' : true, + 'F754352E819D0C33E6CFC06EECBB4356DB5D8BD1FD2591C7C817CCE662BE2BC4' : true, + 'F77AF5088D4EB425ADC0997C059C641EFB5AE2CAC73669EBAEEA378EDA383186' : true, + 'F7A57247F89F0C50879598293BB33B7AFF5FB74BCE37BF7B53F8955CEFBB9511' : true, + 'F7B593D9277B72E9CF376EAC2BD5535F76CD9FA0FDA3793D7EA6B4D050602E85' : true, + 'F7FC63254BF2472575C6D5DEC8DDF02B24B6F1BDCE03D807B159A69820262D4A' : true, + 'F805AE1FEDB2D94096F0D341B703ECD4975D773A179555DDC83D424F85578571' : true, + 'F823D6220F702D0547375FC4451FE27A91F0CE2AF9DA31552235F96CBBA56326' : true, + 'F82E01B697453BD37AD7012E267DC78395DF3DF4BFB0B1657F58256616F9B355' : true, + 'F8434B1782EC41F184305BD75BB3C0206721BC6CAD62442377072C06101B70DE' : true, + 'F88D1DF97289C9ED7E062D4E4B2B2463F90946DAC91785A6FA02F2599D7FE65C' : true, + 'F8E68F837C3E9452994FD6BF08F02D12D087BF6D44137BA37F72E408620F558B' : true, + 'F9971BA9EA322BB3FCB85111FED48B9CC1C9788D7BC6985E3CCE4BB7801B0DCC' : true, + 'FA14D235A95650A4CFD7A2A4DD80BAF2AF47581E01E412D640F93D6BB79D1C06' : true, + 'FADEBB24D23CEE1E8B02430C31A939E14821E9567A25367303F20F74879AB51C' : true, + 'FB674F1642EE443BBB827B29FD871CC110D77875884B1B050FC804D2884B2B3A' : true, + 'FB6814C66D6DDA2F348BF759398AB81F7795CA223F8AE9C0D82CA295162F68AD' : true, + 'FB7EF701469F77B6412100BB2D6399B1A574BB9610186FFFCC0119E14CB2021F' : true, + 'FBCC79E05CC135E183F4963C2A206F9DFDBC2DD0D379A743D5FB301741796921' : true, + 'FC2DA5A38AD07685CC019C7C388A396159FBAEF9EA491588FC995DBDF52A0B9C' : true, + 'FCF4BA663F0032118EADF9D327B65AB502C7A8B336462A397238884E9A28508E' : true, + 'FD4E54155D3117D78872DA05046A16FE944315F63C20BF0530F986F5F3797ECF' : true, + 'FD87C175594ABB82818D5CFEE506105069ECE5D5A499CFAD2E6376A88BAEB15D' : true, + 'FD8B1849A13BBD87D072F9D09506C90C0F29D7CCBD2B6446AD31335348AF9294' : true, + 'FDEE85771EF592A9E5F47D08250AFCBC73DCE96A72418B2848AE400F3CF59341' : true, + 'FE5DBE234A59B532A12BD552A36DB75AD21EF243C48C61849A0F93AF314C5896' : true, + 'FE739A748FB17DAFB6CBA0DA5B2164B8E0435E8DA7FB85E7970BBE731B428631' : true, + 'FE9E5DFD73260F732A5F7CE93B82DFA71D84F10D772A845221204A9685089FE7' : true, + 'FEB92F19B7394B8BF0FF71AEFD233E262AB656BDD531AD89FBEB9228C5378301' : true, + 'FEE5D5CF3F51FDBCD24D5D4E9BA06AFB96BFB558CB5D4249C70066749EEA8FBA' : true, + 'FEFEF80071B0D8E2B57D6601BB353A435A425EAA701827370C3585CE09F2CE50' : true, + 'FF769AAD90F56FB48D6C6CFCC86E38F9CBC6DB23774342892AFD4680ED3560FB' : true, +} ; diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js new file mode 100644 index 0000000..7e15f1a --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js @@ -0,0 +1,249 @@ +/* + * A JavaScript implementation of the SHA256 hash function. + * + * FILE:sha256.js + * VERSION:0.8 + * AUTHOR:Christoph Bichlmeier <informatik@zombiearena.de> + * + * NOTE: This version is not tested thoroughly! + * + * Copyright (c) 2003, Christoph Bichlmeier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * ====================================================================== + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''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 AUTHORS 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. + */ + +/* SHA256 logical functions */ +function rotateRight(n,x) { + return ((x >>> n) | (x << (32 - n))); +} +function choice(x,y,z) { + return ((x & y) ^ (~x & z)); +} +function majority(x,y,z) { + return ((x & y) ^ (x & z) ^ (y & z)); +} +function sha256_Sigma0(x) { + return (rotateRight(2, x) ^ rotateRight(13, x) ^ rotateRight(22, x)); +} +function sha256_Sigma1(x) { + return (rotateRight(6, x) ^ rotateRight(11, x) ^ rotateRight(25, x)); +} +function sha256_sigma0(x) { + return (rotateRight(7, x) ^ rotateRight(18, x) ^ (x >>> 3)); +} +function sha256_sigma1(x) { + return (rotateRight(17, x) ^ rotateRight(19, x) ^ (x >>> 10)); +} +function sha256_expand(W, j) { + return (W[j&0x0f] += sha256_sigma1(W[(j+14)&0x0f]) + W[(j+9)&0x0f] + + sha256_sigma0(W[(j+1)&0x0f])); +} + +/* Hash constant words K: */ +var K256 = new Array( + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ); + +/* global arrays */ +var ihash, count, buffer; +var sha256_hex_digits = "0123456789abcdef"; + +/* Add 32-bit integers with 16-bit operations (bug in some JS-interpreters: + overflow) */ +function safe_add(x, y) +{ + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* Initialise the SHA256 computation */ +function sha256_init() { + ihash = new Array(8); + count = new Array(2); + buffer = new Array(64); + count[0] = count[1] = 0; + ihash[0] = 0x6a09e667; + ihash[1] = 0xbb67ae85; + ihash[2] = 0x3c6ef372; + ihash[3] = 0xa54ff53a; + ihash[4] = 0x510e527f; + ihash[5] = 0x9b05688c; + ihash[6] = 0x1f83d9ab; + ihash[7] = 0x5be0cd19; +} + +/* Transform a 512-bit message block */ +function sha256_transform() { + var a, b, c, d, e, f, g, h, T1, T2; + var W = new Array(16); + + /* Initialize registers with the previous intermediate value */ + a = ihash[0]; + b = ihash[1]; + c = ihash[2]; + d = ihash[3]; + e = ihash[4]; + f = ihash[5]; + g = ihash[6]; + h = ihash[7]; + + /* make 32-bit words */ + for(var i=0; i<16; i++) + W[i] = ((buffer[(i<<2)+3]) | (buffer[(i<<2)+2] << 8) | (buffer[(i<<2)+1] + << 16) | (buffer[i<<2] << 24)); + + for(var j=0; j<64; j++) { + T1 = h + sha256_Sigma1(e) + choice(e, f, g) + K256[j]; + if(j < 16) T1 += W[j]; + else T1 += sha256_expand(W, j); + T2 = sha256_Sigma0(a) + majority(a, b, c); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } + + /* Compute the current intermediate hash value */ + ihash[0] += a; + ihash[1] += b; + ihash[2] += c; + ihash[3] += d; + ihash[4] += e; + ihash[5] += f; + ihash[6] += g; + ihash[7] += h; +} + +/* Read the next chunk of data and update the SHA256 computation */ +function sha256_update(data, inputLen) { + var i, index, curpos = 0; + /* Compute number of bytes mod 64 */ + index = ((count[0] >> 3) & 0x3f); + var remainder = (inputLen & 0x3f); + + /* Update number of bits */ + if ((count[0] += (inputLen << 3)) < (inputLen << 3)) count[1]++; + count[1] += (inputLen >> 29); + + /* Transform as many times as possible */ + for(i=0; i+63<inputLen; i+=64) { + for(var j=index; j<64; j++) + buffer[j] = data.charCodeAt(curpos++); + sha256_transform(); + index = 0; + } + + /* Buffer remaining input */ + for(var j=0; j<remainder; j++) + buffer[j] = data.charCodeAt(curpos++); +} + +/* Finish the computation by operations such as padding */ +function sha256_final() { + var index = ((count[0] >> 3) & 0x3f); + buffer[index++] = 0x80; + if(index <= 56) { + for(var i=index; i<56; i++) + buffer[i] = 0; + } else { + for(var i=index; i<64; i++) + buffer[i] = 0; + sha256_transform(); + for(var i=0; i<56; i++) + buffer[i] = 0; + } + buffer[56] = (count[1] >>> 24) & 0xff; + buffer[57] = (count[1] >>> 16) & 0xff; + buffer[58] = (count[1] >>> 8) & 0xff; + buffer[59] = count[1] & 0xff; + buffer[60] = (count[0] >>> 24) & 0xff; + buffer[61] = (count[0] >>> 16) & 0xff; + buffer[62] = (count[0] >>> 8) & 0xff; + buffer[63] = count[0] & 0xff; + sha256_transform(); +} + +/* Split the internal hash values into an array of bytes */ +function sha256_encode_bytes() { + var j=0; + var output = new Array(32); + for(var i=0; i<8; i++) { + output[j++] = ((ihash[i] >>> 24) & 0xff); + output[j++] = ((ihash[i] >>> 16) & 0xff); + output[j++] = ((ihash[i] >>> 8) & 0xff); + output[j++] = (ihash[i] & 0xff); + } + return output; +} + +/* Get the internal hash as a hex string */ +function sha256_encode_hex() { + var output = new String(); + for(var i=0; i<8; i++) { + for(var j=28; j>=0; j-=4) + output += sha256_hex_digits.charAt((ihash[i] >>> j) & 0x0f); + } + return output; +} + +/* Main function: returns a hex string representing the SHA256 value of the + given data */ +function sha256_digest(data) { + sha256_init(); + sha256_update(data, data.length); + sha256_final(); + return sha256_encode_hex(); +} + +/* test if the JS-interpreter is working properly */ +function sha256_self_test() +{ + return sha256_digest("message digest") == + "f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650"; +} + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js new file mode 100644 index 0000000..a0220c8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js @@ -0,0 +1,161 @@ +/* vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 foldmethod=marker: */ + +/** + * HTTPS Everywhere Firefox Extension: https://www.eff.org/https-everywhere/ + * + * Licensed under the GPL v3+. + * + * @copyright Copyright (C) 2010-2013 Mike Perry <mikeperry@fscked.org> + * Peter Eckersley <pde@eff.org> + * and many others. + */ + +// Define https everywhere variable object that will act as a namespace, so that +// global namespace pollution is avoided, although technically not required for +// windows created by add-on. +// See: https://developer.mozilla.org/en-US/docs/Security_best_practices_in_extensions#Code_wrapping +if (!httpsEverywhere) { var httpsEverywhere = {}; } + +/** + * JS Object for fetching the XML source of rulesets. + * + * @author Pavel Kazakov <nullishzero@gmail.com> + */ +httpsEverywhere.fetchSource = { + // TODO: look into class constants + CC: Components.classes, + CI: Components.interfaces, + + // Constants for generating URL from which source will be fetched + BASE_SITE: 'https://gitweb.torproject.org/https-everywhere.git/blob_plain/', + DIRECTORY: '/src/chrome/content/rules/', + HEAD_STRING: 'HEAD', + + /** + * Initializes the window to view source. + */ + init: function() { + var fs = httpsEverywhere.fetchSource; + + if("arguments" in window && window.arguments.length > 0) { + var filename = window.arguments[0].xmlName; + var id = window.arguments[0].GITCommitID; //GIT commit ID + var URL = fs.getURL(filename, id); + var source = fs.getSource(URL, filename, false); + } else { + // Should never happen + throw 'Invalid window arguments.'; + } + }, + + /** + * Generates a URL that can be used for viewing the ruleset source. + * + * @param filename name of ruleset to view, such as EFF.xml + * @param GITCommitID revision of ruleset + * + * @return string of URL + */ + getURL: function(filename, GITCommitID) { + var fs = httpsEverywhere.fetchSource; + return fs.BASE_SITE + GITCommitID + ":" + fs.DIRECTORY + filename; + }, + + /** + * Sends HTTP request to view ruleset source and updates the window with the + * ruleset source. + * + * @param URL HTTP request will be sent to this URL + * @param filename used for displaying ruleset source + * @param useHead whether send request to latest revision of ruleset + */ + getSource: function(URL, filename, useHead) { + var fs = httpsEverywhere.fetchSource; + fs.setFilenameText(filename); + fs.setPathText(URL); + + var req = fs.CC["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(fs.CI.nsIXMLHttpRequest); + + // Use HTTP GET + req.open("GET", URL); + + // Clear User-Agent so request is pseudo-anonymous + req.setRequestHeader("User-Agent", ""); + + // handle asynchronous request + req.onreadystatechange = function(params) { + if (req.readyState == 4) { + + // HTTP Request was successful + if (req.status == 200) { + fs.setSourceText(req.responseText); + } else if (!useHead) { + // HTTP request was not successful and the request wasn't sent to + // get the latest revision. Therefore, if we can't fetch current + // revision (this project's revision might newer than lastest, for + // example), try to at least display the latest revision. + var URL = fs.getURL(filename, fs.HEAD_STRING); + fs.getSource(URL, filename, true); + } else { + // at least we tried... + fs.downloadFailed(); + } + } + }; + + req.send(); + }, + + /** + * Handle a download failure of ruleset. + */ + downloadFailed: function() { + document.getElementById("source-text").hidden = true; + document.getElementById("failure-label").hidden = false; + }, + + + /** + * Convenience method for setting ruleset source text. + * + * @param text ruleset source + */ + setSourceText: function(text) { + var textBox = document.getElementById("source-text"); + textBox.value = text; + }, + + /** + * Convenience method for setting filename text. + * + * @param text file name + */ + setFilenameText: function (text) { + var textLabel = document.getElementById("filename-text"); + textLabel.value = text; + }, + + /** + * Convenience method for setting the path (URL) that was used to fetch + * ruleset. + * + * @param text path text + */ + setPathText: function(text) { + var textLabel = document.getElementById("path-text"); + textLabel.value = text; + } +}; + +// TODO: Test resizing on mulitple platforms +// adjust window resizing +window.onresize = function() { + var textBox = document.getElementById("source-text"); + // TODO: Move to constants + textBox.width = window.innerWidth - 100; + textBox.height = window.innerHeight - 150; +}; + +// hook event for init +window.addEventListener("load", httpsEverywhere.fetchSource.init, false); diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul new file mode 100644 index 0000000..caa0048 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.xul @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> + +<dialog id="https-everywhere-fetch-xml" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + title="&https-everywhere.prefs.view_xml_source;" + persist="screenX screenY width height" + style="height:80%; resize:both;" + buttons="accept" + height="600" + width="650"> + + + <script type="application/x-javascript" src="fetch-source.js"/> + <box orient="horizontal"> + <label id="filename-label" value="&https-everywhere.source.filename;:"/> + <label id="filename-text"/> + </box> + <box orient="horizontal"> + <label id="path-label" value="URL:"/> + <label id="path-text"/> + </box> + <separator class="thin"/> + <textbox id="source-text" multiline="true" readonly="true" value="&https-everywhere.source.downloading;..."/> + <label id="failure-label" hidden="true" value="&https-everywhere.source.unable_to_download;"/> +</dialog> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul b/data/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul new file mode 100644 index 0000000..3e48010 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/meta-preferences.xul @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> + +<window id="https-everywhere-meta-prefs" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + title="&https-everywhere.prefs.title;" + persist="screenX screenY width height" + width="600" + height="600"> + <separator class="thin" /> + <tabbox flex="1"> + <tabs> + <tab label="HTTPS Everywhere" /> + <tab label="SSL Observatory" /> + </tabs> + <tabpanels flex="1"> + <tabpanel flex="1" orient="vertical"> + <browser src="chrome://https-everywhere/content/preferences.xul" flex="1"/> + </tabpanel> + <tabpanel flex="1" orient="vertical"> + <browser src="chrome://https-everywhere/content/observatory-preferences.xul" flex="1"/> + </tabpanel> + </tabpanels> + </tabbox> + +</window> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul new file mode 100644 index 0000000..60da68f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-popup.xul @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> +<window id="ssl-observatory-dialog" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + title="&ssl-observatory.popup.title;" + width="500" + height="440" + align="center" + onload="document.getElementById('ask-me-later').focus()" + > + <script type="application/x-javascript" src="observatory-xul.js" /> + <image src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> + <label style="padding:25px;">&ssl-observatory.popup.text;</label> + + <commandgroup> + <command id="enable" oncommand="enable_observatory() ; popup_done()" /> + <command id="nope" oncommand="disable_observatory() ; popup_done()" /> + <command id="later" oncommand="window.close()" /> + <command id="more-info" + oncommand='popup_done() ; + window.open("chrome://https-everywhere/content/observatory-preferences.xul","obsprefs", + "chrome, centerscreen")'/> + </commandgroup> + + <vbox flex="1"> + <spacer flex="5" /> + <separator class="thin"/> + <hbox> + <spacer flex="2" /> + <button label="&ssl-observatory.popup.yes;" tabindex="2" accesskey="y" + command='enable'/> + <spacer flex="1" /> + <button label="&ssl-observatory.popup.no;" tabindex="3" accesskey="n" + command='nope'/> + <spacer flex="2" /> + </hbox> + <separator class="thin"/> + <spacer flex="10" /> + <hbox> + <spacer flex="2" /> + <button label="&ssl-observatory.popup.details;" tabindex="4" accesskey="D" + command='more-info'/> + <spacer flex="1" /> + <button id="ask-me-later" label="&ssl-observatory.popup.later;" + tabindex="1" accesskey="A" command='later'/> + <spacer flex="2" /> + </hbox> + <separator class="thin"/> + <spacer flex="1" /> + </vbox> + + <!-- + <hbox style="padding-top:10px;"> + <label class="text-link" href="https://www.eff.org/" tabindex="3" value="&ssl-observatory.popup.details;" /> + <spacer flex="1" /> + <button label="&ssl-observatory.popup.later;" id="ask-me-later" tabindex="0" style="font-size:0.8em;" accesskey="l" + oncommand="doCancel()"/>- + </hbox>--> +</window> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul new file mode 100644 index 0000000..96102d0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> + +<dialog id="https-everywhere-prefs" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + buttons="accept" + buttonlabelaccept="&ssl-observatory.prefs.done;" + title="&ssl-observatory.prefs.title;" + width="800" + height="768" + persist="screenX screenY width height" + onload="observatory_prefs_init(document)" + ondialogaccept="observatory_prefs_accept()"> + <script type="application/x-javascript" src="observatory-xul.js" /> + <vbox flex="1" style="overflow:auto"> + <spacer flex="1" /> + <hbox flex="1"> + <spacer flex="1" /> + <image id="obs-title-logo" + src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> + <spacer flex="1" /> + </hbox> + <spacer flex="2" /> + <label>&ssl-observatory.prefs.explanation;</label> + <separator class="thin" /> + <label>&ssl-observatory.prefs.explanation2;</label> + <separator class="thin" /> + <commandset> + <command id="toggle-enabled" oncommand="toggle_enabled()" /> + <command id="use-obs-anon" oncommand="set_obs_anon(true)" /> + <command id="use-obs-nonanon" oncommand="set_obs_anon(false)" /> + <command id="toggle-alt-roots" oncommand="toggle_alt_roots()" /> + <command id="toggle-send-asn" oncommand="toggle_send_asn()" /> + <command id="toggle-priv-dns" oncommand="toggle_priv_dns()" /> + <command id="toggle-self-signed" oncommand="toggle_self_signed()" /> + </commandset> + <checkbox label="&ssl-observatory.prefs.use;" id="use-observatory" + command="toggle-enabled" style="font-size:1.5em;"/> + <separator class="thin"/> + <radiogroup style="margin-left:3em;" id="ssl-obs-how"> + <radio label="&ssl-observatory.prefs.anonymous;" + tooltiptext="&ssl-observatory.prefs.anonymous_tooltip;" + alt_label="&ssl-observatory.prefs.anonymous_unavailable;" + command="use-obs-anon" + class="ssl-obs-conf" id="ssl-obs-anon"/> + <radio label="&ssl-observatory.prefs.nonanon;" + tooltiptext="&ssl-observatory.prefs.nonanon_tooltip;" + command="use-obs-nonanon" + class="ssl-obs-conf" id="ssl-obs-nonanon"/> + </radiogroup> + <separator class="thin"/> + <tooltip id="asn-tip" noautohide="true"> + <label>&ssl-observatory.prefs.asn_tooltip;</label> + </tooltip> + <checkbox label="&ssl-observatory.prefs.asn;" id="send-asn" + tooltip="asn-tip" class="ssl-obs-conf" + command="toggle-send-asn"/> + <spacer flex="2" /> + <hbox> + <spacer flex="1" /> + <button label="&ssl-observatory.prefs.show;" onclick="show_advanced()" + id="show-advanced-button" class="ssl-obs-conf"/> + <button label="&ssl-observatory.prefs.hide;" onclick="hide_advanced()" + id="hide-advanced-button" hidden="true" /> + <spacer flex="1" /> + </hbox> + <spacer flex="1" /> + <vbox flex="2"> + <tooltip id="alt-roots-tip" noautohide="true"> + <label>&ssl-observatory.prefs.alt_roots_tooltip;</label> + </tooltip> + <tooltip id="priv-dns-tip" noautohide="true"> + <label>&ssl-observatory.prefs.priv_dns_tooltip;</label> + </tooltip> + <tooltip id="self-signed-tip" noautohide="true"> + <label>&ssl-observatory.prefs.self_signed_tooltip;</label> + </tooltip> + <vbox id="observatory-advanced-opts" hidden="true"> + + <groupbox hidden="true" tooltip="self-signed-tip"> + <checkbox label="&ssl-observatory.prefs.self_signed;" + class="ssl-obs-conf" id="self-signed" + command="toggle-self-signed"/> + </groupbox> + + <groupbox hidden="true" tooltip="alt-roots-tip" > + <caption hidden="true" label="&ssl-observatory.prefs.adv_priv_opts1;"/> + <checkbox label="&ssl-observatory.prefs.alt_roots;" + command="toggle-alt-roots" class="ssl-obs-conf" + id="alt-roots" /> + </groupbox> + <groupbox hidden="true" tooltip="priv-dns-tip"> + <caption hidden="true" label="&ssl-observatory.prefs.adv_priv_opts2;"/> + <checkbox label="&ssl-observatory.prefs.priv_dns;" + class="ssl-obs-conf" id="priv-dns" + command="toggle-priv-dns"/> + </groupbox> + </vbox> + </vbox> + <spacer flex="5" /> + </vbox> +</dialog> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul new file mode 100644 index 0000000..1f64e12 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-warning.xul @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/ssl-observatory.dtd"> +<window id="ssl-observatory-dialog" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + title="&ssl-observatory.warning.title;" + width="600" + height="500" + align="center" + onload="warning_populate(window.arguments[0])" + > + <script type="application/x-javascript" src="observatory-xul.js" /> + <image src="chrome://https-everywhere/skin/ssl-observatory-messy.jpg" /> + <vbox flex="1"> + <vbox id="warning-container" flex="1"> + <label style="padding:25px 25px 10px;">&ssl-observatory.warning.text;</label> + <spacer flex="1" /> + </vbox> + + <commandgroup> + <command id="showcert" oncommand="show_certs()" /> + <command id="okay" oncommand='window.close()' + /> + </commandgroup> + + <spacer flex="1" /> + <label style="padding:5px 25px 0px;">&ssl-observatory.warning.defense;</label> + <separator class="thin"/> + <hbox> + <spacer flex="2" /> + <button label="&ssl-observatory.warning.showcert;" accesskey="S" + id="show-certificate" command='showcert'/> + <spacer flex="1" /> + <button label="&ssl-observatory.warning.okay;" accesskey="I" + command='okay'/> + <spacer flex="2" /> + </hbox> + <separator class="thin" /> + </vbox> + + <!-- + <hbox style="padding-top:10px;"> + <label class="text-link" href="https://www.eff.org/" tabindex="3" value="&ssl-observatory.popup.details;" /> + <spacer flex="1" /> + <button label="&ssl-observatory.popup.later;" id="ask-me-later" tabindex="0" style="font-size:0.8em;" accesskey="l" + oncommand="doCancel()"/>- + </hbox>--> +</window> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js new file mode 100644 index 0000000..df5e623 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js @@ -0,0 +1,194 @@ +const CC = Components.classes; +const CI = Components.interfaces; +VERB=1; +DBUG=2; +INFO=3; +NOTE=4; +WARN=5; + +var ssl_observatory = CC["@eff.org/ssl-observatory;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; +var obsprefs = ssl_observatory.prefs; + +const pref_prefix = "extensions.ssl_observatory."; + +function observatory_prefs_init(doc) { + // Is the Observatory on? + var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled"); + document.getElementById("use-observatory").checked = enabled; + set_observatory_configurability(enabled); + // Other settings + document.getElementById("alt-roots").checked = + obsprefs.getBoolPref("extensions.https_everywhere._observatory.alt_roots"); + document.getElementById("priv-dns").checked = + obsprefs.getBoolPref("extensions.https_everywhere._observatory.priv_dns"); + document.getElementById("self-signed").checked = + obsprefs.getBoolPref("extensions.https_everywhere._observatory.self_signed"); + document.getElementById("send-asn").checked = + obsprefs.getBoolPref("extensions.https_everywhere._observatory.send_asn"); + + // More complicated: is it anonymised by Tor? + var obs_how = doc.getElementById("ssl-obs-how"); + var anon_radio = document.getElementById("ssl-obs-anon"); + var nonanon_radio = document.getElementById("ssl-obs-nonanon"); + var anon = !obsprefs.getBoolPref( + "extensions.https_everywhere._observatory.use_custom_proxy"); + + // first set the radios to match the current settings variables + obs_how.selectedItem = (anon) ? anon_radio : nonanon_radio; + + // But if the user hasn't turned the observatory on, + // the default should be the maximally sensible one + var torbutton_avail = ssl_observatory.proxy_test_successful; + if (!enabled) { + set_obs_anon(torbutton_avail); + obs_how.selectedItem = (torbutton_avail) ? anon_radio : nonanon_radio; + } + //scale_title_logo(); +} + +// The user has responded to the popup in a final way; don't show it to them +// again +function popup_done() { + obsprefs.setBoolPref("extensions.https_everywhere._observatory.popup_shown", true); + obsprefs.setBoolPref("extensions.https_everywhere._observatory.clean_config", true); + window.close(); +} + + +function scale_title_logo() { + // The image is naturally 500x207, but if it's shrunk we don't want it + // distorted + var img = document.getElementById("obs-title-logo"); + alert("ch is " + img.height); + if (img.height != "207") + img.width = (500.0/207.0) * img.height; +} + +// grey/ungrey UI elements that control observatory operation +function set_observatory_configurability(enabled) { + // the relevant widgets are tagged with class="ssl-obs-conf" + var ui_elements = document.querySelectorAll(".ssl-obs-conf"); + for (var i =0; i < ui_elements.length; i++) + ui_elements[i].disabled = !enabled; + // the "use tor" option can't be ungreyed unless tor is available + if (ssl_observatory.proxy_test_successful == false) { + var tor_opt = document.getElementById("ssl-obs-anon") + tor_opt.disabled = true; + tor_opt.label = tor_opt.getAttribute("alt_label"); + } + if (!enabled) + hide_advanced(); +} + +// show/hide advanced options in the preferences dialog +function show_advanced() { + var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled"); + if (enabled) { + var adv_opts_box = document.getElementById("observatory-advanced-opts"); + recursive_set(adv_opts_box, "hidden", "false"); + document.getElementById("show-advanced-button").hidden = true; + document.getElementById("hide-advanced-button").hidden = false; + } + //scale_title_logo(); +} +function hide_advanced() { + var adv_opts_box = document.getElementById("observatory-advanced-opts"); + recursive_set(adv_opts_box, "hidden", "true"); + document.getElementById("show-advanced-button").hidden = false; + document.getElementById("hide-advanced-button").hidden = true; +} + +function recursive_set(node, attrib, value) { + node.setAttribute(attrib, value); + for (var i=0; i < node.childNodes.length; i++) + recursive_set(node.childNodes[i], attrib, value) +} + + +function set_obs_anon(val) { + obsprefs.setBoolPref( "extensions.https_everywhere._observatory.use_custom_proxy", !val); +} + +// called from the popup only +function enable_observatory() { + obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", true); + var torbutton_avail = ssl_observatory.proxy_test_successful; + set_obs_anon(torbutton_avail); +} + +function disable_observatory() { + // default but be sure... + obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", false); +} + +// called from within the prefs window, we have more work to do: +function toggle_enabled() { + var use_obs = document.getElementById("use-observatory").checked; + obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", use_obs); + set_observatory_configurability(use_obs); +} + +function toggle_send_asn() { + var send_asn = document.getElementById("send-asn").checked; + obsprefs.setBoolPref("extensions.https_everywhere._observatory.send_asn", send_asn); + if (send_asn) ssl_observatory.setupASNWatcher() + else ssl_observatory.stopASNWatcher(); +} + +function toggle_alt_roots() { + var alt_roots = document.getElementById("alt-roots").checked; + obsprefs.setBoolPref("extensions.https_everywhere._observatory.alt_roots", alt_roots); +} + +function toggle_priv_dns() { + var priv_dns = document.getElementById("priv-dns").checked; + obsprefs.setBoolPref("extensions.https_everywhere._observatory.priv_dns", priv_dns); +} + +function toggle_self_signed() { + var self_signed = document.getElementById("self-signed").checked; + obsprefs.setBoolPref("extensions.https_everywhere._observatory.self_signed", self_signed); +} + +function observatory_prefs_accept() { + // This is *horrid*, but + // https://developer.mozilla.org/en/working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window + var outer = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow); + + if (outer) outer.close() + else alert("no outer space"); + + return true; // https://developer.mozilla.org/en/XUL/dialog#a-ondialogaccept + // also close things if there is no out meta prefs window +} + +function warning_populate(warningObj) { + // Fill in the SSL Observatory Warning labels... + var container = document.getElementById("warning-container"); + for (var hash in warningObj) { + var label=document.createElement("label"); + label.setAttribute("style","padding:5px 25px 5px;"); + label.textContent = warningObj[hash].long_desc; + container.appendChild(label); + //var spacer=document.createElement("spacer"); + //separator.setAttribute("flex","1"); + //container.appendChild(spacer); + } +} + +function show_certs() { + var parent_win = window.arguments[1]; + var cert = window.arguments[2]; + if (!parent_win) + alert("no parent window trying to show certs"); + CC["@mozilla.org/nsCertificateDialogs;1"] + .getService(CI.nsICertificateDialogs) + .viewCert(parent_win, cert); +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.css b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.css new file mode 100644 index 0000000..6b35c00 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.css @@ -0,0 +1,11 @@ +treechildren::-moz-tree-checkbox { /* css for unchecked cells */ + list-style-image: url("chrome://https-everywhere/skin/cross.png"); +} + +treechildren::-moz-tree-checkbox(checked) { /* css for checked cells */ + list-style-image: url("chrome://https-everywhere/skin/tick.png"); +} + +treechildren::-moz-tree-checkbox(undefined) { /* css for empty cells */ + list-style-image: url(""); +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js new file mode 100644 index 0000000..557b335 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js @@ -0,0 +1,269 @@ +const CC = Components.classes; +const CI = Components.interfaces; +VERB=1; +DBUG=2; +INFO=3; +NOTE=4; +WARN=5; + +https_everywhere = CC["@eff.org/https-everywhere;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; + +rulesets = []; + +const id_prefix = "he_enable"; +const pref_prefix = "extensions.https_everywhere."; +const GITID = https_everywhere.https_rules.GITCommitID; + +// Disable all rules. +function disable_all() { + for (var i in rulesets) { + rulesets[i].disable(); + } + + treeView.treebox.invalidate(); +} + +// Reset all rules to their default state. +function reset_defaults() { + https_everywhere.https_rules.resetRulesetsToDefaults() + treeView.treebox.invalidate(); +} + +function resetSelected() { + var start = {}; + var end = {}; + var st = document.getElementById('sites_tree'); + var sel = st.view.selection; + var numRanges = sel.getRangeCount(); + + for (var t = 0; t < numRanges; t++){ + sel.getRangeAt(t, start, end); + for (var v = start.value; v <= end.value; v++){ + var rs = treeView.rules[v]; + rs.clear(); + } + } +} + +function resetSelectedMenu() { + var start = {}; + var end = {}; + var st = document.getElementById('sites_tree'); + var sel = st.view.selection; + var numRanges = sel.getRangeCount(); + var menuitem = document.getElementById("revert_menuitem"); + + for (var t = 0; t < numRanges; t++){ + sel.getRangeAt(t, start, end); + for (var v = start.value; v <= end.value; v++){ + var rs = treeView.rules[v]; + if (rs.active !== rs.on_by_default) { + menuitem.disabled = false; + return; + } + } + } + menuitem.disabled = true; +} + +function toggleSelected() { + var start = {}; + var end = {}; + var st = document.getElementById('sites_tree'); + var sel = st.view.selection; + var numRanges = sel.getRangeCount(); + var menuitem = document.getElementById("revert_menuitem"); + + for (var t = 0; t < numRanges; t++){ + sel.getRangeAt(t, start, end); + for (var v = start.value; v <= end.value; v++){ + var rs = treeView.rules[v]; + rs.toggle(); + treeView.treebox.invalidateRow(v); + } + } +} + + +function viewXMLSource() { + var start = {}; + var end = {}; + var st = document.getElementById('sites_tree'); + var sel = st.view.selection; + var numRanges = sel.getRangeCount(); + var menuitem = document.getElementById("revert_menuitem"); + + for (var t = 0; t < numRanges; t++){ + sel.getRangeAt(t, start, end); + for (var v = start.value; v <= end.value; v++){ + var rs = treeView.rules[v]; + + //This *should* not violate TorButton's State Control, but someone should double check + //this code just in case + var aWin = CC['@mozilla.org/appshell/window-mediator;1'] + .getService(CI.nsIWindowMediator) + .getMostRecentWindow('navigator:browser'); + aWin.openDialog("chrome://https-everywhere/content/fetch-source.xul", + rs.xmlName, "chrome,centerscreen", + {xmlName: rs.xmlName, GITCommitID: GITID} ); + } + } +} + +function getValue(row, col) { + switch (col.id) { + case "site_col": + return row.name; + case "note_col": + return row.notes; + case "enabled_col": + return https_everywhere.https_rules.rulesetsByName[row.name].active; + /*var ruleActive = false; + try { + if(https_everywhere.rule_toggle_prefs.getBoolPref(row.name)) + ruleActive = true; + } catch(e) { + ruleActive = https_everywhere.https_rules.rulesetsByName[row.name].active; + } + return ruleActive;*/ + default: + return; + } +} + +function compareRules(a, b, col) { + var aval = getValue(a, col).toLowerCase(); + var bval = getValue(b, col).toLowerCase(); + var ret = 0; + if (aval < bval) { + ret = -1; + } else if (aval > bval) { + ret = 1; + } else { + ret = 0; + } + return ret; +} + +function https_prefs_init(doc) { + var st = document.getElementById('sites_tree'); + https_everywhere.https_rules.loadAllRulesets(); + rulesets = Array.slice(https_everywhere.https_rules.rulesets); + + // GLOBAL VARIABLE! + treeView = { + rules: rulesets, + rowCount: rulesets.length, + getCellValue: function(row, col) { // site names + if (!this.rules[row]) return; + return getValue(this.rules[row], col); + }, + getCellText: function(row, col) { // activation indicator + return this.getCellValue(row, col); + }, + setCellValue: function(row, col, val) { // toggle a rule's activation + var rule = this.rules[row]; + + if (val == "true") { + rule.enable(); + } else { + rule.disable(); + } + + this.treebox.invalidateRow(row); + }, + isEditable: function(row, col) { + return (col.id == "enabled_col"); + }, + setTree: function(treebox) { + this.treebox = treebox; + }, + isContainer: function(row) { return false; }, + isSeparator: function(row) { return false; }, + isSorted: function() { return false; }, + getRowProperties: function(row, props) {}, + getColumnProperties: function(colid, col, props) {}, + getCellProperties: function(row, col, props) { + if ( (col.id == "enabled_col") && !(this.rules[row]) ) { + var atomS = CC["@mozilla.org/atom-service;1"]; + atomS = atomS.getService(CI.nsIAtomService); + // Starting with 22.0a1 there is no |props| available anymore. See: + // https://bugzilla.mozilla.org/show_bug.cgi?id=407956. Looking at the + // patch the following seems to work, though. + if (!props) { + return "undefined"; + } + props.AppendElement( atomS.getAtom("undefined") ); + } + }, + getLevel: function(row) { return 0; }, + getImageSrc: function(row, col) { return null; }, + search: function(query) { + var new_rules = []; + query = query.value.toLowerCase().replace(/^\s+|\s+$/g, ""); + + for (var i in rulesets) { + var rule_name = rulesets[i].name.toLowerCase(); + if ( rule_name.indexOf(query) != -1 ) { + new_rules.push(rulesets[i]); + } + } + + this.rules = new_rules; + this.rowCount = new_rules.length; + this.treebox.invalidate(); + this.treebox.scrollToRow(rulesets[0]); + }, + cycleHeader: function (col) { + var columnName; + var order = (col.element.getAttribute("sortDirection") === "ascending" ? -1 : 1); + + var compare = function (a, b) { + return compareRules(a, b, col) * order; + }; + rulesets.sort(compare); + this.rules.sort(compare); + + var cols = st.getElementsByTagName("treecol"); + for (var i = 0; i < cols.length; i++) { + cols[i].removeAttribute("sortDirection"); + } + col.element.setAttribute("sortDirection", order === 1 ? "ascending" : "descending"); + this.treebox.invalidate(); + } + }; + + st.view = treeView; +} + +function window_opener(uri) { + // we don't use window.open, because we need to work around TorButton's state control + if(typeof gBrowser == "undefined"){ + var window = CC["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator); + var browserWindow = window.getMostRecentWindow("navigator:browser").getBrowser(); + var newTab = browserWindow.addTab(uri, null, null); + browserWindow.selectedTab = newTab; + + } + else + gBrowser.selectedTab = gBrowser.addTab(uri); +} + +function https_prefs_accept() { + // This is *horrid*, but + // https://developer.mozilla.org/en/working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window + var outer = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow); + + if (outer) outer.close(); + else alert("no outer space"); + + return true; // https://developer.mozilla.org/en/XUL/dialog#a-ondialogaccept + // also close things if there is no out meta prefs window +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul new file mode 100644 index 0000000..ebde85b --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<?xml-stylesheet href="chrome://https-everywhere/content/preferences.css" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> + +<dialog id="https-everywhere-prefs" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + buttons="accept,extra1,extra2" + buttonlabelextra1="&https-everywhere.prefs.disable_all;" + ondialogextra1="disable_all();" + buttonlabelextra2="&https-everywhere.prefs.reset_defaults;" + ondialogextra2="reset_defaults();" + title="&https-everywhere.prefs.title;" + persist="screenX screenY width height" + style="height:80%; resize:both;" + height="600" + width="650" + onload="https_prefs_init(document)" + ondialogaccept="https_prefs_accept()"> + + <script type="application/x-javascript" src="preferences.js"/> + + <popupset> + <menupopup id="tree-contextmenu" onpopupshowing="resetSelectedMenu()"> + <menuitem label="&https-everywhere.prefs.reset_default;" oncommand="resetSelected();" id="revert_menuitem"/> + <menuitem label="&https-everywhere.prefs.toggle;" oncommand="toggleSelected();"/> + <menuitem label="&https-everywhere.prefs.view_xml_source;" oncommand="viewXMLSource();"/> + </menupopup> + </popupset> + + <groupbox flex="1"> + <caption label="&https-everywhere.prefs.list_caption;" + align="center"/> + <vbox> + &https-everywhere.prefs.search;: <textbox id="tree_search" oninput="treeView.search(this);" /> + </vbox> + <tree id="sites_tree" editable="true" flex="1" context="tree-contextmenu"> + <treecols> + <treecol id="enabled_col" type="checkbox" label="&https-everywhere.prefs.enabled;" + editable="true" class="sortDirectionIndicator" persist="sortDirection width"/> + <splitter class="tree-splitter"/> + <treecol id="site_col" label="&https-everywhere.prefs.site;" flex="1" editable="false" class="sortDirectionIndicator" persist="sortDirection width"/> + <splitter class="tree-splitter"/> + <treecol id="note_col" label="&https-everywhere.prefs.notes;" flex="1" editable="false" class="sortDirectionIndicator" persist="sortDirection width"/> + </treecols> + <treechildren/> + </tree> + </groupbox> + <separator class="thin"/> + <vbox> + &https-everywhere.prefs.ruleset_howto; + <separator class="thin"/> + <label id="ruleset link" + value="&https-everywhere.prefs.here_link;" + style="color: blue; cursor:hand; text-decoration:underline;" + onmouseover="event.target.style.cursor='pointer'" + onmouseout="event.target.style.cursor='default'" + onclick="window_opener('https://eff.org/https-everywhere/rulesets')"/>. + </vbox> +</dialog> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README b/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README new file mode 100644 index 0000000..fcd8a77 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README @@ -0,0 +1,17 @@ +<!-- +This directory contains web site rewriting rules for the +HTTPS Everywhere software, available from +https://www.eff.org/https-everywhere + +These rules were contributed to the project by users and aim to +enable routine secure access to as many different web sites as +possible. They are automatically installed together with the +HTTPS Everywhere software. The presence of these rules does not +mean that an HTTPS Everywhere user accessed, or intended to +access, any particular web site. + +For information about how to create additional HTTPS Everywhere +rewriting rules to add support for new sites, please see + +https://www.eff.org/https-everywhere/rulesets +--> diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css new file mode 100644 index 0000000..30dad18 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.css @@ -0,0 +1,14 @@ +#ruleset-tests-status { + padding: 20px; +} +#wrapper { + text-align: center; +} +#progess-bar { + width: 300px; + height: 20px; +} +#log { + width: 400px; + height: 300px; +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js new file mode 100644 index 0000000..0bee33e --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.js @@ -0,0 +1,31 @@ +var HTTPSEverywhere = null; + +function updateStatusBar(current_test, total_tests) { + var labelText = "Test "+current_test+" of "+total_tests; + document.getElementById("progress-bar-label").value = labelText; + + var percent = current_test / total_tests; + document.getElementById("progress-bar").value = percent; +} + +function updateLog(msg) { + document.getElementById("log").value += msg+'\n'; +} + +function cancel() { + updateLog("Canceling early ..."); + HTTPSEverywhere.httpseRulesetTests.cancel = true; +} + +function start() { + HTTPSEverywhere = Components.classes["@eff.org/https-everywhere;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; + + HTTPSEverywhere.httpseRulesetTests.updateStatusBar = updateStatusBar; + HTTPSEverywhere.httpseRulesetTests.updateLog = updateLog; + HTTPSEverywhere.httpseRulesetTests.cancel = false; + + updateLog("Starting ruleset tests ..."); + HTTPSEverywhere.httpseRulesetTests.testRunner(); +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul new file mode 100644 index 0000000..0efcd5d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests-status.xul @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<?xml-stylesheet href="ruleset-tests-status.css" type="text/css"?> +<!DOCTYPE window SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> +<window id="ruleset-tests-status" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + title="&https-everywhere.ruleset-tests.status_title;" + > + + <script type="application/x-javascript" src="ruleset-tests-status.js" /> + + <commandgroup> + <command id="cancel" oncommand="cancel();" /> + <command id="start" oncommand="start();" /> + </commandgroup> + + <html:div id="wrapper"> + <vbox flex="1" style="width:100%"> + <label id="progress-bar-label" value="Click Start to start the tests"></label> + + <spacer flex="1"/> + + <progressmeter id="progress-bar" mode="determined" value="0" /> + + <spacer flex="1"/> + + <textbox id="log" multiline="true" readonly="true" value="" /> + + <spacer flex="1"/> + + <button + id="cancel-button" + label="&https-everywhere.ruleset-tests.status_cancel_button;" + command="cancel" /> + + <button + id="start-button" + label="&https-everywhere.ruleset-tests.status_start_button;" + command="start" /> + </vbox> + </html:div> +</window> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js new file mode 100644 index 0000000..1aa94d8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js @@ -0,0 +1,155 @@ +// load the HTTPS Everywhere component +var HTTPSEverywhere = null; +try { + HTTPSEverywhere = Components.classes["@eff.org/https-everywhere;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; +} catch(e) { + // HTTPS Everywhere doesn't seem to be installed +} + +// attach testRunner to the HTTPS Everywhere component so that status.js can run it +if(HTTPSEverywhere) { + HTTPSEverywhere.httpseRulesetTests = { + testRunner: testRunner + }; +} + + +function openStatus() { + // make sure mixed content blocking preferences are correct + Services.prefs.setBoolPref("security.mixed_content.block_display_content", false); + Services.prefs.setBoolPref("security.mixed_content.block_active_content", true); + + // open the status tab + var statusTab = gBrowser.addTab('chrome://https-everywhere/content/ruleset-tests-status.xul'); + gBrowser.selectedTab = statusTab; +} + +function testRunner() { + Components.utils.import("resource://gre/modules/PopupNotifications.jsm"); + + const numTabs = 6; + var finished = false; + var output = []; + var urls = []; + var num = 0; + + for(var target in HTTPSEverywhere.https_rules.targets) { + if(!target.indexOf("*") != -1) { + urls.push({ + url: 'https://'+target, + target: target, + ruleset_names: HTTPSEverywhere.https_rules.targets[target] + }); + } + } + + function test() { + var i; + + HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); + + // start loading all the tabs + window.focus + for(i=0; i<numTabs; i++) { + newTab(num); + } + } + + function newTab(number) { + num +=1; + // start a test in this tab + if(urls.length) { + + // open a new tab + var tab = gBrowser.addTab(urls[number].url); + + // wait for the page to load + var intervalId = window.setTimeout(function(){ + + // detect mixed content blocker + if(PopupNotifications.getNotification("mixed-content-blocked", gBrowser.getBrowserForTab(tab))) { + // build output to log + ruleset_xmls = ''; + for(let i=0; i<urls[number].ruleset_names.length; i++) { + ruleset_xmls += urls[number].ruleset_names[i].xmlName + ', '; + } + if(ruleset_xmls != '') + ruleset_xmls = ruleset_xmls.substring(ruleset_xmls.length-2, 2); + var output = 'MCB triggered: '+urls[number].url+' ('+ruleset_xmls+')'; + + HTTPSEverywhere.httpseRulesetTests.updateLog(output); + } + + // close this tab, and open another + closeTab(tab); + + }, 10000); + + } else { + + //to run if urls is empty + if (!finished) { + finished = true; + window.setTimeout(function(){ + gBrowser.removeCurrentTab(); + }, 10000); + } + } + } + + //closes tab + function closeTab(tab) { + HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); + + gBrowser.selectedTab = tab; + gBrowser.removeCurrentTab(); + + // open a new tab, if the tests haven't been canceled + if(!HTTPSEverywhere.httpseRulesetTests.cancel) { + newTab(num); + } + } + + //manages write out of output mochilog.txt, which contains sites that trigger mcb + function writeout(weburl) { + + //initialize file + var file = Components.classes["@mozilla.org/file/directory_service;1"]. + getService(Components.interfaces.nsIProperties). + get("Home", Components.interfaces.nsIFile); + writeoutfile = "mochilog.txt"; + file.append(writeoutfile); + + //create file if it does not already exist + if(!file.exists()) { + file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420); + } + + //initialize output stream + var stream = Components.classes["@mozilla.org/network/file-output-stream;1"] + .createInstance(Components.interfaces.nsIFileOutputStream); + + //permissions are set to append (will not delete existing contents) + stream.init(file, 0x02 | 0x08 | 0x10, 0666, 0); + + var content = weburl + "\n"; + + //Deal with ascii text and write out + var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. + createInstance(Components.interfaces.nsIConverterOutputStream); + converter.init(stream, "UTF-8", 0, 0); + converter.writeString(content); + converter.close(); + + //alternative write out if ascii is not a concern + //stream.write(content,content.length); + //stream.close(); + + } + test(); +} + + + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js new file mode 100644 index 0000000..0e90a12 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js @@ -0,0 +1,369 @@ +window.addEventListener("load", https_everywhere_load, true); +window.addEventListener("load", function load(event) { + // need to wrap migratePreferences in another callback so that notification + // always displays on browser restart + window.removeEventListener("load", load, false); + gBrowser.addEventListener("DOMContentLoaded", migratePreferences, true); +}, false); + +const CI = Components.interfaces; +const CC = Components.classes; + +// LOG LEVELS --- +VERB=1; +DBUG=2; +INFO=3; +NOTE=4; +WARN=5; + +HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; + +// avoid polluting global namespace +// see: https://developer.mozilla.org/en-US/docs/Security_best_practices_in_extensions#Code_wrapping +if (!httpsEverywhere) { var httpsEverywhere = {}; } + +/** + * JS Object that acts as a namespace for the toolbar. + * + * Used to display toolbar hints to new users and change toolbar UI for cases + * such as when the toolbar is disabled. + */ +httpsEverywhere.toolbarButton = { + + /** + * Name of preference for determining whether to show ruleset counter. + */ + COUNTER_PREF: "extensions.https_everywhere.show_counter", + + /** + * Used to determine if a hint has been previously shown. + * TODO: Probably extraneous, look into removing + */ + hintShown: false, + + /** + * Initialize the toolbar button used to hint new users and update UI on + * certain events. + */ + init: function() { + HTTPSEverywhere.log(DBUG, 'Removing listener for toolbarButton init.'); + window.removeEventListener('load', httpsEverywhere.toolbarButton.init, false); + + var tb = httpsEverywhere.toolbarButton; + + // make sure icon is proper color during init + tb.changeIcon(); + + // make sure the checkbox for showing counter is properly set + var showCounter = tb.shouldShowCounter(); + var counterItem = document.getElementById('https-everywhere-counter-item'); + counterItem.setAttribute('checked', showCounter ? 'true' : 'false'); + + // show ruleset counter when a tab is changed + tb.updateRulesetsApplied(); + gBrowser.tabContainer.addEventListener( + 'TabSelect', + tb.updateRulesetsApplied, + false + ); + + // hook event for when page loads + var onPageLoad = function() { + // Timeout is used for a number of reasons. + // 1) For Performance since we want to defer computation. + // 2) Sometimes the page is loaded before all applied rulesets are + // calculated; in such a case, a half-second wait works. + setTimeout(tb.updateRulesetsApplied, 500); + }; + + var appcontent = document.getElementById('appcontent'); + if (appcontent) { + appcontent.addEventListener('load', onPageLoad, true); + } + + // decide whether to show toolbar hint + let hintPref = "extensions.https_everywhere.toolbar_hint_shown"; + if (!Services.prefs.getPrefType(hintPref) + || !Services.prefs.getBoolPref(hintPref)) { + // only run once + Services.prefs.setBoolPref(hintPref, true); + gBrowser.addEventListener("DOMContentLoaded", tb.handleShowHint, true); + } + }, + + /** + * Shows toolbar hint if previously not shown. + */ + handleShowHint: function() { + var tb = httpsEverywhere.toolbarButton; + if (!tb.hintShown){ + tb.hintShown = true; + const faqURL = "https://www.eff.org/https-everywhere/faq"; + var nBox = gBrowser.getNotificationBox(); + var strings = document.getElementById('HttpsEverywhereStrings'); + var msg = strings.getString('https-everywhere.toolbar.hint'); + var hint = nBox.appendNotification( + msg, + 'https-everywhere', + 'chrome://https-everywhere/skin/https-everywhere-24.png', + nBox.PRIORITY_WARNING_MEDIUM, + [], + function(action) { + // see https://developer.mozilla.org/en-US/docs/XUL/Method/appendNotification#Notification_box_events + gBrowser.selectedTab = gBrowser.addTab(faqURL); + } + ); + } + gBrowser.removeEventListener("DOMContentLoaded", tb.handleShowHint, true); + }, + + /** + * Changes HTTPS Everywhere toolbar icon based on whether HTTPS Everywhere + * is enabled or disabled. + */ + changeIcon: function() { + var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); + + var toolbarbutton = document.getElementById('https-everywhere-button'); + if (enabled) { + toolbarbutton.setAttribute('status', 'enabled'); + } else { + toolbarbutton.setAttribute('status', 'disabled'); + } + }, + + /** + * Update the rulesets applied counter for the current tab. + */ + updateRulesetsApplied: function() { + var toolbarbutton = document.getElementById('https-everywhere-button'); + var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); + var showCounter = httpsEverywhere.toolbarButton.shouldShowCounter(); + if (!enabled || !showCounter) { + toolbarbutton.setAttribute('rulesetsApplied', 0); + return; + } + + var domWin = content.document.defaultView.top; + var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); + if (!alist) { + return; + } + // Make sure the list is up to date + alist.populate_list(); + + var counter = 0; + for (var x in alist.active) { + if (!(x in alist.breaking)) { + ++counter; + } + } + for (var x in alist.moot) { + if (!(x in alist.active)) { + ++counter; + } + } + + toolbarbutton.setAttribute('rulesetsApplied', counter); + HTTPSEverywhere.log(INFO, 'Setting icon counter to: ' + counter); + }, + + /** + * Gets whether to show the rulesets applied counter. + * + * @return {boolean} + */ + shouldShowCounter: function() { + var tb = httpsEverywhere.toolbarButton; + var sp = Services.prefs; + + var prefExists = sp.getPrefType(tb.COUNTER_PREF); + + // the default behavior is to show the rulesets applied counter. + // if no preference exists (default) or its enabled, show the counter + return !prefExists || sp.getBoolPref(tb.COUNTER_PREF); + }, + + /** + * Toggles the user's preference for displaying the rulesets applied counter + * and updates the UI. + */ + toggleShowCounter: function() { + var tb = httpsEverywhere.toolbarButton; + var sp = Services.prefs; + + var showCounter = tb.shouldShowCounter(); + sp.setBoolPref(tb.COUNTER_PREF, !showCounter); + + tb.updateRulesetsApplied(); + } + +}; + +function https_everywhere_load() { + window.removeEventListener('load', https_everywhere_load, true); + // on first run, put the context menu in the addons bar + try { + var first_run; + try { + first_run = Services.prefs.getBoolPref("extensions.https_everywhere.firstrun_context_menu"); + } catch(e) { + Services.prefs.setBoolPref("extensions.https_everywhere.firstrun_context_menu", true); + first_run = true; + } + if(first_run) { + Services.prefs.setBoolPref("extensions.https_everywhere.firstrun_context_menu", false); + var navbar = document.getElementById("nav-bar"); + if(navbar.currentSet.indexOf("https-everywhere-button") == -1) { + var set = navbar.currentSet+',https-everywhere-button'; + navbar.setAttribute('currentset', set); + navbar.currentSet = set; + document.persist('nav-bar', 'currentset'); + } + } + } catch(e) { } +} + +function stitch_context_menu() { + // the same menu appears both under Tools and via the toolbar button: + var menu = document.getElementById("https-everywhere-menu"); + if (!menu.firstChild) { + var popup = document.getElementById("https-everywhere-context"); + menu.appendChild(popup.cloneNode(true)); + } +} +function stitch_context_menu2() { + // the same menu appears both under Tools and via the toolbar button: + var menu = document.getElementById("https-everywhere-menu2"); + if (!menu.firstChild) { + var popup = document.getElementById("https-everywhere-context"); + menu.appendChild(popup.cloneNode(true)); + } +} + +var rulesetTestsMenuItem = null; + +function show_applicable_list(menupopup) { + var domWin = content.document.defaultView.top; + if (!(domWin instanceof CI.nsIDOMWindow)) { + alert(domWin + " is not an nsIDOMWindow"); + return null; + } + + var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); + var weird=false; + + if (!alist) { + // This case occurs for error pages and similar. We need a dummy alist + // because populate_menu lives in there. Would be good to refactor this + // away. + alist = new HTTPSEverywhere.ApplicableList(HTTPSEverywhere.log, document, domWin); + weird = true; + } + alist.populate_menu(document, menupopup, weird); + + // should we also show the ruleset tests menu item? + if(HTTPSEverywhere.prefs.getBoolPref("show_ruleset_tests")) { + + if(!rulesetTestsMenuItem) { + let strings = document.getElementById('HttpsEverywhereStrings'); + let label = strings.getString('https-everywhere.menu.ruleset-tests'); + + rulesetTestsMenuItem = this.document.createElement('menuitem'); + rulesetTestsMenuItem.setAttribute('command', 'https-everywhere-menuitem-ruleset-tests'); + rulesetTestsMenuItem.setAttribute('label', label); + } + + if(!menupopup.contains(rulesetTestsMenuItem)) + menupopup.appendChild(rulesetTestsMenuItem); + } + +} + +function toggle_rule(rule_id) { + // toggle the rule state + HTTPSEverywhere.https_rules.rulesetsByID[rule_id].toggle(); + var domWin = content.document.defaultView.top; + /*if (domWin instanceof CI.nsIDOMWindow) { + var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules", null); + if (alist) alist.empty(); + }*/ + reload_window(); +} + +function reload_window() { + var domWin = content.document.defaultView.top; + if (!(domWin instanceof CI.nsIDOMWindow)) { + HTTPSEverywhere.log(WARN, domWin + " is not an nsIDOMWindow"); + return null; + } + try { + var webNav = domWin.QueryInterface(CI.nsIInterfaceRequestor) + .getInterface(CI.nsIWebNavigation) + .QueryInterface(CI.nsIDocShell); + } catch(e) { + HTTPSEverywhere.log(WARN,"failed to get webNav"); + return null; + } + // This choice of flags comes from NoScript's quickReload function; not sure + // if it's optimal + webNav.reload(webNav.LOAD_FLAGS_CHARSET_CHANGE); +} + +function toggleEnabledState(){ + HTTPSEverywhere.toggleEnabledState(); + reload_window(); + + // Change icon depending on enabled state + httpsEverywhere.toolbarButton.changeIcon(); +} + +function open_in_tab(url) { + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] + .getService(Components.interfaces.nsIWindowMediator); + var recentWindow = wm.getMostRecentWindow("navigator:browser"); + recentWindow.delayedOpenTab(url, null, null, null, null); +} + +// hook event for showing hint +HTTPSEverywhere.log(DBUG, 'Adding listener for toolbarButton init.'); +window.addEventListener("load", httpsEverywhere.toolbarButton.init, false); + +function migratePreferences() { + gBrowser.removeEventListener("DOMContentLoaded", migratePreferences, true); + let prefs_version = HTTPSEverywhere.prefs.getIntPref("prefs_version"); + + // first migration loses saved prefs + if(prefs_version == 0) { + try { + // upgrades will have old rules as preferences, such as the EFF rule + let upgrade = false; + let childList = HTTPSEverywhere.prefs.getChildList("", {}); + for(let i=0; i<childList.length; i++) { + if(childList[i] == 'EFF') { + upgrade = true; + break; + } + } + + if(upgrade) { + let nBox = gBrowser.getNotificationBox(); + let strings = document.getElementById('HttpsEverywhereStrings'); + let msg = strings.getString('https-everywhere.migration.notification0'); + nBox.appendNotification( + msg, + 'https-everywhere-migration0', + 'chrome://https-everywhere/skin/https-everywhere-24.png', + nBox.PRIORITY_WARNING_MEDIUM + ); + } + } catch(e) { + HTTPSEverywhere.log(WARN, "Migration from prefs_version 0 error: "+e); + } + + HTTPSEverywhere.prefs.setIntPref("prefs_version", prefs_version+1); + } +} + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul new file mode 100644 index 0000000..c3cbed0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul @@ -0,0 +1,71 @@ +<?xml version="1.0"?> +<?xml-stylesheet href="chrome://https-everywhere/skin/https-everywhere.css" type="text/css"?> + +<!DOCTYPE overlay SYSTEM "chrome://https-everywhere/locale/https-everywhere.dtd"> + +<!-- helpful docs at + https://developer.mozilla.org/en/XUL/PopupGuide/PopupEvents --> + +<overlay id="https-everywhere-button-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <script type="application/x-javascript" src="chrome://https-everywhere/content/toolbar_button.js"/> + <script type="application/x-javascript" src="chrome://https-everywhere/content/ruleset-tests.js"/> + + <stringbundleset id="stringbundleset"> + <stringbundle id="HttpsEverywhereStrings" + src="chrome://https-everywhere/locale/https-everywhere.properties" /> + </stringbundleset> + + <!-- this works in Firefox, we need a Seamonkey version too... --> + <menupopup id="menu_ToolsPopup" onpopupshowing="stitch_context_menu()"> + <menu id="https-everywhere-menu" label="&https-everywhere.about.ext_name;"> + <!-- "https-everywhere-context" below gets .cloneNode()ed in here --> + </menu> + </menupopup> + + <menupopup id="toolsPopup" onpopupshowing="stitch_context_menu2()"> + <menu id="https-everywhere-menu2" label="&https-everywhere.about.ext_name;"> + <!-- "https-everywhere-context" below gets .cloneNode()ed in here --> + </menu> + </menupopup> + + <toolbarpalette id="BrowserToolbarPalette"> + <toolbarbutton + id="https-everywhere-button" + tooltiptext="&https-everywhere.about.ext_name;" + label="HTTPS" + context="https-everywhere-context-menu" + oncontextmenu="this.open = true;" + oncommand="this.open = true;" + buttonstyle="pictures" + type="menu" + rulesetsApplied="0"> + + <menupopup id="https-everywhere-context" onpopupshowing="show_applicable_list(this)"> + <!-- entries will be written here by ApplicableList.populate_menu() --> + <menuseparator /> + <menuitem type="checkbox" id="https-everywhere-counter-item" label="&https-everywhere.menu.showCounter;" + oncommand="httpsEverywhere.toolbarButton.toggleShowCounter()" /> + <menuseparator /> + <menuitem label="&https-everywhere.menu.observatory;" command="https-everywhere-menuitem-observatory" /> + <menuitem label="&https-everywhere.menu.about;" command="https-everywhere-menuitem-about" /> + </menupopup> + </toolbarbutton> + </toolbarpalette> + <commandset> + <command id="https-everywhere-menuitem-globalEnableToggle" + oncommand="toggleEnabledState();" /> + <command id="https-everywhere-menuitem-preferences" + oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/preferences.xul', 'chrome,centerscreen,resizable=yes');" /> + <command id="https-everywhere-menuitem-about" + oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/about.xul');" /> + <command id="https-everywhere-menuitem-observatory" + oncommand="HTTPSEverywhere.chrome_opener('chrome://https-everywhere/content/observatory-preferences.xul', 'chrome,centerscreen,resizable=yes');" /> + <command id="https-everywhere-menuitem-donate-eff" + oncommand="open_in_tab('https://www.eff.org/donate');" /> + <command id="https-everywhere-menuitem-donate-tor" + oncommand="open_in_tab('https://www.torproject.org/donate');" /> + <command id="https-everywhere-menuitem-ruleset-tests" + oncommand="openStatus();" /> + </commandset> +</overlay> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml new file mode 100644 index 0000000..1981b3a --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button_binding.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!-- +Toolbar button needs to be extended to show a counter for the number of +rulesets applied, and this can be done using XBL. + +See: https://developer.mozilla.org/en-US/docs/XBL +--> +<bindings xmlns="http://www.mozilla.org/xbl" + xmlns:xbl="http://www.mozilla.org/xbl" + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <binding id="https-everywhere-binding"> + <content> + <!-- ruleset counter (rscounter) and rulesets applied (rsapplied) --> + <xul:stack id="rscounter"> + <xul:label id="rsapplied" xbl:inherits="value=rulesetsApplied" /> + </xul:stack> + + <!-- + Https everywhere toolbar button is already defined; just use its settings. + TODO: Look into any issues with oncommand/oncontext. + --> + <xul:toolbarbutton + class="https-everywhere-button toolbarbutton-1 chromeclass-toolbar-additional" + flex="1" + allowevents="true" + xbl:inherits="type,crop,image,label,accesskey,command,align,dir,pack,orient,wrap"> + + <children includes="menupopup" /> + </xul:toolbarbutton> + </content> + </binding> +</bindings> diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd new file mode 100644 index 0000000..00b898e --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "عن HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "شفر شبكة الإنترنت! استخدم تلقائيا تقنية HTTPS للأمان مع الكثير من المواقع."> +<!ENTITY https-everywhere.about.version "النسخة"> +<!ENTITY https-everywhere.about.created_by "أنشأه"> +<!ENTITY https-everywhere.about.librarians "جامعيْ القواعد"> +<!ENTITY https-everywhere.about.thanks "شكراً لكل من"> +<!ENTITY https-everywhere.about.contribute "إن أعجبتك إضافة HTTPS Everywhere، فكر بـ"> +<!ENTITY https-everywhere.about.donate_tor "التبرع لتور"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "التبرع للـ EFF"> + +<!ENTITY https-everywhere.menu.about "عن HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "خيارات مرصد SSL"> +<!ENTITY https-everywhere.menu.globalEnable "فعّل HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "عطّل HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "خيارات HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "فعّل الكل"> +<!ENTITY https-everywhere.prefs.disable_all "عطّل الكل"> +<!ENTITY https-everywhere.prefs.reset_defaults "استعادة الإعدادات الافتراضية"> +<!ENTITY https-everywhere.prefs.search "بحث"> +<!ENTITY https-everywhere.prefs.site "موقع"> +<!ENTITY https-everywhere.prefs.notes "ملاحظات"> +<!ENTITY https-everywhere.prefs.list_caption "أي من قواعد إعادة توجيه HTTPS يجب أن تطبق؟"> +<!ENTITY https-everywhere.prefs.enabled "مفعّل"> +<!ENTITY https-everywhere.prefs.ruleset_howto "يمكنك تعلم كيفية كتابة قواعد خاصة بك (لإضافة الدعم لمواقع أخرى)"> +<!ENTITY https-everywhere.prefs.here_link "هنا"> +<!ENTITY https-everywhere.prefs.toggle "بدّل"> +<!ENTITY https-everywhere.prefs.reset_default "استعادة الإعداد الافتراضي"> +<!ENTITY https-everywhere.prefs.view_xml_source "افحص مصدر XML"> + +<!ENTITY https-everywhere.source.downloading "يحُمل حالياً"> +<!ENTITY https-everywhere.source.filename "اسم الملف"> +<!ENTITY https-everywhere.source.unable_to_download "تعذّر تنزيل المصدر."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "عذراً. انت كنت تستخدم اصدار مستقر من HTTPS Everywhere، ولكن تم تحديث اصدارك إلي الاصدار التجريبي عن طريق الخطء."> +<!ENTITY https-everywhere.popup.paragraph2 "هل ترغب في العودة للاصدار المستقر؟"> +<!ENTITY https-everywhere.popup.paragraph3 "كنا نحب لو واصلت استخدام الاصدار التجريبي من HTTPS Everywhere لان ذلك يساعدنا علي جعل البرنامج أفضل! قد تجد في الاصدار التجريبي بعض الأخطاء التي يمكنك ان تبلغ عنها بمراسلة https-everywhere@eff.org. نآسف على الإزعاج و شكراً لأستخدامك HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "ابقني علي الاصدار التجريبي"> +<!ENTITY https-everywhere.popup.revert "حمل الاصدار المستقر الاخير"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties new file mode 100644 index 0000000..2618335 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = فعّل HTTPS Everywhere +https-everywhere.menu.globalDisable = أوقف HTTPS Everywhere +https-everywhere.menu.enableDisable = فعل / اوقف القوانين +https-everywhere.menu.noRules = (هذه الصفحة لا تحتوي على قوانين) +https-everywhere.menu.unknownRules = (قواين هذه الصفحة غير معروفة) +https-everywhere.toolbar.hint = HTTPS Everywhere مفعل الان. يمكنك تفعيله او تعطيله علي حسب الموقع الذي تزور عن طريق الضغط علي الرمز في شريطة العناوين. +https-everywhere.migration.notification0 = من أجل أن تنفيذ اصلاح مهم، هذا التحديث يعيد قوانين HTTPS Everywhere إلى حالتها الإفتراضية. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd new file mode 100644 index 0000000..04e3e91 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ar/ssl-observatory.dtd @@ -0,0 +1,97 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "التفاصيل ومعلومات الخصوصية"> +<!ENTITY ssl-observatory.popup.later "إسألني لاحقاً"> +<!ENTITY ssl-observatory.popup.no "لا"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere يمكن له أن يكتشف الهجمات +ضد متصفحك عبر إرسال الشهادات التي تستقبلها إلى المرصد. +هل تريد تشغيل هذه الخاصية؟"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"هل تريد أن يستخدم HTTPS Everywhere خاصية SSL Observatory؟"> + +<!ENTITY ssl-observatory.popup.yes "نعم"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"ان استخدام تلك الخاصية آمن إلا إذا كنت تستخدم الإنترنت ضمن شبكة شركة ذات إعدادات رقابية:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"آمن، إلا إذا كنت تستخدم شبكة شركة داخلية تستخدم أسماء سرية لخوادمها:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"أرسل وتحقق من الشهادات الموقعة بواسطة سلطة غير معتمدة."> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"من الآمن (والمستحسن) تفعيل هذا الخيار، إلا إذا كنت تستخدم شبكة شركة تطفلية أو برنامج كاسبرسكي المضاد للڤيروسات الذي يراقب تصفحك عن طريق TLS بروكسي و private root Certificate Authority. إذا فعلت الخاصية على شبكة مماثلة، قد ينشر هذا الخيار أدلة على أي نطاقات https:// تمت زيارتها عبر ذلك البروكسي، وذلك بسبب الشهادات الفريدة التي يمكن أن ينتجها. ولذلك نحن نتركه غير مفعل في الإعدادات الافتراضية."> + +<!ENTITY ssl-observatory.prefs.anonymous "تحقق من الشهادات باستخدام تور لإخفاء الهوية"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"تحقق من الشهادات باستخدام تور لإخفاء الهوية (يتطلب تور)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"يتطلب هذا الخيار تثبيت و تشغيل تور"> + +<!ENTITY ssl-observatory.prefs.asn +"عندما ترى شهادة جديدة، أخبر المرصد عن هوية مزود خدمة الإنترنت الخاص بك."> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"هذا سيجلب و يرسل "رقم النظام المستقل" الخاص بشبكتك. هذا سيساعدنا على تحديد موقع الهجمات ضد HTTPS، وتحديد ما إذا كان لدينا ملاحظات من شبكات في أماكن مثل سوريا وإيران حيث هذه الهجمات شائعة نسبياً."> + +<!ENTITY ssl-observatory.prefs.done "انتهى"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere يمكن له أن يستخدم مرصد SSL من الـEFF وهذا يعني شيئين: (۱) +إرسال نسخ من شهادات HTTPS إلى المرصد لمساعدتنا على كشف هجمات 'رجل-في-الوسط' + وتحسين الأمان على الإنترنت، و (٢) يسمح لنا بتحذيرك عن الاتصالات غير الآمنة أو الهجمات على متصفحك."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"على سبيل المثال، عندما تقوم بزيارة https://www.something.com, فإن الشهادة +التي يتلقاها المرصد تشير إلى أن شخصاً ما قام بزيارة www.something.com, ولكن ليس من قام بالزيارة +أو ما هي الصفحات التي قاموا بقراءتها. أشر بالفأرة فوق الخيار للمزيد من التفاصيل:"> + +<!ENTITY ssl-observatory.prefs.hide "أخفِ الخيارات المتقدمة"> + +<!ENTITY ssl-observatory.prefs.nonanon +"تحقق من الشهادات حتى لو لم يكن تور متاح"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"سنحاول الحفاظ على سرية البيانات، ولكن هذا الخيار أقل أمناً"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"أرسل وتحقق من شهادات أسماء DNS غير العامة"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"ما لم يتم تحديد هذا الخيار، لن يسجل المرصد الشهادات للأسماء التي لا يستطيع حلها عبر نظام DNS."> + +<!ENTITY ssl-observatory.prefs.show "أظهر الخيارات المتقدمة"> + +<!ENTITY ssl-observatory.prefs.title "تفضيلات مرصد SSL"> + +<!ENTITY ssl-observatory.prefs.use "استخدم المرصد؟"> +<!ENTITY ssl-observatory.warning.title "تحذير من مرصد SSL الخاص بـEFF"> +<!ENTITY ssl-observatory.warning.showcert "أظهر سلسة الشهادة"> +<!ENTITY ssl-observatory.warning.okay "أنا أفهم"> +<!ENTITY ssl-observatory.warning.text "أصدر مرصد SSL من الـEFF تحذيراً حول شهادة ( أو شهادات) HTTPS لهذا الموقع:"> +<!ENTITY ssl-observatory.warning.defense "إن كنت مسجل الدخول في هذا الموقع، ننصحك بتغيير كلمة السر عندما تحصل علي اتصال آمن بالإنترنت."> + +<!ENTITY ssl-observatory.prefs.self_signed +"اعرض و تحقق من الشهادات الموقعة ذاتياً"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"هذا مفضل ; فمشاكل التشفير شائعة بشكل خاص في الأجهزة المدمجة الموقعة ذاتياً"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd new file mode 100644 index 0000000..6bf445f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "За HTTPS на всякаде"> +<!ENTITY https-everywhere.about.ext_name "HTTPS на всякаде"> +<!ENTITY https-everywhere.about.ext_description "Заключи интернетат! Автоматично ползваи HTTPS защита на много страници."> +<!ENTITY https-everywhere.about.version "Версия"> +<!ENTITY https-everywhere.about.created_by "Създаване от"> +<!ENTITY https-everywhere.about.librarians "Правилни Книжарници"> +<!ENTITY https-everywhere.about.thanks "Благодаря на"> +<!ENTITY https-everywhere.about.contribute "Ако харесвате HTTPS на всякаде, можете да разгледате"> +<!ENTITY https-everywhere.about.donate_tor "Даряване към"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Даряване към ЕФФ"> + +<!ENTITY https-everywhere.menu.about "За HTTPS на всякаде"> +<!ENTITY https-everywhere.menu.observatory "SSL Обсержатория настроики"> +<!ENTITY https-everywhere.menu.globalEnable "Включете HTTPS на всякаде"> +<!ENTITY https-everywhere.menu.globalDisable "Изключете HTTPS на всякаде"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS на всякаде настроики"> +<!ENTITY https-everywhere.prefs.enable_all "Включи Всички"> +<!ENTITY https-everywhere.prefs.disable_all "Изключи Всички"> +<!ENTITY https-everywhere.prefs.reset_defaults "Възстанови стандартните"> +<!ENTITY https-everywhere.prefs.search "Търси"> +<!ENTITY https-everywhere.prefs.site "Страница"> +<!ENTITY https-everywhere.prefs.notes "Бележки"> +<!ENTITY https-everywhere.prefs.list_caption "Кой HTTPS преадресираня да деистват?"> +<!ENTITY https-everywhere.prefs.enabled "Включен"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Можеш да научеш да пишеш твоите правила(да добавяте страници)"> +<!ENTITY https-everywhere.prefs.here_link "тук"> +<!ENTITY https-everywhere.prefs.toggle "Копче"> +<!ENTITY https-everywhere.prefs.reset_default "Възстанови стандартните"> +<!ENTITY https-everywhere.prefs.view_xml_source "Виж XML Кода"> + +<!ENTITY https-everywhere.source.downloading "Изтегляне"> +<!ENTITY https-everywhere.source.filename "Име на файл"> +<!ENTITY https-everywhere.source.unable_to_download "Невъзможно да свали кода."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties new file mode 100644 index 0000000..ec16615 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Ключи HTTPS на всякаде +https-everywhere.menu.globalDisable = Изключете +https-everywhere.menu.enableDisable = Включи / Изключи Правила +https-everywhere.menu.noRules = (Няма Правила за Тази Страница) +https-everywhere.menu.unknownRules = (Непознати Правила за Тази Страница) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd new file mode 100644 index 0000000..a0f88fd --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/bg/ssl-observatory.dtd @@ -0,0 +1,93 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Детайли и Информачя за Уединение"> +<!ENTITY ssl-observatory.popup.later "Попитай ме по-късно"> +<!ENTITY ssl-observatory.popup.no "Не"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere може да засече атаки +против твоя браузър като праща сертификатите, които получаваш към +Observatory. Включи тази опция?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS Everywhere да използва ли SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Да"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Безопастно е да влючеш това, освен ако ползваш много шпионска връска:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Безопасно, усвен ако ползвате таиен интернет с таини имена на сървърите:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Вкарай и провери сертификати подписани от не-стандартни CAта"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +""> + +<!ENTITY ssl-observatory.prefs.anonymous "Проверявай сертификати като използваш Tor за анонимност"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Проверявай сертификати като използваш Tor за анонимност (изисква Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Тази опция изисква Tor и Torbutton да бъдат инсталирани"> + +<!ENTITY ssl-observatory.prefs.asn +"Когато видиш нов сертификат кажи на Observatory към кой ISP си свързан"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +""> + +<!ENTITY ssl-observatory.prefs.done "Готово"> + +<!ENTITY ssl-observatory.prefs.explanation +""> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +""> + +<!ENTITY ssl-observatory.prefs.hide "Скрий разширени настройки"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Проверявай сертификати даье ако Tor ние свободен"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Все още ше опитаме да пазим данните анонимни, но тази настройка е по малко сигорна"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Вкараи и провери сертификати за частни DNS имена"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +""> + +<!ENTITY ssl-observatory.prefs.show "Покажи разширени настройки"> + +<!ENTITY ssl-observatory.prefs.title "SSL Обсержатория Nастроики"> + +<!ENTITY ssl-observatory.prefs.use "Използвай Observatory?"> +<!ENTITY ssl-observatory.warning.title "ВНИМАНИЕ от SSL обсерваторята на ЕФФ"> +<!ENTITY ssl-observatory.warning.showcert "Покажи веригата на сертификата"> +<!ENTITY ssl-observatory.warning.okay "Разбирам"> +<!ENTITY ssl-observatory.warning.text "SSL Обсерваторята на ЕФФ е дала признак за HTTPS сертификат(и) на тази страница:"> +<!ENTITY ssl-observatory.warning.defense "Ако си влязал в тази страница, предложено е да смениш паролата когато имаш безопастна връска."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Вкарай и провери само-подписани сертификати"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Това е предложено; проблеми с криптография съ спесифично нормални в само-подписани дребни девизи "> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd new file mode 100644 index 0000000..ce1f107 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "O aplikaci HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Zašifrujte Web! Automaticky používejte HTTPS zabezpečení na mnoha stránkách."> +<!ENTITY https-everywhere.about.version "Verze"> +<!ENTITY https-everywhere.about.created_by "Vytvořil"> +<!ENTITY https-everywhere.about.librarians "Knihovníci Pravidel"> +<!ENTITY https-everywhere.about.thanks "Poděkování"> +<!ENTITY https-everywhere.about.contribute "Pokud se vám líbí HTTPS Everywhere, můžete"> +<!ENTITY https-everywhere.about.donate_tor "Přispět na Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Přispět na EFF"> + +<!ENTITY https-everywhere.menu.about "O aplikaci HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Nastavení SSL Observatoře"> +<!ENTITY https-everywhere.menu.globalEnable "Zapnout HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Vypnout HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Nastavení HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Zapnout vše"> +<!ENTITY https-everywhere.prefs.disable_all "Vypnout vše"> +<!ENTITY https-everywhere.prefs.reset_defaults "Vrátit výchozí nastavení"> +<!ENTITY https-everywhere.prefs.search "Hledat"> +<!ENTITY https-everywhere.prefs.site "Stránky"> +<!ENTITY https-everywhere.prefs.notes "Poznámky"> +<!ENTITY https-everywhere.prefs.list_caption "Která pravdila HTTPS pro přesměrování mají platit?"> +<!ENTITY https-everywhere.prefs.enabled "Zapnuto"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Návod, jak si vytvořit vlastní sadu pravidel (pro přidání podpory dalších webů) najdete"> +<!ENTITY https-everywhere.prefs.here_link "zde"> +<!ENTITY https-everywhere.prefs.toggle "Změnit"> +<!ENTITY https-everywhere.prefs.reset_default "Vrátit výchozí nastavení"> +<!ENTITY https-everywhere.prefs.view_xml_source "Zobrazit Zdroj v XML"> + +<!ENTITY https-everywhere.source.downloading "Stahování"> +<!ENTITY https-everywhere.source.filename "Název souboru"> +<!ENTITY https-everywhere.source.unable_to_download "Zdroj nelze stáhnout."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties new file mode 100644 index 0000000..98fb982 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Zapnout HTTPS Everywhere +https-everywhere.menu.globalDisable = Vypnout HTTPS Everywhere +https-everywhere.menu.enableDisable = Zapnout / Vypnout Pravidla +https-everywhere.menu.noRules = (Pro tuto stránku neexistují žádná pravidla) +https-everywhere.menu.unknownRules = (Pravidla pro tuto stránku nejsou známá) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd new file mode 100644 index 0000000..724c842 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/cs/ssl-observatory.dtd @@ -0,0 +1,94 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Podrobnosti a informace o soukromí"> +<!ENTITY ssl-observatory.popup.later "Rozhodnu se později"> +<!ENTITY ssl-observatory.popup.no "Ne"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere umí odhalit útotky +proti vašemu prohlížeči tak, že posílá certifikáty, které obdržíte, do +Observatoře. Zapnout tuto funkci?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Má HTTPS Everywhere používat SSL Observatoř?"> + +<!ENTITY ssl-observatory.popup.yes "Ano"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Povolit tuto funkci je bezpečné, pokud nejste na velmi +dotěrné firemní síti:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Bezpečné, pokud nepoužíváte firemní síť s tajnými jmény intranetových serverů:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Odeslat a prověřit certikáty podepsané nestadartními kořenovými Certifikačními Autoritami"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Je bezpečné (a doporučené) tuto možnost povolit, pokud nepoužíváte dotěrnou firemní síť nebo antivirový sofware Kaspersky který monitoruje vaše surfování s TLS proxy a sorkoumou kořenovou Certifikační Autoritou. Pokud ji na takové síti povolíte, může tato možnost publikovat důkazy o tom které https:// servery byly skrze tuto proxy navštíveny, kvůli jedinečným certifikátům které by takto vznikly. Proto nechváme tuto možnost ve výchozím nastavení vypnoutou."> + +<!ENTITY ssl-observatory.prefs.anonymous "Prověřovat certifikáty skrze Tor pro zajištění anonymity"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Prověřovat certifikáty skrze Tor pro zajištění anonymity (vyžaduje Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Pro použití této možnosti je třeba mít nainstalovaný Tor a Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Když uvidíte nový certifikát, řekněte Observatoři přes kterého ISP jste připojení"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Toto načte a odešle "číslo Autonomního Systému" vaší sítě. Pomůže nám to lokalizovat útoky na HTTPS, a rozpoznat jestli máme hlášení ze sítí v zemích jako je Írán a Sýrie, kde jsou útoky relativně časté."> + +<!ENTITY ssl-observatory.prefs.done "Hotovo"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere umí použít SSL Observatoř od EFF. Ta udělá dvě věci: (1) +oděšle kopie HTTPS cerifikátů do observotře, což nám pomůže detekovat útoky typu 'man in the middle' a zlepšit bezpečnost na Webu; a (2) +umožní nám varovat vás před nezabezpečným připojením nebo útokem na váš prohlížeč."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Pokud například navštívíte https://www.something.com, certifikát, kerý příjde do Observatoře nás informuje o tom, že někdo navštívil +www.something.com, ale neřekne kdo to byl, ani na jakou konkrétní stránku se +díval. Pro zobrazení podrobností najeďte na možnosti myší."> + +<!ENTITY ssl-observatory.prefs.hide "Skrýt pokročilé nastavení"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Prověřovat certifikáty i pokud Tor není dostupný"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"I tak se budeme snažit, aby data zůstala anonymní, ale tato možnost není tak bezpečná"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Odesílat a prověřovat certifikáty neveřejných DNS jmen"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Pokud není tato možnost zaškrtnutá, Observatoř nebude zaznamenávat certifikáty pro jména která nenajde v DNS systému."> + +<!ENTITY ssl-observatory.prefs.show "Zobrazit pokročilé nastavení"> + +<!ENTITY ssl-observatory.prefs.title "Nastavení SSL Observatoře"> + +<!ENTITY ssl-observatory.prefs.use "Používat Observatoř?"> +<!ENTITY ssl-observatory.warning.title "VAROVÁNÍ z SSL Observatoře od EFF"> +<!ENTITY ssl-observatory.warning.showcert "Zobrazit řetězec certifikátů"> +<!ENTITY ssl-observatory.warning.okay "Rozumím"> +<!ENTITY ssl-observatory.warning.text "SSL Observatoř od EFF vydala varování před HTTPS cetifikátem / certifikáty na těchto stránkách:"> +<!ENTITY ssl-observatory.warning.defense "Pokud jste se na těchto stránkách přihlásili, doporučujeme změnit si heslo, až budete připojeni bezpečným připojením."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Odesílat a prověrovat certifikáty podepsané sami sebou"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Tuto možnost dopručujeme zapnout; kryprografické problémy jsou obzvášť časté u takto podepsaných vestavěných zařízení"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd new file mode 100644 index 0000000..83ef71a --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Om HTTPS Overalt"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Overalt"> +<!ENTITY https-everywhere.about.ext_description "Kryptér nettet! Brug HTTPS-sikkerhed automatisk på mange steder."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Oprettet af"> +<!ENTITY https-everywhere.about.librarians "Regelsæt-bibliotekarer"> +<!ENTITY https-everywhere.about.thanks "Tak til"> +<!ENTITY https-everywhere.about.contribute "Hvis du kan lide HTTPS Overalt, så vil du måske overveje"> +<!ENTITY https-everywhere.about.donate_tor "Giv bidrag til Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "da"> +<!ENTITY https-everywhere.about.donate_eff "Giv bidrag til EFF"> + +<!ENTITY https-everywhere.menu.about "Om HTTPS Overalt"> +<!ENTITY https-everywhere.menu.observatory "Indstillinger for SSL-observatorie"> +<!ENTITY https-everywhere.menu.globalEnable "Aktivér HTTPS Overalt"> +<!ENTITY https-everywhere.menu.globalDisable "Deaktivér HTTPS Overalt"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Indstillinger for HTTPS Overalt"> +<!ENTITY https-everywhere.prefs.enable_all "Aktivér alle"> +<!ENTITY https-everywhere.prefs.disable_all "Deaktivér alle"> +<!ENTITY https-everywhere.prefs.reset_defaults "Nulstil til standardindstillinger"> +<!ENTITY https-everywhere.prefs.search "Søg"> +<!ENTITY https-everywhere.prefs.site "Sted"> +<!ENTITY https-everywhere.prefs.notes "Noter"> +<!ENTITY https-everywhere.prefs.list_caption "Hvilke HTTPS-regler skal anvendes?"> +<!ENTITY https-everywhere.prefs.enabled "Aktiveret"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lære om at skrive dine egne regelsæt (for at føje understøttelse til andre websteder)"> +<!ENTITY https-everywhere.prefs.here_link "her"> +<!ENTITY https-everywhere.prefs.toggle "Slå til/fra"> +<!ENTITY https-everywhere.prefs.reset_default "Nulstil til standardindstilling"> +<!ENTITY https-everywhere.prefs.view_xml_source "Vis XML-kilde"> + +<!ENTITY https-everywhere.source.downloading "Henter"> +<!ENTITY https-everywhere.source.filename "Filnavn"> +<!ENTITY https-everywhere.source.unable_to_download "Kan ikke hente kilde"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 meddelelse"> +<!ENTITY https-everywhere.popup.paragraph1 "Ups. Du anvendte den stabile version af HTTPS Everywhere, men vi har ved et uheld måske opdateret til udvikler-versionen ved den sidste opdatering."> +<!ENTITY https-everywhere.popup.paragraph2 "Vil du skifte tilbage til den stabile version?"> +<!ENTITY https-everywhere.popup.paragraph3 "Vi ville sætte pris på at du fortsatte med at anvende vores udvikler-version, og derved hjalp os med at gøre HTTPS Everywhere bedre! Der er optræder måske fejl her og der, som du kan rapportere på https-everywhere@eff.org, på engelsk. Vi beklager besværet. Tak fordi du anvender HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Behold udvikler-versionen"> +<!ENTITY https-everywhere.popup.revert "Hent den seneste stabile version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties new file mode 100644 index 0000000..dcd8a36 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/da/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Aktivér HTTPS Overalt +https-everywhere.menu.globalDisable = Deaktivér HTTPS Overalt +https-everywhere.menu.enableDisable = Aktivér / Deaktivér regler +https-everywhere.menu.noRules = (Der er ikke opsat regler for denne side) +https-everywhere.menu.unknownRules = (Regler for denne side ukendt) +https-everywhere.toolbar.hint = HTTPS Everywhere er nu aktiv. De kan tænde den ved et side-ved-side basis ved at klikke på ikonet i adresse baren. +https-everywhere.migration.notification0 = For at rette en vigtig fejl, nulstiller denne opdatering dine HTTPS Everywhere indstillinger til deres oprindelige værdier. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd new file mode 100644 index 0000000..05722e8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/da/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detaljer og information om privatliv"> +<!ENTITY ssl-observatory.popup.later "Spørg mig senere"> +<!ENTITY ssl-observatory.popup.no "Nej"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Overalt kan registrere angreb +mod din browser ved at sende certifikaterne du modtager til +Observatoriet. Slå dette til?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Skal HTTPS Overalt anvende SSL-observatoriet?"> + +<!ENTITY ssl-observatory.popup.yes "Ja"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Dette kan trygt aktiveres, medmindre du brug et virksomhedsnetværk +som er udsat for meget indtrængen:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Sikker, medmindre du bruger et virksomhedsnetværk med skjulte intranet-servernavne:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Indsend og tjek certifikater signeret af ikke-standardiserede rod-certifikat-autoriteter"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Det er sikkert (og en god ide) at aktivere denne valgmulighed, medmindre du bruger virksomhedsnetværk med meget indtrængen eller antivirus-software fra Kaspersky, der overvåger din browserbrug med en TLS-proxy og en privat rod-certifikat-autoritet. Hvis den er aktiveret på sådan et netværk, så kan dette tilvalg risikere at udgive spor af hvilke https://-domæner som blev benyttet gennem proxy'en, som følge af de unikke certifikater den ville fremstille. Lad den derfor være slået fra som standard."> + +<!ENTITY ssl-observatory.prefs.anonymous "Tjek certifikater med brug af Tor for anonymitet"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Tjek certifikater med brug af Tor for anonymitet (kræver Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Dette tilvalg kræver at Tor og Torbutton er installerede."> + +<!ENTITY ssl-observatory.prefs.asn +"Når du ser et nyt certifikat, så fortæl Observatoriet hvilken internetudbyder du er tilsluttet til"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Dette vil hente og sende det "autonome systemnummer" for dit netværk. Dette vil hjælpe os med at lokalisere angreb mod HTTPS, og afgøre hvorvidt vi har observationer fra netværk fra steder som Iran og Syrien, hvor angreb set under sammenligning forekommer hyppigt."> + +<!ENTITY ssl-observatory.prefs.done "Færdig"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Overalt kan benytte EFFs SSL-observatorie. Dette indebærer to +ting: (1) der sendes kopier af HTTPS-certifikater til observatoriet, der +hjælper os med at registrere 'manden i midten'-angreb og forøge sikkerheden på nettet; og (2) giver os mulighed for at advare dig om usikre forbindelser eller angreb på din browser."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Som eksempel, når du besøger https://www.etellerandet.com, så vil +certifikatet som Observatoriet har modtaget indikere at nogen besøgte +www.etellerandet.com, men ikke hvem som besøgte stedet, eller hvilken +specifik side de kiggede på. Hold musen over valgmuligheder for at flere +detaljer:"> + +<!ENTITY ssl-observatory.prefs.hide "Skjul avancerede valgmuligheder"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tjek certifikater, selv når Tor ikke er tilgængelig"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Vi vil stadig forsøge at bevare data anonyme, men denne valgmulighed er mindre sikker"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Indsend og tjek certifikater for DNS-navne som ikke er offentlige"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Medmindre denne valgmulighed er valgt, så vil observatoriet ikke registrere certifikater for navne som den ikke kan opløse gennem DNS-systemet."> + +<!ENTITY ssl-observatory.prefs.show "Vis avanceret valgmuligheder"> + +<!ENTITY ssl-observatory.prefs.title "Indstillinger for SSL-Observatoriet"> + +<!ENTITY ssl-observatory.prefs.use "Brug Observatoriet?"> +<!ENTITY ssl-observatory.warning.title "ADVARSEL fra EFF's SSL-observatorie"> +<!ENTITY ssl-observatory.warning.showcert "Vis certifikat-kæden"> +<!ENTITY ssl-observatory.warning.okay "Jeg forstår"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL-observatorie har udsted en advarsel om HTTPS-certifikaterne for dette sted:"> +<!ENTITY ssl-observatory.warning.defense "Hvis du er logget ind på dette sted, så kan det tilrådes at ændre din adgangskode når du har etableret en sikker forbindelse. "> + +<!ENTITY ssl-observatory.prefs.self_signed +"Indsend og tjek selvsignerede certifikater"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Dette er anbefalet, da kryptografiske problemer er oftere findes i selvsignerede indlejrede enheder"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd new file mode 100644 index 0000000..75c8630 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Über HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Sichere deine Internet Anbindung! Automatische HTTPS-Sicherheit auf vielen Web-Seiten."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Entwickelt durch"> +<!ENTITY https-everywhere.about.librarians "Regelliste"> +<!ENTITY https-everywhere.about.thanks "Dank an"> +<!ENTITY https-everywhere.about.contribute "Wenn du HTTPS-Everywhere magst, solltest du mal dieses ausprobieren"> +<!ENTITY https-everywhere.about.donate_tor "Spende an Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "de-DE"> +<!ENTITY https-everywhere.about.donate_eff "Spende an EFF"> + +<!ENTITY https-everywhere.menu.about "Über HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory Einstellungen"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere aktivieren"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere deaktivieren"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Einstellungen"> +<!ENTITY https-everywhere.prefs.enable_all "Alle aktivieren"> +<!ENTITY https-everywhere.prefs.disable_all "Alle deaktivieren"> +<!ENTITY https-everywhere.prefs.reset_defaults "Zurücksetzen"> +<!ENTITY https-everywhere.prefs.search "Suchen"> +<!ENTITY https-everywhere.prefs.site "Seite"> +<!ENTITY https-everywhere.prefs.notes "Notizen"> +<!ENTITY https-everywhere.prefs.list_caption "Welche HTTPS-Weiterleitung soll gewählt werden?"> +<!ENTITY https-everywhere.prefs.enabled "Gestartet"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Lerne, deine eigene Regelliste zu schreiben (Füge Regeln für andere Web-Seiten hinzu)"> +<!ENTITY https-everywhere.prefs.here_link "Hier"> +<!ENTITY https-everywhere.prefs.toggle "Toggle"> +<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML-Quelle ansehen"> + +<!ENTITY https-everywhere.source.downloading "Downloade"> +<!ENTITY https-everywhere.source.filename "Dateiname"> +<!ENTITY https-everywhere.source.unable_to_download "Quelle konnte nicht heruntergeladen werden."> + +<!ENTITY https-everywhere.popup.title "Nachricht von HTTPS Everywhere 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. Du hattest die stabile Version von HTTPS Everywhere benutzt, aber wir haben dich möglicherweise in unserem letztdem Update auf eine Entwickler-Version geupgraded."> +<!ENTITY https-everywhere.popup.paragraph2 "Möchtest du zurück zur stabilen Version?"> +<!ENTITY https-everywhere.popup.paragraph3 "Wir würden uns freuen, wenn du weiterhin die Entwickler-Version benutzen würdest, um uns zu helfen HTTPS Everywhere zu verbessern! Es könnte sein, dass du hier und da einige Fehler findest, welche du an https-everywhere@eff.org melden kannst. Entschuldige die Unannehmlichkeit und danke, dass du HTTPS Everywhere benutzt."> +<!ENTITY https-everywhere.popup.keep "Entwickler-Version beibehalten."> +<!ENTITY https-everywhere.popup.revert "Die letzte stabile Version herunterladen"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties new file mode 100644 index 0000000..c1d3438 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/de/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhere aktivieren +https-everywhere.menu.globalDisable = HTTPS Everywhere deaktivieren +https-everywhere.menu.enableDisable = Regeln Aktivieren / Deaktivieren +https-everywhere.menu.noRules = (Keine Regeln für diese Seite) +https-everywhere.menu.unknownRules = (Regeln für diese Seite unbekannt) +https-everywhere.toolbar.hint = HTTPS Everywhere ist nun aktiv. Sie können es für bestimmte Seiten ein- oder ausschalten, indem Sie auf das Icon in der Adresszeile klicken. +https-everywhere.migration.notification0 = Um einen wichtigen Fix zu implementieren, wird dieses Update deine HTTPS Everywhere Regel-Einstellungen zurücksetzen. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd new file mode 100644 index 0000000..74483cc --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/de/ssl-observatory.dtd @@ -0,0 +1,91 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Details und Datenschutz Informationen"> +<!ENTITY ssl-observatory.popup.later "Später nachfragen"> +<!ENTITY ssl-observatory.popup.no "Nein"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kann Angriffe gegen Ihren Browser erkennen, indem es Zertifikate, die Sie empfangen, zum SSL Observatory sendet. Einstellung aktivieren?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Soll HTTPS Everywhere SSL Observatory benutzen?"> + +<!ENTITY ssl-observatory.popup.yes "Ja"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Es ist sicher, diese Option zu aktivieren, es sei denn, Sie benutzen ein sehr aufdringliches Firmennetzwerk:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Sicher, es sei denn, Sie benutzen ein Firmennetzwerk mit geheimen Intranet Servernamen:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Sende und überprüfe Zertifikate, die nicht von Stammzertifizierungsstellen ausgestellt wurden"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Es ist sicher (und eine gute Idee), diese Option zu aktivieren, es sei denn, Sie benutzen ein aufdringliches Firmennetzwerk, oder Kaspersky Antiviren-Software, die Sie beim Browsen mittels eines TLS Proxyservers und einer privaten Zertifizierungsstelle überwacht. Wenn diese Option in einem solchen Netzwerk verwendet wird, könnte Sie Hinweise (in Form der dadurch erstellten eindeutigen Zertifikate) auf die durch diesen Proxyserver besuchten https:// Domains hinterlassen."> + +<!ENTITY ssl-observatory.prefs.anonymous "Überprüfe Zertifikate mit Tor, um Anonymität zu bewahren"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Überprüfte Zertifikate mit Tor, um Anonymität zu bewahren (benötigt Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Diese Option macht die Installation von Tor und Torbutton erforderlich"> + +<!ENTITY ssl-observatory.prefs.asn +"Dem SSL Observatory mitteilen, welchen ISP Sie verwenden, wenn Sie ein neues Zertifikat zu sehen bekommen"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Diese Option verwendet die 'Autonome System Zahl' Ihres Netzwerks. Das hilft uns, Angriffe gegen HTTPS zu orten und festzustellen, ob es sich um Angriffe von Netzwerken in Ländern wie Iran und Syrien handelt, in denen solche Angriffe vergleichsweise häufig sind."> + +<!ENTITY ssl-observatory.prefs.done "Fertig"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere kann EFF's SSL Observatory verwenden. Das ermöglicht uns 1. die Erkennung von 'man in the middle' Angriffen und damit eine Verbesserung der Internetsicherheit, indem Kopien der HTTPS Zertifikate an das SSL Observatory gesendet werden; und 2. können wir Sie bei unsicheren Verbindungen oder Angriffen gegen Ihren Browser warnen."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Beispiel: Wenn Sie https://www.irgendetwas.com besuchen, kann das SSL Observatory lediglich feststellen, dass irgendjemand www.irgendetwas.com besucht hat, aber nicht wer es war oder welche genaue Informationen aufgerufen wurde. Für mehr Informationen, fahren Sie mit der Maus über diese Option:"> + +<!ENTITY ssl-observatory.prefs.hide "Verstecke erweiterte Optionen"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Zertifikate auch überprüfen, wenn Tor nicht verfügbar ist"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Wir bemühen uns, die Daten dennoch anonym zu halten, aber diese Option ist weniger sicher."> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Zertifikate für nicht-öffentliche DNS-Namen Senden und Überprüfen"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Wenn diese Option nicht aktiviert ist, wird das Observatory keine Zertifikate für Domain Namen aufnehmen, die es nicht über das DNS-System auflösen kann."> + +<!ENTITY ssl-observatory.prefs.show "Zeige erweiterte Optionen"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory Einstellungen"> + +<!ENTITY ssl-observatory.prefs.use "SSL Observatory verwenden?"> +<!ENTITY ssl-observatory.warning.title "WARNUNG von EFF's SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Zertifikatskette anzeigen"> +<!ENTITY ssl-observatory.warning.okay "Ich verstehe"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory hat eine Warnung zu dem HTTPS Zertifikat dieser Seite veröffentlicht:"> +<!ENTITY ssl-observatory.warning.defense "Wenn Sie auf dieser Seite eingeloggt sind, kann es empfehlenswert sein, das Passwort zu ändern, sobald Sie eine sichere Verbindung haben."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Selbstsignierte Zertifikate Senden und Überprüfen"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Empfehlenswert; kryptographische Probleme sind in selbstsignierten eingebetteten Geräten besonders häufig."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd new file mode 100644 index 0000000..f8658cd --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Σχετικά με το HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Κρυπτογραφήστε τον Παγκόσμιο Ιστό! Χρησιμοποιήστε ασφάλεια HTTPS σε πολλούς δικτυακούς τόπους."> +<!ENTITY https-everywhere.about.version "Έκδοση"> +<!ENTITY https-everywhere.about.created_by "Δημιουργήθηκε από"> +<!ENTITY https-everywhere.about.librarians "Βιβλιοθήκες για κανόνες"> +<!ENTITY https-everywhere.about.thanks "Ευχαριστούμε τους"> +<!ENTITY https-everywhere.about.contribute "Αν σας αρέσει το HTTPS Everywhere, δοκιμάστε"> +<!ENTITY https-everywhere.about.donate_tor "Δωρίστε στο Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Δωρίστε στο EFF"> + +<!ENTITY https-everywhere.menu.about "Σχετικά με το HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Προτιμήσεις για το Παρατηρητήριο SSL"> +<!ENTITY https-everywhere.menu.globalEnable "Ενεργοποίηση του HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Απενεργοποίηση του HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Προτιμήσεις του HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Ενεργοποίηση όλων"> +<!ENTITY https-everywhere.prefs.disable_all "Απενεργοποίηση όλων"> +<!ENTITY https-everywhere.prefs.reset_defaults "Επαναφορά προεπιλεγμένων κανόνων"> +<!ENTITY https-everywhere.prefs.search "Αναζήτηση"> +<!ENTITY https-everywhere.prefs.site "Δικτυακός τόπος"> +<!ENTITY https-everywhere.prefs.notes "Σημειώσεις"> +<!ENTITY https-everywhere.prefs.list_caption "Ποιοι κανόνες ανακατεύθυνσης σε HTTPS να εφαρμοστούν;"> +<!ENTITY https-everywhere.prefs.enabled "Ενεργοποιημένο"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Μπορείτε να μάθετε πώς να γράφετε τους δικούς σας κανόνες (ώστε να υποστηρίξετε και άλλους δικτυακούς τόπους)"> +<!ENTITY https-everywhere.prefs.here_link "εδώ"> +<!ENTITY https-everywhere.prefs.toggle "Εναλλαγή"> +<!ENTITY https-everywhere.prefs.reset_default "Επαναφορά προεπιλογών"> +<!ENTITY https-everywhere.prefs.view_xml_source "Προβολή του Πηγαίου Κώδικα XML"> + +<!ENTITY https-everywhere.source.downloading "Γίνεται λήψη"> +<!ENTITY https-everywhere.source.filename "Όνομα αρχείου"> +<!ENTITY https-everywhere.source.unable_to_download "Αδυναμί λήψης πηγαίου κώδικα."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties new file mode 100644 index 0000000..1906756 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/el/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Ενεργοποίηση του HTTPS Everywhere +https-everywhere.menu.globalDisable = Απενεργοποίηση του HTTPS Everywhere +https-everywhere.menu.enableDisable = Ενεργοποίηση / Απενεργοποίηση των κανόνων +https-everywhere.menu.noRules = (Δεν υπάρχουν κανόνες για αυτή την σελίδα) +https-everywhere.menu.unknownRules = (Κανόνες για αυτή τη σελίδα: Άγνωστοι) +https-everywhere.toolbar.hint = Το HTTPS Everywhere ειναι τωρα ενεργοποιημενο. Μπορείτε να το αλλάξετε με βάση την τοποθεσία ανά τοποθεσία, κάνοντας κλικ στο εικονίδιο στη γραμμή διευθύνσεων. +https-everywhere.migration.notification0 = Αυτή η ενημέρωση επαναφέρει τις ρυθμίσεις κανόνων του HTTPS Everywhere στις προεπιλεγμένες τιμές, με σκοπό να εφαρμοστεί μια κρίσιμη διόρθωση. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd new file mode 100644 index 0000000..28641ed --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/el/ssl-observatory.dtd @@ -0,0 +1,99 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Λεπτομέρειες και Πληροφορίες Ιδιωτικότητας"> +<!ENTITY ssl-observatory.popup.later "Θέλω να Ενημερωθώ Αργότερα"> +<!ENTITY ssl-observatory.popup.no "Όχι"> + +<!ENTITY ssl-observatory.popup.text "Το HTTPS Everywhere μπορεί να εντοπίσει επιθέσεις +εναντίον του φυλλομετρητή σου στέλνοντας τα πιστοποιητικά που λαμβάνεις +στο Παρατηρητήριο. Επιθυμείς ενεργοποίηση;"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Επιθυμείς το HTTPS Everywhere να χρησιμοποιεί το Παρατηρητήριο SSL;"> + +<!ENTITY ssl-observatory.popup.yes "Ναι"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Η ενεργοποίηση της επιλογής είναι ασφαλής, εκτός αν χρησιμοποιείς εταιρικό δίκτυο +υψηλής παρεμβατικότητας:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Η ενεργοποίηση της επιλογής είναι ασφαλής, εκτός αν χρησιμοποιείς εταιρικό δίκτυο με μυστικά ονόματα διακομιστών:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Υποβολή και έλεγχος πιστοποιητικών υπογεγραμμένων από μη-εγκεκριμένες Αρχές Πιστοποίησης πιστοποιητικών"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Είναι ασφαλές (και καλή ιδέα) να ενεργοποιηθεί η συγκεκριμένη επιλογή, εκτός αν χρησιμοποιείς εταιρικό δίκτυο υψηλής παρεμβατικότητας ή το λογισμικό προστασίας από ιούς 'Kaspersky' το οποίο παρακολουθεί την περιήγηση μέσω ενός TLS διακομιστή μεσολάβησης και μιας ιδιωτικής Αρχής Πιστοποίησης πιστοποιητικών. Αν ενεργοποιηθεί σε ένα τέτοιο δίκτυο, μπορεί να δημοσιοποιήσει στοιχεία για το ποια https:// ονόματα ιστοτόπων επισκέφθηκες μέσω αυτού του διακομιστή μεσολάβησης, εξαιτίας της μοναδικότητας των πιστοποιητικών που θα παράγει. Γι' αυτό το έχουμε αφήσει εξ' αρχής απενεργοποιημένο."> + +<!ENTITY ssl-observatory.prefs.anonymous "Έλεγχος πιστοποιητικών χρησιμοποιώντας το Tor για εξασφάλιση ανωνυμίας"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Έλεγχος πιστοποιητικών χρησιμοποιώντας το Tor για εξασφάλιση ανωνυμίας (απαιτείται η εγκατάσταση του Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Η συγκεκριμένη επιλογή απαιτεί την εγκατάσταση του Tor και του Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Όταν βλέπεις ένα νέο πιστοποιητικό, πες στο Παρατηρητήριο με ποιον Πάροχο Υπηρεσιών Διαδικτύου έχεις συνδεθεί."> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Η συγκεκριμένη επιλογή θα ανακτήσει και θα αποστείλει τον "Αυτόνομο Αριθμό Συστήματος" (Autonomous System number) του δικτύου σου. Αυτό θα μας βοηθήσει να εντοπίσουμε επιθέσεις εναντίον του HTTPS και να καθορίσουμε αν έχουν παρατηρηθεί επιθέσεις από μέρη όπως η Συρία και το Ιράν όπου αυτές οι επιθέσεις είναι συγκριτικά πιο συνηθισμένες."> + +<!ENTITY ssl-observatory.prefs.done "Έγινε"> + +<!ENTITY ssl-observatory.prefs.explanation +"Το HTTPS Everywhere μπορεί να χρησιμοποιήσει το Παρατηρητήριο SSL του EFF, το οποίο πραγματοποιεί τα εξής: (1) +στέλνει αντίγραφα των πιστοποιητικών HTTPS στο Παρατηρητήριο, για να μας βοηθήσει να ανιχνεύσουμε επιθέσεις 'ενδιάμεσου παρατηρητή' και να βελτιώσει την ασφάλεια του Παγκόσμιου Ιστού (2) +μας επιτρέπει να σε προειδοποιούμε σχετικά με μη-ασφαλείς συνδέσεις ή επιθέσεις στο φυλλομετρητή σου."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Για παράδειγμα, όταν επισκέπτεσαι το https://www.example.com, το πιστοποιητικό +που λαμβάνει το Παρατηρητήριο θα δείξει ότι κάποιος κάποιος επισκέφθηκε +τον ιστότοπο www.something.com, αλλά όχι ποιος επισκέφθηκε τον ιστότοπο ή ποια συγκεκριμένη σελίδα +είδε. Σύρε το ποντίκι πάνω από τις επιλογές για περισσότερες πληροφορίες:"> + +<!ENTITY ssl-observatory.prefs.hide "Απόκρυψη επιλογών για προχωρημένους"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Έλεγχος πιστοποιητικών ακόμα κι αν το Tor δεν είναι διαθέσιμο "> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Συνεχίζουμε την προσπάθεια να κρατήσουμε ανώνυμα τα δεδομένα, αλλά αυτή η επιλογή είναι λιγότερο ασφαλής"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Υποβολή και έλεγχος πιστοποιητικών για μη δημόσια DNS ονόματα"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Εκτός αν η συγκεκριμένη επιλογή ενεργοποιηθεί, το Παρατηρητήριο δε θα καταγράφει Πιστοποιητικά για ονόματα που δε θα μπορεί να εξακριβώσει μέσω του συστήματος DNS"> + +<!ENTITY ssl-observatory.prefs.show "Προβολή επιλογών για προχωρημένους"> + +<!ENTITY ssl-observatory.prefs.title "Προτιμήσεις Παρατηρητηρίου SSL"> + +<!ENTITY ssl-observatory.prefs.use "Να χρησιμοποιηθεί το Παρατηρητήριο;"> +<!ENTITY ssl-observatory.warning.title "ΠΡΟΕΙΔΟΠΟΙΗΣΗ από το Παρατηρητήριο SSL του EFF"> +<!ENTITY ssl-observatory.warning.showcert "Προβολή της αλυσίδας πιστοποιητικών"> +<!ENTITY ssl-observatory.warning.okay "Καταλαβαίνω"> +<!ENTITY ssl-observatory.warning.text "Το Παρατηρητήριο SSL του EFF έχει εκδώσει μια προειδοποίηση σχετικά με το πιστοποιητικό HTTPS του συγκεκριμένου ιστότοπου:"> +<!ENTITY ssl-observatory.warning.defense "Αν είσαι συνδεδεμένος στο συγκεκριμένο ιστότοπο, προτείνεται να αλλάξεις τον κωδικό ασφαλείας σου όταν αποκτήσεις ασφαλή σύνδεση."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Υποβολή και αυτο-υπογεγραμμένα πιστοποιητικά"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Συνιστώμενη ενέργεια· τα κρυπτογραφικά προβλήματα είναι ιδιαιτέρως κοινά στις αυτο-υπογεγραμμένες ενσωματωμένες συσκευές"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd new file mode 100644 index 0000000..9a63c45 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.dtd @@ -0,0 +1,47 @@ +<!ENTITY https-everywhere.about.title "About HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Created by"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "Thanks to"> +<!ENTITY https-everywhere.about.contribute "If you like HTTPS Everywhere, you might consider"> +<!ENTITY https-everywhere.about.donate_tor "Donating to Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Donating to EFF"> + +<!ENTITY https-everywhere.menu.about "About HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory Preferences"> +<!ENTITY https-everywhere.menu.globalEnable "Enable HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Disable HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> +<!ENTITY https-everywhere.prefs.enable_all "Enable All"> +<!ENTITY https-everywhere.prefs.disable_all "Disable All"> +<!ENTITY https-everywhere.prefs.reset_defaults "Reset to Defaults"> +<!ENTITY https-everywhere.prefs.search "Search"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Notes"> +<!ENTITY https-everywhere.prefs.list_caption "Which HTTPS redirection rules should apply?"> +<!ENTITY https-everywhere.prefs.enabled "Enabled"> +<!ENTITY https-everywhere.prefs.ruleset_howto "You can learn how to write your own rulesets (to add support for other web sites)"> +<!ENTITY https-everywhere.prefs.here_link "here"> +<!ENTITY https-everywhere.prefs.toggle "Toggle"> +<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> +<!ENTITY https-everywhere.prefs.view_xml_source "View XML Source"> + +<!ENTITY https-everywhere.source.downloading "Downloading"> +<!ENTITY https-everywhere.source.filename "Filename"> +<!ENTITY https-everywhere.source.unable_to_download "Unable to download source."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties new file mode 100644 index 0000000..be83831 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/en/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Enable HTTPS Everywhere +https-everywhere.menu.globalDisable = Disable HTTPS Everywhere +https-everywhere.menu.enableDisable = Enable / Disable Rules +https-everywhere.menu.noRules = (No Rules for This Page) +https-everywhere.menu.unknownRules = (Rules for This Page Unknown) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd new file mode 100644 index 0000000..8564082 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/en/ssl-observatory.dtd @@ -0,0 +1,95 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Details and Privacy Information"> +<!ENTITY ssl-observatory.popup.later "Ask Me Later"> +<!ENTITY ssl-observatory.popup.no "No"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere can detect attacks +against your browser by sending the certificates you receive to the +Observatory. Turn this on?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Should HTTPS Everywhere use the SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Yes"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"It is safe to enable this, unless you use a very +intrusive corporate network:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Safe, unless you use a corporate network with secret intranet server names:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Submit and check certificates signed by non-standard root CAs"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"It is safe (and a good idea) to enable this option, unless you use an intrusive corporate network or Kaspersky antivirus software that monitors your browsing with a TLS proxy and a private root Certificate Authority. If enabled on such a network, this option might publish evidence of which https:// domains were being visited through that proxy, because of the unique certificates it would produce. So we leave it off by default."> + +<!ENTITY ssl-observatory.prefs.anonymous "Check certificates using Tor for anonymity"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Check certificates using Tor for anonymity (requires Tor)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"This option requires Tor to be installed and running"> + +<!ENTITY ssl-observatory.prefs.asn +'When you see a new certificate, tell the Observatory which ISP you are connected to'> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +'This will fetch and send the "Autonomous System number" of your network. This will help us locate attacks against HTTPS, and to determine whether we have observations from networks in places like Iran and Syria where attacks are comparatively common.'> + +<!ENTITY ssl-observatory.prefs.done "Done"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere can use EFF's SSL Observatory. This does two things: (1) +sends copies of HTTPS certificates to the Observatory, to help us +detect 'man in the middle' attacks and improve the Web's security; and (2) +lets us warn you about insecure connections or attacks on your browser."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"For example, when you visit https://www.something.com, the certificate +received by the Observatory will indicate that somebody visited +www.something.com, but not who visited the site, or what specific page they +looked at. Mouseover the options for further details:"> + +<!ENTITY ssl-observatory.prefs.hide "Hide advanced options"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Check certificates even if Tor is not available"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"We will still try to keep the data anonymous, but this option is less secure"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Submit and check certificates for non-public DNS names"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Unless this option is checked, the Observatory will not record certificates for names that it cannot resolve through the DNS system."> + +<!ENTITY ssl-observatory.prefs.show "Show advanced options"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory Preferences"> + +<!ENTITY ssl-observatory.prefs.use "Use the Observatory?"> +<!ENTITY ssl-observatory.warning.title "WARNING from EFF's SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Show the certificate chain"> +<!ENTITY ssl-observatory.warning.okay "I understand"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory has issued a warning about the HTTPS certificiate(s) for this site:"> +<!ENTITY ssl-observatory.warning.defense "If you are logged in to this site, it may be advisable to change your password once you have a safe connection."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Submit and check self-signed certificates"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"This is recommended; cryptographic problems are especially common in self-signed embedded devices"> diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd new file mode 100644 index 0000000..70456d2 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Acerca de HTTPS Everywhere (HTTPS en cualquier sitio)"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "¡Cifre la Web! Utilice automáticamente la seguridad HTTPS en muchos sitios."> +<!ENTITY https-everywhere.about.version "Versión"> +<!ENTITY https-everywhere.about.created_by "Creado por"> +<!ENTITY https-everywhere.about.librarians "Bibliotecarios de las reglas"> +<!ENTITY https-everywhere.about.thanks "Agradecimientos para"> +<!ENTITY https-everywhere.about.contribute "Si le agrada HTTPS Everywhere (HTTPS en cualquier sitio), podría considerar"> +<!ENTITY https-everywhere.about.donate_tor "donar a Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "es"> +<!ENTITY https-everywhere.about.donate_eff "donar a la Fundación Fronteras Electrónicas (EFF)"> + +<!ENTITY https-everywhere.menu.about "Acerca de HTTPS Everywhere (HTTPS en cualquier sitio)"> +<!ENTITY https-everywhere.menu.observatory "Opciones del Observatorio SSL"> +<!ENTITY https-everywhere.menu.globalEnable "Activar HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Desactivar HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Preferencias de HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Habilitar todo"> +<!ENTITY https-everywhere.prefs.disable_all "Deshabilitar todo"> +<!ENTITY https-everywhere.prefs.reset_defaults "Restablecer configuraciones predeterminadas"> +<!ENTITY https-everywhere.prefs.search "Buscar"> +<!ENTITY https-everywhere.prefs.site "Sitio"> +<!ENTITY https-everywhere.prefs.notes "Notas"> +<!ENTITY https-everywhere.prefs.list_caption "¿Qué reglas de redirección HTTPS deberían aplicarse?"> +<!ENTITY https-everywhere.prefs.enabled "Habilitado"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Puede aprender a escribir sus propias reglas (para añadir soporte para otros sitios web)"> +<!ENTITY https-everywhere.prefs.here_link "aquí"> +<!ENTITY https-everywhere.prefs.toggle "Cambiar"> +<!ENTITY https-everywhere.prefs.reset_default "Restablecer configuración predeterminada"> +<!ENTITY https-everywhere.prefs.view_xml_source "Ver código XML"> + +<!ENTITY https-everywhere.source.downloading "Descargando"> +<!ENTITY https-everywhere.source.filename "Nombre de fichero"> +<!ENTITY https-everywhere.source.unable_to_download "No fue posible descargar el código."> + +<!ENTITY https-everywhere.popup.title "Notificación de HTTPS Everywhere 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "Uups. Está usted usando la versión estable de HTTPS Everywhere, pero podríamos haberle elevado accidentalmente a la versión de desarrollo al publicar la última versión."> +<!ENTITY https-everywhere.popup.paragraph2 "¿Le gustaría volver a la versión estable?"> +<!ENTITY https-everywhere.popup.paragraph3 "Nos encantaría que continuase usando nuestra versión de desarrollo ¡y nos ayudara a hacer HTTPS Everywhere mejor! Podría encontrar que hay unos pocos fallos más aquí y allá, de los que puede informar a 'https-everywhere@eff.org'. Disculpe la inconveniencia, y gracias por usar HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Manténganme en la versión de desarrollo."> +<!ENTITY https-everywhere.popup.revert "Descargar la última versión estable."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties new file mode 100644 index 0000000..8952158 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/es/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Activar HTTPS Everywhere +https-everywhere.menu.globalDisable = Desactivar HTTPS Everywhere +https-everywhere.menu.enableDisable = Habilitar/Deshabilitar reglas +https-everywhere.menu.noRules = (No hay reglas para esta página) +https-everywhere.menu.unknownRules = (No se conocen reglas para esta página) +https-everywhere.toolbar.hint = HTTPS Everywhere no está activo. Puede activarlo sitio por sitio haciendo clic en el icono de la barra de direcciones. +https-everywhere.migration.notification0 = Para implementar esta reparación crucial, esta actualización restablece sus preferencias de reglas de HTTPS Everywhere a los valores predeterminados. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd new file mode 100644 index 0000000..b5ded80 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/es/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detalles e información de privacidad"> +<!ENTITY ssl-observatory.popup.later "Preguntarme luego"> +<!ENTITY ssl-observatory.popup.no "No"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere puede detectar ataques +contra su navegador enviando los certificados que reciba +al Observatorio. ¿Quiere activarlo?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"¿Debe HTTPS Everywhere utilizar el Observatorio SSL?"> + +<!ENTITY ssl-observatory.popup.yes "Sí"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Habilitar esto es seguro, a menos que use +una red corporativa muy intrusiva:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Seguro, a menos que use una red corporativa con nombres de servidores de intranet secretos:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Envía y verifica los certificados firmados por autoridades de certificación raíz (ACs/CAs) no standard"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Es seguro (y una buena idea) habilitar esta opción, a menos que utilice una red corporativa intrusiva o el software antivirus Kaspersky que monitoriza su navegación con un proxy TLS y una Autoridad de Certificación raíz privada. Si se habilita en una red así, esta opción podría evidenciar qué dominios https:// fueron visitados por medio de ese proxy, debido a los certificados únicos que produciría. Por ello viene desactivado por defecto."> + +<!ENTITY ssl-observatory.prefs.anonymous "Verificar certificados utilizando Tor para obtener anonimato"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Verificar certificados utilizando Tor para obtener anonimato (requiere Tor)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Esta opción precisa tener Tor instalado y ejecutandose"> + +<!ENTITY ssl-observatory.prefs.asn +"Al ver un nuevo certificado, comunicar al Observatorio a qué ISP se está conectado"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Esto obtendrá y enviará el "número de Sistema Autónomo" (AS) de su red. Esto nos ayudará a ubicar ataques contra HTTPS, y a determinar si tenemos observaciones desde redes en lugares como Irán o Siria donde los ataques son comparativamente más comunes."> + +<!ENTITY ssl-observatory.prefs.done "Listo"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere puede utilizar el Observatorio SSL de EFF. Esto hace dos cosas: +(1) envía copias de los certificados HTTPS al Observatorio, para ayudarnos +a detectar ataques de 'hombre en el medio' (MitM) y mejorar la seguridad de la Web; y +(2) nos permite advertirle de conexiones inseguras o ataques sobre su navegador."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Por ejemplo, cuando visite https://www.algo.com, el certificado +recibido por el Observatorio indicará que alguien visitó +www.algo.com, pero no quién visitó el sitio, o qué página específica +consultó. Pase el ratón sobre las opciones para mayores detalles:"> + +<!ENTITY ssl-observatory.prefs.hide "Ocultar opciones avanzadas"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Verificar certificados incluso si Tor no está disponible"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Aún trataremos de mantener anónimos los datos, pero esta opción es menos segura"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Enviar y verificar certificados para nombres no públicados en DNS"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"A menos que esta opción esté marcada, el Observatorio no registra certificados para nombres que no pueda resolver a través de DNS."> + +<!ENTITY ssl-observatory.prefs.show "Mostrar opciones avanzadas"> + +<!ENTITY ssl-observatory.prefs.title "Opciones del Observatorio SSL"> + +<!ENTITY ssl-observatory.prefs.use "¿Utilizar el Observatorio?"> +<!ENTITY ssl-observatory.warning.title "ADVERTENCIA del Observatorio SSL de la EFF"> +<!ENTITY ssl-observatory.warning.showcert "Mostrar la cadena del certificado"> +<!ENTITY ssl-observatory.warning.okay "Entendido"> +<!ENTITY ssl-observatory.warning.text "El Observatorio SSL de la EFF ha emitido una advertencia sobre el(los) certificado(s) para este sitio:"> +<!ENTITY ssl-observatory.warning.defense "Si está autentificado en este sitio, sería aconsejable cambiar su contraseña una vez que se vuelva a autentificar de forma segura."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Enviar y verificar certificados auto-firmados"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Esto es recomendable; los problemas de cifrado son especialmente comunes en dispositivos embebidos auto-firmados"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd new file mode 100644 index 0000000..bb7989c --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "HTTPS Everywhere buruz"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Weba enkriptatu! Automatikoki erabili HTTPS segurtasuna leku askotan."> +<!ENTITY https-everywhere.about.version "Bertsioa"> +<!ENTITY https-everywhere.about.created_by "Sortzaileak"> +<!ENTITY https-everywhere.about.librarians "Arau-sorta Liburuzainak"> +<!ENTITY https-everywhere.about.thanks "Eskerrak"> +<!ENTITY https-everywhere.about.contribute "HTTPS Everywhere gustoko baduzu, kontutan har zenezake"> +<!ENTITY https-everywhere.about.donate_tor "Torera dohaintza eman"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "EFFra dohaintza eman"> + +<!ENTITY https-everywhere.menu.about "HTTPS Everywhere buruz"> +<!ENTITY https-everywhere.menu.observatory "SSL Behatokiaren Hobespenak"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere gaitu"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere ezgaitu"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Hobespenak"> +<!ENTITY https-everywhere.prefs.enable_all "Gaitu dena"> +<!ENTITY https-everywhere.prefs.disable_all "Ezgaitu dena"> +<!ENTITY https-everywhere.prefs.reset_defaults "Lehenetsiak berrezarri"> +<!ENTITY https-everywhere.prefs.search "Bilatu"> +<!ENTITY https-everywhere.prefs.site "Lekua"> +<!ENTITY https-everywhere.prefs.notes "Oharrak"> +<!ENTITY https-everywhere.prefs.list_caption "Zein HTTPS berbiderapen arau aplikatu beharko nituzke?"> +<!ENTITY https-everywhere.prefs.enabled "Gaituta"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Zure arau-sortak nola idatzi ikas dezakezu (beste webguneentzako laguntza gehitzeko)"> +<!ENTITY https-everywhere.prefs.here_link "hemen"> +<!ENTITY https-everywhere.prefs.toggle "Aldatu"> +<!ENTITY https-everywhere.prefs.reset_default "Lehenetsia berrezarri"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML Iturria ikusi"> + +<!ENTITY https-everywhere.source.downloading "Deskargatzen"> +<!ENTITY https-everywhere.source.filename "Fitxategi izena"> +<!ENTITY https-everywhere.source.unable_to_download "Ezin izan da iturria deskargatu"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties new file mode 100644 index 0000000..20460eb --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhere gaitu +https-everywhere.menu.globalDisable = HTTPS Everywhere ezgaitu +https-everywhere.menu.enableDisable = Gaitu / Ezgaitu arauak +https-everywhere.menu.noRules = (Araurik ez gune honetarako) +https-everywhere.menu.unknownRules = (Gune honetarako arauak ezezagunak) +https-everywhere.toolbar.hint = HTTPS Everywhere aktibo dago orain. Gunez-gune bere egoera txandakatu dezakezu nabigazio tresna-barrako ikonoan sakatuz. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd new file mode 100644 index 0000000..2936b43 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/eu/ssl-observatory.dtd @@ -0,0 +1,95 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Xehetasunak eta Pribatutasun Informazioa"> +<!ENTITY ssl-observatory.popup.later "Beranduago galdeidazu"> +<!ENTITY ssl-observatory.popup.no "Ez"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywherek zure nabigatzailearen aurkako erasoak antzeman ditzake jaso dituzun ziurtagiriak Behatokira bidaliz. Gaitu hau?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS Everywherek SSL Behatokia erabili beharko luke?"> + +<!ENTITY ssl-observatory.popup.yes "Bai"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Hau gaitzea segurua da, sare korporatibo oso intrusibo bat erabiltzen ez duzun bitartean:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Segurua, sare korporatibo bat intranet zerbitzari izen sekretuekin erabiltzen ez duzun bitartean:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"CA erro ez-estandarrek sinatutako ziurtagiriak egiaztatu eta aurkeztu"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Aukera hau gaitzea segurua (eta ideia ona) da, sare korporatibo intrusibo bat edo TLS proxy batekin eta Ziurtagiri Aginpide erro pribatu batekin zure nabigazioa jarraitzen duen Kaspersky antibirus softwarea erabiltzen ez duzun bitartean. Horrelako sare batean gaitzen baduzu, aukera honek proxy horren bitartez zein https:// domeinu bisitatu diren argitara dezake, sortuko dituen ziurtagiri bakarrengatik. Beraz itzalita uztea lehentsi dugu."> + +<!ENTITY ssl-observatory.prefs.anonymous "Egiaztatu ziurtagiriak Tor anonimotasunerako erabiliz"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Egiaztatu ziurtagiriak Tor anonimotasunerako erabiliz (Torbutton behar du)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Aukera honek Tor eta Torbutton instalatuta izatea behar du"> + +<!ENTITY ssl-observatory.prefs.asn +"Ziurtagiri berri bat ikusten duzunean, Behatokiari zein ISPra konektatuta zauden esan"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Honek zure sarearen "Sistema Autonomo zenbakia" lortu eta bidaliko du. Hau HTTPSren aurkako erasoak aurkitzen lagunduko gaitu, eta erasoak konparatiboki arruntak diren Iran eta Siria bezalako lekuetan behaketak ditugun zehaztu."> + +<!ENTITY ssl-observatory.prefs.done "Eginda"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywherek EFFren SSL Behatokia erabili dezake. Honek bi gauza egiten ditu: (1) +HTTPS ziurtagirien kopiak Behatokira bidaltzen ditu, 'man in the middle' erasoak detektatzen eta Webguneen segurtasuna hobetzen lagun gaitzan; eta (2) +seguruak ez diren konexioetaz edo zure nabigatzailearen aurkako erasoetaz abisa zaitzagun baimentzen digu."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Esate baterako, https://www.zerbait.com bisitatzen duzunean, Behatokiak jasotzen duen ziurtagiriak + norbait www.zerbait.com bisitatu duela adieraziko du, baina ez nork bisitatu duen, edo zehazki zein orri ikusi duen. +Xehetasun gehiagorako pasa ezazu sagua aukeren gainetik:"> + +<!ENTITY ssl-observatory.prefs.hide "Aukera aurreratuak ezkutatu"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Ziurtagiriak egiaztatu Tor eskuragarri ez badago ere"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Oraindik datuak anonimoki mantentzen saiatuko gara, baina aukera hau ez da hain segurua"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"DNS izen ez-publikoentzako ziurtagiriak egiaztatu eta aurkeztu"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Aukera hau gaituta ez dagoen bitartean, Behatokiak DNS sistemaren bitartez ebatzi ezin dituen izenentzako ziurtagiriak ez ditu erregistraruko."> + +<!ENTITY ssl-observatory.prefs.show "Aukera aurreratuak erakutsi"> + +<!ENTITY ssl-observatory.prefs.title "SSL Behatokiaren Hobespenak"> + +<!ENTITY ssl-observatory.prefs.use "Behatokia erabili?"> +<!ENTITY ssl-observatory.warning.title "EFFren SSL Behatokiaren ABISUA"> +<!ENTITY ssl-observatory.warning.showcert "Ziurtagiri katea erakutsi"> +<!ENTITY ssl-observatory.warning.okay "Ulertzen dut"> +<!ENTITY ssl-observatory.warning.text "EFFren SSL Behatokiak leku honen HTTPS ziurtagiri(ar)entzako abisua igorri du:"> +<!ENTITY ssl-observatory.warning.defense "Leku honetan saioa hasi baduzu, konexio seguru bat duzunean zure pasahitza aldatzea komeni da."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Bidali eta egiaztatu norberak-sinatutako ziurtagiriak"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Hau gomendatzen da; arazo kriptografikoak norberak-sinatutako kapsulatutako gailuetan bereziki arruntak dira"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd new file mode 100644 index 0000000..75ea17f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "دربارهی HTTPS همهجا"> +<!ENTITY https-everywhere.about.ext_name "HTTPS همهجا"> +<!ENTITY https-everywhere.about.ext_description "وب را رمزگذاری کنید! از امنیت HTTPS بصورت خودکار برای بسیاری از وبسایتها استفاده کنید."> +<!ENTITY https-everywhere.about.version "نسخه"> +<!ENTITY https-everywhere.about.created_by "نوشتهشده توسط"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "با تشکر از"> +<!ENTITY https-everywhere.about.contribute "اگر شما از HTTPS همهجا راضی هستید، پیشنهاد میکنیم"> +<!ENTITY https-everywhere.about.donate_tor "به Tor کمک مالی کنید."> +<!ENTITY https-everywhere.about.tor_lang_code "fa"> +<!ENTITY https-everywhere.about.donate_eff "به EFF کمک مالی کنید."> + +<!ENTITY https-everywhere.menu.about "دربارهی HTTPS همهجا"> +<!ENTITY https-everywhere.menu.observatory "تنظیمهای رصدخانهی SSL"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS همهجا را فعال کنید"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS همهجا را غیرفعال کنید"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "تنظیمهای HTTPS همهجا"> +<!ENTITY https-everywhere.prefs.enable_all "همهی موارد را فعال کنید"> +<!ENTITY https-everywhere.prefs.disable_all "همهی موارد را غیرفعال کنید"> +<!ENTITY https-everywhere.prefs.reset_defaults "بازگشت به تنظیمهای اولیه"> +<!ENTITY https-everywhere.prefs.search "جستجو"> +<!ENTITY https-everywhere.prefs.site "وبسایت"> +<!ENTITY https-everywhere.prefs.notes "یادداشتها"> +<!ENTITY https-everywhere.prefs.list_caption "کدام روالهای تغییر مسیر HTTPS باید اعمال شوند؟"> +<!ENTITY https-everywhere.prefs.enabled "فعال"> +<!ENTITY https-everywhere.prefs.ruleset_howto "شما میتوانید یادبگیرید که مجموعه روالهای خود را بنویسید (تا از وبسایتهای دیگر پشتیبانی کنید)"> +<!ENTITY https-everywhere.prefs.here_link "اینجا"> +<!ENTITY https-everywhere.prefs.toggle "تغییر"> +<!ENTITY https-everywhere.prefs.reset_default "بازگشت به تنظیمهای اولیه"> +<!ENTITY https-everywhere.prefs.view_xml_source "مشاهده منبع XML"> + +<!ENTITY https-everywhere.source.downloading "در حال دانلود"> +<!ENTITY https-everywhere.source.filename "نام فایل"> +<!ENTITY https-everywhere.source.unable_to_download "امکان دانلود منبع وجود ندارد."> + +<!ENTITY https-everywhere.popup.title "آگهی از همه جا HTTPS نسخه 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "اوه! شما از نسخه پایدار «همه جا HTTPS» استفاده می کردید، اما احتمالا ما به طور تصادفی در حین آخرین انتشار، شما را به نسخه در حال توسعه ارتقا دادیم. "> +<!ENTITY https-everywhere.popup.paragraph2 "آیا مایلید به نسخهی پایدار بازگردید؟"> +<!ENTITY https-everywhere.popup.paragraph3 "ما خوشحال می شویم اگر شما همچنان از آخرین نسخهی در حال توسعه منتشر شده ما استفاده کنید! شاید اینجا و آنجا به یکی دو مشکل برخورد کنید که می توانید آنها را به آدرس https-everywhere@eff.org اطلاع دهید. با عرض پوزش به خاطر مشکلات احتمالی و با تشکر به خاطر استفاده از «همه جا HTTPS»."> +<!ENTITY https-everywhere.popup.keep "آخرین نسخه پایدار را داونلود کن"> +<!ENTITY https-everywhere.popup.revert "آخرین نسخه پایدار را داونلود کن"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties new file mode 100644 index 0000000..7e7959c --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS همهجا را فعال کنید +https-everywhere.menu.globalDisable = HTTPS همهجا را غیرفعال کنید +https-everywhere.menu.enableDisable = فعال/غیر فعال کردن قوانین +https-everywhere.menu.noRules = (هیچ قانونی برای این صفحه وجود ندارد) +https-everywhere.menu.unknownRules = (قوانین مربوط به این صفحه ناشناخته است) +https-everywhere.toolbar.hint = HTTPS همهجا فعال شد. میتوانید آن را برای هر سایتی که خواستید فعال یا غیرفعال کنید. کافیست روی نمایه آن در نوار آدرس کلیک کنید. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd new file mode 100644 index 0000000..3bec572 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fa/ssl-observatory.dtd @@ -0,0 +1,91 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "جزییات و حفظ حریم شخصی"> +<!ENTITY ssl-observatory.popup.later "بعدا بپرس"> +<!ENTITY ssl-observatory.popup.no "خیر"> + +<!ENTITY ssl-observatory.popup.text "HTTPS همهجا میتواند جمله به مرورگر شما را از طریق ارسال گواهینامههایی که شما دریافت میکنید به رصدگر کشف کند. آیا میخواهید این امکان فعال شود؟"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"آیا HTTPS همهجا باید از رصدگر SSL استفاده کند؟"> + +<!ENTITY ssl-observatory.popup.yes "بله"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"فعالکردن این گزینه امن است، مگر اینکه شما از یک شبکهی کاری با درجهی نظارت بالا استفاده کنید:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"امن، مگر اینکه شما از یک شبکهی کاری با نامهای مخفی در شبکهی داخلی استفاده کنید:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"گواهینامههای امضا شده توسط نهادهای تایید (CA) غیراستاندارد را برای بررسی ارسال کنید. "> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"این یک انتخاب امن (و یک پیشنهاد خوب) است که شما این گزینه را فعال کنید، مگر اینکه شما از یک شبکهی کاری با درجهی نظارت بالا استفاده کنید یا نرمافزار ضدویروس کاسپرسکی، که رفتار شما روی وب را بهکمک TLS proxy و یک نهاد تایید (CA) خصوصی بازرسی میکند، روی کامپیوتر شما نصب شدهباشد. اگر روی شبکهای مانند آنچه گفتهشد قرار دارید، این گزینه میتوانند این تصور را ایجاد کند که آدرسهای https:// از طریق یک پروکسی باز شدهاند. این بهدلیل گواهینامههای منحصربهفردی است که در این فرایند تولید میشوند. بنابراین، ما این گزینه را بصورت پیشنهاده خاموش کردهایم."> + +<!ENTITY ssl-observatory.prefs.anonymous "استفاده از Tor برای مخفی کردن هویت در زمان آزمایش گواهینامه"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"استفاده از Tor برای مخفی کردن هویت در زمان آزمایش گواهینامه (نیاز به Torbutton دارد)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"برای استفاده از این امکان لازم است Tor و Torbutton نصب شدهباشند"> + +<!ENTITY ssl-observatory.prefs.asn +"ارسال نام ISPی که ارتباط را ایجاد کرده است به رصدگر زمانی که یک گواهینامهی جدید دیده شد"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"این گزینه محتوای Autonomous System number شما را بازیابی کرده و ارسال خواهد کرد. این اطلاع به ما کمک خواهد کرد که حمله علیه HTTPS را مکانیابی کنیم و از این طریق ما خواهیم دانست که آیا این مشاهدات به شبکههایی در مناطقی نظیر ایران و سوریه مربوط هستند یا خیر. حملاتی نظیر آنچه گفتهشد در این مناطق نسبتا معمول هستند."> + +<!ENTITY ssl-observatory.prefs.done "انجام شد"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS همهجا میتواند از رصدگر SSLی که توسط EFF اداره میشود استفاده کند. این امکان منتهی به دو اقدام میشود. ۱- به اینترتیب نسخههایی از گواهینامههای HTTPS به رصدگر فرستاده میشوند. این مساله به ما این امکان را میدهد که حملات «مردی در میان» را کشف کنیم و به اینترتیب به امنیت وب کمک کنیم. ۲- ما این امکان را خواهیم داشت که به شما دربارهی ارتباطات ناامن یا حملات به مرورگر شما هشدار بدهیم."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"برای مثال، زمانی که شما صفحهی https://www.something.com را بازدید میکنید، گواهینامهای که برای رصدگر ارسال میشود نشان خواهد داد که کسی از www.something.com بازدید کردهاست، اما اینکه دقیقا چهکسی یا از چه صفحهای بازدید کردهاست برای رصدگر دانسته نخواهد بود. موشواره را روی این گزینه ببرید تا اطلاعات بیشتری در این زمینه بگیرید:"> + +<!ENTITY ssl-observatory.prefs.hide "مخفیکردن گزینههای پیشرفته"> + +<!ENTITY ssl-observatory.prefs.nonanon +"آزمایش گواهینامه حتی اگر Tor نیز نصب نشدهباشد"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"ما همچنان تلاش خواهیم کرد که اطلاعات شما را محرمانه نگهداریم، اما این گزینه امنیت کمتری دارد"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"ارسال و آزمایش گواهینامهی برای نامهای DNS غیرعمومی"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"اگر این گزینه انتخاب نشدهباشد، رصدگر اطلاعات گواهینامههایی که نام آنها از طریق DNS تعیینتکلیف نشود را ذخیره نخواهد کرد."> + +<!ENTITY ssl-observatory.prefs.show "نمایش گزینههای پیشرفته"> + +<!ENTITY ssl-observatory.prefs.title "تنظیمهای رصدگر SSL"> + +<!ENTITY ssl-observatory.prefs.use "آیا باید از رصدگر استفاده شود؟"> +<!ENTITY ssl-observatory.warning.title "هشدار از رصدگر SSLی که توسط EFF اداره میشود"> +<!ENTITY ssl-observatory.warning.showcert "نمایش زنجیرهی گواهینامه"> +<!ENTITY ssl-observatory.warning.okay "میفهمم"> +<!ENTITY ssl-observatory.warning.text "رصدگر SSLی که توسط EFF اداره میشود برای گواهینامه(ها)ی HTTPS این وبسایت هشدار صادر کردهاست:"> +<!ENTITY ssl-observatory.warning.defense "اگر شما در این وبسایت لاگین کردهاید، پیشنهاد میکنیم که زمانی که با یک اتصال امن وارد شدید رمز ورود خود را تغییر دهید."> + +<!ENTITY ssl-observatory.prefs.self_signed +"ارسال و گواهینامه های خود-امضا را بررسی کن"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"این پیشنهاد میشه؛ مشکلات رمزنگاری بویژه در دستگاههای تعبیه شده خود-امضا رایج هستند"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd new file mode 100644 index 0000000..91da15b --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Tietoja HTTPS Everywheresta"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Salaa Web! Käytä automaattisesti HTTPS-suojausta useilla sivustoilla."> +<!ENTITY https-everywhere.about.version "Versio"> +<!ENTITY https-everywhere.about.created_by "Tekijät"> +<!ENTITY https-everywhere.about.librarians "Sääntöjen hallinnoijat"> +<!ENTITY https-everywhere.about.thanks "Kiitokset"> +<!ENTITY https-everywhere.about.contribute "Jos pidät HTTPS Everywheresta, sinun on mahdollista"> +<!ENTITY https-everywhere.about.donate_tor "lahjoittaa Torille"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "lahjoittaa EFFille"> + +<!ENTITY https-everywhere.menu.about "Tietoja HTTPS Everywheresta"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatoryn asetukset"> +<!ENTITY https-everywhere.menu.globalEnable "Ota HTTPS Everywhere käyttöön"> +<!ENTITY https-everywhere.menu.globalDisable "Poista HTTPS Everywhere käytöstä"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywheren asetukset"> +<!ENTITY https-everywhere.prefs.enable_all "Ota kaikki käyttöön"> +<!ENTITY https-everywhere.prefs.disable_all "Poista kaikki käytöstä"> +<!ENTITY https-everywhere.prefs.reset_defaults "Palauta oletusarvoihin"> +<!ENTITY https-everywhere.prefs.search "Hae"> +<!ENTITY https-everywhere.prefs.site "Sivusto"> +<!ENTITY https-everywhere.prefs.notes "Huomautus"> +<!ENTITY https-everywhere.prefs.list_caption "Mitä HTTPS-uudelleenohjauksia tulisi käyttää?"> +<!ENTITY https-everywhere.prefs.enabled "Käytössä"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Voit opetella kirjoittamaan omia sääntöjäsi (laajentaaksesi muiden sivustojen tukea)"> +<!ENTITY https-everywhere.prefs.here_link "täällä"> +<!ENTITY https-everywhere.prefs.toggle "Vaihda tilaa"> +<!ENTITY https-everywhere.prefs.reset_default "Palauta oletusasetus"> +<!ENTITY https-everywhere.prefs.view_xml_source "Katso XML-lähde"> + +<!ENTITY https-everywhere.source.downloading "Ladataan"> +<!ENTITY https-everywhere.source.filename "Tiedostonimi"> +<!ENTITY https-everywhere.source.unable_to_download "Lähteen lataaminen epäonnistui."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties new file mode 100644 index 0000000..ada876f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Ota HTTPS Everywhere käyttöön +https-everywhere.menu.globalDisable = Poista HTTPS Everywhere käytöstä +https-everywhere.menu.enableDisable = Ota sääntöjä käyttöön / poista käytöstä +https-everywhere.menu.noRules = (Tälle sivulle ei ole sääntöjä) +https-everywhere.menu.unknownRules = (Sivun sääntöä ei tunnistettu) +https-everywhere.toolbar.hint = HTTPS Everywhere on käytössä. Voit valita, millä sivustoilla ohjelmaa käytetään, kun napsautat osoiterivissä olevaa kuvaketta. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd new file mode 100644 index 0000000..2d53a25 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fi/ssl-observatory.dtd @@ -0,0 +1,91 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Lisä- ja yksityisyystiedot"> +<!ENTITY ssl-observatory.popup.later "Kysy myöhemmin"> +<!ENTITY ssl-observatory.popup.no "Ei"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere voi tunnistaa selaimeen kohdistuvat hyökkäykset lähettämällä varmenteet Observatoryyn. Otetaanko toiminto käyttöön?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Tulisiko HTTPS Everywheren käyttää SSL Observatorya?"> + +<!ENTITY ssl-observatory.popup.yes "Kyllä"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Käyttöön ottaminen on turvallista, jos et käytä hyvin tunkeilevaa yritysverkkoa:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Turvallista, jos et käytä yritysverkkoa, jonka intranetin palvelinten nimet on salattu:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Lähetä ja tarkista varmenteet, jotka on allekirjoittanut epävirallinen päämyöntäjä"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"On turvallista (ja hyvä idea) valita tämä, jos et käytä tunkeilevaa yritysverkkoa tai Kasperskyn viruksentorjuntaohjelmaa, joka seuraa selaamista TLS-välipalvelimen ja yksityisen varmenteen päämyöntäjän avulla. Tällaisessa verkossa tämä asetus voi antaa vihjeitä siitä, missä HTTPS-verkkotunnuksissa välipalvelimen avulla on vierailtu. Vihjeiden syynä ovat niiden tuottamat ainutlaatuiset varmenteet. Tästä syystä valinta ei ole päällä oletusasetuksena."> + +<!ENTITY ssl-observatory.prefs.anonymous "Tarkista varmenteet anonyymisti Torilla"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Tarkista varmenteet anonyymisti Torilla (vaatii Torin)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Tämä valinta edellyttää, että Tor on asennettu ja käytössä."> + +<!ENTITY ssl-observatory.prefs.asn +"Kun näet uuden varmenteen, kerro Observatorylle, mihin palveluntarjoajaan olet yhteydessä"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Tämä noutaa ja lähettää verkkosi autonomisen järjestelmän numerotunnuksen (ASN). Näin pystymme paikantamaan HTTPS:ään kohdistuvat hyökkäykset ja voimme selvittää, ovatko havainnot Iranin ja Syyrian kaltaisten alueiden verkoista, joissa hyökkäykset ovat yleisiä."> + +<!ENTITY ssl-observatory.prefs.done "Valmis"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere voi hyödyntää EFFin SSL Observatorya. Sillä on kaksi tehtävää: (1) Se lähettää HTTPS-varmenteiden kopiot Observatoryyn, jotta pystyisimme tunnistamaan epärehellisen välittäjän (MitM) hyökkäykset ja edistämään WWW:n turvallisuutta. (2) Sen avulla voimme varoittaa sinua turvattomista yhteyksistä ja selaimeen kohdistuvista hyökkäyksistä."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Jos esimerkiksi käyt sivustolla https://www.something.com, Observatoryn vastaanottama varmenne kertoo, että joku on vieraillut osoitteessa www.something.com. Varmenne ei kuitenkaan kerro, kuka on käynyt sivustolla ja mitä tiettyjä sivuja on katseltu. Saat lisätietoja, kun kohdistat hiiren osoittimen valinnan päälle:"> + +<!ENTITY ssl-observatory.prefs.hide "Piilota lisäasetukset"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tarkista varmenteet, vaikka Tor ei ole käytössä"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Yritämme pitää tiedot nimettömänä, mutta tämä valinta on aina turvattomampi."> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Lähetä ja tarkista yksityisten DNS-nimien varmenteet"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Jos tätä valintaa ei ole valittu, Observatory ei kerää varmenteita, joiden nimiä se ei pysty selvittämään nimipalvelujärjestelmällä (DNS)."> + +<!ENTITY ssl-observatory.prefs.show "Näytä lisäasetukset"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatoryn asetukset"> + +<!ENTITY ssl-observatory.prefs.use "Käytä Observatorya?"> +<!ENTITY ssl-observatory.warning.title "VAROITUS EFFin SSL Observatorylta"> +<!ENTITY ssl-observatory.warning.showcert "Näytä palvelimen varmenneketju"> +<!ENTITY ssl-observatory.warning.okay "Ymmärrän"> +<!ENTITY ssl-observatory.warning.text "EFFin SSL Observatory on varoittanut tämän sivuston yhdestä tai useammasta HTTPS-varmenteesta:"> +<!ENTITY ssl-observatory.warning.defense "Jos olet kirjautunut sivustolle, voi olla suositeltavaa vaihtaa salasana, sitten kun käytössäsi on turvallinen yhteys."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Lähetä ja tarkista sivuston itsensä allekirjoittama varmenne"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Tämä on suositeltavaa. Salaukseen liittyvät ongelmat ovat hyvin yleisiä itsensä allekirjoittaneissa sulautetuissa järjestelmissä."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd new file mode 100644 index 0000000..bae723d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "À propos de HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Chiffrer le Web ! Utilisez HTTPS automatiquement avec de nombreux sites."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Créé par"> +<!ENTITY https-everywhere.about.librarians "Bibliothécaires de règles"> +<!ENTITY https-everywhere.about.thanks "Merci à"> +<!ENTITY https-everywhere.about.contribute "Si vous aimez HTTPS Everywhere, vous pouvez"> +<!ENTITY https-everywhere.about.donate_tor "Donner à Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Donner à l'EFF"> + +<!ENTITY https-everywhere.menu.about "À propos de HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Préférences de l'Observatoire SSL "> +<!ENTITY https-everywhere.menu.globalEnable "Activer HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Désactiver HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Préférences de HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Tout activer"> +<!ENTITY https-everywhere.prefs.disable_all "Tout désactiver"> +<!ENTITY https-everywhere.prefs.reset_defaults "Revenir aux paramètres par défaut"> +<!ENTITY https-everywhere.prefs.search "Recherche"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Notes"> +<!ENTITY https-everywhere.prefs.list_caption "Quelles règles de redirection HTTPS devraient s'appliquer ?"> +<!ENTITY https-everywhere.prefs.enabled "Activé"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Vous pouvez apprendre à rédiger vos propres règles de redirection (pour la prise en charge d'autres sites Internet)"> +<!ENTITY https-everywhere.prefs.here_link "Ici"> +<!ENTITY https-everywhere.prefs.toggle "Retour"> +<!ENTITY https-everywhere.prefs.reset_default "Revenir aux paramètres par défaut."> +<!ENTITY https-everywhere.prefs.view_xml_source "Regarder le code source XML"> + +<!ENTITY https-everywhere.source.downloading "Telécharger"> +<!ENTITY https-everywhere.source.filename "Nom du fichier"> +<!ENTITY https-everywhere.source.unable_to_download "Impossible de télécharger le code source."> + +<!ENTITY https-everywhere.popup.title "Notification de HTTPS Everywhere 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "Oups. Vous utilisiez la version stable de HTTPS Everywhere, mais notre dernière version a pu accidentellement effectuer la mise à jour vers la version de développement."> +<!ENTITY https-everywhere.popup.paragraph2 "Est-ce que vous souhaitez revenir vers la version stable ?"> +<!ENTITY https-everywhere.popup.paragraph3 "Nous aimerions vous voir continuer à utiliser notre version de développement et à nous aider à améliorer HTTPS Everywhere ! Vous allez peut-être trouver des bugs ça et là, que vous pouvez rapporter (en anglais) en écrivant à https-everywhere@eff.org. Désolé pour le dérangement, et merci d'utiliser HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Rester sur la version de développement"> +<!ENTITY https-everywhere.popup.revert "Télécharger la dernière version stable"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties new file mode 100644 index 0000000..a64e511 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Activer HTTPS Everywhere +https-everywhere.menu.globalDisable = Désactiver HTTPS Everywhere +https-everywhere.menu.enableDisable = Activer / Désactiver les règles +https-everywhere.menu.noRules = (Aucune règle pour cette page) +https-everywhere.menu.unknownRules = (Règles inconnues pour cette page) +https-everywhere.toolbar.hint = HTTPS Everywhere est désormais actif. Vous pouvez l'activer sur les sites au cas par cas en cliquant sur l'icône dans la barre d'adresse. +https-everywhere.migration.notification0 = Afin d'appliquer un correctif crucial, cette mise à jour réinitialise vos règles de préférences HTTPS Everywhere, à leurs valeurs par défaut. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd new file mode 100644 index 0000000..0d4d394 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/fr/ssl-observatory.dtd @@ -0,0 +1,90 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Informations relatives à la vie privée"> +<!ENTITY ssl-observatory.popup.later "Plus tard"> +<!ENTITY ssl-observatory.popup.no "Non"> + +<!ENTITY ssl-observatory.popup.text " HTTPS Everywhere peut détecter les attaques contre votre navigateur en adressant les certificats reçus à l'Observatoire. Souhaitez-vous activer cette fonctionnalité ?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Activer l'usage de l'Observatoire SSL par HTTPS Everywhere ?"> + +<!ENTITY ssl-observatory.popup.yes "Oui"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Cette option est sécurisée, sauf si vous vous connectez via un réseau d'entreprise très intrusif :"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Cette option est sécurisée, sauf si vous passez par un réseau d'entreprise qui comporte des serveurs Intranet masqués :"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Soumettre et vérifier les certificats signés par des autorités inhabituelles"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +" Il est sûr (et c'est une bonne idée) d'activer cette option, sauf si vous utilisez un réseau d'entreprise intrusif ou le logiciel antivirus Kaspersky qui surveille votre navigation avec un proxy TLS et une autorité racine privée du certificat. Si elle est activée sur un tel réseau, cette option pourrait publier des preuves que tel ou tel domaine a été visité en https:// à travers ce proxy, à cause des certificats uniques qu'elle produirait. Nous la désactivons donc par défaut"> + +<!ENTITY ssl-observatory.prefs.anonymous "Vérifier les certificats et utiliser l'outil d'anonymat TOR"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Vérifier les certificats et utiliser l'outil d'anonymat TOR (installation du TORbutton indispensable)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Cette option requiert l'installation de TOR et du Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Quand vous voyez un nouveau certificat, indiquez à l'Observatoire quel FAI vous utilisez maintenant."> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Cette option récupérera et rapportera le « Autonomous System number » de votre réseau. Cela nous aidera à localiser les attaques contre HTTPS, et savoir si nous avons des observations à partir de réseaux dans des pays comme l'Iran et la Syrie où ces attaques sont fréquentes."> + +<!ENTITY ssl-observatory.prefs.done "OK"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere peut également faire appel à l'Observatoire SSL de l'EFF. Cela permet deux choses: (1) +cela adresse les copies des certificats HTTPS à l'Observatoire, ce qui permet de détecter les attaques de type Homme du milieu et d'améliorer la sécurité globale de l'Internet ; et (2) +cela nous permet de mieux vous informer quant aux connexions non sécurisées et aux attaques sur votre navigateur."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Par exemple, si vous visitez https://www.something.com, le certificat reçu par l'Observatoire indiquera que quelqu'un a visité +www.something.com, mais pas qui a visité le site, ou quelle page a été lue. Passez votre souris sur les options pour plus d'informations:"> + +<!ENTITY ssl-observatory.prefs.hide "Cacher les options avancées"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Vérifier les certificats même si TOR n'est pas disponible"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Nous essaierons toujours de faire en sorte que les données restent confidentielles, mais cette option est moins sécurisée"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Soumettre et vérifier les certificats des DNS privés"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Si cette option est activée, l'Observatoire conservera les certificats des domaines qui ne peuvent être résolus par le système DNS public"> + +<!ENTITY ssl-observatory.prefs.show "Options avancées"> + +<!ENTITY ssl-observatory.prefs.title "Préférences de l'Observatoire SSL"> + +<!ENTITY ssl-observatory.prefs.use "Utiliser l'Observatoire ?"> +<!ENTITY ssl-observatory.warning.title "Avertissement de l'Observatoire SSL"> +<!ENTITY ssl-observatory.warning.showcert "Montrer l'empreinte du certificat"> +<!ENTITY ssl-observatory.warning.okay "Je comprends"> +<!ENTITY ssl-observatory.warning.text "L'Observatoire SSL de l'EFF a publié un avertissement sur les certificats SSL émis par ce site :"> +<!ENTITY ssl-observatory.warning.defense "Si vous vous êtes connecté à ce site, vous devriez changer de mot de passe dès que vous retrouvez une connexion sécurisée."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Envoyer et vérifier des certificats auto-signés"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Ceci est recommandé ; les problèmes cryptographiques sont particulièrement fréquents dans les systèmes embarqués auto-signés"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd new file mode 100644 index 0000000..dd33377 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "אודות HTTPS בכל מקום"> +<!ENTITY https-everywhere.about.ext_name "HTTPS בכל מקום"> +<!ENTITY https-everywhere.about.ext_description "הצפן את הרשת! השתמש ב-HTTPS אוטומטית"> +<!ENTITY https-everywhere.about.version "גרסה"> +<!ENTITY https-everywhere.about.created_by "נבנה על ידי"> +<!ENTITY https-everywhere.about.librarians "ספרני מערכת כללים"> +<!ENTITY https-everywhere.about.thanks "תודות ל"> +<!ENTITY https-everywhere.about.contribute "אם אהבת את HTTPS בכל מקום, אולי תרצה"> +<!ENTITY https-everywhere.about.donate_tor "לתרום ל-Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "אנגלית"> +<!ENTITY https-everywhere.about.donate_eff "תרומה לEFF"> + +<!ENTITY https-everywhere.menu.about "אודות HTTPS בכל מקום"> +<!ENTITY https-everywhere.menu.observatory "העדפות SSL Observatory"> +<!ENTITY https-everywhere.menu.globalEnable "הפעל את HTTPS בכל מקום"> +<!ENTITY https-everywhere.menu.globalDisable "השבת את HTTPS בכל מקום"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "הגדרות HTTPS בכל מקום"> +<!ENTITY https-everywhere.prefs.enable_all "הפעל הכל"> +<!ENTITY https-everywhere.prefs.disable_all "השבת הכל"> +<!ENTITY https-everywhere.prefs.reset_defaults "איפוס לברירת מחדל"> +<!ENTITY https-everywhere.prefs.search "חפש"> +<!ENTITY https-everywhere.prefs.site "אתר"> +<!ENTITY https-everywhere.prefs.notes "פתקים"> +<!ENTITY https-everywhere.prefs.list_caption "אילו הגדרות ניתוב HTTPS ליישם?"> +<!ENTITY https-everywhere.prefs.enabled "פועל"> +<!ENTITY https-everywhere.prefs.ruleset_howto "אתה יכול ללמוד איך לכתוב rulesets משלך (להוספת תמיכה באתרי אינטרנט אחרים)"> +<!ENTITY https-everywhere.prefs.here_link "פה"> +<!ENTITY https-everywhere.prefs.toggle "Toggle"> +<!ENTITY https-everywhere.prefs.reset_default "החזר לברירת מחדל"> +<!ENTITY https-everywhere.prefs.view_xml_source "הצג מקור XML"> + +<!ENTITY https-everywhere.source.downloading "מוריד"> +<!ENTITY https-everywhere.source.filename "שם הקובץ"> +<!ENTITY https-everywhere.source.unable_to_download "הורדת המקור נכשלה"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties new file mode 100644 index 0000000..434edd3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/he/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = להפעיל את HTTPS Everywhere +https-everywhere.menu.globalDisable = להשבית את HTTPS Everywhere +https-everywhere.menu.enableDisable = להפעיל/להשבית כללים +https-everywhere.menu.noRules = (אין כללים עבור דף זה) +https-everywhere.menu.unknownRules = (כללים לדף זה אינם ידועים) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd new file mode 100644 index 0000000..ab3ed77 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/he/ssl-observatory.dtd @@ -0,0 +1,92 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "פרטים ומידע אישי"> +<!ENTITY ssl-observatory.popup.later "שאל אותי אחר כך"> +<!ENTITY ssl-observatory.popup.no "לא"> + +<!ENTITY ssl-observatory.popup.text " "> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"האם כדאי ש- HTTPS בכל מקום ישתמש בתצפית SSL?"> + +<!ENTITY ssl-observatory.popup.yes "כן"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"בטוח לאפשר זאת, אלא אם כן אתה משתמש ברשת תאגידית פולשנית מאוד:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"בטוח, אלא אם כן אתה משתמש ברשת תאגידית עם שמות שרתים סודיים ברשת זמנית:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"שלח ובדוק אישורים החתומים על ידי רשויות האישורים העליונות הלא רגילות"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"זה בטוח (ורעיון טוב) לאפשר אפשרות זאת, אלא אם כן אתה משתמש ברשת תאגידית פולשנית או תוכנת אנטיוירוס קספרסקי שמנטרת את הגלישה שלך עם פרוקסי TLS ורשות אישורים עליונה אישית. אם מאופשרת רשת כזאת, אפשרות זאת יכולה לפרסם עדות של אילו כתובות שמתחילות ב https:// בוקרו דרך הפרוקסי הזה, בשל האישור המיוחד שהוא מייצר. לכן נשאיר זאת כבוי כברירת מחדל."> + +<!ENTITY ssl-observatory.prefs.anonymous "בדוק אישורים לשימוש ב TOR באנונימיות"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"בדוק אישורים לשימוש ב Tor באנונימיות (דורש Tor )"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"אפשרות זאת דורשת ש Tor יותקן וירוץ "> + +<!ENTITY ssl-observatory.prefs.asn +"כאשר אתה רואה אישור חדש, תגיד למצפה לאיזה ספק אתה מחובר"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"זה מביא ושולח את "מספר המערכת האנונימי" של הרשת שלך. זה יעזור לנו למקם התקפות נגד HTTPS, ולקבוע האם יש לנו תצפיות מרשתות במקומות כמו איראן וסוריה שבהם התקפות נפוצות באופן השוואתי."> + +<!ENTITY ssl-observatory.prefs.done "הושלם"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS בכל מקום יכול להשתמש במצפה SSL של EFF. זה מקיים שני דברים: +(1) שולח עותקים של אישורי HTTPS למצפה, כדי לעזור לנו לגלות התקפות 'איש באמצע' ולשפר את אבטחת הרשת; ו (2) מאפשר לנו להזהיר אותך מפני חיבורים לא מאובטחים או התקפות על הדפדפן שלך."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"לדוגמא, כאשר אתה מבקר ב https://www.something.com, האישור שהתקבל על ידי המצפה יציין שמישהו ביקר ב www.something.com, אבל לא מי ביקר באתר, או על איזה עמוד ספציפי הם הסתכלו. תעבור עם העכבר על האפשרויות בשביל פרטים נוספים:"> + +<!ENTITY ssl-observatory.prefs.hide "הסתר אפשרויות מתקדמות"> + +<!ENTITY ssl-observatory.prefs.nonanon +"בדוק אישורים אפילו אם Tor לא זמין"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"עדיין ננסה לשמור את הנתונים אנונימיים, אבל אפשרות זאת פחות מאובטחת"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"שלח ובדוק אישורים עבור שמות DNS לא ציבוריים"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"אלא אם כן האפשרות הזאת נבדקה, המצפה לא יתעד אישורים עבור שמות שהוא לא יכול לגלות דרך מערכת ה DNS "> + +<!ENTITY ssl-observatory.prefs.show "הראה אפשרויות מתקדמות"> + +<!ENTITY ssl-observatory.prefs.title "עדיפויות מצפה SSL"> + +<!ENTITY ssl-observatory.prefs.use "האם להשתמש במצפה?"> +<!ENTITY ssl-observatory.warning.title "אזהרה ממצפה SSL של EFF"> +<!ENTITY ssl-observatory.warning.showcert "הראה את שרשרת האישורים"> +<!ENTITY ssl-observatory.warning.okay "אני מבין"> +<!ENTITY ssl-observatory.warning.text "מצפה SSL של EFF עוסק באזהרה מפני האישור(ים) של HTTPS עבור האתר הזה:"> +<!ENTITY ssl-observatory.warning.defense "אם נרשמת לאתר הזה, כדאי לשנות את הסיסמא שלך ברגע שיש לך חיבור בטוח."> + +<!ENTITY ssl-observatory.prefs.self_signed +"שלח ובדוק את האישורים החתומים על ידך"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"זה מומלץ; בעיות הצפנה נפוצות במיוחד בכלים משובצים חתומים עצמית"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd new file mode 100644 index 0000000..87a30bc --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "About HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Created by"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "Thanks to"> +<!ENTITY https-everywhere.about.contribute "If you like HTTPS Everywhere, you might consider"> +<!ENTITY https-everywhere.about.donate_tor "Donating to Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Donating to EFF"> + +<!ENTITY https-everywhere.menu.about "About HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory Preferences"> +<!ENTITY https-everywhere.menu.globalEnable "Enable HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Disable HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> +<!ENTITY https-everywhere.prefs.enable_all "Enable All"> +<!ENTITY https-everywhere.prefs.disable_all "Disable All"> +<!ENTITY https-everywhere.prefs.reset_defaults "Reset to Defaults"> +<!ENTITY https-everywhere.prefs.search "Search"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Notes"> +<!ENTITY https-everywhere.prefs.list_caption "Which HTTPS redirection rules should apply?"> +<!ENTITY https-everywhere.prefs.enabled "Enabled"> +<!ENTITY https-everywhere.prefs.ruleset_howto "You can learn how to write your own rulesets (to add support for other web sites)"> +<!ENTITY https-everywhere.prefs.here_link "here"> +<!ENTITY https-everywhere.prefs.toggle "Toggle"> +<!ENTITY https-everywhere.prefs.reset_default "Reset to Default"> +<!ENTITY https-everywhere.prefs.view_xml_source "View XML Source"> + +<!ENTITY https-everywhere.source.downloading "Downloading"> +<!ENTITY https-everywhere.source.filename "Filename"> +<!ENTITY https-everywhere.source.unable_to_download "Unable to download source."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties new file mode 100644 index 0000000..7f5aca3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Omogući HTTPS Svuda +https-everywhere.menu.globalDisable = Onemogući HTTPS Svuda +https-everywhere.menu.enableDisable = Omogući / Onemogući Pravila +https-everywhere.menu.noRules = (Nema Pravila za Ovu Stranicu) +https-everywhere.menu.unknownRules = (Pravila za Ovu Stranicu Nepoznata) +https-everywhere.toolbar.hint = HTTPS Svuda je aktivan. Možete ga prebacivati od stranice do stranice tako da kliknete na ikonu na adresnoj traci. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd new file mode 100644 index 0000000..430846f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hr/ssl-observatory.dtd @@ -0,0 +1,98 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Pojedinosti i informacije privatnosti"> +<!ENTITY ssl-observatory.popup.later "Pitaj me kasnije"> +<!ENTITY ssl-observatory.popup.no "Ne"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere može otkriti napade +na vaš preglednik šaljući certifikate koje primite +Opservatoriju. Želite li uključiti ovo?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Treba li HTTPS Everywhere koristiti SSL Opservatorij?"> + +<!ENTITY ssl-observatory.popup.yes "Da"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Sigurnije je da omogućite ovo, osim ako koristite jako ometajuću korporativnu mrežu:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Sigurno, osim ako koristite korporativnu mrežu sa tajnim internet nazivima poslužitelja:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Prijavi i provjeri certifikate potpisanim od ne-standardnih korijenskih certifikata"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Sigurno je (i dobra je ideja) da omogućite ovu mogućnost, osim ako koristite ometajuću korporativnu mrežu ili Kaspersky antivirusni softver koji nadgleda vaše surfanje sa TLS proxyjem i privatnim korijenskim certifikatima ovlasti. Ako je omogućeno na takvoj mreži, ova mogućnost bi mogla objaviti dokaz koja https:// domena je bila posjećena kroz taj proxy, zbog jedinstvenog certifikata kojeg bi proizvela. Stoga je zadano, ostavljena isključena."> + +<!ENTITY ssl-observatory.prefs.anonymous "Provjeri certifikate koristeći Tor za anonimnost"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Provjeri certifikate koristeći Tor za anonimnost (zahtijeva Tortipku)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Ova mogućnost zahtijeva instalirani Tor i Tortipku"> + +<!ENTITY ssl-observatory.prefs.asn +"Kada vidite novi certifikat, recite Opservatoriju na koji ste ISP spojeni"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Ovo će dohvatiti i poslati "Autonomni broj sustava" vaše mreže. To će nam pomoći u lociranju napada na HTTPS i u otkrivanju kada nas promatraju iz mreža sa mjesta poput Irana i Sirije odkuda stižu učestali napadi."> + +<!ENTITY ssl-observatory.prefs.done "Učinjeno"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere može koristiti EFF-ov SSL Opservatorij. Ovo čini dvije stvari: (1) +šalje kopije HTTPS certifikata Opservatoriju, da nam pomogne otkriti 'glavnog u sredini' napadača i poboljša Web sigurnost; i (2) +da vas upozorimo o nesigurnim vezama ili napadima na vaš preglednik."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Npr., kada posjetite https://www.something.com, certifikat +primljen od Opservatorija će naznačiti da je netko posjetio +www.something.com, ali ne tko je posjetio stranicu, ili koju su određenu +stranicu tražili. Prelazak mišem za daljnje pojedinosti:"> + +<!ENTITY ssl-observatory.prefs.hide "Sakrij napredne mogućnpsti"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Provjeri certifikate iako Tor nije dostupan"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Mi ćemo još uvijek pokušati držati podatke anonimnim, ali ova mogućnost je manje sigurna"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Prijavite i provjerite certifikate za ne-javne DNS nazive"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Ako ova mogućnost nije odabrana, Opservatorij neće snimati certifikate za nazive koji se ne mogu razriješiti kroz DNS sustav."> + +<!ENTITY ssl-observatory.prefs.show "Prikaži napredne mogućnosti "> + +<!ENTITY ssl-observatory.prefs.title "Osobitosti SSL Opservatorija"> + +<!ENTITY ssl-observatory.prefs.use "Koristi Opservatorij?"> +<!ENTITY ssl-observatory.warning.title "UPOZORENJE iz EFF-ovog SSL Opservatorija"> +<!ENTITY ssl-observatory.warning.showcert "Prikaži podatak certifikata"> +<!ENTITY ssl-observatory.warning.okay "Razumijem"> +<!ENTITY ssl-observatory.warning.text "EFF-ov SSL Opservatorij je izdao upozorenje o HTTPS certifikatu(ima) za ovu stranicu:"> +<!ENTITY ssl-observatory.warning.defense "Ako ste povezani sa ovom stranicom, preporučljivo je da promijenite svoju lozinku kada uspostavite sigurnu povezanost."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Prijavite i provijerite samopotpisane certifikate"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"To je preporučljivo; kriptografski problemi su naročito česti u samopotpisanim ugrađenim uređajima"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd new file mode 100644 index 0000000..b9fa569 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "A HTTPS Everywhere névjegye"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Titkosítsa a Web-et! Automatikusan használja a HTTPS titkosítást a legtöbb oldalon."> +<!ENTITY https-everywhere.about.version "Verzió"> +<!ENTITY https-everywhere.about.created_by "Készítette:"> +<!ENTITY https-everywhere.about.librarians "Szabálykészlet könyvtárosok"> +<!ENTITY https-everywhere.about.thanks "Köszönet:"> +<!ENTITY https-everywhere.about.contribute "Ha tetszik a HTTPS Everywhere, talán megfontolja a következőket:"> +<!ENTITY https-everywhere.about.donate_tor "A Tor támogatása"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Az EFF támogatása"> + +<!ENTITY https-everywhere.menu.about "A HTTPS Everywhere névjegye"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory Beállítások"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere bekapcsolása"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere kikapcsolása"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Preferences"> +<!ENTITY https-everywhere.prefs.enable_all "Mind bekapcsolása"> +<!ENTITY https-everywhere.prefs.disable_all "Mind kikapcsolása"> +<!ENTITY https-everywhere.prefs.reset_defaults "Visszaállítás alaphelyzetre"> +<!ENTITY https-everywhere.prefs.search "Keresés"> +<!ENTITY https-everywhere.prefs.site "Oldal"> +<!ENTITY https-everywhere.prefs.notes "Megjegyzések"> +<!ENTITY https-everywhere.prefs.list_caption "Mely HTTPS átirányításokat szeretné használni?"> +<!ENTITY https-everywhere.prefs.enabled "Bekapcsolva"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Megtanulhatja, hogy adhatja hozzá a saját szabálykészletét (hogy további oldalakat támogasson) "> +<!ENTITY https-everywhere.prefs.here_link "itt"> +<!ENTITY https-everywhere.prefs.toggle "Vált"> +<!ENTITY https-everywhere.prefs.reset_default "Visszaállítás alaphelyzetre"> +<!ENTITY https-everywhere.prefs.view_xml_source "Az XML forrás megtekintése"> + +<!ENTITY https-everywhere.source.downloading "Letöltés"> +<!ENTITY https-everywhere.source.filename "Fájlnév"> +<!ENTITY https-everywhere.source.unable_to_download "A forrás letöltése sikertelen."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties new file mode 100644 index 0000000..1c95984 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhere bekapcsolása +https-everywhere.menu.globalDisable = HTTPS Everywhere kikapcsolása +https-everywhere.menu.enableDisable = Szabályok Engedélyezése / Tiltása +https-everywhere.menu.noRules = (nincs szabály ehhez az oldalhoz) +https-everywhere.menu.unknownRules = (az oldalhoz tartozó szabályok ismeretlenek) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd new file mode 100644 index 0000000..d8291e4 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/hu/ssl-observatory.dtd @@ -0,0 +1,96 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Részletek és adatvédelmi információk"> +<!ENTITY ssl-observatory.popup.later "Kérdezzen meg később"> +<!ENTITY ssl-observatory.popup.no "Nem"> + +<!ENTITY ssl-observatory.popup.text "A HTTPS Everywhere a böngésző elleni támadásokat képes észlelni, azzal ,hogy elküldi a megkapott tanúsítványokat az Observatory részére. Bekapcsoljuk ezt a funkciót?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Használja a HTTPS Everywhere az SSL Observatory-t?"> + +<!ENTITY ssl-observatory.popup.yes "Igen"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Biztonságos, ha bekapcsolja, kivéve, ha nagyon privát szférába hatoló vállalati hálózatot használ:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Biztonságos, ha nem használ titkos internet szerver nevekkel rendelkező vállalati hálózatot:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Küldje be és ellenőrizze azon tanúsítványokat, amelyek nem standard tanúsítványkiadótól származnak"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Biztonságos (és javasolt) ha bekapcsolja ezt az opciót, kivéve ha nagyon figyelt vállalati hálózatról vagy Kaspersky víruskereső szoftvert használ, ami figyeli a böngészést egy TLS proxy-val, és egy helyi tanúsítványkiadóval. +Ha bekapcsolja, az az opció nyomokat hagyhat arról, hogy mely https:// oldalakor látogatott meg azon a proxy-n keresztül, mert egyedi tanúsítványokat hoz létre. +Tehát hagyja kikapcsolva alapértelmezetten. +"> + +<!ENTITY ssl-observatory.prefs.anonymous "A tanúsítványok ellenőrzése Tor-on keresztül az anonimitás megőrzéséhez."> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"A tanúsítványok ellenőrzése Tor-on keresztül az anonimitás megőrzéséhez. (Torbutton szükséges hozzá)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Ez az opció a Tor és Torbutton szoftverek telepítését igényli."> + +<!ENTITY ssl-observatory.prefs.asn +"Ha új tanúsítványt lát, küldje el az Observatory-nak, hogy mely internet szolgáltatóhoz csatlakozik éppen"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Ez kiolvassa és elküldi az ASN számát a hálózatának. Ez segít a HTTPS elleni támadások észlelésében, és lehetővé teszi az észlelést annak, hogy a támadás olyan hálózatokon zajlik-e mint Irán vagy Szíria, ahol a támadások meglehetősen gyakoriak."> + +<!ENTITY ssl-observatory.prefs.done "Kész"> + +<!ENTITY ssl-observatory.prefs.explanation +"A HTTPS Everywhere használni tudja az EFF's SSL Obszervatóriumát (Observatory). Ez két dolgot jelent: (1) +elküldi a másolatát a HTTPS kapcoslatok tanúsítványainak az Obszervatóriumba, hogy segítse a MITM támadások észlelését, és növelje a Web biztonságát; és (2) +lehetővé teszi, hogy figyelmeztessük, ha nem biztonságos a kapcoslata, vagy valaki támadja a böngészőjét."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Például, ha meglátogatja a https://www.valami.hu oldalt, a tanúsítvány amit az Obszervatórium megkap, azt jelzi majd, hogy valaki meglátogatta a www.valami.hu oldalt, de nem mutatja, hogy ki, és hogy melyik oldalt nézte. Húzza az egeret az opciók felé a részletekért:"> + +<!ENTITY ssl-observatory.prefs.hide "Speciális beállítások elrejtése"> + +<!ENTITY ssl-observatory.prefs.nonanon +"A tanúsítványok ellenőrzése akkor is, ha a Tor nem elérhető"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Továbbra is megpróbáljuk az adatot névtelenül kezelni, de ez a beállítás kevésbé biztonságos"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Nem publikus DNS nevekhez tartozó tanúsítványok elküldése és ellenőrzése"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Ha ez az opció nicns bejelölve, akkor az Observatory nem rögzíti azon tanúsítványokat, amelyek nem feloldhatók publikus DNS rendszereken keresztül."> + +<!ENTITY ssl-observatory.prefs.show "Speciális beállítások megjelenítése"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory Beállítások"> + +<!ENTITY ssl-observatory.prefs.use "Az Observatory használata?"> +<!ENTITY ssl-observatory.warning.title "FIGYELMEZTETÉS az EFF SSL Observatory-tól"> +<!ENTITY ssl-observatory.warning.showcert "A tanúsítványlánc megjelenítése"> +<!ENTITY ssl-observatory.warning.okay "Megértettem"> +<!ENTITY ssl-observatory.warning.text "Az EFF SSL Oeservatory figyelmeztetést bocsátott az alábbi tanúsítványokról, ehhez az oldalhoz:"> +<!ENTITY ssl-observatory.warning.defense "Ha belépett erre az oldalra, ha már biztonságos kapcsolattal rendelkezik, hogy lecserélje a jelszavát."> + +<!ENTITY ssl-observatory.prefs.self_signed +"A használt önaláírt tanúsítványok feltöltése és ellenőrzése"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Ez ajánlott; a kriptográfiai problémák széles körben elterjedtek az önaláírt tanúsítvánnyal ellátott céleszközöknél."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd new file mode 100644 index 0000000..782711f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Informazioni su HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Cripta il Web! Usa HTTPS automaticamente su numerosi siti."> +<!ENTITY https-everywhere.about.version "Versione"> +<!ENTITY https-everywhere.about.created_by "Creato da"> +<!ENTITY https-everywhere.about.librarians "Autori regole"> +<!ENTITY https-everywhere.about.thanks "Grazie a"> +<!ENTITY https-everywhere.about.contribute "Se ti piace HTTPS Everywhere, considera anche"> +<!ENTITY https-everywhere.about.donate_tor "Donazioni a Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "it"> +<!ENTITY https-everywhere.about.donate_eff "Donazioni a EFF"> + +<!ENTITY https-everywhere.menu.about "Informazioni su HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Preferenze Osservatorio SSL"> +<!ENTITY https-everywhere.menu.globalEnable "Abilita HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Disabilita HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Preferenze di HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Abilita Tutto"> +<!ENTITY https-everywhere.prefs.disable_all "Disabilita Tutto"> +<!ENTITY https-everywhere.prefs.reset_defaults "Ripristina Predefiniti"> +<!ENTITY https-everywhere.prefs.search "Cerca"> +<!ENTITY https-everywhere.prefs.site "Sito"> +<!ENTITY https-everywhere.prefs.notes "Note"> +<!ENTITY https-everywhere.prefs.list_caption "Quali regole di reindirizzamento HTTPS dovrebbero essere applicate?"> +<!ENTITY https-everywhere.prefs.enabled "Abilitato"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Puoi imparare a scrivere i tuoi set di regole (per aggiungere supporto ad altri siti)"> +<!ENTITY https-everywhere.prefs.here_link "qui"> +<!ENTITY https-everywhere.prefs.toggle "Commuta"> +<!ENTITY https-everywhere.prefs.reset_default "Ripristina Predefiniti"> +<!ENTITY https-everywhere.prefs.view_xml_source "Mostra Sorgente XML"> + +<!ENTITY https-everywhere.source.downloading "Scaricamento"> +<!ENTITY https-everywhere.source.filename "Nome file"> +<!ENTITY https-everywhere.source.unable_to_download "Impossibile scaricare la sorgente."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties new file mode 100644 index 0000000..a6150b2 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/it/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Abilita HTTPS Everywhere +https-everywhere.menu.globalDisable = Disabilita HTTPS Everywhere +https-everywhere.menu.enableDisable = Abilita / Disabilita Regole +https-everywhere.menu.noRules = (Nessuna Regola per Questa Pagina) +https-everywhere.menu.unknownRules = (Regole per Questa Pagina Sconosciute) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd new file mode 100644 index 0000000..40cbb9f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/it/ssl-observatory.dtd @@ -0,0 +1,98 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Dettagli e informazioni sulla privacy"> +<!ENTITY ssl-observatory.popup.later "Chiedimelo più tardi"> +<!ENTITY ssl-observatory.popup.no "No"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere può rilevare attacchi +contro il tuo browser inviando i certificati che ricevi all' +Osservatorio. Vuoi abilitarla?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Vuoi che HTTPS Everywhere usi l' Osservatorio SSL?"> + +<!ENTITY ssl-observatory.popup.yes "Sì"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"È consigliato abilitarla, a meno che non utilizzi una rete aziendale molto intrusiva:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Consigliato, a meno che non utilizzi una rete aziendale con nomi server intranet segreti:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Invia e controlla certificati firmati da CA root non standard"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"È una buona idea abilitare questa opzione, a meno che non utilizzi una rete aziendale intrusiva o l'antivirus Kaspersky che monitora la tua navigazione con un proxy TLS e una Certificate Authority root privata. Se viene abilitata in quel caso, questa opzione può pubblicare prove evidenti su quali domini https:// sono stati visitati attraverso quel proxy, a causa di certificati unici che produrrebbe. Per questo la lasciamo disabilitata in partenza."> + +<!ENTITY ssl-observatory.prefs.anonymous "Controlla i certificati usando Tor per l'anonimato"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Controlla i certificati usando Tor per l'anonimato (richiede Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Questa opzione richiede Tor e Torbutton installati"> + +<!ENTITY ssl-observatory.prefs.asn +"Quando trovi un certificato nuovo, comunica all' Osservatorio a quale ISP sei connesso"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Recupera e invia il "numero di Sistema Autonomo" della tua rete. Questo ci aiuterà a localizzare gli attacchi contro HTTPS e a determinare se abbiamo osservazioni provenienti da reti in luoghi come Iran e Siria dove gli attacchi sono relativamente comuni."> + +<!ENTITY ssl-observatory.prefs.done "Fatto"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere può usare l' Osservatorio SSL di EFF. Questo fa due cose: (1) +invia copie dei certificati HTTPS all' Osservatorio per aiutarci ad individuare attacchi 'man in the middle' e migliorare la sicurezza del Web; e (2) +ci consente di metterti in guardia da connessioni insicure o attacchi al tuo browser."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Ad esempio, quando visiti https://www.qualcosa.com, il certificato +ricevuto dall' Osservatorio indicherà che qualcuno ha visitato +www.qualcosa.com, ma non chi ha visitato il sito, o quale particolare pagina +ha visto. Passa sopra le opzioni con il mouse per maggiori dettagli:"> + +<!ENTITY ssl-observatory.prefs.hide "Nascondi opzioni avanzate"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Controlla certificati anche se Tor non è disponibile"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Cercheremo comunque di mantenere i dati anonimi, ma questa opzione è meno sicura"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Invia e controlla certificati per nomi DNS non pubblici"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"A meno che questa opzione sia selezionata, l' Osservatorio non registrerà i certificati per nomi che non può risolvere attraverso il sistema DNS."> + +<!ENTITY ssl-observatory.prefs.show "Mostra opzioni avanzate"> + +<!ENTITY ssl-observatory.prefs.title "Preferenze Osservatorio SSL"> + +<!ENTITY ssl-observatory.prefs.use "Usare l' Osservatorio?"> +<!ENTITY ssl-observatory.warning.title "AVVISO dall' Osservatorio SSL di EFF"> +<!ENTITY ssl-observatory.warning.showcert "Mostra la catena di certificati"> +<!ENTITY ssl-observatory.warning.okay "Capisco"> +<!ENTITY ssl-observatory.warning.text "L' Osservatorio SSL di EFF ha emesso un avviso sul(i) certificato(i) HTTPS di questo sito:"> +<!ENTITY ssl-observatory.warning.defense "Se hai effettuato l'accesso a questo sito, può essere consigliabile cambiare la password appena hai una connessione sicura."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Invia e controlla certificati autofirmati"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Consigliato; problemi di crittografia sono particolarmente comuni in dispositivi embedded autofirmati"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd new file mode 100644 index 0000000..724a2bd --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "HTTPS Everywhereについて"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "ウェブの暗号化!自動的に多くのサイトにHTTPSセキュリティを使用します。"> +<!ENTITY https-everywhere.about.version "バージョン"> +<!ENTITY https-everywhere.about.created_by "作成者:"> +<!ENTITY https-everywhere.about.librarians "ルール設定ライブラリ"> +<!ENTITY https-everywhere.about.thanks "Thanks to"> +<!ENTITY https-everywhere.about.contribute "HTTPS Everywhereが好きなら、検討してください"> +<!ENTITY https-everywhere.about.donate_tor "Torに寄付する"> +<!ENTITY https-everywhere.about.tor_lang_code "英語"> +<!ENTITY https-everywhere.about.donate_eff "EFFに寄付する"> + +<!ENTITY https-everywhere.menu.about "HTTPS Everywhereについて"> +<!ENTITY https-everywhere.menu.observatory "ssl Observatoryの設定"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhereを有効化"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhereを無効化"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhereの設定"> +<!ENTITY https-everywhere.prefs.enable_all "全て有効化"> +<!ENTITY https-everywhere.prefs.disable_all "すべて無効化"> +<!ENTITY https-everywhere.prefs.reset_defaults "デフォルトにリセット"> +<!ENTITY https-everywhere.prefs.search "検索"> +<!ENTITY https-everywhere.prefs.site "サイト"> +<!ENTITY https-everywhere.prefs.notes "履歴"> +<!ENTITY https-everywhere.prefs.list_caption "どのHTTPSリダイレクトスールを適用しますか?"> +<!ENTITY https-everywhere.prefs.enabled "有効"> +<!ENTITY https-everywhere.prefs.ruleset_howto "自分のルール設定の書き方を学べます (他のウェブサイトへのサポートを追加)"> +<!ENTITY https-everywhere.prefs.here_link "ここ"> +<!ENTITY https-everywhere.prefs.toggle "切り替え"> +<!ENTITY https-everywhere.prefs.reset_default "デフォルトにリセット"> +<!ENTITY https-everywhere.prefs.view_xml_source "XMLソースを表示"> + +<!ENTITY https-everywhere.source.downloading "ダウンロード中"> +<!ENTITY https-everywhere.source.filename "ファイル名"> +<!ENTITY https-everywhere.source.unable_to_download "ソースをダウンロード出来ません。"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties new file mode 100644 index 0000000..2135ddd --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhereを有効化 +https-everywhere.menu.globalDisable = HTTPS Everywhereを無効化 +https-everywhere.menu.enableDisable = ルールを有効化/無効化 +https-everywhere.menu.noRules = (このページにルールはありません) +https-everywhere.menu.unknownRules = (このページのルールは不明) +https-everywhere.toolbar.hint = HTTPS Everywhereはげんざい有効です。アドレスバーのアイコンをクリックするとサイトごとを基本に切り替えることができます。 +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd new file mode 100644 index 0000000..d9be24f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ja/ssl-observatory.dtd @@ -0,0 +1,94 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "詳細とプライバシー情報"> +<!ENTITY ssl-observatory.popup.later "後で通知する"> +<!ENTITY ssl-observatory.popup.no "いいえ"> + +<!ENTITY ssl-observatory.popup.text "HTTPS EverywhereはObservatoryに受け取る証明書を送信することで、あなたのブラウザに対する攻撃を検知できます。これを有効にしますか?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS EverywhereはSSL Observatoryを使用するべきですか?"> + +<!ENTITY ssl-observatory.popup.yes "はい"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"非常に鑑賞される企業ネットワークを使用していなければ、これを有効にする方が安全です:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"次の秘密イントラネットのサーバー名で企業ネットワークを使用しなければ、安全です:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"非標準のルートCAによって署名された証明書を確認して情報提供する。"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"干渉される企業ネットワークや、TLSプロキシとプライベートルート認証局であなたのブラウジングをモニターしているKasperskyアンチウイルスソフトウェアを使用していなければ、このオプションを有効にすることは安全です (そして、良いアイディアです)。そのようなネットワークで有効にした場合、このオプションは、それが発行する一意な証明書のために、どんなhttps:// domainsがそのプロキシを通じて訪れられたかの証拠を提供してしまう恐れがあります。そのために、私たちはデフォルトではそれをオフにしています。"> + +<!ENTITY ssl-observatory.prefs.anonymous "匿名性のために証明書のチェックにTorを使う。"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"匿名性のために証明書のチェックにTorを使う (Torが必要)。"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"このオプションはTorがインストールされ、動作している必要があります。"> + +<!ENTITY ssl-observatory.prefs.asn +"新しい証明書を確認したとき、ObservatoryにあなたがどのISPに接続しているのか伝える"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"これはあなたのネットワークの「自律システム番号」を収集し、送信します。これは私たちがHTTPSに対する攻撃を検出しするのを支援します。また、私たちが攻撃が比較的一般的であるイランやシリアのような場所でネットワークに観測所を持っているのか確認するのに役立ちます。"> + +<!ENTITY ssl-observatory.prefs.done "完了"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS EverywhereはEFFのSSL Observatoryを使用することができます。これは2つの働きをします: (1) +私たちが中間者攻撃を検出し、ウェブセキュリティを向上させるのを支援するために、HTTP証明書のコピーを観測所に送信します。 +そして、(2) +私たちが安全でない接続やブラウザへの攻撃を警告できるようにします。"> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"例えば、https://www.something.com を訪れるとき、観測所が受信した証明書は誰かがwww.something.comを訪れたことを示しますが、誰がこのサイトを訪れたのか、どの特定のページを見ていたのかは示されません。詳細はオプションを選択してください:"> + +<!ENTITY ssl-observatory.prefs.hide "高度な設定を隠す"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Torが利用できない場合でも証明書をチェックする"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"私たちは今まで通りデータを匿名に保とうとするでしょうが、このオプションは安全性を低下させます"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"非公開DNS名の証明書を確認して提供する"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"このオプションがチェックされていない場合、ObservatoryはDNSシステムを通して解決できない名前への証明書を記録しません。"> + +<!ENTITY ssl-observatory.prefs.show "高度な設定を表示する"> + +<!ENTITY ssl-observatory.prefs.title "ssl Observatoryの設定"> + +<!ENTITY ssl-observatory.prefs.use "Observatoryを使用しますか?"> +<!ENTITY ssl-observatory.warning.title "EFFのSSL Observatoryから警告"> +<!ENTITY ssl-observatory.warning.showcert "証明書のチェーンを表示"> +<!ENTITY ssl-observatory.warning.okay "了解します"> +<!ENTITY ssl-observatory.warning.text "EFFのSSL ObservatoryはこのサイトへのHTTPS証明書についての警告を出しました。()"> +<!ENTITY ssl-observatory.warning.defense "このサイトにログインしている場合、一度安全な接続を確保してからパスワードを変更するのが賢明かもしれません。"> + +<!ENTITY ssl-observatory.prefs.self_signed +"自己署名の証明書を確認して提供する"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"これは推奨されます。暗号化の問題は、自己署名された組み込みデバイスで特に一般的です。"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd new file mode 100644 index 0000000..93d22f4 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.dtd @@ -0,0 +1,49 @@ +<!ENTITY https-everywhere.about.title "HTTPS Everywhere에 대하여 +"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "웹 암호화! 자동으로 여러 사이트에 HTTPS 보안을 사용합니다."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "작성"> +<!ENTITY https-everywhere.about.librarians "규칙설정 라이브러리"> +<!ENTITY https-everywhere.about.thanks "Thanks to"> +<!ENTITY https-everywhere.about.contribute "모든곳에서 HTTPS를 사용하려면, 고려해 보십시오"> +<!ENTITY https-everywhere.about.donate_tor "Tor에 기부하기"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "EFF에 기부하기"> + +<!ENTITY https-everywhere.menu.about "HTTPS Everywhere에 대하여"> +<!ENTITY https-everywhere.menu.observatory "SSL 관측 환경 설정"> +<!ENTITY https-everywhere.menu.globalEnable "모든곳에서 HTTPS 사용"> +<!ENTITY https-everywhere.menu.globalDisable "모든곳에서 HTTPS 사용 안 함"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS 모든곳 사용 환경 설정"> +<!ENTITY https-everywhere.prefs.enable_all "모두 사용"> +<!ENTITY https-everywhere.prefs.disable_all "모두 사용 안 함"> +<!ENTITY https-everywhere.prefs.reset_defaults "기본값으로 다시 설정"> +<!ENTITY https-everywhere.prefs.search "검색"> +<!ENTITY https-everywhere.prefs.site "사이트"> +<!ENTITY https-everywhere.prefs.notes "참고"> +<!ENTITY https-everywhere.prefs.list_caption "HTTPS 리디렉션 규칙을 적용하시겟습니까?"> +<!ENTITY https-everywhere.prefs.enabled "사용"> +<!ENTITY https-everywhere.prefs.ruleset_howto "자신의 규칙 작성 방법을 배울 수 있습니다 (다른 웹 사이트에 대한 지원 추가)"> +<!ENTITY https-everywhere.prefs.here_link "여기"> +<!ENTITY https-everywhere.prefs.toggle "전환"> +<!ENTITY https-everywhere.prefs.reset_default "기본값으로 다시 설정"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML 소스 보기"> + +<!ENTITY https-everywhere.source.downloading "다운로드"> +<!ENTITY https-everywhere.source.filename "파일명"> +<!ENTITY https-everywhere.source.unable_to_download "소스를 다운로드할 수 없습니다."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties new file mode 100644 index 0000000..110e0b8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = 모든 곳에서 HTTPS 사용 +https-everywhere.menu.globalDisable = 모든 곳에서 HTTPS 사용 안 함 +https-everywhere.menu.enableDisable = 규칙 활성화 / 비활성화 +https-everywhere.menu.noRules = (이 페이지를 위한 규칙 없음) +https-everywhere.menu.unknownRules = (알 수 없는 이 페이지를 위한 규칙) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd new file mode 100644 index 0000000..83deb59 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ko/ssl-observatory.dtd @@ -0,0 +1,92 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "세부 사항과 사생활 정보"> +<!ENTITY ssl-observatory.popup.later "나중에 알림"> +<!ENTITY ssl-observatory.popup.no "아니도"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS Everywhere이 SSL 관측소를 사용해야 합니까?"> + +<!ENTITY ssl-observatory.popup.yes "예"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"매우 방해하는 기업 네트워크를 사용중이지 않으면, 이것을 사용하는 것이 안전압니다."> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"다음 비밀 서버 이름과 기업 네트워크를 사용하지 않는다면, 안전합니다."> + +<!ENTITY ssl-observatory.prefs.alt_roots +"비표준 루트 CA로부터 서명되지 않은 인증서를 확인하고 제보함."> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"개인 루트 인증서 권한과 부라우징을 모니터하는 방해하는 기업 네트워크나 TLS 프록시와 카스퍼스키 안티바이러스를 사용하지 않는다면, 이 옵션을 활성화하는 것은 안전합니다(그리고 좋은 생각입니다). 그 네트워크에서 활성화된다면, 이 옵션은 제공되어져야하는 드문 인증서 때문에 https:// 도메인을 그 프록시를 통해 방문한 증거를 알릴 것입니다. 그래서 우리는 기본값으로 두는 것을 추천합니다."> + +<!ENTITY ssl-observatory.prefs.anonymous "익명을 위해 Tor를 사용하는 동안 인증서 확인"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"익명을 위해 Tor를 사용하는 동안 인증서 확인 (Torcheck 권장)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"이 옵션은 Tor와 Torbutton이 설치된 경우 권장됩니다."> + +<!ENTITY ssl-observatory.prefs.asn +"새로운 인증서를 볼 때, 어떤 ISP에 연결되어 있는지 관측소에 말하십시오."> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"이것은 귀하의 네트워크의 "자율 시스템 번호"를 수집하고 전송할 것입니다. 이것은 우리가 HTTPS에 대항하는 공격을 찾는 것에 대해 도움을 줄 것입니다. 그리고 우리는 공격이 비교적 일반적인 이란과 시리아와 같은 장소에서 네트워크에서 관측소를 가지고 있는지에 대한 여부를 확인하는 데 도움이 될 것입니다."> + +<!ENTITY ssl-observatory.prefs.done "완료"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere은 EFF의 SSL 관측소를 사용할 수 있습니다. 이것은 두 가지 일을 합니다: (1) +중간자 공격을 감지하고 웹의 보안을 향상시키는 것을 돕기 위해, HTTPS 인증서의 복사본을 SSL 관측소로 보냅니다. 그리고 (2) 우리가 귀하에게 보안적이지 않는 연결이나 브라우저에 대한 공격에 대해 경고하도록 합니다."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"예를 들어, https://www.something.com을 방문할 때, 관측소에서 받은 인증서는 누가 사이트를 방문했는지가 아닌, 누가 www.something.com을 방문했거나, 그들이 본 특정한 페이지 키를 표시할 것입니다. 더 많은 세부사항을 위해 옵션을 선택하십시오."> + +<!ENTITY ssl-observatory.prefs.hide "고급 설정 숨기기"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tor가 가능하지 않더라도 인증서 확인"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"우리는 계속 데이터를 익명으로 보내겠지만, 이 선택은 덜 보안적입니다."> + +<!ENTITY ssl-observatory.prefs.priv_dns +"non-public DNS 이름을 위한 인증서 확인과 제출"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"이 옵션이 선택되지 않는다면, 관측소는 DNS 시스템을 통해 분석될 수 없는 인증서를 기록하지 않을 것입니다."> + +<!ENTITY ssl-observatory.prefs.show "고급 설정 보이기"> + +<!ENTITY ssl-observatory.prefs.title "SSL 관측소 설정"> + +<!ENTITY ssl-observatory.prefs.use "관측소 사용?"> +<!ENTITY ssl-observatory.warning.title "EFF의 SSL 관측소로부터의 경고"> +<!ENTITY ssl-observatory.warning.showcert "인증서 체인 보이기"> +<!ENTITY ssl-observatory.warning.okay "이해했습니다."> +<!ENTITY ssl-observatory.warning.text "EFF의 SSL 관측소가 다음 사이트를 위한 HTTPS 인증서에 대한 경고를 보내왔습니다."> +<!ENTITY ssl-observatory.warning.defense "만약 이 사이트에 로그인되어 있다면, 안전한 연결에 일단 연결한 뒤, 비밀번호를 바꾸는 것이 권장됩니다."> + +<!ENTITY ssl-observatory.prefs.self_signed +"자신-서명 인증서 확인 및 제보"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"이것은 추천됩니다: 암호화 문제는 자기 서명된 임베디드 장치에서 특히 일반적입니다."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd new file mode 100644 index 0000000..e249494 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Apie HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Šifruokite žiniatinklį! Automatiškai naudokite HTTPS apsaugą daugelyje svetainių."> +<!ENTITY https-everywhere.about.version "Versija"> +<!ENTITY https-everywhere.about.created_by "Sukūrė"> +<!ENTITY https-everywhere.about.librarians "Taisyklių bibliotekininkai"> +<!ENTITY https-everywhere.about.thanks "Dėkojame"> +<!ENTITY https-everywhere.about.contribute "Jei Jums patinka HTTPS Everywhere, galbūt norėsite"> +<!ENTITY https-everywhere.about.donate_tor "Paaukoti Tor projektui"> +<!ENTITY https-everywhere.about.tor_lang_code "lt"> +<!ENTITY https-everywhere.about.donate_eff "Paaukoti EFF"> + +<!ENTITY https-everywhere.menu.about "Apie HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatorijos nustatymai"> +<!ENTITY https-everywhere.menu.globalEnable "Įgalinti HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Išjungti HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere nustatymai"> +<!ENTITY https-everywhere.prefs.enable_all "Įgalinti visas"> +<!ENTITY https-everywhere.prefs.disable_all "Uždrausti visas"> +<!ENTITY https-everywhere.prefs.reset_defaults "Atstatyti numatytas"> +<!ENTITY https-everywhere.prefs.search "Ieškoti"> +<!ENTITY https-everywhere.prefs.site "Tinklapis"> +<!ENTITY https-everywhere.prefs.notes "Pastabos"> +<!ENTITY https-everywhere.prefs.list_caption "Kurias HTTPS nukreipimo taisykles naudoti?"> +<!ENTITY https-everywhere.prefs.enabled "Įgalinta"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Galite sužinoti, kaip patiems rašyti nukreipimo taisykles (kad pridėtumėte kitų svetainių palaikymą)"> +<!ENTITY https-everywhere.prefs.here_link "čia"> +<!ENTITY https-everywhere.prefs.toggle "Perjungti"> +<!ENTITY https-everywhere.prefs.reset_default "Atstatyti numatytą"> +<!ENTITY https-everywhere.prefs.view_xml_source "Žiūrėti XML šaltinį"> + +<!ENTITY https-everywhere.source.downloading "Atsisiunčiama"> +<!ENTITY https-everywhere.source.filename "Failo pavadinimas"> +<!ENTITY https-everywhere.source.unable_to_download "Nepavyko atsisiųsti šaltinio"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties new file mode 100644 index 0000000..00fdde9 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = \u012ejungti HTTPS Everywhere +https-everywhere.menu.globalDisable = I\u0161jungti HTTPS Everywhere +https-everywhere.menu.enableDisable = Ijungti/i\u0161jungti taisykles +https-everywhere.menu.noRules = (\u0160iam puslapiui taisykli\u0173 n\u0117ra) +https-everywhere.menu.unknownRules = (\u0160io puslapio taisykl\u0117s ne\u017einomos) +https-everywhere.toolbar.hint = HTTPS Everywhere aktyvuotas. Galite \u012fjungti/i\u0161jungti j\u012f konkre\u010dioje svetain\u0117je spausdami \u017eenkliuk\u0105 adresyno juostoje. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd new file mode 100644 index 0000000..f17e52c --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lt/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detalės ir informacija apie privatumą"> +<!ENTITY ssl-observatory.popup.later "Klausti vėliau"> +<!ENTITY ssl-observatory.popup.no "Ne"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere gali aptikti atakas +nukreiptas prieš jūsų naršyklę, siųsdama gautus sertifikatus į SSL +Observatoriją. Ar įjungti?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Ar HTTPS Everywhere turėtų naudoti SSL Observatoriją?"> + +<!ENTITY ssl-observatory.popup.yes "Taip"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Įjungti yra saugu, nebent naudojate labai ribojamą +korporatyvinį tinklą:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Saugu, nebent naudojate korporatyvinį tinklą su slaptais vidinio tinklo serverių pavadinimais:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Siųsti ir tikrinti sertifikatus, pasirašytus nestandartinių sertifikavimo centrų"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Įjungti šią parinktį yra saugu (ir gera mintis), nebent naudojate ribojamą korporatyvinį tinklą, kuris stebi jūsų naršymą su TLS įgaliotuoju serveriu ir privačiu sertifikavimo centru. Jei įjungsite tokiame tinkle, ši parinktis gali palikti informacijos apie tai, kurios https:// svetainės buvo aplankytos naudojant šį įgaliotąjį serverį, nes bus naudojami unikalūs sertifikatai. Todėl pagal nutylėjimą tai išjungiame."> + +<!ENTITY ssl-observatory.prefs.anonymous "Tikrinti sertifikatus naudojant Tor tinklą anonimiškumui"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Tikrinti sertifikatus naudojant Tor tinklą anonimiškumui (reikalauja Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Ši parinktis reikalauja, kad būtų įdiegti Tor ir Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Sutikus naują sertifikatą pranešti Observatorijai, prie kokio interneto paslaugų tiekėjo esate prisijungę"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Gaus ir išsiųs jūsų tinklo "autonominį sistemos numerį". Tai padės mums aptikti atakas nukreiptas prieš HTTPS ir nustatyti, ar mes turime duomenų apie tinklus iš tokių vietų kaip Iranas ar Sirija, kur atakos yra gana dažnos."> + +<!ENTITY ssl-observatory.prefs.done "Atlikta"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere gali naudoti EFF SSL Observatoriją. Ji atlieka du dalykus: (1) +siunčia HTTPS sertifikatų kopijas į Observatoriją, kad padėtų mums +aptikti 'žmogaus viduryje' atakas ir pagerinti žiniatinkio saugumą; ir (2) +leidžia mums įspėti jus apie nesaugius prisijungimus ar atakas nukreiptas prieš jūsų naršyklę."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Pavyzdžiui, kai aplankote https://www.kazkas.com, Observatorijos +gautas sertifikatas rodys, kad kažkas aplankė www.kazkas.com, +bet ne tai, kas aplankė svetainę, ar kokį konkrečiai puslapį jie +žiūrėjo. Išsamesniai informacijai, užveskite pelės žymeklį virš parinkčių:"> + +<!ENTITY ssl-observatory.prefs.hide "Slėpti išsamesnius nustatymus"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tikrinti sertifikatus net jei Tor nepasiekiamas"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Mes vis vien bandysime išlaikyti duomenis anonimiškus, bet ši parinktis yra mažiau saugi"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Siųsti ir tikrinti sertifikatus gautus iš neviešų DNS vardų"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Jei ši parinktis išjungta, Observatorija neįrašinės tų sertifikatų, kurių vardų nepavyksta gauti per DNS sistemą."> + +<!ENTITY ssl-observatory.prefs.show "Rodyti išsamesnius nustatymus"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatorijos nustatymai"> + +<!ENTITY ssl-observatory.prefs.use "Naudoti Observatoriją?"> +<!ENTITY ssl-observatory.warning.title "ĮSPĖJIMAS iš EFF SSL Observatorijos"> +<!ENTITY ssl-observatory.warning.showcert "Rodyti sertifikatų grandinę"> +<!ENTITY ssl-observatory.warning.okay "Suprantu"> +<!ENTITY ssl-observatory.warning.text "EFF SSL Observatorija įspėja apie šių svetainių HTTPS sertifikatus:"> +<!ENTITY ssl-observatory.warning.defense "Jei esate prisiregistravę prie šios svetainės, patartina pasikeisti slaptažodį, kai turėsite saugų ryšį."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Teikti ir tikrinti savo paties pasirašytus sertifikatus"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Rekomenduojama. Kriptografijos problemos ypač dažnos savo paties pasirašytuose įmontuotuosiuose įtaisuose"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd new file mode 100644 index 0000000..c7659af --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Par HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Šifrēt tīmekli! Automātiski lietot HTTPS drošību daudzās vietnēs."> +<!ENTITY https-everywhere.about.version "Versija"> +<!ENTITY https-everywhere.about.created_by "Autori"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "Pateicoties"> +<!ENTITY https-everywhere.about.contribute "ja Jums patīk HTTPS Everywhere, iespējams vēlaties"> +<!ENTITY https-everywhere.about.donate_tor "ziedot Tor'am"> +<!ENTITY https-everywhere.about.tor_lang_code "an"> +<!ENTITY https-everywhere.about.donate_eff "ziedot EFF'am"> + +<!ENTITY https-everywhere.menu.about "Par HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory preferences"> +<!ENTITY https-everywhere.menu.globalEnable "Iespējot HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Atspējot HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere preferences"> +<!ENTITY https-everywhere.prefs.enable_all "Iespējot visus"> +<!ENTITY https-everywhere.prefs.disable_all "Atspējot visus"> +<!ENTITY https-everywhere.prefs.reset_defaults "Atiestatīt uz noklusējuma vērtībām"> +<!ENTITY https-everywhere.prefs.search "Meklēt"> +<!ENTITY https-everywhere.prefs.site "Vietne"> +<!ENTITY https-everywhere.prefs.notes "Piezīmes"> +<!ENTITY https-everywhere.prefs.list_caption "Kurus HTTPS pāradresācijas noteikumus lietot?"> +<!ENTITY https-everywhere.prefs.enabled "Iespējots"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Variet iemācīties kā rakstīt savus noteikumu komplektus (lai pievienotu citu tīmekļa vietņu atbalstu)"> +<!ENTITY https-everywhere.prefs.here_link "te"> +<!ENTITY https-everywhere.prefs.toggle "Pārslēgt"> +<!ENTITY https-everywhere.prefs.reset_default "Atiestatīt uz noklusējuma vērtībām"> +<!ENTITY https-everywhere.prefs.view_xml_source "Skatīt XML avotu"> + +<!ENTITY https-everywhere.source.downloading "Lejupielādē"> +<!ENTITY https-everywhere.source.filename "Datnes_nosaukums"> +<!ENTITY https-everywhere.source.unable_to_download "Nevar lejupielādēt avotu."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 paziņojums"> +<!ENTITY https-everywhere.popup.paragraph1 "Opā! Jūs lietojāt stabilu HTTPS Everywhere versiju, bet, iespējams, mūsu jaunākajā laidienā mēs nejauši jauninājām Jūsu līdzšinējo versiju ar izstrādātāju versiju."> +<!ENTITY https-everywhere.popup.paragraph2 "Vai vēlaties atgriezties pie stabilās versijas?"> +<!ENTITY https-everywhere.popup.paragraph3 "Mēs ļoti priecātos, ja Jūs turpinātu lietot izstrādātāju versiju un palīdzētu padarīt HTTPS Everywhere labāku! Iespējams, ka laiku pa laikam pamanīsit kādas kļūdas, par kurām varat ziņot rakstot angļu valodā https-everywhere@eff.org . Atvainojamies par sagādātajām neērtībām un pateicamies par to, ka lietojat HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Izvēlos strādāt ar izstrādātāja versiju"> +<!ENTITY https-everywhere.popup.revert "Lejuplādēt jaunāko stabilo versiju"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties new file mode 100644 index 0000000..aeef29d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Iespējot HTTPS visur +https-everywhere.menu.globalDisable = Izslēgt HTTPS visur +https-everywhere.menu.enableDisable = Iespējot / Izslēgt kārtulas +https-everywhere.menu.noRules = (Šai lapai kārtulu nav) +https-everywhere.menu.unknownRules = (šīs lapas kārtulas nav zināmas) +https-everywhere.toolbar.hint = HTTPS Everywhere tagad ir aktīvs. Klikšķinot ikonu adreses joslā, Jūs varat to pārslēgt ikvienā vietnē. +https-everywhere.migration.notification0 = Lai ieviestu kritisku labojumu, šis jauninājums atiestata Jūsu HTTPS visur kārtulu preferences uz to noklusējuma vērtībām. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd new file mode 100644 index 0000000..a0e33e3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/lv/ssl-observatory.dtd @@ -0,0 +1,99 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Papildu informācija un privātums"> +<!ENTITY ssl-observatory.popup.later "Jautāt man vēlāk"> +<!ENTITY ssl-observatory.popup.no "Nē"> + +<!ENTITY ssl-observatory.popup.text "HTTPS visur var atklāt uzbrukumus Jūsu pārlūkam, nosūtot uz Observatory sertifikātus, kurus saņemat. +Ieslēgt šo funkciju?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Vai HTTPS visur jāizmanto SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Jā"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Iespējot ir droši, ja vien neizmantojat +ļoti traucējošu jeb uzmācīgu korporatīvo tīklu:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Droši, ja vien neizmantojat korporatīvo tīklu ar slepeniem iekštīkla serveru vārdiem:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Iesniegt un pārbaudīt sertifikātus, kurus parakstījušas nestandarta saknes CA jeb sertifikācijas iestādes"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Ir droši (un arī ir laba doma) iespējot šo opciju, ja vien neizmantojat traucējošu jeb uzmācīgu korporatīvu tīklu, kurš jūsu veiktajai pārlūkošanai seko, izmantojot TLS starpniekserveri un privāto saknes sertifikācijas iestādi. +Opcija, kas iespējota šādā tīklā, varētu publicēt pierādījumus tam, kuri https:// domēni tiek skatīti caur šo starpniekserveri, tā izsniegto unikālo sertifikātu dēļ. Tādēļ, pēc noklusējuma, mēs šo izvēli esam izslēguši."> + +<!ENTITY ssl-observatory.prefs.anonymous "Anonimitātes nodrošināšanai pārbaudīt sertifikātus izmantojot Tor"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Anonimitātes nodrošināšanai pārbaudīt sertifikātus izmantojot Tor (nepieciešams Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Opcijas lietošanai nepieciešams instalēt Tor un Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Kad redzat jaunu sertifikātu, informējiet Observatory par ISP, pie kura esat pieslēdzies"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Darbība nolasīs un nosūtīs jūsu tīkla "Autonomo sistēmas numuru". +Tas palīdzēs mums noteikt uzbrukumus pret HTTPS, un atklāt vai no tīkliem tiek veikta pārraudzība tādās valstīs kā Irāna un Sīrija, kur uzbrukumi notiek salīdzinoši bieži."> + +<!ENTITY ssl-observatory.prefs.done "Gatavs"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS visur var lietot EFF's SSL Observatory. +Tas veic divas darbības: (1) +sūta Obsevatory HTTPS sertifikātu kopijas, lai palīdzētu mums +noteikt "starpnieka" uzbrukumus, un palielinātu tīmekļa drošību, un (2) +ļauj mums brīdināt jūs par nedrošiem savienojumiem vai uzbrukumiem jūsu pārlūkam."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Piemēram, kad apmeklējat https://www.something.com , tad sertifikāts, kuru saņem Observatory, rādīs, ka kāds ir apmeklējis www.something.com , bet nerādīs ne to, kurš ir apmeklējis šo vietni, ne ari to kuras lapas skatītas. Slidiniet peli pār opcijām, lai iegūtu papildu informāciju:"> + +<!ENTITY ssl-observatory.prefs.hide "Slēpt papildu opcijas"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Pārbaudīt sertifikātus pat ja Tor nav pieejams"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Mēs joprojām centīsimies nodrošināt datu anonimitāti, tomēr šī opcija ir mazāk droša"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Iesniegt un pārbaudīt sertifikātus DNS nosaukumiem, kuri nav publiski "> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Ja vien šī opcija nav atzīmēta, Observatory neierakstīs sertifikātus nosaukumiem, kurus tā nevar atrisināt caur DNS sistēmu."> + +<!ENTITY ssl-observatory.prefs.show "Parādīt papildu opcijas"> + +<!ENTITY ssl-observatory.prefs.title "Observatory SSL preferences"> + +<!ENTITY ssl-observatory.prefs.use "Izmantot Observatory?"> +<!ENTITY ssl-observatory.warning.title "EFF's Observatory SSL BRĪDINĀJUMS"> +<!ENTITY ssl-observatory.warning.showcert "Parādīt sertificēšanas ķēdi"> +<!ENTITY ssl-observatory.warning.okay "Es saprotu"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory SSL izsniedza brīdinājumu saistībā ar norādītās vietnes HTTPS sertifikātu(iem):"> +<!ENTITY ssl-observatory.warning.defense "Ja šajā vietnē esat reģistrējies darbam, tad pēc droša savienojuma izveides apsveriet paroles maiņu."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Iesniegt un pārbaudīt pašparakstītus sertifikātus"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Tiek rekomendēts; ar šifrēšanu saistītas problēmas ir īpaši biežas iegultās, pašparakstošās iekārtās"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd new file mode 100644 index 0000000..358e781 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Mengenai HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Encrypt laman sesawang! Gunakan HTTPS secara automatik di kebanyakan laman sesawang."> +<!ENTITY https-everywhere.about.version "Versi"> +<!ENTITY https-everywhere.about.created_by "Dihasilkan oleh"> +<!ENTITY https-everywhere.about.librarians "Pustaka set aturan"> +<!ENTITY https-everywhere.about.thanks "Terima kasih kepada"> +<!ENTITY https-everywhere.about.contribute "Sekiranya anda menyukai HTTPS Everywhere, anda mungkin ingin mempertimbangkan untuk"> +<!ENTITY https-everywhere.about.donate_tor "Menderma kepada Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "ms-MY"> +<!ENTITY https-everywhere.about.donate_eff "Menderma kepada EFF"> + +<!ENTITY https-everywhere.menu.about "Mengenai HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Tetapan Pemantau SSL"> +<!ENTITY https-everywhere.menu.globalEnable "Pengaktifan HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Nyah-aktifkan HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Tetapan HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Pengaktifan semua"> +<!ENTITY https-everywhere.prefs.disable_all "Nyah-aktifkan All"> +<!ENTITY https-everywhere.prefs.reset_defaults "Tetapan semula kepada asal"> +<!ENTITY https-everywhere.prefs.search "Carian"> +<!ENTITY https-everywhere.prefs.site "Laman"> +<!ENTITY https-everywhere.prefs.notes "Nota"> +<!ENTITY https-everywhere.prefs.list_caption "Penghalaan aturan HTTPS yang manakah patut digunakan?"> +<!ENTITY https-everywhere.prefs.enabled "Pengaktifan"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Anda boleh mempelajari penulisan set aturan tersendiri (bagi menambah sokongan kepada laman sesawang yang lain)"> +<!ENTITY https-everywhere.prefs.here_link "di sini"> +<!ENTITY https-everywhere.prefs.toggle "Togol"> +<!ENTITY https-everywhere.prefs.reset_default "Tetapan semula kepada asal"> +<!ENTITY https-everywhere.prefs.view_xml_source "Papar Sumber XML"> + +<!ENTITY https-everywhere.source.downloading "Sedang memuat turun"> +<!ENTITY https-everywhere.source.filename "Nama fail"> +<!ENTITY https-everywhere.source.unable_to_download "Gagal untuk memuat turun sumber."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties new file mode 100644 index 0000000..c369b37 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Pengaktifan HTTPS Everywhere +https-everywhere.menu.globalDisable = Nyah-aktifkan HTTPS Everywhere +https-everywhere.menu.enableDisable = Enable / Disable Rules +https-everywhere.menu.noRules = (No Rules for This Page) +https-everywhere.menu.unknownRules = (Rules for This Page Unknown) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd new file mode 100644 index 0000000..9b95cc0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ms/ssl-observatory.dtd @@ -0,0 +1,104 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Keterangan dan Maklumat Privasi"> +<!ENTITY ssl-observatory.popup.later "Tanya Saya Kemudian"> +<!ENTITY ssl-observatory.popup.no "Tidak"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere boleh mengesan serangan +terhadap pelayar web anda dengan menghantar sijil SSL yang anda terima ke +Pemantau SSL. Aktifkan fungsi ini?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Perlukah HTTPS Everywhere mengunakan Pemantau SSL?"> + +<!ENTITY ssl-observatory.popup.yes "Ya"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Ianya adalah selamat untuk pengaktifan, melainkan +anda menggunakan rangkaian koprat yang sangat merejah:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Selamat, melainkan anda menggunakan rangkaian koprat +dengan pelayan nama internet rahsia:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Hantar dan semak sijil SSL yang ditandatangani oleh +root CA yang tidak standard"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Ianya adalah selamat (dan satu idea yang bagus) untuk mengaktifkan pilihan ini, melainkan anda menggunakan rangkaian koprat yang sangat merejah atau perisian Kaspersky antivirus yang memantau pelayaran anda dengan proksi TLS dan root Certificate Authority persendirian. Sekiranya diaktifkan di atas rangkaian berkenaan, pilihan ini mungkin akan memaparkan bukti domain https:// yang telah dilawati menggunakan proksi tersebut, disebabkan oleh sijil SSL yang unik yang dihasilkan. Oleh itu kami, secara asalnya kami biarkan ia tidak aktif."> + +<!ENTITY ssl-observatory.prefs.anonymous "Semak sijil SSL menggunakan Tor untuk ujuan anonymiti"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Semak sijil SSL menggunakan Tor untuk tujuan anonimiti (memerlukan Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Pemilihan ini memerlukan Tor and Torbutton sedia terpasang"> + +<!ENTITY ssl-observatory.prefs.asn +"Apabila terpapar sijil SSL yang baru, maklumkan kepada Pemantau SSL tentang ISP yang telah berjaya disambungkan"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Ini akan capai dan hantar "Autonomous System number" rangkaian anda. Ia akan membantu mengesan serangan terhadap HTTPS, dan untuk menentukan samada terdapat pemantauan dari rangkaian seperti Iran dan Syria di mana serangan sering berlaku."> + +<!ENTITY ssl-observatory.prefs.done "Selesai"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere boleh menggunakan Pemantau SSL EFF. Terdapat dua +perkara yang dilakukan iaitu: (1) menghantar salinan sijil SSL kepada +Pemantau bagi tujuan mengesan serangan "man in the middle" serta +menambah baik keselamatan web; dan (2) memberi amaran kepada anda tentang +rangkaian yang tidak selamat atau serangan ke atas pelayar web anda."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Contohnya, apabila melawati laman https://www.something.com, sijil SSL +yang diterima oleh Pemantau SSL akan memberitahu bahawa ada pelawat yang +telah ke laman tersebut, tetapi bukan siapa yang telah melawatinya, atau +halaman yang mereka telah kunjungi. Halakan tetikus kepada senarai pilihan +untuk butiran lanjut:"> + +<!ENTITY ssl-observatory.prefs.hide "Sembunyikan tetapan maju"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Semak sijil SSL walaupun ketiadaan Tor"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Kami akan cuba menyimpan data secara anonimus, namun langkah ini adalah kurang selamat"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Hantar dan semak sijil SSL untuk nama DNS yang tidak awam"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Pemantau SSL tidak akan merakam sijil SSL yang namanya tidak dapat diselesaikan oleh sistem DNS, selagi pilihan ini tidak terpilih."> + +<!ENTITY ssl-observatory.prefs.show "Paparkan pilihan maju"> + +<!ENTITY ssl-observatory.prefs.title "Tetapan Pemantau SSL"> + +<!ENTITY ssl-observatory.prefs.use "Gunakan Pemantau SSL?"> +<!ENTITY ssl-observatory.warning.title "AMARAN dari Pemantau SSL EFF"> +<!ENTITY ssl-observatory.warning.showcert "Paparkan rantaian sijil SSL"> +<!ENTITY ssl-observatory.warning.okay "Saya faham"> +<!ENTITY ssl-observatory.warning.text "Amaran tentang sijil SSL untuk laman ini telah diberikan oleh Pemantau SSL EFF:"> +<!ENTITY ssl-observatory.warning.defense "Jika anda berjaya memasuki laman sesawang ini, anda dinasihatkan supaya menukar kata laluan setelah berada dalam sambungan yang selamat."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Hantar dan periksa sijil sendiri-bertanda"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Disarankan, masalah kriptografik adalah biasa pada peranti self-signed "> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd new file mode 100644 index 0000000..797be6f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Om HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Kryptér nettet. Bruk HTTPS-sikkerhet automatisk på mange nettsider."> +<!ENTITY https-everywhere.about.version "Versjon"> +<!ENTITY https-everywhere.about.created_by "Lagd av"> +<!ENTITY https-everywhere.about.librarians "Regelsettbibliotekarer"> +<!ENTITY https-everywhere.about.thanks "Takk til"> +<!ENTITY https-everywhere.about.contribute "Hvis du liker HTTPS Everywhere, vurder å"> +<!ENTITY https-everywhere.about.donate_tor "Donére til Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Donére til EFF"> + +<!ENTITY https-everywhere.menu.about "Om HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory Innstillinger"> +<!ENTITY https-everywhere.menu.globalEnable "Aktiver HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Deaktiver HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Innstillinger"> +<!ENTITY https-everywhere.prefs.enable_all "Aktiver Alle"> +<!ENTITY https-everywhere.prefs.disable_all "Deaktiver Alle"> +<!ENTITY https-everywhere.prefs.reset_defaults "Gjenopprett Standardinnstillinger"> +<!ENTITY https-everywhere.prefs.search "Søk"> +<!ENTITY https-everywhere.prefs.site "Side"> +<!ENTITY https-everywhere.prefs.notes "Merknader"> +<!ENTITY https-everywhere.prefs.list_caption "Hvilke HTTPS omdirigeringsregler skal gjelde?"> +<!ENTITY https-everywhere.prefs.enabled "Aktivert"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lære mer om hvordan du lager dine egne regelsett (for å støtte andre websider)"> +<!ENTITY https-everywhere.prefs.here_link "her"> +<!ENTITY https-everywhere.prefs.toggle "Av/På"> +<!ENTITY https-everywhere.prefs.reset_default "Gjenopprett Standardinnstilling"> +<!ENTITY https-everywhere.prefs.view_xml_source "Vis XML Kilde"> + +<!ENTITY https-everywhere.source.downloading "Laster ned"> +<!ENTITY https-everywhere.source.filename "Filnavn"> +<!ENTITY https-everywhere.source.unable_to_download "Klarte ikke å laste ned kilde."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties new file mode 100644 index 0000000..0bf50bc --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Aktiver HTTPS Everywhere +https-everywhere.menu.globalDisable = Deaktiver HTTPS Everywhere +https-everywhere.menu.enableDisable = Aktiver / Deaktiver Regler +https-everywhere.menu.noRules = (Ingen regler for denne siden) +https-everywhere.menu.unknownRules = (Reglene for denne siden er ukjente) +https-everywhere.toolbar.hint = HTTPS Everywhere er nå aktiv. Du kan aktivere/deaktivere fra side til side ved å klikke på ikonet i adresselinjen. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd new file mode 100644 index 0000000..a7fce63 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nb/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detaljer og Personvernsinformasjon"> +<!ENTITY ssl-observatory.popup.later "Spør Meg Senere"> +<!ENTITY ssl-observatory.popup.no "Nei"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kan oppdage angrep +mot nettleseren din ved å sende sertifikatene du mottar til +Observatory. Aktivere dette?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Skal HTTPS Everywhere bruke SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Ja"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Det er trygt å aktivere dette, hvis du ikke er på et veldig +påtrengende bedriftsnettverk:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Trygt, med mindre du bruker et bedriftsnettverk med hemmelige intranett servernavn."> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Send inn og sjekk sertifikater signert av ikke-standardiserte rotsertifiseringsinstanser"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Det er trygt (og en god idé) å aktivere denne innstillingen, med mindre du bruker et påtrengende bedriftsnettverk eller Kaspersky antivirusprogramvare som overvåker surfingen din med en TLS proxy og en privat rotsertifiseringsinstans. Hvis du aktiverer dette på et slikt nettverk, kan innstillingen publisere bevis på hvilke https://-domener som ble besøk gjennom den proxyen, som følge av de unike sertifkatene den vil lage. Så vi deaktiverer den som standard."> + +<!ENTITY ssl-observatory.prefs.anonymous "Sjekk sertifikatene ved å bruke Tor for anonymitet"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Sjekk sertifikater anonymt ved å bruke Tor (Tor kreves)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Denne innstillingen krever at Tor installeres og aktiveres"> + +<!ENTITY ssl-observatory.prefs.asn +"Når du ser et nytt sertifikat, fortell Observatory hvilken internettleverandør du er tilkoblet"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Dette vil hente og sende ditt nettverks "autonome systemnummer". Dette vil hjelpe oss med å lokalisere angrep mot HTTPS og med å avgjøre om vi har observasjoner fra nettverk i Iran og Syria, hvor angrep er relativt vanlige."> + +<!ENTITY ssl-observatory.prefs.done "Ferdig"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere kan bruke EFF's SSL Observatory. Dette gjør to ting: (1) +sender kopier av HTTPS sertifikater til Observatory, for å hjelpe oss å +avsløre 'mellommann'-angrep og forbedre sikkerheten på nettet; og (2) +lar oss advare deg mot usikre tilkoblinger og angrep på nettleseren din."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"For eksempel, hvis du besøker https://www.something.com, vil sertifikatet +Observatory mottar indikere at noen besøkte +www.something.com, men ikke hvem som besøkte siden, eller spesifikt hvilken side +de så på. Hold muspekeren over innstillingene for flere detaljer:"> + +<!ENTITY ssl-observatory.prefs.hide "Skjul avanserte innstillinger"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Sjekk sertifikater selv om Tor ikke er tilgjengelig."> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Vil vil fortsatt prøve å holde dataene anonyme, men denne innstillingen er mindre sikker"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Send inn og sjekk sertifikater til DNS-navn som ikke er offentlige"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Hvis denne innstillingen ikke er aktivert, vil ikke Observatory registrere sertikatene til navn som ikke kan analyseres gjennom DNS-systemet."> + +<!ENTITY ssl-observatory.prefs.show "Vis avanserte innstillinger"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory Innstillinger"> + +<!ENTITY ssl-observatory.prefs.use "Bruke Observatory?"> +<!ENTITY ssl-observatory.warning.title "ADVARSEL fra EFF's SSL Observatory "> +<!ENTITY ssl-observatory.warning.showcert "Vis sertifikatkjede"> +<!ENTITY ssl-observatory.warning.okay "Jeg forstår"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory har utstedt en advarsel om bruk av HTTPS sertifikatene på denne siden:"> +<!ENTITY ssl-observatory.warning.defense "Hvis du er innlogget på denne siden, er det anbefalt at du forandrer passordet så snart du har en sikker tilkobling."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Send og sjekk selvsignerte sertifikater"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Dette er anbefalt; kryptografiske problemer er spesielt vanlig i selvsignerte enheter"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd new file mode 100644 index 0000000..04bb6c5 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Over HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Versleutel het web! Gebruik HTTPS-beveiliging automatisch op vele sites."> +<!ENTITY https-everywhere.about.version "Versie"> +<!ENTITY https-everywhere.about.created_by "Gemaakt door"> +<!ENTITY https-everywhere.about.librarians "Regelsetbibliothecarissen"> +<!ENTITY https-everywhere.about.thanks "Met dank aan"> +<!ENTITY https-everywhere.about.contribute "Als HTTPS Everywhere u bevalt, kunt u overwegen"> +<!ENTITY https-everywhere.about.donate_tor "te doneren aan Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "te doneren aan het EFF"> + +<!ENTITY https-everywhere.menu.about "Over HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL-observatoriumvoorkeuren"> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere inschakelen"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere uitschakelen"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere-voorkeuren"> +<!ENTITY https-everywhere.prefs.enable_all "Alles inschakelen"> +<!ENTITY https-everywhere.prefs.disable_all "Alles uitschakelen"> +<!ENTITY https-everywhere.prefs.reset_defaults "Standaardwaarden herstellen"> +<!ENTITY https-everywhere.prefs.search "Zoeken"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Opmerkingen"> +<!ENTITY https-everywhere.prefs.list_caption "Welke HTTPS-omleidingsregels moeten worden toegepast?"> +<!ENTITY https-everywhere.prefs.enabled "Ingeschakeld"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Om ondersteuning voor andere websites toe te voegen, kunt u"> +<!ENTITY https-everywhere.prefs.here_link "zelf regelsets opstellen"> +<!ENTITY https-everywhere.prefs.toggle "Schakelen"> +<!ENTITY https-everywhere.prefs.reset_default "Standaardwaarden herstellen"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML-broncode bekijken"> + +<!ENTITY https-everywhere.source.downloading "Bezig met downloaden"> +<!ENTITY https-everywhere.source.filename "Bestandsnaam"> +<!ENTITY https-everywhere.source.unable_to_download "Kan broncode niet downloaden."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 bericht"> +<!ENTITY https-everywhere.popup.paragraph1 "Oeps! U gebruikte de stabiele versie van HTTPS Everywhere, maar het is mogelijk dat we u tijdens de laatste uitgave per ongeluk naar de ontwikkelversie hebben geupgrade."> +<!ENTITY https-everywhere.popup.paragraph2 "Wilt u teruggaan naar de stabiele versie?"> +<!ENTITY https-everywhere.popup.paragraph3 "We zouden het op prijs stellen als u doorging met het gebruik van onze ontwikkelde versie en ons hielp met het verbeteren van HTTPS Everywhere! U zult hier en daar wat bugs tegenkomen, die u kunt melden aan https-everywhere@eff.org. Excuses voor het ongemak, en veel dank voor het gebruik van HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Hou me op de ontwikkelde versie"> +<!ENTITY https-everywhere.popup.revert "Download de meest recenste stabiele uitgave."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties new file mode 100644 index 0000000..a96fdc7 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/https-everywhere.properties @@ -0,0 +1,7 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhere inschakelen +https-everywhere.menu.globalDisable = HTTPS Everywhere uitschakelen +https-everywhere.menu.enableDisable = Regels in-/uitschakelen +https-everywhere.menu.noRules = (Geen regels voor deze pagina) +https-everywhere.menu.unknownRules = (Regels voor deze pagina zijn onbekend) +https-everywhere.toolbar.hint = HTTPS Everywhere is nu geactiveerd. Je kan dit aanpassen door op een site-by-site basis te clicken op het icoon naast de adres bar. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd new file mode 100644 index 0000000..e576db5 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/nl/ssl-observatory.dtd @@ -0,0 +1,99 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Details en privacy-informatie"> +<!ENTITY ssl-observatory.popup.later "Later opnieuw vragen"> +<!ENTITY ssl-observatory.popup.no "Nee"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere kan aanvallen op uw browser detecteren door +de certificaten die u ontvangt, naar het observatorium door te sturen. Wilt u dit inschakelen?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"SSL-observatorium gebruiken?"> + +<!ENTITY ssl-observatory.popup.yes "Ja"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Het is veilig om dit in te schakelen, tenzij u een zeer indringend bedrijfsnetwerk gebruikt:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Veilig, tenzij u een bedrijfsnetwerk met geheime intranetservernamen gebruikt:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Certificaten ondertekend door niet-standaard hoofd-CA’s opsturen en controleren"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Het is veilig (en aangeraden) om deze optie in te schakelen, tenzij u een indringend +bedrijfsnetwerk gebruikt dat uw surfgedrag met een TLS-proxy en een +privé-hoofdcertificaatautoriteit monitort. Indien deze optie op een dergelijk netwerk is ingeschakeld, +kan deze bewijs publiceren over welke HTTPS-domeinen via die proxy werden bezocht, vanwege de unieke +certificaten die dan worden geproduceerd. De optie is daarom standaard uitgeschakeld."> + +<!ENTITY ssl-observatory.prefs.anonymous "Certificaten omwille van anonimiteit via Tor controleren"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Certificaten omwille van anonimiteit via Tor controleren (vereist Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Voor deze optie zijn Tor en Torbutton vereist"> + +<!ENTITY ssl-observatory.prefs.asn +"Melden met welke ISP u bent verbonden indien u een nieuwe certificaat ziet"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Dit zal het Autonoom Systeem-nummer van uw netwerk ophalen en verzenden als het observatorium een +waarschuwing afgeeft over een certificaat dat u zag. Dit helpt ons aanvallen op HTTPS te lokaliseren."> + +<!ENTITY ssl-observatory.prefs.done "OK"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere kan het SSL-observatorium van EFF gebruiken. Dit doet twee dingen: ten eerste zendt +het kopieën van HTTPS-certificaten naar het observatorium om ons te helpen man-in-the-middle-aanvallen +te detecteren en de veiligheid van het web te verbeteren; ten tweede laat het ons u waarschuwen over +onveilige verbindingen en aanvallen op uw browser."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Als u bijvoorbeeld https://www.iets.nl bezoekt, geeft het certificaat dat het observatorium ontvangt aan +dat iemand www.iets.nl bezocht, maar niet wie de site bezocht of welke specifieke pagina de bezoeker +bekeek. Plaats uw muis boven de opties voor meer details:"> + +<!ENTITY ssl-observatory.prefs.hide "Geavanceerde opties verbergen"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Certificaten controleren zelfs als Tor niet beschikbaar is"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"We zullen nog steeds proberen de gegevens anoniem te houden, maar deze optie is minder veilig"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Certificaten voor niet-openbare DNS-namen opsturen en controleren"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Tenzij deze optie is aangevinkt, legt het observatorium geen certificaten vast voor namen die niet via +het DNS-systeem zijn op te lossen."> + +<!ENTITY ssl-observatory.prefs.show "Geavanceerde opties tonen"> + +<!ENTITY ssl-observatory.prefs.title "Voorkeuren SSL-observatorium"> + +<!ENTITY ssl-observatory.prefs.use "Het observatorium gebruiken?"> +<!ENTITY ssl-observatory.warning.title "WAARSCHUWING van SSL-observatorium van EFF"> +<!ENTITY ssl-observatory.warning.showcert "Toon de certificaatketen"> +<!ENTITY ssl-observatory.warning.okay "Ik begrijp het"> +<!ENTITY ssl-observatory.warning.text "Het SSL-observatorium van EFF heeft een waarschuwing uitgegeven over een HTTPS-certificaat voor deze site:"> +<!ENTITY ssl-observatory.warning.defense "Als u bent ingelogd op deze site, is het aan te raden uw wachtwoord te wijzigen zodra u een veilige verbinding hebt."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Verstuur en controleer zelf-getekende certificaten"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Dit is aanbevolen; cryptografische problemen zijn veel voorkomend in zelf-getekende embedded apparaten"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd new file mode 100644 index 0000000..e0194a6 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Szyfruj sieć! Automatycznie używaj zabezpieczeń HTTPS na wielu stronach."> +<!ENTITY https-everywhere.about.version "Wersja"> +<!ENTITY https-everywhere.about.created_by "Stworzone przez"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "Dzięki dla"> +<!ENTITY https-everywhere.about.contribute "Jeżeli lubisz HTTPS Everywhere, możesz rozważyć "> +<!ENTITY https-everywhere.about.donate_tor "Dotacje dla Tora"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Dotacje dla Electronic Frontier Foundation"> + +<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Ustawienia SSL Observatory"> +<!ENTITY https-everywhere.menu.globalEnable "Włącz HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Wyłącz HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Ustawienia HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Włącz wszystko"> +<!ENTITY https-everywhere.prefs.disable_all "Wyłącz wszystko"> +<!ENTITY https-everywhere.prefs.reset_defaults "Przywróć ustawienia fabryczne"> +<!ENTITY https-everywhere.prefs.search "Szukaj"> +<!ENTITY https-everywhere.prefs.site "Strona"> +<!ENTITY https-everywhere.prefs.notes "Notatki"> +<!ENTITY https-everywhere.prefs.list_caption "Które z opcji przekierowań HTTPS należy zastosować?"> +<!ENTITY https-everywhere.prefs.enabled "Włączone"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Możesz nauczyć się jak pisać własne pakiety reguł (by dać wsparcie innym stronom)"> +<!ENTITY https-everywhere.prefs.here_link "tutaj"> +<!ENTITY https-everywhere.prefs.toggle "Przełączanie"> +<!ENTITY https-everywhere.prefs.reset_default "Przywróć ustawienia fabryczne"> +<!ENTITY https-everywhere.prefs.view_xml_source "Zobacz źródło XML "> + +<!ENTITY https-everywhere.source.downloading "Ściąganie"> +<!ENTITY https-everywhere.source.filename "Nazwa pliku"> +<!ENTITY https-everywhere.source.unable_to_download "Nie można ściągnąć źródła. "> + +<!ENTITY https-everywhere.popup.title "Powiadomienie o wersji HTTPS Everywhere 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "Ojej. Używałeś stabilnej wersji HTTPS Everywhere, ale mogliśmy wraz z najnowszą wersją przypadkowo zaktualizować Twój system do wersji rozwojowej."> +<!ENTITY https-everywhere.popup.paragraph2 "Czy chciałbyś wrócić do wersji stabilnej?"> +<!ENTITY https-everywhere.popup.paragraph3 "Pragnęlibyśmy abyś dalej używał naszej wersji rozwojowej i pomógł nam uczyć HTTPS Everywhere lepszym! Może się okazać, że jest trochę więcej błędów tu i tam, które możesz zgłosić pod adres https-everywhere@eff.org. Wybacz proszę tę niedogodność. Dziękujemy za używanie HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Pozostań przy wersji rozwojowej"> +<!ENTITY https-everywhere.popup.revert "Pobierz najnowszą wersję stabilną"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties new file mode 100644 index 0000000..03428a2 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Włącz HTTPS Everywhere +https-everywhere.menu.globalDisable = Wyłącz HTTPS Everywhere +https-everywhere.menu.enableDisable = Włącz/Wyłącz reguły +https-everywhere.menu.noRules = (brak reguł dla tej strony) +https-everywhere.menu.unknownRules = (reguły dla strony nieznane) +https-everywhere.toolbar.hint = HTTPS Everywhere jest teraz aktywne. Możesz przełączać to dla poszczególnych stron, klikając ikonę w pasku adresu. +https-everywhere.migration.notification0 = W celu implementacji pewnej kluczowej poprawki, ta aktualizacja zresetuje ustawienia reguł HTTPS Everywhere do ich domyślnych wartości. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd new file mode 100644 index 0000000..bd515b3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pl/ssl-observatory.dtd @@ -0,0 +1,91 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Szczegóły i Polityka Prywatności"> +<!ENTITY ssl-observatory.popup.later "Zapytaj mnie później"> +<!ENTITY ssl-observatory.popup.no "Nie"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere może wykryć ataki +na twoją przeglądarkę przez wysyłanie do ciebie certyfikatów, które otrzymujesz +do "SSL Observatory". Włączyć tą opcję?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Czy HTTPS Everywhere ma używać "SSL Observatory"?"> + +<!ENTITY ssl-observatory.popup.yes "Tak"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Bezpiecznym jest używanie tej opcji, chyba że korzystasz +z intruzywnej sieci korporacyjnej."> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Bezpieczne, jeżeli używasz sieci korporacyjnej z ukrytymi nazwami serwerów Intranetowych."> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Wysyłaj i sprawdzaj certyfikaty podpisane przez niestandardowe ośrodki certyfikacji"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Jest bezpiecznym, (i dobrym pomysłem), by włączyć tą opcję, chyba że używasz intruzywnej sieci korporacyjnej lub antywirusa firmy Kaspersky, które monitorują twoje przeglądanie za pomocą TLS proxy i prywatnego roota CA. Jeżeli ta opcja jest włączona na takich właśnie sieciach, opcja ta może przyczynić się do publikacji dowodów na temat stron, które były odwiedzane przez ten proxy, ponieważ unikalne certyfikaty zostaną utworzone. Dlatego też opcja ta domyślnie jest wyłączona."> + +<!ENTITY ssl-observatory.prefs.anonymous "Sprawdź certyfikaty używając Tora dla prywatności"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Sprawdź certyfikaty używając Tora dla prywatności (wymaga aplikacji Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Ta opcja, do instalacji, wymaga Tora oraz aplikacji Torbutton "> + +<!ENTITY ssl-observatory.prefs.asn +"Jeżeli dostrzeżesz nowe certyfikaty, potwierdź SLL Observatory, do którego ISP jesteś obecnie podłączony"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"To pobierze i wyśle "numer Autonomicznego Systemu" Twojej sieci. +To pomoże nam zlokalizować ataki na HTTPS i określić, czy mamy obserwacje sieci w miejscach takich jak Iran czy Syria, gdzie ataki są porównywalnie częste."> + +<!ENTITY ssl-observatory.prefs.done "Gotowe"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere może używać EFF's SSL Observatory. Daje to dwie rzeczy: (1) wysyła kopie certyfikatów HTTPS do SSL Observatory, pomagając nam wykryć ataki osób podsłuchujących; i (2) daje nam znać o niezabezpieczonych połączeniach lub atakach na twoją przeklądarkę."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Dla przykładu, jeżeli odwiedzasz https://www.something.com, certyfikat otrzymany przez SSL Observatory wskaże, że ktoś odwiedził https://www.something.com ale nie wskaże kto dokładnie ją odwiedzał i jakie strony przeglądał. Najedź kursorem na opcje by zobaczyć więcej szczegółów "> + +<!ENTITY ssl-observatory.prefs.hide "Schowaj zaawansowane opcje"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Sprawdź certyfikaty nawet jeżeli Tor nie jest dostępny"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Postaramy się zachować anonimowość twoich danych, jednak ta opcja jest mniej bezpieczna."> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Wyślij i sprawdź certyfikaty dla niepublicznych nazw DNSów"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Jeśli ta opcja nie jest włączona, Obserwatorium nie zarejestruje certyfikatów dla nazw, których nie można znaleźć w systemie DNS."> + +<!ENTITY ssl-observatory.prefs.show "Pokaż zaawansowane opcje"> + +<!ENTITY ssl-observatory.prefs.title "Preferencje SLL Observatory"> + +<!ENTITY ssl-observatory.prefs.use "Użyj Observatory?"> +<!ENTITY ssl-observatory.warning.title "OSTRZEŻENIE od EFF's SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Pokaż łańcuch certyfikatu"> +<!ENTITY ssl-observatory.warning.okay "Tak rozumie"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory wystawił ostrzeżenie na temat certyfikatów HTTPS dla tej stron:"> +<!ENTITY ssl-observatory.warning.defense "Jeżeli zalogowałeś się do tej strony, bezpiecznym będzie zmiana hasła, po ponownym połączeniu się z bezpieczną siecią."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Wysyłaj i sprawdzaj samopodpisane certyfikaty"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"To jest zalecane; problemy kryptograficzne są szczególnie częste w samopodpisanych urządzeniach wbudowanych."> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd new file mode 100644 index 0000000..805b7c5 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Sobre o HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Criptografe a Web! Use automaticamente a segurança HTTPS em diversos sites."> +<!ENTITY https-everywhere.about.version "Versão"> +<!ENTITY https-everywhere.about.created_by "Criado por"> +<!ENTITY https-everywhere.about.librarians "Bibliotecários dos Conjuntos de Regras"> +<!ENTITY https-everywhere.about.thanks "Obrigado a"> +<!ENTITY https-everywhere.about.contribute "Se você gostar do HTTPS Everywhere, considere"> +<!ENTITY https-everywhere.about.donate_tor "Fazer uma doação para o Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Fazer uma doação para a EFF"> + +<!ENTITY https-everywhere.menu.about "Sobre o HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Preferências do Observatório SSL"> +<!ENTITY https-everywhere.menu.globalEnable "Habilitar HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Desabilitar HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Preferências do HTTPS Everywhere "> +<!ENTITY https-everywhere.prefs.enable_all "Habilitar tudo"> +<!ENTITY https-everywhere.prefs.disable_all "Desabilitar tudo"> +<!ENTITY https-everywhere.prefs.reset_defaults "Restaurar as configurações padrão"> +<!ENTITY https-everywhere.prefs.search "Procurar"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Notas"> +<!ENTITY https-everywhere.prefs.list_caption "Quais regras de redirecionamento HTTPS devem ser aplicadas?"> +<!ENTITY https-everywhere.prefs.enabled "Habilitado(a)"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Você pode aprender como escrever seu próprio conjunto de regras (para adicionar suporte para outros websites)"> +<!ENTITY https-everywhere.prefs.here_link "aqui"> +<!ENTITY https-everywhere.prefs.toggle "Alternar"> +<!ENTITY https-everywhere.prefs.reset_default "Restaurar as configurações padrão"> +<!ENTITY https-everywhere.prefs.view_xml_source "Ver Fonte XML"> + +<!ENTITY https-everywhere.source.downloading "Fazendo download"> +<!ENTITY https-everywhere.source.filename "Nome do Arquivo"> +<!ENTITY https-everywhere.source.unable_to_download "Impossível fazer download da origem."> + +<!ENTITY https-everywhere.popup.title "Aviso do HTTPS Everywhere 4.0development.11"> +<!ENTITY https-everywhere.popup.paragraph1 "Desculpe. Você usava a versão estável do HTTPS Everywhere, mas, na nossa última liberação, sem querer podemos ter atualizado seu navegador para a versão de desenvolvimento."> +<!ENTITY https-everywhere.popup.paragraph2 "Gostaria de voltar à versão estável?"> +<!ENTITY https-everywhere.popup.paragraph3 "Seria útil para o nosso projeto se quiser continuar a usar a versão de desenvolvimento para ajudar-nos a melhorar o HTTPS Everywhere. Porém, pode encontrar mais bugs; pode informar sobre eles escrevendo para https-everywhere@eff.org. Desculpe pelo incômodo, e obrigado por usar o HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Manter o navegador na versão de desenvolvimento"> +<!ENTITY https-everywhere.popup.revert "Baixar a versão estável mais recente"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties new file mode 100644 index 0000000..66160e4 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Habilitar HTTPS Everywhere +https-everywhere.menu.globalDisable = Desabilitar HTTPS Everywhere +https-everywhere.menu.enableDisable = Habilitar / Desabilitar Regras +https-everywhere.menu.noRules = (Não há Regras para Esta Página) +https-everywhere.menu.unknownRules = (Regras Desconhecidas para Esta Página) +https-everywhere.toolbar.hint = HTTPS Everywhere foi ativado. Você pode habilitá-lo individualmente para cada site, clicando no ícone na barra de endereços. +https-everywhere.migration.notification0 = Para implementar uma reparação crucial, esta atualização limpa sua preferência de regras do HTTPS Everywhere para valores padrão. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd new file mode 100644 index 0000000..7ef2617 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/pt/ssl-observatory.dtd @@ -0,0 +1,94 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detalhes e Informações sobre a Privacidade"> +<!ENTITY ssl-observatory.popup.later "Pergunte-me mais tarde"> +<!ENTITY ssl-observatory.popup.no "Não"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere detecta ataques +contra seu navegador enviando os certificados que você receber +ao Observatório. Você gostaria de ativá-lo?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"O HTTPS Everywhere deverá usar o Observatório SSL?"> + +<!ENTITY ssl-observatory.popup.yes "Sim"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"É seguro habilitar isto, a não ser que você use uma +rede corporativa muito intrusiva:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Seguro, a não ser que você use uma rede corporativa com nomes de servidores secretos na intranet:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Submeta e verifique os certificados assinados pelas non-standard root CAs"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"É seguro (e uma boa idéia) habilitar esta opção, a não ser que você use uma rede corporativa intrusiva ou o Kapersky antivirus que monitora sua navegação com uma proxy TLS e um certificado Certificate Authority privado raiz. Se habilitado em uma rede deste tipo, esta opção pode publicar evidências de quais domínios httpss:// foram visitados através daquele proxy, por causa dos certificados únicos que serão produzidos. Então nós deixamos isto desabilitado por padrão."> + +<!ENTITY ssl-observatory.prefs.anonymous "Checar certificados usando Tor para anonimato"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Checar certificados usando Tor para anonimato (requer Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Esta opção requer que o Tor e o Torbutton estejam instalados"> + +<!ENTITY ssl-observatory.prefs.asn +"Quando você vir um novo certificado, diga ao Observatório a qual ISP você está conectado"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Isto irá buscar e enviar o "Autonomous System Number" de sua rede. Isto irá nos ajudar a localizar ataques contra HTTPS, e a determinar se nós temos observações das redes localizadas em lugares como Irã e Síria, onde os ataques são relativamente mais comuns."> + +<!ENTITY ssl-observatory.prefs.done "Pronto"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere pode usar o Observatório SSL de EFF, para realizar duas funções: (1) enviar cópias dos certificados HTTPS ao Observatório, para ajudar-nos +a detectar o "homem no meio" dos ataques e melhorar a segurança da Web; e (2) +Avisar-nos sobre conexões não seguras ou ataques ao seu navegador."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Por exemplo, quando você visita https://www.algumacoisa.com, o certificado +recebido pelo Observatório indicará que alguém visitou +www.algumacoisa.com, mas não quem visitou o site, ou qual página específica foi vista. Passe o mouse sobre as opções para mais detalhes:"> + +<!ENTITY ssl-observatory.prefs.hide "Ocultar opções avançadas"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Checar os certificados mesmo se o Tor não estiver disponível"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Nós continuaremos tentando manter os dados anônimos, mas esta opção é menos segura"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Submeter e checar os certificados para nomes de DNS não-públicos"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"A não ser que esta opção esteja marcada, o Observatório gravará os certificados para os nomes impossíveis de resolver através do sistema DNS."> + +<!ENTITY ssl-observatory.prefs.show "Mostrar opções avançadas"> + +<!ENTITY ssl-observatory.prefs.title "Preferências do Observatório SSL"> + +<!ENTITY ssl-observatory.prefs.use "Usar este Observatório?"> +<!ENTITY ssl-observatory.warning.title "AVISO do Observatório SSL de EFF"> +<!ENTITY ssl-observatory.warning.showcert "Mostrar a série do certificado"> +<!ENTITY ssl-observatory.warning.okay "Eu entendi"> +<!ENTITY ssl-observatory.warning.text "O Observatório SSL de EFF emitiu um aviso sobre o(s) certificados(s) HTTPS para este site:"> +<!ENTITY ssl-observatory.warning.defense "Se você estiver logado neste site, é aconselhável trocar sua senha assim que você tiver uma conexão segura."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Envie e verifique os certificados auto-assinados"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Isto é recomendado; problemas de criptografia são especialmente comuns em certificados auto-assinados de sistemas embarcados"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd new file mode 100644 index 0000000..86d3da2 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "О HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Зашифруйте сеть! Автоматически переключайтесь на безопасный протокол HTTPS там, где это возможно."> +<!ENTITY https-everywhere.about.version "Версия"> +<!ENTITY https-everywhere.about.created_by "Авторы"> +<!ENTITY https-everywhere.about.librarians "Хранители правил"> +<!ENTITY https-everywhere.about.thanks "Благодарности"> +<!ENTITY https-everywhere.about.contribute "Если Вам нравится HTTPS Everywhere, возможно, Вы хотели бы сделать"> +<!ENTITY https-everywhere.about.donate_tor "пожертвование Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "ru"> +<!ENTITY https-everywhere.about.donate_eff "пожертвование EFF"> + +<!ENTITY https-everywhere.menu.about "О HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Настройки SSL Observatory"> +<!ENTITY https-everywhere.menu.globalEnable "Включить HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Выключить HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Настройки HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Включить всё"> +<!ENTITY https-everywhere.prefs.disable_all "Выключить всё"> +<!ENTITY https-everywhere.prefs.reset_defaults "По умолчанию"> +<!ENTITY https-everywhere.prefs.search "Поиск"> +<!ENTITY https-everywhere.prefs.site "Сайт"> +<!ENTITY https-everywhere.prefs.notes "Примечания"> +<!ENTITY https-everywhere.prefs.list_caption "Какие правила перенаправлений следует использовать?"> +<!ENTITY https-everywhere.prefs.enabled "Включено"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Руководство по созданию новых правил находится"> +<!ENTITY https-everywhere.prefs.here_link "здесь"> +<!ENTITY https-everywhere.prefs.toggle "Переключить"> +<!ENTITY https-everywhere.prefs.reset_default "Сбросить к значению по умолчанию"> +<!ENTITY https-everywhere.prefs.view_xml_source "Просмотреть исходник XML"> + +<!ENTITY https-everywhere.source.downloading "Загрузка"> +<!ENTITY https-everywhere.source.filename "Имя файла"> +<!ENTITY https-everywhere.source.unable_to_download "Не могу загрузить исходник"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 уведомление"> +<!ENTITY https-everywhere.popup.paragraph1 "Ой. Вы использовали стабильную версию HTTPS Everywhere, но мы, возможно, случайно обновили Вам её до разрабатываемой версии."> +<!ENTITY https-everywhere.popup.paragraph2 "Хотели бы Вы вернуться к стабильной версии?"> +<!ENTITY https-everywhere.popup.paragraph3 "Мы были бы рады, если бы Вы продолжили использовать разрабатываемую версию, и помогли нам сделать HTTPS Everywhere лучше! Вы могли бы найти несколько ошибок, и прислать их нам на https-everywhere@eff.org. Извините за неудобства, и спасибо за использование HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Остаться на разрабатываемой версии"> +<!ENTITY https-everywhere.popup.revert "Загрузить последнюю стабильную версию"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties new file mode 100644 index 0000000..36530f3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Включить HTTPS Everywhere +https-everywhere.menu.globalDisable = Выключить HTTPS Everywhere +https-everywhere.menu.enableDisable = Включить / Выключить правила +https-everywhere.menu.noRules = Нет правил для этой страницы +https-everywhere.menu.unknownRules = Правила для этой страницы неизвестны +https-everywhere.toolbar.hint = HTTPS Everywhere активен. Вы можете отключить его для этого сайта кликнув по значку. +https-everywhere.migration.notification0 = В целях реализации критических исправлений, это обновление сбрасывает настройки правил HTTPS Everywhere к значениям по умолчанию. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd new file mode 100644 index 0000000..f0f06bd --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/ru/ssl-observatory.dtd @@ -0,0 +1,120 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Подробная информация и сведения о конфиденциальности"> +<!ENTITY ssl-observatory.popup.later "Спросить позже"> +<!ENTITY ssl-observatory.popup.no "Нет"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere может распознавать атаки на Ваш браузер, +путём отправки получаемых сертификатов в SSL Observatory. +Включить данную опцию?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Должен ли HTTPS Everywhere использовать SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Да"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Включение данной опции безопасно, кроме случая когда +Вы используете очень навязчивую корпоративную сеть"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Безопасно, кроме случая когда Вы используете +корпоративную сеть с секретными именами серверов"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Отправить и проверить сертификаты, подписанные +нестандартными корневыми центрами сертификации"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Это безопасно (а так же хорошая идея) включить данную опцию, +кроме случая, когда Вы используете навязчивую корпоративную сеть +или Антивирус Касперского, который следит за Вашей работой в сети +с помощью TLS прокси и частного корневого Центра Сертификации. +Если она будет включена в такой сети, то может обнародовать +сведения о том какие домены https:// были посещены через этот +прокси, вследствие уникальных сертификатов которые он будет +издавать. Поэтому мы оставили её выключенной по умолчанию."> + +<!ENTITY ssl-observatory.prefs.anonymous "Проверить сертификаты используемые Tor для анонимности"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Проверить сертификаты используемые Tor +для анонимности (требует Tor)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Эта опция требует наличия установленного и включенного Tor."> + +<!ENTITY ssl-observatory.prefs.asn +"При получении нового сертификата, сообщить +SSL Observatory к какому провайдеру Вы подключены"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Будет получать и отправлять "Номер Автономной Системы" +Вашей сети. Это поможет нам локализовать атаки против HTTPS +и определить наличие наблюдений для сетей в таких местах как +Иран и Сирия, где атаки сравнительно часты."> + +<!ENTITY ssl-observatory.prefs.done "Готово"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere может использовать SSL Observatory. Это +обеспечивает две вещи: (1) отправляет копии сертификатов в SSL +Observatory, что бы помочь нам определить атаки 'человек +посередине' и улучшить безопасность Веб; и (2) позволяет нам +предупреждать Вас о небезопасных соединениях или атаках на +Ваш браузер."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Например, когда Вы заходите на https://www.something.com, +сертификат полученный SSL Observatory будет означать что кто-то +посетил www.something.com, но не кто именно его посетил, или +какую конкретную страницу он просматривал. Наведите курсор на +опции для более подробной информации:"> + +<!ENTITY ssl-observatory.prefs.hide "Скрыть дополнительные опции"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Проверять сертификаты даже если Tor недоступен"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Мы по-прежнему стараемся сохранить Ваши +данные анонимными, но эта опция менее безопасна."> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Отправить и проверить сертификаты для непубличных DNS имён"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Если данная опция выключена, SSL Observatory не будет +регистрировать сертификаты для имён, которые он не может +разрешить через DNS."> + +<!ENTITY ssl-observatory.prefs.show "Показать дополнительные опции"> + +<!ENTITY ssl-observatory.prefs.title "Настройки SSL Observatory"> + +<!ENTITY ssl-observatory.prefs.use "Использовать SSL Observatory?"> +<!ENTITY ssl-observatory.warning.title "ПРЕДУПРЕЖДЕНИЕ от SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Показать цепочку сертификатов"> +<!ENTITY ssl-observatory.warning.okay "Я понимаю"> +<!ENTITY ssl-observatory.warning.text "SSL Observatory выдал предупреждение +для сертификат(-а/-ов) данного сайта:"> +<!ENTITY ssl-observatory.warning.defense "Если Вы вошли в учётную запись на данном сайте, может быть +целесообразно сменить пароль после установки безопасного +соединения."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Подтвердите и проверьте собственные сертификаты"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Рекомендуется. Криптографические проблемы особенно +распространены в самоподписанных встраиваемых устройствах."> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd new file mode 100644 index 0000000..f528d07 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "HTTPS Everywhere පිලිබඳව"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "බොහෝ වෙබ් අඩවි සඳහා HTTPS ආරක්ෂාව ස්වයංක්රීයව පාවිච්චි කරන්න."> +<!ENTITY https-everywhere.about.version "සංස්කරණය"> +<!ENTITY https-everywhere.about.created_by "නිර්මිත"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "ස්තුතිය"> +<!ENTITY https-everywhere.about.contribute "HTTPS Everywhere පිලිබඳව ඔබ කැමතිනම් මේවා සලකා බැලිය යුතුය"> +<!ENTITY https-everywhere.about.donate_tor "Tor වලට ආධාර කිරීම"> +<!ENTITY https-everywhere.about.tor_lang_code "ඉංග්රීසි"> +<!ENTITY https-everywhere.about.donate_eff " EFF වලට ආධාර කරන්න"> + +<!ENTITY https-everywhere.menu.about "HTTPS Everywhere පිලිබඳව"> +<!ENTITY https-everywhere.menu.observatory "SSL නිරික්ෂණාගාර මනාප "> +<!ENTITY https-everywhere.menu.globalEnable "HTTPS Everywhere ක්රියාකරවන්න"> +<!ENTITY https-everywhere.menu.globalDisable "HTTPS Everywhere ක්රියාවිරහිත කරවන්න"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere මනාප "> +<!ENTITY https-everywhere.prefs.enable_all "සියල්ල සබල කරන්න "> +<!ENTITY https-everywhere.prefs.disable_all "සියල්ල අබල කරන්න "> +<!ENTITY https-everywhere.prefs.reset_defaults "යථා තත්වයට පත් කරන්න"> +<!ENTITY https-everywhere.prefs.search "සොයන්න"> +<!ENTITY https-everywhere.prefs.site "අඩවිය"> +<!ENTITY https-everywhere.prefs.notes "සටහන්"> +<!ENTITY https-everywhere.prefs.list_caption "කුමන HTTPS හැරවුම් කොන්දේසිය තෝරගන්නද ? "> +<!ENTITY https-everywhere.prefs.enabled "සබල කරන ලදී "> +<!ENTITY https-everywhere.prefs.ruleset_howto "ඔබගේ rulesets ලියන ආකාරය පිළිබද ඔබට ඉගෙනගත හැක(අනෙකුත් වෙබ් අඩවි සදහා සහය එකතු කිරීමට) "> +<!ENTITY https-everywhere.prefs.here_link "මෙහි "> +<!ENTITY https-everywhere.prefs.toggle "ටොගලය "> +<!ENTITY https-everywhere.prefs.reset_default "යථා තත්වයට පත් කරන්න"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML කේත පෙන්වන්න "> + +<!ENTITY https-everywhere.source.downloading "භාගත වෙමින්"> +<!ENTITY https-everywhere.source.filename "ගොනු නම"> +<!ENTITY https-everywhere.source.unable_to_download "භාගත කිරීම සිදුකල නොහැක."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties new file mode 100644 index 0000000..7cdeccb --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/si/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = HTTPS Everywhere සබල කරවන්න +https-everywhere.menu.globalDisable = HTTPS Everywhere අබල කරවන්න +https-everywhere.menu.enableDisable = සබල/ දුබල කරවීමේ නීති +https-everywhere.menu.noRules = (මෙම පිටුව සදහා නීති කිසිවක් නැත) +https-everywhere.menu.unknownRules = (මෙම පිටුව සම්බන්ද නීති පිළිබද සදහනක් නැත) +https-everywhere.toolbar.hint = HTTPS Everywhere දැන් ක්රියාත්මකයි. ඔබට එය දැන් යොමු තීරුවේ ඇති නිරූපකය ඔබමින් අඩවියෙන් අඩවියට ටොගල් කල හැක. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd new file mode 100644 index 0000000..0064466 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/si/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "විස්තර හා පෞද්ගලික තොරතුරු "> +<!ENTITY ssl-observatory.popup.later "පසුව මගෙන් අසන්න."> +<!ENTITY ssl-observatory.popup.no "නැත"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere ඔබේ බ්රව්සරයට එරෙහිව ඇතිවන ආක්රමණ +හදුනාගන්නා අතර, ඔබට ලැබෙන සහතික නිරික්ෂණාගාරයට යවයි. +මෙම ක්රියාවලිය සිදුකරනවාට ඔබ කැමතිද?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS Everywhere SSL නිරික්ෂණාගාරය භාවිතා කල යුතුද?"> + +<!ENTITY ssl-observatory.popup.yes "ඔව්"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"ආගන්තුක සංයුක්ත ජාලයක් භාවිතා කරන විට හැරෙන්න +මෙය සබල කිරීම සුරක්ෂිත වේ:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"ඔබ රහසිගත අන්තඃජාල සේවාදායක නමක් සමග සංයුක්ත ජාලයක් භාවිතා නොකරන්නේ නම් ඔබ සුරක්ෂිතය."> + +<!ENTITY ssl-observatory.prefs.alt_roots +"යොමුකරීමෙන් පසු අසම්මත මුල සහතික බලධාරීන් අත්සන් කල සහතික පරික්ෂා කරන්න."> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"ආගන්තුක සංයුක්ත ජාලයක් හෝ TLS proxy හා පෞද්ගලික සහතික බලධාරියා විසින් ඔබේ පිරික්සුම් නිරීක්ෂණය කරන ලබන Kaspersky ප්රතිවයිරස මෘදුකාංගයක් හෝ භාවිතා කරන විට මෙම විකල්පය සබල කිරීම සුරක්ෂිත නොවේ (එමෙන්ම මෙය අනුවණ අදහසකි). මෙවැනි ජාලයක මෙම විකල්පය සබල කර තැබුවහොත් එම proxy යොදා ගිය https:// වසම් පිළිබද සාක්ෂි හෙළිවිය හැක. ඒ නිසා මෙම විකල්පය සාමාන්යයෙන් අබල කර ඇත."> + +<!ENTITY ssl-observatory.prefs.anonymous "නිර්නාමිකතාව සදහා Tor යොදාගන්නා සහතික බලන්න."> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"නිර්නාමිකතාව උදෙසා Tor භාවිතා කරන (Tor අවශ්ය වන) සහතික පරික්ෂා කරන්න"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"මෙම විකල්පය සදහා Tor ස්ථාපනය කර ක්රියාත්මක කල යුතුයි."> + +<!ENTITY ssl-observatory.prefs.asn +"ඔබ නව සහතිකයක් දකිනවිට නිරික්ෂනාගාරයට ඔබ සම්බන්ධ වී ඇති ISPය පවසන්න."> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"මෙමගින් ඔබේ ජාලයේ "ස්වතන්ත්ර පද්ධති අංකය" අමුණා යවයි. මෙමගින් අපට HTTPS වලට විරුද්ධව හටගන්නා ආක්රමණ හදුනාගැනීමටත්, අපගේ ජාලය කවුරුන් හෝ නිරීක්ෂණය කරන්නේ දැයි දැනගැනීමටත් උපකාරී වේ. සිරියාව හා ඉරානය වැනි රටවල්වල මෙවැනි ආක්රමණ ඉතා සුලබ වේ."> + +<!ENTITY ssl-observatory.prefs.done "කාර්යය ඉටු කරන ලදී"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere මගින් EFF's SSL නිරික්ෂණාගාරය භාවිතා කල හැක. මෙමගින් කර්තව්යයන් 2 ක් සිදුවේ: (1) +HTTPS සහතිකවල අනුපිටපත් නිරික්ෂණාගාරයට යැවීමෙන්, +'man in the middle' ආක්රමණය හදුනාගැනීමට හා ජාල ආරක්ෂාව සදහා උපකාරී වේ; තවද (2) +මෙමගින් ඔබට අනාරක්ෂිත සබැදියා හා ඔබේ බ්රව්සරයට එල්ලවන ආක්රමණය පිළිබද අනතුරු අගවයි."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"උදාහරණයක් ලෙස ඔබ https://www.something.com නම් වෙබ් අඩවියට ඇතුළු වූ විට, +නිරික්ෂණාගාරයට ලැබෙන සහතිකයෙන් යම් පුද්ගලයෙක් www.something.com වෙබ් අඩවියට ප්රවේශ වූ බව සදහන් කෙරුනද, + මෙම වෙබ් අඩවියට ප්රවේශ කල පුද්ගලයා හෝ එම පුද්ගලයා නරඹන ලද වෙබ් පිටුවන් පිළිබද තොරතුරු ලැබෙන්නේ නැත. +වැඩිපුර විස්තර දැනගැනීමට මෙම විකල්ප මත මුසකය තබන්න:"> + +<!ENTITY ssl-observatory.prefs.hide "ප්රගමන විකල්ප සගවන්න."> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tor උපයෝජ්ය නොවන අවස්ථා වලදී ද සහතික පරික්ෂා කරන්න."> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"මෙම විකල්පය එතරම් සුරක්ෂිත නොවන නමුදු, ඔබේ දත්ත නිර්නාමිකව තබාගැනීමට අප උත්සහ කරමු"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"යොමුකිරීමෙන් පසු පොදු -නොවන DNS නම් සදහා සහතික පරික්ෂා කරන්න "> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"මෙම විකල්පය තෝරාගෙන නොමැති නම්, නිරික්ෂණාගාරය මගින් DNS නාම නිශ්චය කරගැනීමට නොහැකි සහතික සටහන් කරගන්නේ නැත. "> + +<!ENTITY ssl-observatory.prefs.show "ප්රගමන විකල්පයන් පෙන්වන්න "> + +<!ENTITY ssl-observatory.prefs.title "SSL නිරික්ෂණාගාර මනාප "> + +<!ENTITY ssl-observatory.prefs.use "නිරික්ෂණාගාරය භාවිතා කරයි ද?"> +<!ENTITY ssl-observatory.warning.title "EFF හී SSL නිරික්ෂණාගාරය අවවාදයක් නිකුත් කරයි "> +<!ENTITY ssl-observatory.warning.showcert "සහතික දාමය පෙන්වන්න "> +<!ENTITY ssl-observatory.warning.okay "මම වටහාගතිමි"> +<!ENTITY ssl-observatory.warning.text "EFF හී SSL නිරික්ෂණාගාරය මෙම වෙබ් අඩවියෙහි HTTPS සහතික(ය) පිළිබද අවවාදයක් නිකුත් කර ඇත:"> +<!ENTITY ssl-observatory.warning.defense "ඔබ මෙම වෙබ් අඩවියට පුරන වී ඇති නම්, ඔබට සුරක්ෂිත සම්බන්ධතාවක් ඇතිවිට ඔබේ මුරපදය වෙනස් කිරීම වඩා උචිත වේ."> + +<!ENTITY ssl-observatory.prefs.self_signed +"යොමු කිරීමෙන් පසු ස්වයං-අත්සන් යොදන ලද සහතික පරික්ෂා කරන්න."> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"මෙය නිර්දේශිතයි; සංකේතන ගැටලු ස්වයං-අත්සන් කරන ලද උපක්රමවල බහුලය."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd new file mode 100644 index 0000000..3ea4ae8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Zašifruj Web! Automatické použitie HTTPS zabezpečenia na mnohých stránkach."> +<!ENTITY https-everywhere.about.version "Verzia"> +<!ENTITY https-everywhere.about.created_by "Autori"> +<!ENTITY https-everywhere.about.librarians "Ruleset Librarians"> +<!ENTITY https-everywhere.about.thanks "Poďakovanie"> +<!ENTITY https-everywhere.about.contribute "Ak sa Vám páči HTTPS Everywhere, môžno by ste mohli"> +<!ENTITY https-everywhere.about.donate_tor "Prispieť na Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "sk"> +<!ENTITY https-everywhere.about.donate_eff "Prispieť na EFF"> + +<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Nastavenia SSL Observatory"> +<!ENTITY https-everywhere.menu.globalEnable "Povoliť HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Zakázať HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Nastavenia HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Povoliť všetko"> +<!ENTITY https-everywhere.prefs.disable_all "Zakázať všetko"> +<!ENTITY https-everywhere.prefs.reset_defaults "Obnoviť predvolené"> +<!ENTITY https-everywhere.prefs.search "Hľadať"> +<!ENTITY https-everywhere.prefs.site "Stránka"> +<!ENTITY https-everywhere.prefs.notes "Poznámky"> +<!ENTITY https-everywhere.prefs.list_caption "Ktoré pravidlá pre HTTPS presmerovanie mám použiť?"> +<!ENTITY https-everywhere.prefs.enabled "Povolené"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Môžete sa naučiť ako napísať svoje vlastné pravidlá (pridať podporu pre ďalšie webové stránky)"> +<!ENTITY https-everywhere.prefs.here_link "tu"> +<!ENTITY https-everywhere.prefs.toggle "Prepnúť"> +<!ENTITY https-everywhere.prefs.reset_default "Obnoviť predvolené"> +<!ENTITY https-everywhere.prefs.view_xml_source "Zobraziť zdroj XML"> + +<!ENTITY https-everywhere.source.downloading "Sťahovanie"> +<!ENTITY https-everywhere.source.filename "Názov súboru"> +<!ENTITY https-everywhere.source.unable_to_download "Nie je možné stiahnuť zdroj."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties new file mode 100644 index 0000000..9ceec89 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Povoliť HTTPS Everywhere +https-everywhere.menu.globalDisable = Zakázať HTTPS Everywhere +https-everywhere.menu.enableDisable = Povoliť / Zakázať Pravidlá +https-everywhere.menu.noRules = (Pre Túto Stránku Neexistujú Žiadne Pravidlá) +https-everywhere.menu.unknownRules = (Pravidlá Pre Túto Stránku Sú Neznáme) +https-everywhere.toolbar.hint = HTTPS Everywhere is now active. You can toggle it on a site-by-site basis by clicking the icon in the address bar. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd new file mode 100644 index 0000000..7fd9f57 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sk/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Podrobnosti a Informácie o súkromí"> +<!ENTITY ssl-observatory.popup.later "Opýtajte sa ma neskôr"> +<!ENTITY ssl-observatory.popup.no "Nie"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere dokáže detekovať útoky +na Váš prehliadač tak, že pošle certifikát, ktorý ste dostali do +Observatory. Zapnúť túto funkciu?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Má HTTPS Everywhere použiť SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Áno"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Použitie tejto funkcie je bezpečné, pokiaľ nepoužívate +firemnú sieť:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Bezpečné, pokiaľ nepoužívate firemnú sieť s menami utajených intranetových serverov:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Pošli a skontroluj certifikáty podpísané neštandardnou koreňovou certifikačnou autoritou"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Povoliť túto možnosť je bezpečné (a aj dobrý nápad) pokiaľ nepoužívate firemnú sieť alebo antivírový softvér Kaspersky, ktorý monitoruje Vaše prehliadanie s TLS proxy a súkromné koreňové certifikačné autority. Ak povolíte túto možnosť na takejto sieti, tak pomocou unikátnych certifikátov sa môžu uverejniť dôkazy o tom aké https:// domény ste navštívili cez túto proxy. Tak sme ju nechali v predvolenom nastavení vypnutú."> + +<!ENTITY ssl-observatory.prefs.anonymous "Skontrolovať certifikát pomocou Tor kvôli anonymite"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Skontrolovať certifikát pomocou Tor kvôli anonymite (vyžaduje Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Aby ste mohli použiť toto nastavenie, musíte mať nainštalovaný Tor a Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"Ak zistíš nový certifikát, povedz Observatory, ku ktorému poskytovateľovi internetového pripojenia si pripojený"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Toto stiahne a pošle "Autonomous System Number" Vašej siete. Pomôže nám to lokalizovať útok proti HTTPS a určiť či máme pozorovania zo sietí z miest ako je Iran a Syria, kde sú útoky pomerne časté."> + +<!ENTITY ssl-observatory.prefs.done "Hotovo"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere môže používať SSL Observatory od EFF. Toto spraví dve veci: (1) +pošle kópie HTTPS certifikátov do Observatory, aby nám pomohli detekovať +'man in the middle' útoky a zdokonaľovať bezpečnosť na Webe; a (2) +umožní nám varovať Vás o nebezpečných pripojeniach alebo útokoch na Váš prehliadač."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Napríklad, ak navštívite https://www.niečo.com, certifikát prijatý pomocou +Observatory indikuje, že niekto navštívil www.niečo.com, ale nie kto ju navštívil +alebo čo konkrétne pozeral. Prejdite kurzorom nad jednotlivé možnosti +pre ďalšie podrobnosti."> + +<!ENTITY ssl-observatory.prefs.hide "Skryť pokročilé možnosti"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Skontrolujte certifikát, aj keď Tor nebude k dispozícií"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Pokúsime sa aj naďalej udržať dáta anonymné, lenže táto možnosť je menej bezpečná"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Pošli a skontroluj certifikáty pre neverejné názvy DNS"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Ak je táto voľba aktívna, tak Observatory nebude zaznamenávať certifikáty pre názvy, ktoré nedokáže rozoznať pomocou systému DNS."> + +<!ENTITY ssl-observatory.prefs.show "Ukázať pokročilé možnosti"> + +<!ENTITY ssl-observatory.prefs.title "Nastavenia SSL Observatory"> + +<!ENTITY ssl-observatory.prefs.use "Použiť Observatory?"> +<!ENTITY ssl-observatory.warning.title "VAROVANIE od EFF SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Zobraziť reťaz certifikátov"> +<!ENTITY ssl-observatory.warning.okay "Porozumel som"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory vydalo varovanie o HTTPS certifikáte(certifikátoch) pre túto stránku:"> +<!ENTITY ssl-observatory.warning.defense "Ak ste prihlásený na tejto stránke, tak sa odporúča, aby ste si zmenili heslo hneď ako budete mať bezpečné pripojenie"> + +<!ENTITY ssl-observatory.prefs.self_signed +"Posielať a preverovať certifikáty podpísané samé sebou"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Toto sa odporúča; kryptografické problémy sú veľmi časté u vstavaných zariadení, ktoré sú podpísané samé sebou"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd new file mode 100644 index 0000000..13bbd7d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "O HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Zakodirajte internet! Samodejno uporabite HTTPS zaščito na mnogih spletnih straneh."> +<!ENTITY https-everywhere.about.version "Različica"> +<!ENTITY https-everywhere.about.created_by "Izdelal"> +<!ENTITY https-everywhere.about.librarians "Izdelovalci pravil"> +<!ENTITY https-everywhere.about.thanks "Zahvala"> +<!ENTITY https-everywhere.about.contribute "Če vam je HTTPS Everywhere všeč, razmislite o"> +<!ENTITY https-everywhere.about.donate_tor "donaciji za Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "donaciji za EFF"> + +<!ENTITY https-everywhere.menu.about "O HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "Nastavitve SSL Observatorija"> +<!ENTITY https-everywhere.menu.globalEnable "Omogoči HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Onemogoči HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "Nastavitve HTTPS Everywhere"> +<!ENTITY https-everywhere.prefs.enable_all "Omogoči vse"> +<!ENTITY https-everywhere.prefs.disable_all "Onemogoči vse"> +<!ENTITY https-everywhere.prefs.reset_defaults "Ponastavi na privzeto"> +<!ENTITY https-everywhere.prefs.search "Išči"> +<!ENTITY https-everywhere.prefs.site "Stran"> +<!ENTITY https-everywhere.prefs.notes "Opombe"> +<!ENTITY https-everywhere.prefs.list_caption "Katera pravila za preusmeritev HTTPS naj bodo upoštevana?"> +<!ENTITY https-everywhere.prefs.enabled "Omogočeno"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Lahko se naučite pisati svoja pravila (da dodate podporo za druge spletne strani)"> +<!ENTITY https-everywhere.prefs.here_link "tukaj"> +<!ENTITY https-everywhere.prefs.toggle "Preklopi"> +<!ENTITY https-everywhere.prefs.reset_default "Ponastavi na privzeto"> +<!ENTITY https-everywhere.prefs.view_xml_source "Ogled XML kode"> + +<!ENTITY https-everywhere.source.downloading "Prenos"> +<!ENTITY https-everywhere.source.filename "Ime datoteke"> +<!ENTITY https-everywhere.source.unable_to_download "Ne morem prenesti izvora."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties new file mode 100644 index 0000000..f70d2ee --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Omogoči HTTPS Everywhere +https-everywhere.menu.globalDisable = Onemogoči HTTPS Everywhere +https-everywhere.menu.enableDisable = Omogoči / Onemogoči pravila +https-everywhere.menu.noRules = (Za to stran ni pravil) +https-everywhere.menu.unknownRules = (Pravila za to stran neznana) +https-everywhere.toolbar.hint = HTTPS Everywhere je sedaj aktiven. Za posamezne spletne strani ga lahko preklapljate s klikom na ikono v naslovni vrstici. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd new file mode 100644 index 0000000..26917a3 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sl/ssl-observatory.dtd @@ -0,0 +1,97 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Podrobnosti in informacije o zasebnosti"> +<!ENTITY ssl-observatory.popup.later "Vprašaj me kasneje"> +<!ENTITY ssl-observatory.popup.no "Ne"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere lahko zazna napade +na vaš brskalnik tako, da pošlje certifikate ki jih prejmete v +Observatorij. Želite to vključiti?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Ali naj HTTPS Everywhere uporablja SSL Observatorij?"> + +<!ENTITY ssl-observatory.popup.yes "Da"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Omogočanje tega je varno, razen če uporabljate zelo +vsiljivo poslovno omrežje:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Varno, razen če uporabljate poslovno omrežje s tajnimi imeni lokalnih strežnikov:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Predloži in preveri certifikate nestandardnih overoviteljev"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Omogočanje tega je varno (in priporočljivo), razen če uporabljate vsiljivo poslovno omrežje ali protivirusni program Kaspersky, ki spremlja vaše brskanje s TLS proksijem in privatnim overoviteljem certifikatov. Če je omogočeno v takem omrežju lahko ta možnost objavi dokazila o tem, katere https:// domene so bile obiskane preko tega proksija, ker bi ustvarila edinstvene certifikate. Zato je to privzeto izključeno."> + +<!ENTITY ssl-observatory.prefs.anonymous "Anonimno preveri certifikate preko omrežja Tor"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Anonimno preveri certifikate preko omrežja Tor (potrebuje Tor)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Za to možnost mora biti Tor nameščen in zagnan"> + +<!ENTITY ssl-observatory.prefs.asn +"Ko zasledite nov certifikat povejte Observatoriju h kateremu internetnemu ponudniku ste priključeni"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"To bo pridobilo in poslalo "Avtonomno številko sistema" (ASN) vašega omrežja. To nam bo pomagalo locirati napade na HTTPS in določiti, ali so opažanja iz omrežij na področjih kot so Iran in Sirija, kjer so napadi razmeroma pogosti."> + +<!ENTITY ssl-observatory.prefs.done "Končano"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere lahko uporablja EFF SSL Observatorij. S tem naredi dvoje: (1) +pošlje kopije HTTPS certifikatov observatoriju, da nam pomaga odkriti napade 'man in the middle' in izboljšati varnost medmrežja; (2) +nam omogoči, da vas opozorimo na nevarne povezave ali napade na vaš brskalnik."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Ko na primer obiščete https://www.nekadomena.com bo certifikat, ki ga sprejme observatorij, nakazal, da je nekdo obiskal www.nekadomena.com, ne pa kdo je to bil ali katero stran si je ogledal. +Pridržite miško nad možnosti za več podrobnosti:"> + +<!ENTITY ssl-observatory.prefs.hide "Skrij napredne možnosti"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Preveri certifikate tudi če ni Tor omrežja"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Poskušali bomo ohraniti anonimnost podatkov, vendar je ta možnost manj varna"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Predloži in preveri certifikate za ne-javna imena DNS"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Če je ta možnost ni izbrana, observatorij ne bo zabeležil potrdil za imena, ki jih ni mogoče razkriti s sistemom DNS."> + +<!ENTITY ssl-observatory.prefs.show "Pokaži napredne možnosti"> + +<!ENTITY ssl-observatory.prefs.title "Nastavitve SSL Observatorija"> + +<!ENTITY ssl-observatory.prefs.use "Uporabim Observatorij?"> +<!ENTITY ssl-observatory.warning.title "OPOZORILO s strani EFF SSL Observatorija"> +<!ENTITY ssl-observatory.warning.showcert "Pokaži certifikatno verigo"> +<!ENTITY ssl-observatory.warning.okay "Razumem"> +<!ENTITY ssl-observatory.warning.text "EFF SSL Observatorij je izdal opozorilo za HTTPS certifikat(e) za to stran:"> +<!ENTITY ssl-observatory.warning.defense "Če ste vpisani na tej strani je priporočljivo, da spremenite geslo, ko boste varno povezani."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Predložite in preverite samopodpisana potrdila"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"To je priporočljivo; težave s šifriranjem so posebej pogoste pri samopodpisanih vgnezdenih napravah."> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd new file mode 100644 index 0000000..e43cae0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Om HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Kryptera webben! Använd HTTPS automatiskt på många sidor."> +<!ENTITY https-everywhere.about.version "Version"> +<!ENTITY https-everywhere.about.created_by "Skapat av"> +<!ENTITY https-everywhere.about.librarians "Regelförfattare"> +<!ENTITY https-everywhere.about.thanks "Tack till"> +<!ENTITY https-everywhere.about.contribute "Om du gillar HTTPS Everywhere, kanske du kan tänka dig"> +<!ENTITY https-everywhere.about.donate_tor "Donera till Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "Donera till EFF"> + +<!ENTITY https-everywhere.menu.about "Om HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL observerings inställningar"> +<!ENTITY https-everywhere.menu.globalEnable "Aktivera HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "Inaktivera HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Visa räknare"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere: Inställningar"> +<!ENTITY https-everywhere.prefs.enable_all "Aktivera alla"> +<!ENTITY https-everywhere.prefs.disable_all "Inaktivera alla"> +<!ENTITY https-everywhere.prefs.reset_defaults "Återställ till standardvärden"> +<!ENTITY https-everywhere.prefs.search "Sök"> +<!ENTITY https-everywhere.prefs.site "Sida"> +<!ENTITY https-everywhere.prefs.notes "Kommentarer"> +<!ENTITY https-everywhere.prefs.list_caption "Vilka HTTPS omdirigerings regler skall gälla?"> +<!ENTITY https-everywhere.prefs.enabled "Aktiverad"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Du kan lära dig att skriva egna regler (för att lägga till stöd för andra sidor"> +<!ENTITY https-everywhere.prefs.here_link "här"> +<!ENTITY https-everywhere.prefs.toggle "Växla"> +<!ENTITY https-everywhere.prefs.reset_default "Återställ till standardvärden"> +<!ENTITY https-everywhere.prefs.view_xml_source "Visa XML källa"> + +<!ENTITY https-everywhere.source.downloading "Laddar ner"> +<!ENTITY https-everywhere.source.filename "Filnamn"> +<!ENTITY https-everywhere.source.unable_to_download "Kan inte ladda ner."> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Hoppsan. Du använde den stabila versionen av HTTPS Everywhere, men vi har kanske av misstag uppdaterat dig till utvecklingsversionen i den senaste publiceringen."> +<!ENTITY https-everywhere.popup.paragraph2 "Vill du gå tillbaka till den stabila versionen?"> +<!ENTITY https-everywhere.popup.paragraph3 "Vi skulle vara tacksamma ifall du fortsatte använda utvecklingsversionen och hjälpte oss göra HTTPS Everywhere ännu bättre! Du kanske hittar någon bugg här och där, som du kan rapportera till https-everywhere@eff.org. Vi ber om ursäkt för besväret. Tack för att du använder HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Fortsätt använda utvecklingsversionen"> +<!ENTITY https-everywhere.popup.revert "Ladda ner den senaste stabila versionen"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "Testa alla HTTPS Everywhere regler"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Avbryt"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Starta"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties new file mode 100644 index 0000000..fb1cb14 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Aktivera HTTPS Everywhere +https-everywhere.menu.globalDisable = Inaktivera HTTPS Everywhere +https-everywhere.menu.enableDisable = Aktivera / inaktivera regler +https-everywhere.menu.noRules = (Inga Regler för Denna Sida) +https-everywhere.menu.unknownRules = (Regler för Denna Sida Okänt) +https-everywhere.toolbar.hint = HTTPS Everywhere är nu aktivt. Du kan ändra aktivera / inaktivera det per sida genom att klicka på ikonen i adressfältet. +https-everywhere.migration.notification0 = För att implementera en kritiskt fix, åteställer denna uppdatering dina HTTPS Everywhere regelinställningar till dereas standardvärden. +https-everywhere.menu.ruleset-tests = Kör alla regel tester för HTTPS Everywhere. diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd new file mode 100644 index 0000000..4cfac8b --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/sv/ssl-observatory.dtd @@ -0,0 +1,100 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Details and Privacy Information"> +<!ENTITY ssl-observatory.popup.later "Ask Me Later"> +<!ENTITY ssl-observatory.popup.no "No"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere can detect attacks +against your browser by sending the certificates you receive to the +Observatory. Turn this on?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"Should HTTPS Everywhere use the SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "Yes"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"It is safe to enable this, unless you use a very +intrusive corporate network:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Safe, unless you use a corporate network with secret intranet server names:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Submit and check certificates signed by non-standard root CAs"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"It is safe (and a good idea) to enable this option, unless you use an intrusive corporate network that monitors your browsing with a TLS proxy and a private root Certificate Authority. If enabled on such a network, this option might publish evidence of which https:// domains were being visited through that proxy, because of the unique certificates it would produce. So we leave it off by default."> + +<!ENTITY ssl-observatory.prefs.anonymous "Check certificates using Tor for anonymity"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Check certificates using Tor for anonymity (requires Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"This option requires Tor and Torbutton to be installed"> + +<!ENTITY ssl-observatory.prefs.asn +"When you see a new certificate, tell the Observatory which ISP you are connected to"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"This will fetch and send the "Autonomous System number" of your network. This will help us locate attacks against HTTPS, and to determine whether we have observations from networks in places like Iran and Syria where attacks are comparatively common."> + +<!ENTITY ssl-observatory.prefs.done "Done"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere can use EFF's SSL Observatory. This does two things: (1) +sends copies of HTTPS certificates to the Observatory, to help us +detect 'man in the middle' attacks and improve the Web's security; and (2) +lets us warn you about insecure connections or attacks on your browser."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"For example, when you visit https://www.something.com, the certificate +received by the Observatory will indicate that somebody visited +www.something.com, but not who visited the site, or what specific page they +looked at. Mouseover the options for further details:"> + +<!ENTITY ssl-observatory.prefs.hide "Hide advanced options"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Check certificates even if Tor is not available"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"We will still try to keep the data anonymous, but this option is less secure"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Submit and check certificates for non-public DNS names"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Unless this option is checked, the Observatory will not record certificates for names that it cannot resolve through the DNS system."> + +<!ENTITY ssl-observatory.prefs.show "Show advanced options"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory Preferences"> + +<!ENTITY ssl-observatory.prefs.use "Use the Observatory?"> +<!ENTITY ssl-observatory.warning.title "WARNING from EFF's SSL Observatory"> +<!ENTITY ssl-observatory.warning.showcert "Show the certificate chain"> +<!ENTITY ssl-observatory.warning.okay "I understand"> +<!ENTITY ssl-observatory.warning.text "EFF's SSL Observatory has issued a warning about the HTTPS certificiate(s) for this site:"> +<!ENTITY ssl-observatory.warning.defense "If you are logged in to this site, it may be advisable to change your password once you have a safe connection."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Skicka och kolla själv-signerade certifikat"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Detta är rekommenderat; kryptografiska problem är särskilt vanliga i själv-signerad inbäddad utrustning"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd new file mode 100644 index 0000000..e686d19 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "Hakkında"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "İnternet'i şifrele ! Bir çok sitede otomatik olarak HTTPS kullan."> +<!ENTITY https-everywhere.about.version "Sürüm"> +<!ENTITY https-everywhere.about.created_by "Yaratıcı"> +<!ENTITY https-everywhere.about.librarians "Kural Seti Kütüphaneleri"> +<!ENTITY https-everywhere.about.thanks "Teşekkürler"> +<!ENTITY https-everywhere.about.contribute "Eğer HTTPS Everywhere'i sevdiysen, sen de destek olabilirsin"> +<!ENTITY https-everywhere.about.donate_tor "Tor'a bağışla"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "EFF'e bağışla"> + +<!ENTITY https-everywhere.menu.about "Hakkında"> +<!ENTITY https-everywhere.menu.observatory "SSL Gözlemcisi Tercihleri"> +<!ENTITY https-everywhere.menu.globalEnable "Etkinleştir"> +<!ENTITY https-everywhere.menu.globalDisable "Devre Dışı Bırak"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere Tercihleri"> +<!ENTITY https-everywhere.prefs.enable_all "Tümünü Etkinleştir"> +<!ENTITY https-everywhere.prefs.disable_all "Tümünü Devre Dışı Bırak"> +<!ENTITY https-everywhere.prefs.reset_defaults "Varsayılana Dön"> +<!ENTITY https-everywhere.prefs.search "Ara"> +<!ENTITY https-everywhere.prefs.site "Site"> +<!ENTITY https-everywhere.prefs.notes "Notlar"> +<!ENTITY https-everywhere.prefs.list_caption "Hangi HTTPS yönlendirme kuralları etkin olarak uygulansın?"> +<!ENTITY https-everywhere.prefs.enabled "Etkin"> +<!ENTITY https-everywhere.prefs.ruleset_howto "Kendi kural setini nasıl yazabileceğini"> +<!ENTITY https-everywhere.prefs.here_link "öğrenebilirsin."> +<!ENTITY https-everywhere.prefs.toggle "Değiştir"> +<!ENTITY https-everywhere.prefs.reset_default "Varsayılana Dön"> +<!ENTITY https-everywhere.prefs.view_xml_source "XML Kaynağını Görüntüle"> + +<!ENTITY https-everywhere.source.downloading "İndiriliyor"> +<!ENTITY https-everywhere.source.filename "Dosya Adı"> +<!ENTITY https-everywhere.source.unable_to_download "Kaynak indirmeye uygun değil"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 notification"> +<!ENTITY https-everywhere.popup.paragraph1 "Oops. You were using the stable version of HTTPS Everywhere, but we might have accidentally upgraded you to the development version in our last release."> +<!ENTITY https-everywhere.popup.paragraph2 "Would you like to go back to stable?"> +<!ENTITY https-everywhere.popup.paragraph3 "We'd love it if you continued using our development release and helped us make HTTPS Everywhere better! You might find there are a few more bugs here and there, which you can report to https-everywhere@eff.org. Sorry about the inconvenience, and thank you for using HTTPS Everywhere."> +<!ENTITY https-everywhere.popup.keep "Keep me on the development version"> +<!ENTITY https-everywhere.popup.revert "Download the latest stable version"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties new file mode 100644 index 0000000..37182cf --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = Etkinleştir +https-everywhere.menu.globalDisable = Devre dışı +https-everywhere.menu.enableDisable = Kuralları Aç / Kapa +https-everywhere.menu.noRules = (Bu sayfa için hiçbir kural yok) +https-everywhere.menu.unknownRules = (Bu sayfa için hangi kuralların kullanılacağı bilinmiyor) +https-everywhere.toolbar.hint = HTTPS Everywhere şuan etkin. Adres çubuğundaki simgeye tıklayarak istediğiniz sitelerde etkinliğini değiştirebilirsiniz. +https-everywhere.migration.notification0 = In order to implement a crucial fix, this update resets your HTTPS Everywhere rule preferences to their default values. +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd new file mode 100644 index 0000000..f9fd37c --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/tr/ssl-observatory.dtd @@ -0,0 +1,96 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "Detaylar ve Gizlilik Bilgileri"> +<!ENTITY ssl-observatory.popup.later "Daha Sonra Sor"> +<!ENTITY ssl-observatory.popup.no "Hayır"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere tarayıcınıza +karşı yapılacak saldırıları Gözlemci'ye alır. +Bu özelliği aktif etmek ister misiniz?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"HTTPS Everywhere SSL Gözlemcisini kullansın mı?"> + +<!ENTITY ssl-observatory.popup.yes "Evet"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"Elverişsiz bir şirket ağı kullanmıyorsanız, +etkinleştirmek sizin için güvenlidir."> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"Güvenli, gizli intranet şirket sunucularını kullanmadığınız sürece:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"Geçerli bir otorite tarafından imzalanmamış sertifikaları gönder ve kontrol et"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"Eğer ki TLS proxy veya özel kök Sertifika Otoritesi ile internet gezintilerini gözlemleyebilen Kaspersky antivirüs yazılımı ya da araya girilebilen bir şirket ağı kullanmıyorsanız bu özelliği etkinleştirmek güvenlidir (ve akıllıca), Eğer ağ üzerinde bunlar etkinse, bu seçenek eşsiz sertifikalar verdiğinden vekil sunucu üzerinden https:// adreslerine eriştiğinize kanıt olmuşturur. Dolayısıyla varsayılan ayarlarda kapalı bıraktık."> + +<!ENTITY ssl-observatory.prefs.anonymous "Gizliliğim için Tor kullanırken de sertifikaları kontrol et"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"Gizliliğim için Tor kullanırken de sertifikaları kontrol et (Torbutton gerektirir)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"Bu özellik Tor ve Torbutton'un yüklü olmasını gerektirir."> + +<!ENTITY ssl-observatory.prefs.asn +"Yeni bir sertifika gördüğünde, hangi ISS'den bağlandığımı Gözlemci'ye bildir"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"Bu ağın "Özerk Sistemi numarası" alıp göndereceğiz. Bu bize HTTPS'e karşı gerçekleştirilen yerel saldırıları belirlemekte ve nispeten İran ve Suriye gibi yerlerde ağlara karşı gözlemler olup olmadığını belirlemek için yardımcı olacaktır."> + +<!ENTITY ssl-observatory.prefs.done "Tamamlandı"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere EFF'nin SSL Gözlemcisini kullanır. Gözlemci iki olay gerçekleştirir:(1) +HTTPS sertifikalarının kopyalarını Gözlemci'ye yollar ki MITM saldırılarının tespitinde yardım edelim, internet güvenliğini geliştirebilelim; ve (2) +seni güvensiz bağlantılar hakkında uyarabilelim."> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"Örneğin, https://www.hack4career.com adresini ziyaret ettiğinde ve eğer ki sayfayı daha önce hiç kimse ziyaret etmemişse sertifika Gözlemci tarafından ileride bu siteyi ziyaret edecekler için alınır. Daha fazla bilgi için aşağıdan gözlemciyi aktif etmelisiniz:"> + +<!ENTITY ssl-observatory.prefs.hide "Gelişmiş ayarları gizle"> + +<!ENTITY ssl-observatory.prefs.nonanon +"Tor uygun olmadığında dahi sertifikaları kontrol et"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"Verilerini anonim tutmaya çalışıyoruz, ama bu özellik pek güvenli değil"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"Özel DNS isimleri için olan sertifikaları gönder ve kontrol et"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"Bu seçenek işaretlenmediği sürece, Gözlemci DNS sistemleri üzerinden çözümleyemediği sertifika isimlerini kaydetmeyecektir."> + +<!ENTITY ssl-observatory.prefs.show "Gelişmiş ayarları göster"> + +<!ENTITY ssl-observatory.prefs.title "SSL Gözlemci Tercihleri"> + +<!ENTITY ssl-observatory.prefs.use "Gözlemci kullanılsın mı?"> +<!ENTITY ssl-observatory.warning.title " EFF'in SSL Gözlemcisi'nden UYARI"> +<!ENTITY ssl-observatory.warning.showcert "Sertifika zincirini göster"> +<!ENTITY ssl-observatory.warning.okay "Anladım"> +<!ENTITY ssl-observatory.warning.text "EFF SSL Gözlemcisi bu sitenin HTTPS serfikası (ları) hakkında bir sorun olduğunu belirtiyor:"> +<!ENTITY ssl-observatory.warning.defense "Eğer bu siteye giriş yaptıysan, güvenli bir bağlantı sağlandığında site sana şifreni değiştirmeni tavsiye edebilir."> + +<!ENTITY ssl-observatory.prefs.self_signed +"Kendinden imzalı sertifikaları gönder ve kontrol et"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"Bu bir öneridir; özellikle kendinden imzalanmış gömülü cihazlarda şifreleme problemleri mevcut "> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd new file mode 100644 index 0000000..d53c43c --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.dtd @@ -0,0 +1,48 @@ +<!ENTITY https-everywhere.about.title "关于 HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "加密网络浏览,自动使用 HTTPS 连接访问站点,更加安全。"> +<!ENTITY https-everywhere.about.version "版本"> +<!ENTITY https-everywhere.about.created_by "创建者"> +<!ENTITY https-everywhere.about.librarians "规则管理员"> +<!ENTITY https-everywhere.about.thanks "致谢"> +<!ENTITY https-everywhere.about.contribute "如果喜欢 HTTPS Everywhere,您可以考虑"> +<!ENTITY https-everywhere.about.donate_tor "捐助 Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "en"> +<!ENTITY https-everywhere.about.donate_eff "捐助电子前线基金会 (EFF)"> + +<!ENTITY https-everywhere.menu.about "关于 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL Observatory 首选项"> +<!ENTITY https-everywhere.menu.globalEnable "启用 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "禁用 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere 首选项"> +<!ENTITY https-everywhere.prefs.enable_all "全部启用"> +<!ENTITY https-everywhere.prefs.disable_all "全部禁用"> +<!ENTITY https-everywhere.prefs.reset_defaults "重置为默认值"> +<!ENTITY https-everywhere.prefs.search "搜索"> +<!ENTITY https-everywhere.prefs.site "站点"> +<!ENTITY https-everywhere.prefs.notes "注释"> +<!ENTITY https-everywhere.prefs.list_caption "应用哪些 HTTPS 重定向规则?"> +<!ENTITY https-everywhere.prefs.enabled "已启用"> +<!ENTITY https-everywhere.prefs.ruleset_howto "您可以学习如何编写您自己的规则(以增加对其他网站的支持)"> +<!ENTITY https-everywhere.prefs.here_link "这里"> +<!ENTITY https-everywhere.prefs.toggle "切换"> +<!ENTITY https-everywhere.prefs.reset_default "重置为默认值"> +<!ENTITY https-everywhere.prefs.view_xml_source "查看 XML 格式的源代码"> + +<!ENTITY https-everywhere.source.downloading "正在下载"> +<!ENTITY https-everywhere.source.filename "文件名"> +<!ENTITY https-everywhere.source.unable_to_download "无法下载源代码。"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0development.11 通知"> +<!ENTITY https-everywhere.popup.paragraph1 "抱歉,你之前用的是 HTTPS Everywhere 稳定版,在上次发布时,我们可能不小心将你用的版本升级为开发版。"> +<!ENTITY https-everywhere.popup.paragraph2 "是否需要换为稳定版?"> +<!ENTITY https-everywhere.popup.paragraph3 "如果您愿意,我们非常欢迎您继续使用我们的开发版本,并以此帮助我们改善 HTTPS Everywhere!您也许会遇到更多的缺陷问题,您可以报告到 https-everywhere@eff.org。对此带来的不便我们深感抱歉,感谢您使用 HTTPS Everywhere。"> +<!ENTITY https-everywhere.popup.keep "我要继续使用开发版"> +<!ENTITY https-everywhere.popup.revert "下载最新稳定版"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties new file mode 100644 index 0000000..0e24891 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = 启用 HTTPS Everywhere +https-everywhere.menu.globalDisable = 禁用 HTTPS Everywhere +https-everywhere.menu.enableDisable = 启用/禁用规则 +https-everywhere.menu.noRules = (本页面无规则) +https-everywhere.menu.unknownRules = (此页面规则未知) +https-everywhere.toolbar.hint = HTTPS Everywhere 当前已激活。根据每个网站,可点击地址栏中图标启用或禁用该功能。 +https-everywhere.migration.notification0 = 为了部署重要修订,该更新将 HTTPS Everywhere 规则偏好重置为默认值。 +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd new file mode 100644 index 0000000..6998aa6 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-CN/ssl-observatory.dtd @@ -0,0 +1,98 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "详情与隐私信息"> +<!ENTITY ssl-observatory.popup.later "以后再说"> +<!ENTITY ssl-observatory.popup.no "否"> + +<!ENTITY ssl-observatory.popup.text "通过将接收到的证书 +提交至 Observatory,HTTPS Everywhere 能够检测针对浏览器的攻击。 +是否启用该功能?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"是否允许 HTTPS Everywhere 使用 SSL Observatory?"> + +<!ENTITY ssl-observatory.popup.yes "是"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"启用这个功能是安全的,除非你所用的是高侵入性的企业网络:"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"安全,除非所用的企业网络具有加密的内部网服务器名称:"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"提交并检查由非标准根 CA 所签名的证书"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"启用此选项是安全(而且有益的),除非所用的是高侵入性的公司网络,或者使用卡巴斯基防病毒软件通过本地 TLS 代理与私有根证书认证方检测互联网浏览行为。对于这样的网络,由于生成的数字证书是唯一的,启用该选项可能将公开通过该代理访问的 https:// 网域名称,因此默认关闭该功能。"> + +<!ENTITY ssl-observatory.prefs.anonymous "通过 Tor 网络进行数字证书的检查,以保护匿名性"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"通过 Tor 网络进行数字证书的检查,以保护匿名性(需要有 Tor)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"此选项需要已经安装并运行 Tor"> + +<!ENTITY ssl-observatory.prefs.asn +"遇到新的数字证书时,通知 Observatory 当前使用的互联网服务提供商 (ISP)"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"这将抓取网络的“自治系统号码”(Autonomous System number)。这将有助于找出对 HTTPS 发动攻击的源头,并判断在攻击相对常见的地区网络上,如伊朗和叙利亚,我们是否具有观测数据。"> + +<!ENTITY ssl-observatory.prefs.done "完成"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere 可以使用 EFF 的 SSL 观测站 。 这有两个功能: +(1) 将 HTTPS 数字证书寄送到观测站,以协助我们侦测中间人式的攻击 +并改善网络的安全性; +(2) 针对不安全的连接以及对你的浏览器进行的攻击,向你发出警告。"> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"例如,在访问 https://www.something.com 时,观测站收到的数字证书显示 +某人访问了 www.something.com,但不会显示是谁访问了该站点或者浏览了 +哪些页面。将鼠标移至该选项可了解更多详细信息:"> + +<!ENTITY ssl-observatory.prefs.hide "隐藏高级选项"> + +<!ENTITY ssl-observatory.prefs.nonanon +"在没有 Tor 网络的情况下依然检查数字证书"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"我们仍将尽力确保数据的匿名性,但该选项的安全性较低"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"提交并检查非公开 DNS 名称的数字证书"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"除非勾选该选项,否则观测站将不会记录通过 DNS 系统无法解析域名的证书。"> + +<!ENTITY ssl-observatory.prefs.show "显示高级选项"> + +<!ENTITY ssl-observatory.prefs.title "SSL Observatory 首选项"> + +<!ENTITY ssl-observatory.prefs.use "是否使用观测站?"> +<!ENTITY ssl-observatory.warning.title "EFF 的 SSL 观测站发布的警告"> +<!ENTITY ssl-observatory.warning.showcert "显示数字证书链"> +<!ENTITY ssl-observatory.warning.okay "我已了解"> +<!ENTITY ssl-observatory.warning.text "EFF 的 SSL 观测站已对该 HTTPS 数字证书发出警告:"> +<!ENTITY ssl-observatory.warning.defense "如果已登录该站点,在使用安全连接时,可能建议你修改该站点的密码。"> + +<!ENTITY ssl-observatory.prefs.self_signed +"提交并检查自签名证书"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"我们推荐该选项;在自签名的嵌入式设备中,加密问题尤为常见"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd new file mode 100644 index 0000000..1b56a63 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.dtd @@ -0,0 +1,49 @@ +<!ENTITY https-everywhere.about.title "關於 HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_name "HTTPS Everywhere"> +<!ENTITY https-everywhere.about.ext_description "Encrypt the Web! Automatically use HTTPS security on many sites. +使網路加密!於眾多網站上自動使用 HTTPS 安全連線。"> +<!ENTITY https-everywhere.about.version "版本"> +<!ENTITY https-everywhere.about.created_by "建立於"> +<!ENTITY https-everywhere.about.librarians "規則庫管理"> +<!ENTITY https-everywhere.about.thanks "致謝"> +<!ENTITY https-everywhere.about.contribute "若喜歡 HTTPS Everywhere,或許您可以考慮"> +<!ENTITY https-everywhere.about.donate_tor "贊助 Tor"> +<!ENTITY https-everywhere.about.tor_lang_code "zh-TW"> +<!ENTITY https-everywhere.about.donate_eff "贊助 EFF"> + +<!ENTITY https-everywhere.menu.about "關於 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.observatory "SSL 觀測站偏好設定"> +<!ENTITY https-everywhere.menu.globalEnable "啟用 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.globalDisable "停用 HTTPS Everywhere"> +<!ENTITY https-everywhere.menu.showCounter "Show Counter"> + +<!ENTITY https-everywhere.prefs.title "HTTPS Everywhere 偏好設定"> +<!ENTITY https-everywhere.prefs.enable_all "全部啟用"> +<!ENTITY https-everywhere.prefs.disable_all "全部停用"> +<!ENTITY https-everywhere.prefs.reset_defaults "恢復預設值"> +<!ENTITY https-everywhere.prefs.search "搜尋"> +<!ENTITY https-everywhere.prefs.site "網站"> +<!ENTITY https-everywhere.prefs.notes "備註"> +<!ENTITY https-everywhere.prefs.list_caption "要使用哪些 HTTPS 導向規則?"> +<!ENTITY https-everywhere.prefs.enabled "已啟用"> +<!ENTITY https-everywhere.prefs.ruleset_howto "要了解如何編寫自訂規則(以增加對其他網站的支援)"> +<!ENTITY https-everywhere.prefs.here_link "請看這裡"> +<!ENTITY https-everywhere.prefs.toggle "切換"> +<!ENTITY https-everywhere.prefs.reset_default "恢復預設值"> +<!ENTITY https-everywhere.prefs.view_xml_source "檢視 XML 原始碼"> + +<!ENTITY https-everywhere.source.downloading "下載中"> +<!ENTITY https-everywhere.source.filename "檔案名稱"> +<!ENTITY https-everywhere.source.unable_to_download "無法下載原始碼"> + +<!ENTITY https-everywhere.popup.title "HTTPS Everywhere 4.0 dev.11通知"> +<!ENTITY https-everywhere.popup.paragraph1 "糟糕。以前您一直使用HTTPS Everywhere 穩定版本,但我們可能已經不小心升級您在我們最新版本中為開發中版本。"> +<!ENTITY https-everywhere.popup.paragraph2 "您想回復為穩定版本?"> +<!ENTITY https-everywhere.popup.paragraph3 "如果您繼續使用我們的開發中版本,並幫助我們使得HTTPS Everywhere變得更好,我們也很願意!您可能會發現這裡和那裡有一些更多的錯誤,您可以向https-everywhere@eff.org提交報告,對不起您添麻煩了,感謝您使用HTTPS Everywhere。"> +<!ENTITY https-everywhere.popup.keep "讓我為持於開發中版本"> +<!ENTITY https-everywhere.popup.revert "下載最新的穩定版本"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties new file mode 100644 index 0000000..e944b0d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/https-everywhere.properties @@ -0,0 +1,8 @@ +https-everywhere.menu.globalEnable = 啟用 HTTPS Everywhere +https-everywhere.menu.globalDisable = 停用 HTTPS Everywhere +https-everywhere.menu.enableDisable = 啟用 / 停用規則 +https-everywhere.menu.noRules = (沒有規則適用於此網頁) +https-everywhere.menu.unknownRules = (適用此網頁的規則不明) +https-everywhere.toolbar.hint = HTTPS Everywhere 已啟用。您可以根據網站站點基礎上透過切換網址列圖示以啟用。 +https-everywhere.migration.notification0 = 為了徹底落實關鍵修正,更新重置您的HTTPS Everywhere 規則設定至它們的預設值。 +https-everywhere.menu.ruleset-tests = Run HTTPS Everywhere Ruleset Tests diff --git a/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd new file mode 100644 index 0000000..496c3df --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/locale/zh-TW/ssl-observatory.dtd @@ -0,0 +1,91 @@ +<!-- Observatory popup window --> +<!ENTITY ssl-observatory.popup.details "詳細資料與隱私訊息"> +<!ENTITY ssl-observatory.popup.later "稍後再詢問"> +<!ENTITY ssl-observatory.popup.no "取消"> + +<!ENTITY ssl-observatory.popup.text "HTTPS Everywhere 能將您收到的憑證送到觀測站,以偵測出對您瀏覽器的攻擊。要啟用本功能嗎?"> + +<!--<!ENTITY ssl-observatory.popup.text +"EFF's SSL Observatory can detect attacks against HTTPS websites by collecting +and auditing the certificates being presented to your browser. Would you like +to turn it on?">--> + +<!ENTITY ssl-observatory.popup.title +"要讓 HTTPS Everywhere 使用 SSL 觀測站嗎?"> + +<!ENTITY ssl-observatory.popup.yes "確定"> + +<!-- Observatory preferences dialog --> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts1 +"啟用這個選項是安全的,除非您使用高侵入性的企業網路(corporate network):"> + +<!ENTITY ssl-observatory.prefs.adv_priv_opts2 +"啟用這個選項是安全的,除非您使用含有隱密內部網路伺服器名稱的企業網路(corporate network):"> + +<!ENTITY ssl-observatory.prefs.alt_roots +"送出並檢查由非正規的根憑證所簽署的憑證"> + +<!ENTITY ssl-observatory.prefs.alt_roots_tooltip +"啟用這個選項是安全的(而且也推薦啟用),除非您使用侵入性的企業網路,或者 Kaspersky 防毒軟體監控到您透過 TLS proxy 瀏覽並使用私人的根憑證。 在這類的網路環境啟用此選項,可能會因為所產生的特有憑證,導致經由此代理伺服器瀏覽特定 https:// 網域的證明被公開。 因此預設為不啟用此選項。"> + +<!ENTITY ssl-observatory.prefs.anonymous "以 Tor 匿名檢測憑證"> +<!ENTITY ssl-observatory.prefs.anonymous_unavailable +"以 Tor 匿名檢測憑證(需安裝 Torbutton)"> +<!ENTITY ssl-observatory.prefs.anonymous_tooltip +"這個選項必須安裝 Tor 及 Torbutton"> + +<!ENTITY ssl-observatory.prefs.asn +"看到新的憑證時,告訴觀測站您連線的 ISP"> + +<!ENTITY ssl-observatory.prefs.asn_tooltip +"這個選項會取得並回傳您的網路的自治系統號碼(Autonomous System Number)。 這個動作能協助我們定位對 HTTPS 的攻擊,並判定我們所觀測到發自伊朗及敘利亞等地網路的攻擊是否較為常見。"> + +<!ENTITY ssl-observatory.prefs.done "完成"> + +<!ENTITY ssl-observatory.prefs.explanation +"HTTPS Everywhere 可以使用 EFF 的 SSL 觀測站。這麼做有兩個效果:(1) 將 HTTPS 憑證的副本傳送到觀測站,協助我們偵測「中間人」攻擊並增進網路安全性;(2) 當您遇到不安全的連線或瀏覽器遭到攻擊時,我們能夠提出警告。"> + +<!--<!ENTITY ssl-observatory.prefs.explanation2 +"When you visit https://www.example.com, the Observatory will learn that +somebody visited that site, but will not know who or what page they looked at. +Mouseover the options for further details:">--> + +<!ENTITY ssl-observatory.prefs.explanation2 + +"例如當您開啟 https://www.something.com(範例網址)時,觀測站所收到的憑證會顯示有人瀏覽 www.something.com,但不會指出瀏覽者身分或者觀看的是哪些特定頁面。將游標移至選項上可得到詳細說明:"> + +<!ENTITY ssl-observatory.prefs.hide "隱藏進階選項"> + +<!ENTITY ssl-observatory.prefs.nonanon +"在 Tor 無法使用時仍檢查憑證"> + +<!ENTITY ssl-observatory.prefs.nonanon_tooltip +"我們仍會試圖維持資料的匿名性,但這個選項的安全性較低"> + +<!ENTITY ssl-observatory.prefs.priv_dns +"送出並檢查非公共域名系統(non-public DNS)名稱的憑證"> + +<!ENTITY ssl-observatory.prefs.priv_dns_tooltip +"觀測站不會記錄名稱未經 DNS 系統解析的憑證,除非您有勾選這個選項。"> + +<!ENTITY ssl-observatory.prefs.show "顯示進階選項"> + +<!ENTITY ssl-observatory.prefs.title "SSL 觀測站偏好設定"> + +<!ENTITY ssl-observatory.prefs.use "使用觀測站?"> +<!ENTITY ssl-observatory.warning.title "EFF 的 SSL 觀測站提出警告"> +<!ENTITY ssl-observatory.warning.showcert "顯示憑證鍊(certificate chain)"> +<!ENTITY ssl-observatory.warning.okay "我了解"> +<!ENTITY ssl-observatory.warning.text "EFF 的 SSL 觀測站對這個網站的 HTTPS 憑證提出警告:"> +<!ENTITY ssl-observatory.warning.defense "若您已登入此網站,當您能使用安全連線時最好變更一下密碼。"> + +<!ENTITY ssl-observatory.prefs.self_signed +"送出並檢查自我簽署的憑證"> +<!ENTITY ssl-observatory.prefs.self_signed_tooltip +"建議啟用;加密問題在自我簽署的嵌入式裝置極為常見。"> + +<!ENTITY https-everywhere.ruleset-tests.status_title "HTTPS Everywhere Ruleset Tests"> +<!ENTITY https-everywhere.ruleset-tests.status_cancel_button "Cancel"> +<!ENTITY https-everywhere.ruleset-tests.status_start_button "Start"> + diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/cross.png b/data/extensions/https-everywhere@eff.org/chrome/skin/cross.png Binary files differnew file mode 100644 index 0000000..e39a083 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/cross.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png Binary files differnew file mode 100644 index 0000000..dc362dc --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16-gray.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png Binary files differnew file mode 100644 index 0000000..a207180 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-16.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png Binary files differnew file mode 100644 index 0000000..9cf0798 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24-gray.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png Binary files differnew file mode 100644 index 0000000..b4bffc0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-24.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg Binary files differnew file mode 100644 index 0000000..6154da6 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-banner.jpg diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png Binary files differnew file mode 100644 index 0000000..b4bffc0 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere-half-24.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css new file mode 100644 index 0000000..6c03b83 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.css @@ -0,0 +1,72 @@ +#https-everywhere-button { + -moz-binding: url("chrome://https-everywhere/content/toolbar_button_binding.xml#https-everywhere-binding"); +} + +#https-everywhere-button > .https-everywhere-button { + list-style-image: url("chrome://https-everywhere/skin/https-everywhere-24.png"); +} + +toolbar[iconsize="small"] #https-everywhere-button > .https-everywhere-button { + list-style-image: url("chrome://https-everywhere/skin/https-everywhere-16.png"); +} + +toolbar #https-everywhere-button, +toolbar #https-everywhere-button > .https-everywhere-button { + -moz-box-orient: horizontal; +} + +/* Use CSS attribute selector for changing icon */ +#https-everywhere-button[status="disabled"] > .https-everywhere-button { + list-style-image: url("chrome://https-everywhere/skin/https-everywhere-24-gray.png"); +} + +toolbar[iconsize="small"] #https-everywhere-button[status="disabled"] > .https-everywhere-button { + list-style-image: url("chrome://https-everywhere/skin/https-everywhere-16-gray.png"); +} + +/* ruleset counter */ +#rscounter { + margin: 3px -12px 0 -8px; + display: block; + -moz-box-sizing: border-box; +} + +/* increase negative margins in the palette and panel so the button isn't too wide. */ +#wrapper-https-everywhere-button[place="palette"] > #https-everywhere-button > #rscounter, +#https-everywhere-button[cui-areatype="menu-panel"] > #rscounter { + margin: 3px -16px 0 -8px; +} + +/* rulesets applied label */ +#rsapplied { + -moz-box-sizing: border-box; + font-size: 12px; + color: #000; + background-color: #FFF; + border-width: 1px; + border-style: solid; + padding: 1px 1px 1px 1px; + visibility: hidden; +} + +#https-everywhere-button:not([rulesetsApplied="0"]) #rsapplied { + visibility: visible; +} + +#https-everywhere-button menuitem.active-item label { + color: #9AD100; + font-weight: bold; +} +#https-everywhere-button menuitem.moot-item label { + color: #9AD100; + opacity: 0.5; + font-weight: bold; +} +#https-everywhere-button menuitem.breaking-item label { + color: #b99999; + font-weight: bold; +} +#https-everywhere-button menuitem.inactive-item label { + color: #999999; + font-weight: bold; +} diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png Binary files differnew file mode 100644 index 0000000..5e21688 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/https-everywhere.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/loop.png b/data/extensions/https-everywhere@eff.org/chrome/skin/loop.png Binary files differnew file mode 100644 index 0000000..33dfd42 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/loop.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg b/data/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg Binary files differnew file mode 100644 index 0000000..84c43e9 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/ssl-observatory-messy.jpg diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png b/data/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png Binary files differnew file mode 100644 index 0000000..5d3c085 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/tick-moot.png diff --git a/data/extensions/https-everywhere@eff.org/chrome/skin/tick.png b/data/extensions/https-everywhere@eff.org/chrome/skin/tick.png Binary files differnew file mode 100644 index 0000000..f055312 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/chrome/skin/tick.png diff --git a/data/extensions/https-everywhere@eff.org/components/https-everywhere.js b/data/extensions/https-everywhere@eff.org/components/https-everywhere.js new file mode 100644 index 0000000..90f55e2 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/components/https-everywhere.js @@ -0,0 +1,832 @@ +// LOG LEVELS --- + +VERB=1; +DBUG=2; +INFO=3; +NOTE=4; +WARN=5; + +// PREFERENCE BRANCHES +PREFBRANCH_ROOT=0; +PREFBRANCH_RULE_TOGGLE=1; + +//--------------- + +https_domains = {}; // maps domain patterns (with at most one + // wildcard) to RuleSets + +https_everywhere_blacklist = {}; // URLs we've given up on rewriting because + // of redirection loops + +https_blacklist_domains = {}; // domains for which there is at least one + // blacklisted URL + +// +const CI = Components.interfaces; +const CC = Components.classes; +const CU = Components.utils; +const CR = Components.results; +const Ci = Components.interfaces; +const Cc = Components.classes; +const Cu = Components.utils; +const Cr = Components.results; + +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/FileUtils.jsm"); + +const CP_SHOULDPROCESS = 4; + +const SERVICE_CTRID = "@eff.org/https-everywhere;1"; +const SERVICE_ID=Components.ID("{32c165b4-fe5e-4964-9250-603c410631b4}"); +const SERVICE_NAME = "Encrypts your communications with a number of major websites"; + +const LLVAR = "LogLevel"; + +const IOS = CC["@mozilla.org/network/io-service;1"].getService(CI.nsIIOService); +const OS = CC['@mozilla.org/observer-service;1'].getService(CI.nsIObserverService); +const LOADER = CC["@mozilla.org/moz/jssubscript-loader;1"].getService(CI.mozIJSSubScriptLoader); +const _INCLUDED = {}; + +// NoScript uses this blob to include js constructs that stored in the chrome/ +// directory, but are not attached to the Firefox UI (normally, js located +// there is attached to an Overlay and therefore is part of the UI). + +// Reasons for this: things in components/ directory cannot be split into +// separate files; things in chrome/ can be + +const INCLUDE = function(name) { + if (arguments.length > 1) + for (var j = 0, len = arguments.length; j < len; j++) + INCLUDE(arguments[j]); + else if (!_INCLUDED[name]) { + // we used to try/catch here, but that was less useful because it didn't + // produce line numbers for syntax errors + LOADER.loadSubScript("chrome://https-everywhere/content/code/" + + name + ".js"); + _INCLUDED[name] = true; + } +}; + +const WP_STATE_START = CI.nsIWebProgressListener.STATE_START; +const WP_STATE_STOP = CI.nsIWebProgressListener.STATE_STOP; +const WP_STATE_DOC = CI.nsIWebProgressListener.STATE_IS_DOCUMENT; +const WP_STATE_START_DOC = WP_STATE_START | WP_STATE_DOC; +const WP_STATE_RESTORING = CI.nsIWebProgressListener.STATE_RESTORING; + +const LF_VALIDATE_ALWAYS = CI.nsIRequest.VALIDATE_ALWAYS; +const LF_LOAD_BYPASS_ALL_CACHES = CI.nsIRequest.LOAD_BYPASS_CACHE | CI.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE; + +const NS_OK = 0; +const NS_BINDING_ABORTED = 0x804b0002; +const NS_BINDING_REDIRECTED = 0x804b0003; +const NS_ERROR_UNKNOWN_HOST = 0x804b001e; +const NS_ERROR_REDIRECT_LOOP = 0x804b001f; +const NS_ERROR_CONNECTION_REFUSED = 0x804b000e; +const NS_ERROR_NOT_AVAILABLE = 0x804b0111; + +const LOG_CONTENT_BLOCK = 1; +const LOG_CONTENT_CALL = 2; +const LOG_CONTENT_INTERCEPT = 4; +const LOG_CHROME_WIN = 8; +const LOG_XSS_FILTER = 16; +const LOG_INJECTION_CHECK = 32; +const LOG_DOM = 64; +const LOG_JS = 128; +const LOG_LEAKS = 1024; +const LOG_SNIFF = 2048; +const LOG_CLEARCLICK = 4096; +const LOG_ABE = 8192; + +const HTML_NS = "http://www.w3.org/1999/xhtml"; + +const WHERE_UNTRUSTED = 1; +const WHERE_TRUSTED = 2; +const ANYWHERE = 3; + +const N_COHORTS = 1000; + +const DUMMY_OBJ = {}; +DUMMY_OBJ.wrappedJSObject = DUMMY_OBJ; +const DUMMY_FUNC = function() {}; +const DUMMY_ARRAY = []; + +const EARLY_VERSION_CHECK = !("nsISessionStore" in CI && typeof(/ /) === "object"); + +// This is probably obsolete since the switch to the channel.redirectTo API +const OBSERVER_TOPIC_URI_REWRITE = "https-everywhere-uri-rewrite"; + +// XXX: Better plan for this? +// We need it to exist to make our updates of ChannelReplacement.js easier. +var ABE = { + consoleDump: false, + log: function(str) { + https_everywhereLog(WARN, str); + } +}; + +function xpcom_generateQI(iids) { + var checks = []; + for each (var iid in iids) { + checks.push("CI." + iid.name + ".equals(iid)"); + } + var src = checks.length + ? "if (" + checks.join(" || ") + ") return this;\n" + : ""; + return new Function("iid", src + "throw Components.results.NS_ERROR_NO_INTERFACE;"); +} + +function xpcom_checkInterfaces(iid,iids,ex) { + for (var j = iids.length; j-- >0;) { + if (iid.equals(iids[j])) return true; + } + throw ex; +} + +INCLUDE('ChannelReplacement', 'IOUtil', 'HTTPSRules', 'HTTPS', 'Thread', 'ApplicableList'); + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +// This is black magic for storing Expando data w/ an nsIDOMWindow +// See http://pastebin.com/qY28Jwbv , +// https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIControllers + +StorageController.prototype = { + QueryInterface: XPCOMUtils.generateQI( + [ Components.interfaces.nsISupports, + Components.interfaces.nsIController ]), + wrappedJSObject: null, // Initialized by constructor + supportsCommand: function (cmd) {return (cmd == this.command);}, + isCommandEnabled: function (cmd) {return (cmd == this.command);}, + onEvent: function(eventName) {return true;}, + doCommand: function() {return true;} +}; + +function StorageController(command) { + this.command = command; + this.data = {}; + this.wrappedJSObject = this; +} + +/*var Controller = Class("Controller", XPCOM(CI.nsIController), { + init: function (command, data) { + this.command = command; + this.data = data; + }, + supportsCommand: function (cmd) cmd === this.command +});*/ + +function HTTPSEverywhere() { + + // Set up logging in each component: + HTTPS.log = HTTPSRules.log = RuleWriter.log = this.log = https_everywhereLog; + + this.log = https_everywhereLog; + this.wrappedJSObject = this; + this.https_rules = HTTPSRules; + this.INCLUDE=INCLUDE; + this.ApplicableList = ApplicableList; + this.browser_initialised = false; // the browser is completely loaded + + this.prefs = this.get_prefs(); + this.rule_toggle_prefs = this.get_prefs(PREFBRANCH_RULE_TOGGLE); + + // We need to use observers instead of categories for FF3.0 for these: + // https://developer.mozilla.org/en/Observer_Notifications + // https://developer.mozilla.org/en/nsIObserverService. + // https://developer.mozilla.org/en/nsIObserver + // We also use the observer service to let other extensions know about URIs + // we rewrite. + this.obsService = CC["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService); + + if(this.prefs.getBoolPref("globalEnabled")){ + this.obsService.addObserver(this, "profile-before-change", false); + this.obsService.addObserver(this, "profile-after-change", false); + this.obsService.addObserver(this, "sessionstore-windows-restored", false); + this.obsService.addObserver(this, "browser:purge-session-history", false); + } + + var pref_service = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefBranchInternal); + var branch = pref_service.QueryInterface(Components.interfaces.nsIPrefBranchInternal); + + branch.addObserver("extensions.https_everywhere.enable_mixed_rulesets", + this, false); + branch.addObserver("security.mixed_content.block_active_content", + this, false); + + return; +} + + +// nsIContentPolicy interface +// we use numeric constants for performance sake: +const TYPE_OTHER = 1; +const TYPE_SCRIPT = 2; +const TYPE_IMAGE = 3; +const TYPE_STYLESHEET = 4; +const TYPE_OBJECT = 5; +const TYPE_DOCUMENT = 6; +const TYPE_SUBDOCUMENT = 7; +const TYPE_REFRESH = 8; +const TYPE_XBL = 9; +const TYPE_PING = 10; +const TYPE_XMLHTTPREQUEST = 11; +const TYPE_OBJECT_SUBREQUEST = 12; +const TYPE_DTD = 13; +const TYPE_FONT = 14; +const TYPE_MEDIA = 15; +// -------------- +// REJECT_SERVER = -3 +// ACCEPT = 1 + + +// Some of these types are known by arbitrary assertion at +// https://bugzilla.mozilla.org/show_bug.cgi?id=677643#c47 +// TYPE_FONT was required to fix https://trac.torproject.org/projects/tor/ticket/4194 +// TYPE_SUBDOCUMENT was required to fix https://trac.torproject.org/projects/tor/ticket/4149 +// I have NO IDEA why JS won't let me use the constants above in defining this +const shouldLoadTargets = { + 1 : true, + 3 : true, + 5 : true, + 12 : true, + 14 : true, + 7 : true +}; + + + +/* +In recent versions of Firefox and HTTPS Everywhere, the call stack for performing an HTTP -> HTTPS rewrite looks like this: + +1. HTTPSEverywhere.observe() gets a callback with the "http-on-modify-request" topic, and the channel as a subject + + 2. HTTPS.replaceChannel() + + 3. HTTPSRules.rewrittenURI() + + 4. HTTPSRules.potentiallyApplicableRulesets uses <target host=""> elements to identify relevant rulesets + + foreach RuleSet: + + 4. RuleSet.transformURI() + + 5. RuleSet.apply() does the tests and rewrites with RegExps, returning a string + + 4. RuleSet.transformURI() makes a new uri object for the destination string, if required + + 2. HTTPS.replaceChannel() calls channel.redirectTo() if a redirect is needed + + +In addition, the following other important tasks happen along the way: + +HTTPSEverywhere.observe() aborts if there is a redirect loop + finds a reference to the ApplicableList or alist that represents the toolbar context menu + +HTTPS.replaceChannel() notices redirect loops (and used to do much more complex XPCOM API work in the NoScript-based past) + +HTTPSRules.rewrittenURI() works around weird URI types like about: and http://user:pass@example.com/ + and notifies the alist of what it should display for each ruleset + +*/ + +// This defines for Mozilla what stuff HTTPSEverywhere will implement. + +// ChannelEventSink used to be necessary in order to handle redirects (eg +// HTTP redirects) correctly. It may now be obsolete? XXX + +HTTPSEverywhere.prototype = { + prefs: null, + // properties required for XPCOM registration: + classDescription: SERVICE_NAME, + classID: SERVICE_ID, + contractID: SERVICE_CTRID, + + _xpcom_factory: { + createInstance: function (outer, iid) { + if (outer != null) + throw Components.results.NS_ERROR_NO_AGGREGATION; + if (!HTTPSEverywhere.instance) + HTTPSEverywhere.instance = new HTTPSEverywhere(); + return HTTPSEverywhere.instance.QueryInterface(iid); + }, + + QueryInterface: XPCOMUtils.generateQI( + [ Components.interfaces.nsISupports, + Components.interfaces.nsIModule, + Components.interfaces.nsIFactory ]) + }, + + // [optional] an array of categories to register this component in. + _xpcom_categories: [ + { + category: "app-startup", + }, + ], + + // QueryInterface implementation, e.g. using the generateQI helper + QueryInterface: XPCOMUtils.generateQI( + [ Components.interfaces.nsIObserver, + Components.interfaces.nsISupports, + Components.interfaces.nsISupportsWeakReference, + Components.interfaces.nsIWebProgressListener, + Components.interfaces.nsIWebProgressListener2, + Components.interfaces.nsIChannelEventSink ]), + + wrappedJSObject: null, // Initialized by constructor + + getWeakReference: function () { + return Components.utils.getWeakReference(this); + }, + + // An "expando" is an attribute glued onto something. From NoScript. + getExpando: function(domWin, key) { + var c = domWin.controllers.getControllerForCommand("https-everywhere-storage"); + try { + if (c) { + c = c.wrappedJSObject; + //this.log(DBUG, "Found a controller, returning data"); + return c.data[key]; + } else { + this.log(INFO, "No controller attached to " + domWin); + return null; + } + } catch(e) { + // Firefox 3.5 + this.log(WARN,"exception in getExpando"); + this.getExpando = this.getExpando_old; + this.setExpando = this.setExpando_old; + return this.getExpando_old(domWin, key, null); + } + }, + setExpando: function(domWin, key, value) { + var c = domWin.controllers.getControllerForCommand("https-everywhere-storage"); + try { + if (!c) { + this.log(DBUG, "Appending new StorageController for " + domWin); + c = new StorageController("https-everywhere-storage"); + domWin.controllers.appendController(c); + } else { + c = c.wrappedJSObject; + } + c.data[key] = value; + } catch(e) { + this.log(WARN,"exception in setExpando"); + this.getExpando = this.getExpando_old; + this.setExpando = this.setExpando_old; + this.setExpando_old(domWin, key, value); + } + }, + + // This method is straight out of NoScript... we fall back to it in FF 3.*? + getExpando_old: function(domWin, key, defValue) { + var domObject = domWin.document; + return domObject && domObject.__httpsEStorage && domObject.__httpsEStorage[key] || + (defValue ? this.setExpando(domObject, key, defValue) : null); + }, + setExpando_old: function(domWin, key, value) { + var domObject = domWin.document; + if (!domObject) return null; + if (!domObject.__httpsEStorage) domObject.__httpsEStorage = {}; + if (domObject.__httpsEStorage) domObject.__httpsEStorage[key] = value; + else this.log(WARN, "Warning: cannot set expando " + key + " to value " + value); + return value; + }, + + // We use onLocationChange to make a fresh list of rulesets that could have + // applied to the content in the current page (the "applicable list" is used + // for the context menu in the UI). This will be appended to as various + // content is embedded / requested by JavaScript. + onLocationChange: function(wp, req, uri) { + if (wp instanceof CI.nsIWebProgress) { + if (!this.newApplicableListForDOMWin(wp.DOMWindow)) + this.log(WARN,"Something went wrong in onLocationChange"); + } else { + this.log(WARN,"onLocationChange: no nsIWebProgress"); + } + }, + + getWindowForChannel: function(channel) { + // Obtain an nsIDOMWindow from a channel + let loadContext; + try { + loadContext = channel.notificationCallbacks.getInterface(CI.nsILoadContext); + } catch(e) { + try { + loadContext = channel.loadGroup.notificationCallbacks.getInterface(CI.nsILoadContext); + } catch(e) { + this.log(NOTE, "No loadContext for " + channel.URI.spec); + return null; + } + } + + let domWin = loadContext.associatedWindow; + if (!domWin) { + this.log(NOTE, "failed to get DOMWin for " + channel.URI.spec); + return null; + } + + domWin = domWin.top; + return domWin; + }, + + // the lists get made when the urlbar is loading something new, but they + // need to be appended to with reference only to the channel + getApplicableListForChannel: function(channel) { + var domWin = this.getWindowForChannel(channel); + return this.getApplicableListForDOMWin(domWin, "on-modify-request w " + domWin); + }, + + newApplicableListForDOMWin: function(domWin) { + if (!domWin || !(domWin instanceof CI.nsIDOMWindow)) { + this.log(WARN, "Get alist without domWin"); + return null; + } + var dw = domWin.top; + var alist = new ApplicableList(this.log,dw.document,dw); + this.setExpando(dw,"applicable_rules",alist); + return alist; + }, + + getApplicableListForDOMWin: function(domWin, where) { + if (!domWin || !(domWin instanceof CI.nsIDOMWindow)) { + //this.log(WARN, "Get alist without domWin"); + return null; + } + var dw = domWin.top; + var alist= this.getExpando(dw,"applicable_rules",null); + if (alist) { + //this.log(DBUG,"get AL success in " + where); + return alist; + } else { + //this.log(DBUG, "Making new AL in getApplicableListForDOMWin in " + where); + alist = new ApplicableList(this.log,dw.document,dw); + this.setExpando(dw,"applicable_rules",alist); + } + return alist; + }, + + observe: function(subject, topic, data) { + // Top level glue for the nsIObserver API + var channel = subject; + //this.log(VERB,"Got observer topic: "+topic); + + if (topic == "http-on-modify-request") { + if (!(channel instanceof CI.nsIHttpChannel)) return; + + this.log(DBUG,"Got http-on-modify-request: "+channel.URI.spec); + var lst = this.getApplicableListForChannel(channel); // null if no window is associated (ex: xhr) + if (channel.URI.spec in https_everywhere_blacklist) { + this.log(DBUG, "Avoiding blacklisted " + channel.URI.spec); + if (lst) lst.breaking_rule(https_everywhere_blacklist[channel.URI.spec]); + else this.log(NOTE,"Failed to indicate breakage in content menu"); + return; + } + HTTPS.replaceChannel(lst, channel); + } else if (topic == "http-on-examine-response") { + this.log(DBUG, "Got http-on-examine-response @ "+ (channel.URI ? channel.URI.spec : '') ); + HTTPS.handleSecureCookies(channel); + } else if (topic == "http-on-examine-merged-response") { + this.log(DBUG, "Got http-on-examine-merged-response "); + HTTPS.handleSecureCookies(channel); + } else if (topic == "cookie-changed") { + // Javascript can add cookies via document.cookie that are insecure. + if (data == "added" || data == "changed") { + // subject can also be an nsIArray! bleh. + try { + subject.QueryInterface(CI.nsIArray); + var elems = subject.enumerate(); + while (elems.hasMoreElements()) { + var cookie = elems.getNext() + .QueryInterface(CI.nsICookie2); + if (!cookie.isSecure) { + HTTPS.handleInsecureCookie(cookie); + } + } + } catch(e) { + subject.QueryInterface(CI.nsICookie2); + if(!subject.isSecure) { + HTTPS.handleInsecureCookie(subject); + } + } + } + } else if (topic == "profile-before-change") { + this.log(INFO, "Got profile-before-change"); + var catman = Components.classes["@mozilla.org/categorymanager;1"] + .getService(Components.interfaces.nsICategoryManager); + catman.deleteCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, true); + Thread.hostRunning = false; + } else if (topic == "profile-after-change") { + this.log(DBUG, "Got profile-after-change"); + + if(this.prefs.getBoolPref("globalEnabled")){ + OS.addObserver(this, "cookie-changed", false); + OS.addObserver(this, "http-on-modify-request", false); + OS.addObserver(this, "http-on-examine-merged-response", false); + OS.addObserver(this, "http-on-examine-response", false); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.addProgressListener(this, CI.nsIWebProgress.NOTIFY_LOCATION); + this.log(INFO,"ChannelReplacement.supported = "+ChannelReplacement.supported); + + HTTPSRules.init(); + + Thread.hostRunning = true; + var catman = Components.classes["@mozilla.org/categorymanager;1"] + .getService(Components.interfaces.nsICategoryManager); + // hook on redirections (non persistent, otherwise crashes on 1.8.x) + catman.addCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, + SERVICE_CTRID, false, true); + } + } else if (topic == "sessionstore-windows-restored") { + this.log(DBUG,"Got sessionstore-windows-restored"); + this.maybeShowObservatoryPopup(); + this.browser_initialised = true; + } else if (topic == "nsPref:changed") { + // If the user toggles the Mixed Content Blocker settings, reload the rulesets + // to enable/disable the mixedcontent ones + + // this pref gets set to false and then true during FF 26 startup! + // so do nothing if we're being notified during startup + if (!this.browser_initialised) + return; + switch (data) { + case "security.mixed_content.block_active_content": + case "extensions.https_everywhere.enable_mixed_rulesets": + var p = CC["@mozilla.org/preferences-service;1"].getService(CI.nsIPrefBranch); + var val = p.getBoolPref("security.mixed_content.block_active_content"); + this.log(INFO,"nsPref:changed for "+data + " to " + val); + HTTPSRules.init(); + break; + } + } else if (topic == "browser:purge-session-history") { + // The list of rulesets that have been loaded from the sqlite DB + // constitutes a parallel history store, so we have to clear it. + this.log(DBUG, "History cleared, reloading HTTPSRules to avoid information leak."); + HTTPSRules.init(); + } + return; + }, + + maybeShowObservatoryPopup: function() { + // Show the popup at most once. Users who enabled the Observatory before + // a version that would have shown it to them, don't need to see it + // again. + var ssl_observatory = CC["@eff.org/ssl-observatory;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; + var shown = ssl_observatory.myGetBoolPref("popup_shown"); + var enabled = ssl_observatory.myGetBoolPref("enabled"); + var that = this; + var obs_popup_callback = function(result) { + if (result) that.log(INFO, "Got positive proxy test."); + else that.log(INFO, "Got negative proxy text."); + // We are now ready to show the popup in its most informative state + that.chrome_opener("chrome://https-everywhere/content/observatory-popup.xul"); + }; + if (!shown && !enabled) + ssl_observatory.registerProxyTestNotification(obs_popup_callback); + + if (shown && enabled) + this.maybeCleanupObservatoryPrefs(ssl_observatory); + }, + + maybeCleanupObservatoryPrefs: function(ssl_observatory) { + // Recover from a past UI processing bug that would leave the Obsevatory + // accidentally disabled for some users + // https://trac.torproject.org/projects/tor/ticket/10728 + var clean = ssl_observatory.myGetBoolPref("clean_config"); + if (clean) return; + + // unchanged: returns true if a pref has not been modified + var unchanged = function(p){return !ssl_observatory.prefs.prefHasUserValue("extensions.https_everywhere._observatory."+p)}; + var cleanup_obsprefs_callback = function(tor_avail) { + // we only run this once + ssl_observatory.prefs.setBoolPref("extensions.https_everywhere._observatory.clean_config", true); + if (!tor_avail) { + // use_custom_proxy is the variable that is often false when it should be true; + if (!ssl_observatory.myGetBoolPref("use_custom_proxy")) { + // however don't do anything if any of the prefs have been set by the user + if (unchanged("alt_roots") && unchanged("self_signed") && unchanged ("send_asn") && unchanged("priv_dns")) { + ssl_observatory.prefs.setBoolPref("extensions.https_everywhere._observatory.use_custom_proxy", true); + } + } + } + } + ssl_observatory.registerProxyTestNotification(cleanup_obsprefs_callback); + }, + + + getExperimentalFeatureCohort: function() { + // This variable is used for gradually turning on features for testing and + // scalability purposes. It is a random integer [0,N_COHORTS) generated + // once and stored thereafter. + // + // This is not currently used/called in the development branch + var cohort; + try { + cohort = this.prefs.getIntPref("experimental_feature_cohort"); + } catch(e) { + cohort = Math.round(Math.random() * N_COHORTS); + this.prefs.setIntPref("experimental_feature_cohort", cohort); + } + return cohort; + }, + + // nsIChannelEventSink implementation + // XXX This was here for rewrites in the past. Do we still need it? + onChannelRedirect: function(oldChannel, newChannel, flags) { + const uri = newChannel.URI; + this.log(DBUG,"Got onChannelRedirect to "+uri.spec); + if (!(newChannel instanceof CI.nsIHttpChannel)) { + this.log(DBUG, newChannel + " is not an instance of nsIHttpChannel"); + return; + } + var alist = this.juggleApplicableListsDuringRedirection(oldChannel, newChannel); + HTTPS.replaceChannel(alist,newChannel); + }, + + juggleApplicableListsDuringRedirection: function(oldChannel, newChannel) { + // If the new channel doesn't yet have a list of applicable rulesets, start + // with the old one because that's probably a better representation of how + // secure the load process was for this page + var domWin = this.getWindowForChannel(oldChannel); + var old_alist = null; + if (domWin) + old_alist = this.getExpando(domWin,"applicable_rules", null); + domWin = this.getWindowForChannel(newChannel); + if (!domWin) return null; + var new_alist = this.getExpando(domWin,"applicable_rules", null); + if (old_alist && !new_alist) { + new_alist = old_alist; + this.setExpando(domWin,"applicable_rules",new_alist); + } else if (!new_alist) { + new_alist = new ApplicableList(this.log, domWin.document, domWin); + this.setExpando(domWin,"applicable_rules",new_alist); + } + return new_alist; + }, + + asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) { + this.onChannelRedirect(oldChannel, newChannel, flags); + callback.onRedirectVerifyCallback(0); + }, + + get_prefs: function(prefBranch) { + if(!prefBranch) prefBranch = PREFBRANCH_ROOT; + + // get our preferences branch object + // FIXME: Ugly hack stolen from https + var branch_name; + if(prefBranch == PREFBRANCH_RULE_TOGGLE) + branch_name = "extensions.https_everywhere.rule_toggle."; + else + branch_name = "extensions.https_everywhere."; + var o_prefs = false; + var o_branch = false; + // this function needs to be called from inside https_everywhereLog, so + // it needs to do its own logging... + var econsole = Components.classes["@mozilla.org/consoleservice;1"] + .getService(Components.interfaces.nsIConsoleService); + + o_prefs = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService); + + if (!o_prefs) + { + econsole.logStringMessage("HTTPS Everywhere: Failed to get preferences-service!"); + return false; + } + + o_branch = o_prefs.getBranch(branch_name); + if (!o_branch) + { + econsole.logStringMessage("HTTPS Everywhere: Failed to get prefs branch!"); + return false; + } + + if(prefBranch == PREFBRANCH_ROOT) { + // make sure there's an entry for our log level + try { + o_branch.getIntPref(LLVAR); + } catch (e) { + econsole.logStringMessage("Creating new about:config https_everywhere.LogLevel variable"); + o_branch.setIntPref(LLVAR, WARN); + } + } + + return o_branch; + }, + + chrome_opener: function(uri, args) { + // we don't use window.open, because we need to work around TorButton's + // state control + args = args || 'chrome,centerscreen'; + return CC['@mozilla.org/appshell/window-mediator;1'] + .getService(CI.nsIWindowMediator) + .getMostRecentWindow('navigator:browser') + .open(uri,'', args ); + }, + + tab_opener: function(uri) { + var gb = CC['@mozilla.org/appshell/window-mediator;1'] + .getService(CI.nsIWindowMediator) + .getMostRecentWindow('navigator:browser') + .gBrowser; + var tab = gb.addTab(uri); + gb.selectedTab = tab; + return tab; + }, + + toggleEnabledState: function() { + if(this.prefs.getBoolPref("globalEnabled")){ + try{ + this.obsService.removeObserver(this, "profile-before-change"); + this.obsService.removeObserver(this, "profile-after-change"); + this.obsService.removeObserver(this, "sessionstore-windows-restored"); + OS.removeObserver(this, "cookie-changed"); + OS.removeObserver(this, "http-on-modify-request"); + OS.removeObserver(this, "http-on-examine-merged-response"); + OS.removeObserver(this, "http-on-examine-response"); + + var catman = Components.classes["@mozilla.org/categorymanager;1"] + .getService(Components.interfaces.nsICategoryManager); + catman.deleteCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, true); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.removeProgressListener(this); + + this.prefs.setBoolPref("globalEnabled", false); + } + catch(e){ + this.log(WARN, "Couldn't remove observers: " + e); + } + } + else{ + try{ + this.obsService.addObserver(this, "profile-before-change", false); + this.obsService.addObserver(this, "profile-after-change", false); + this.obsService.addObserver(this, "sessionstore-windows-restored", false); + OS.addObserver(this, "cookie-changed", false); + OS.addObserver(this, "http-on-modify-request", false); + OS.addObserver(this, "http-on-examine-merged-response", false); + OS.addObserver(this, "http-on-examine-response", false); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.addProgressListener(this, CI.nsIWebProgress.NOTIFY_LOCATION); + + this.log(INFO,"ChannelReplacement.supported = "+ChannelReplacement.supported); + + if(!Thread.hostRunning) + Thread.hostRunning = true; + + var catman = Components.classes["@mozilla.org/categorymanager;1"] + .getService(Components.interfaces.nsICategoryManager); + // hook on redirections (non persistent, otherwise crashes on 1.8.x) + catman.addCategoryEntry("net-channel-event-sinks", SERVICE_CTRID, + SERVICE_CTRID, false, true); + + HTTPSRules.init(); + this.prefs.setBoolPref("globalEnabled", true); + } + catch(e){ + this.log(WARN, "Couldn't add observers: " + e); + } + } + } +}; + +var prefs = 0; +var econsole = 0; +function https_everywhereLog(level, str) { + if (prefs == 0) { + prefs = HTTPSEverywhere.instance.get_prefs(); + econsole = Components.classes["@mozilla.org/consoleservice;1"] + .getService(Components.interfaces.nsIConsoleService); + } + try { + var threshold = prefs.getIntPref(LLVAR); + } catch (e) { + econsole.logStringMessage( "HTTPS Everywhere: Failed to read about:config LogLevel"); + threshold = WARN; + } + if (level >= threshold) { + dump("HTTPS Everywhere: "+str+"\n"); + econsole.logStringMessage("HTTPS Everywhere: " +str); + } +} + +/** +* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). +* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6). +*/ +if (XPCOMUtils.generateNSGetFactory) + var NSGetFactory = XPCOMUtils.generateNSGetFactory([HTTPSEverywhere]); +else + var NSGetModule = XPCOMUtils.generateNSGetModule([HTTPSEverywhere]); + +/* vim: set tabstop=4 expandtab: */ diff --git a/data/extensions/https-everywhere@eff.org/components/ssl-observatory.js b/data/extensions/https-everywhere@eff.org/components/ssl-observatory.js new file mode 100644 index 0000000..7b301d1 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/components/ssl-observatory.js @@ -0,0 +1,1026 @@ +const Ci = Components.interfaces; +const Cc = Components.classes; +const Cr = Components.results; + +const CI = Components.interfaces; +const CC = Components.classes; +const CR = Components.results; +const CU = Components.utils; + +// Log levels +VERB=1; +DBUG=2; +INFO=3; +NOTE=4; +WARN=5; + +BASE_REQ_SIZE=4096; +MAX_OUTSTANDING = 20; // Max # submission XHRs in progress +MAX_DELAYED = 32; // Max # XHRs are waiting around to be sent or retried +TIMEOUT = 60000; + +ASN_PRIVATE = -1; // Do not record the ASN this cert was seen on +ASN_IMPLICIT = -2; // ASN can be learned from connecting IP +ASN_UNKNOWABLE = -3; // Cert was seen in the absence of [trustworthy] Internet access + +// XXX: We should make the _observatory tree relative. +LLVAR="extensions.https_everywhere.LogLevel"; + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +Components.utils.import("resource://gre/modules/ctypes.jsm"); + + +const OS = Cc['@mozilla.org/observer-service;1'].getService(CI.nsIObserverService); + +const SERVICE_CTRID = "@eff.org/ssl-observatory;1"; +const SERVICE_ID=Components.ID("{0f9ab521-986d-4ad8-9c1f-6934e195c15c}"); +const SERVICE_NAME = "Anonymously Submits SSL certificates to EFF for security auditing."; +const LOADER = CC["@mozilla.org/moz/jssubscript-loader;1"].getService(CI.mozIJSSubScriptLoader); + +const _INCLUDED = {}; + +const INCLUDE = function(name) { + if (arguments.length > 1) + for (var j = 0, len = arguments.length; j < len; j++) + INCLUDE(arguments[j]); + else if (!_INCLUDED[name]) { + try { + LOADER.loadSubScript("chrome://https-everywhere/content/code/" + + name + ".js"); + _INCLUDED[name] = true; + } catch(e) { + dump("INCLUDE " + name + ": " + e + "\n"); + } + } +}; + +INCLUDE('Root-CAs'); +INCLUDE('sha256'); +INCLUDE('X509ChainWhitelist'); +INCLUDE('NSS'); + +function SSLObservatory() { + this.prefs = CC["@mozilla.org/preferences-service;1"] + .getService(CI.nsIPrefBranch); + + try { + // Check for torbutton + this.tor_logger = CC["@torproject.org/torbutton-logger;1"] + .getService(CI.nsISupports).wrappedJSObject; + this.torbutton_installed = true; + } catch(e) { + this.torbutton_installed = false; + } + + this.HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] + .getService(Components.interfaces.nsISupports) + .wrappedJSObject; + + /* The proxy test result starts out null until the test is attempted. + * This is for UI notification purposes */ + this.proxy_test_successful = null; + this.proxy_test_callback = null; + this.cto_url = "https://check.torproject.org/?TorButton=true"; + // a regexp to match the above URL + this.cto_regexp = RegExp("^https://check\\.torproject\\.org/"); + + this.public_roots = root_ca_hashes; + + // Clear these on cookies-cleared observer event + this.already_submitted = {}; + this.delayed_submissions = {}; + + // Figure out the url to submit to + this.submit_host = null; + this.findSubmissionTarget(); + + // Used to track current number of pending requests to the server + this.current_outstanding_requests = 0; + + // We can't always know private browsing state per request, sometimes + // we have to guess based on what we've seen in the past + this.everSeenPrivateBrowsing = false; + + // Generate nonce to append to url, to catch in nsIProtocolProxyFilter + // and to protect against CSRF + this.csrf_nonce = "#"+Math.random().toString()+Math.random().toString(); + + this.compatJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); + + var pref_service = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefBranchInternal); + var branch = pref_service.QueryInterface(Components.interfaces.nsIPrefBranchInternal); + + branch.addObserver("extensions.https_everywhere._observatory.enabled", + this, false); + + if (this.myGetBoolPref("enabled")) { + OS.addObserver(this, "cookie-changed", false); + OS.addObserver(this, "http-on-examine-response", false); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.addProgressListener(this, + Ci.nsIWebProgress.NOTIFY_STATE_REQUEST); + } + + // Register protocolproxyfilter + this.pps = CC["@mozilla.org/network/protocol-proxy-service;1"] + .getService(CI.nsIProtocolProxyService); + + this.pps.registerFilter(this, 0); + this.wrappedJSObject = this; + + this.client_asn = ASN_PRIVATE; + if (this.myGetBoolPref("send_asn")) + this.setupASNWatcher(); + + try { + NSS.initialize(""); + } catch(e) { + this.log(WARN, "Failed to initialize NSS component:" + e); + } + + this.testProxySettings(); + + this.log(DBUG, "Loaded observatory component!"); +} + +SSLObservatory.prototype = { + // QueryInterface implementation, e.g. using the generateQI helper + QueryInterface: XPCOMUtils.generateQI( + [ CI.nsIObserver, + CI.nsIProtocolProxyFilter, + //CI.nsIWifiListener, + CI.nsIWebProgressListener, + CI.nsISupportsWeakReference, + CI.nsIInterfaceRequestor]), + + wrappedJSObject: null, // Initialized by constructor + + // properties required for XPCOM registration: + classDescription: SERVICE_NAME, + classID: SERVICE_ID, + contractID: SERVICE_CTRID, + + // https://developer.mozilla.org/En/How_to_check_the_security_state_of_an_XMLHTTPRequest_over_SSL + getSSLCertChain: function(channel) { + try { + // Do we have a valid channel argument? + if (!channel instanceof Ci.nsIChannel) { + return null; + } + var secInfo = channel.securityInfo; + + // Print general connection security state + if (secInfo instanceof Ci.nsITransportSecurityInfo) { + secInfo.QueryInterface(Ci.nsITransportSecurityInfo); + } else { + return null; + } + + if (secInfo instanceof Ci.nsISSLStatusProvider) { + return secInfo.QueryInterface(Ci.nsISSLStatusProvider). + SSLStatus.QueryInterface(Ci.nsISSLStatus).serverCert; + } + return null; + } catch(err) { + return null; + } + }, + + findSubmissionTarget: function() { + // Compute the URL that the Observatory will currently submit to + var host = this.prefs.getCharPref("extensions.https_everywhere._observatory.server_host"); + // Rebuild the regexp iff the host has changed + if (host != this.submit_host) { + this.submit_host = host; + this.submit_url = "https://" + host + "/submit_cert"; + this.submission_regexp = RegExp("^" + this.regExpEscape(this.submit_url)); + } + }, + + regExpEscape: function(s) { + // Borrowed from the Closure Library, + // https://closure-library.googlecode.com/svn/docs/closure_goog_string_string.js.source.html + return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').replace(/\x08/g, '\\x08'); + }, + + notifyCertProblem: function(socketInfo, status, targetSite) { + this.log(NOTE, "cert warning for " + targetSite); + if (targetSite == "observatory.eff.org") { + this.log(WARN, "Surpressing observatory warning"); + return true; + } + return false; + }, + + setupASNWatcher: function() { + this.getClientASN(); + this.max_ap = null; + + // we currently do not actually do *any* ASN watching from the client + // (in other words, the db will not have ASNs for certs submitted + // through Tor, even if the user checks the "send ASN" option) + // all of this code for guessing at changes in our public IP via WiFi hints + // is therefore disabled + /* + // Observe network changes to get new ASNs + OS.addObserver(this, "network:offline-status-changed", false); + var pref_service = Cc["@mozilla.org/preferences-service;1"] + .getService(Ci.nsIPrefBranchInternal); + var proxy_branch = pref_service.QueryInterface(Ci.nsIPrefBranchInternal); + proxy_branch.addObserver("network.proxy", this, false); + + try { + var wifi_service = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor); + wifi_service.startWatching(this); + } catch(e) { + this.log(INFO, "Failed to register ASN change monitor: "+e); + }*/ + }, + + stopASNWatcher: function() { + this.client_asn = ASN_PRIVATE; + /* + // unhook the observers we registered above + OS.removeObserver(this, "network:offline-status-changed"); + var pref_service = Cc["@mozilla.org/preferences-service;1"] + .getService(Ci.nsIPrefBranchInternal); + var proxy_branch = pref_service.QueryInterface(Ci.nsIPrefBranchInternal); + proxy_branch.removeObserver(this, "network.proxy"); + try { + var wifi_service = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor); + wifi_service.stopWatching(this); + } catch(e) { + this.log(WARN, "Failed to stop wifi state monitor: "+e); + }*/ + }, + + getClientASN: function() { + // Fetch a new client ASN.. + if (!this.myGetBoolPref("send_asn")) { + this.client_asn = ASN_PRIVATE; + return; + } + else if (!this.torbutton_installed) { + this.client_asn = ASN_IMPLICIT; + return; + } + // XXX As a possible base case: the user is running Tor, is not using + // bridges, and has send_asn enabled: should we ping an eff.org URL to + // learn our ASN? + return; + }, + + /* + // Wifi status listener + onChange: function(accessPoints) { + try { + var max_ap = accessPoints[0].mac; + } catch(e) { + return null; // accessPoints[0] is undefined + } + var max_signal = accessPoints[0].signal; + var old_max_present = false; + for (var i=0; i<accessPoints.length; i++) { + if (accessPoints[i].mac == this.max_ap) { + old_max_present = true; + } + if (accessPoints[i].signal > max_signal) { + max_ap = accessPoints[i].mac; + max_signal = accessPoints[i].signal; + } + } + this.max_ap = max_ap; + if (!old_max_present) { + this.log(INFO, "Old access point is out of range. Getting new ASN"); + this.getClientASN(); + } else { + this.log(DBUG, "Old access point is still in range."); + } + }, + + // Wifi status listener + onError: function(value) { + // XXX: Do we care? + this.log(NOTE, "ASN change observer got an error: "+value); + this.getClientASN(); + }, + */ + + ourFingerprint: function(cert) { + // Calculate our custom fingerprint from an nsIX509Cert + return (cert.md5Fingerprint+cert.sha1Fingerprint).replace(":", "", "g"); + }, + + // onSecurity is used to listen for bad cert warnings + // There is also onSecurityStateChange, but it does not handle subdocuments. See git + // history for an implementation stub. + onStateChange: function(aProgress, aRequest, aState, aStatus) { + if (!aRequest) return; + var chan = null; + try { + chan = aRequest.QueryInterface(Ci.nsIHttpChannel); + } catch(e) { + return; + } + if (chan) { + if (!this.observatoryActive(chan)) return; + var certchain = this.getSSLCertChain(chan); + if (certchain) { + this.log(INFO, "Got state cert chain for " + + chan.originalURI.spec + "->" + chan.URI.spec + ", state: " + aState); + var warning = true; + this.submitCertChainForChannel(certchain, chan, warning); + } + } + }, + + observe: function(subject, topic, data) { + if (topic == "cookie-changed" && data == "cleared") { + this.already_submitted = {}; + this.delayed_submissions = {}; + this.log(INFO, "Cookies were cleared. Purging list of pending and already submitted certs"); + return; + } + + if ("http-on-examine-response" == topic) { + var channel = subject; + if (!this.observatoryActive(channel)) return; + + var certchain = this.getSSLCertChain(subject); + var warning = false; + this.submitCertChainForChannel(certchain, channel, warning); + } + + if (topic == "network:offline-status-changed" && data == "online") { + this.log(INFO, "Browser back online. Getting new ASN."); + this.getClientASN(); + return; + } + + if (topic == "nsPref:changed") { + // If the user toggles the SSL Observatory settings, we need to add or remove + // our observers + switch (data) { + case "network.proxy.ssl": + case "network.proxy.ssl_port": + case "network.proxy.socks": + case "network.proxy.socks_port": + // XXX: We somehow need to only call this once. Right now, we'll make + // like 3 calls to getClientASN().. The only thing I can think + // of is a timer... + this.log(INFO, "Proxy settings have changed. Getting new ASN"); + this.getClientASN(); + break; + case "extensions.https_everywhere._observatory.enabled": + if (this.myGetBoolPref("enabled")) { + this.pps.registerFilter(this, 0); + OS.addObserver(this, "cookie-changed", false); + OS.addObserver(this, "http-on-examine-response", false); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.addProgressListener(this, + Ci.nsIWebProgress.NOTIFY_STATE_REQUEST); + this.log(INFO,"SSL Observatory is now enabled via pref change!"); + } else { + try { + this.pps.unregisterFilter(this); + OS.removeObserver(this, "cookie-changed"); + OS.removeObserver(this, "http-on-examine-response"); + + var dls = CC['@mozilla.org/docloaderservice;1'] + .getService(CI.nsIWebProgress); + dls.removeProgressListener(this); + this.log(INFO,"SSL Observatory is now disabled via pref change!"); + } catch(e) { + this.log(WARN, "Removing SSL Observatory observers failed: "+e); + } + } + break; + } + return; + } + + }, + + submitCertChainForChannel: function(certchain, channel, warning) { + if (!certchain) { + return; + } + var host_ip = "-1"; + var httpchannelinternal = channel.QueryInterface(Ci.nsIHttpChannelInternal); + try { + host_ip = httpchannelinternal.remoteAddress; + } catch(e) { + this.log(INFO, "Could not get server IP address."); + } + + channel.QueryInterface(Ci.nsIHttpChannel); + var chainEnum = certchain.getChain(); + var chainArray = []; + var chainArrayFpStr = ''; + var fps = []; + for(var i = 0; i < chainEnum.length; i++) { + var cert = chainEnum.queryElementAt(i, Ci.nsIX509Cert); + chainArray.push(cert); + var fp = this.ourFingerprint(cert); + fps.push(fp); + chainArrayFpStr = chainArrayFpStr + fp; + } + var chain_hash = sha256_digest(chainArrayFpStr).toUpperCase(); + this.log(INFO, "SHA-256 hash of cert chain for "+new String(channel.URI.host)+" is "+ chain_hash); + + if(!this.myGetBoolPref("use_whitelist")) { + this.log(WARN, "Not using whitelist to filter cert chains."); + } + else if (this.isChainWhitelisted(chain_hash)) { + this.log(INFO, "This cert chain is whitelisted. Not submitting."); + return; + } + else { + this.log(INFO, "Cert chain is NOT whitelisted. Proceeding with submission."); + } + + if (channel.URI.port == -1) { + this.submitChainArray(chainArray, fps, new String(channel.URI.host), channel, host_ip, warning, false); + } else { + this.submitChainArray(chainArray, fps, channel.URI.host+":"+channel.URI.port, channel, host_ip, warning, false); + } + }, + + observatoryActive: function(channel) { + + if (!this.myGetBoolPref("enabled")) + return false; + + if (this.torbutton_installed && this.proxy_test_successful) { + // Allow Tor users to choose if they want to submit + // during tor and/or non-tor + if (this.myGetBoolPref("submit_during_tor") && + this.prefs.getBoolPref("extensions.torbutton.tor_enabled")) + return true; + + if (this.myGetBoolPref("submit_during_nontor") && + !this.prefs.getBoolPref("extensions.torbutton.tor_enabled")) + return true; + + return false; + } + + if (this.proxy_test_successful) { + return true; + } else if (this.myGetBoolPref("use_custom_proxy")) { + // no torbutton; the custom proxy is probably the user opting to + // submit certs without strong anonymisation. Because the + // anonymisation is weak, we avoid submitting during private browsing + // mode. + var pbm = this.inPrivateBrowsingMode(channel); + this.log(DBUG, "Private browsing mode: " + pbm); + return !pbm; + } + }, + + inPrivateBrowsingMode: function(channel) { + // In classic firefox fashion, there are multiple versions of this API + // https://developer.mozilla.org/EN/docs/Supporting_per-window_private_browsing + try { + // Firefox 20+, this state is per-window; + // should raise an exception on FF < 20 + CU.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); + if (!(channel instanceof CI.nsIHttpChannel)) { + this.log(NOTE, "observatoryActive() without a channel"); + // This is a windowless request. We cannot tell if private browsing + // applies. Conservatively, if we have ever seen PBM, it might be + // active now + return this.everSeenPrivateBrowsing; + } + var win = this.HTTPSEverywhere.getWindowForChannel(channel); + if (!win) return this.everSeenPrivateBrowsing; // windowless request + + if (PrivateBrowsingUtils.isWindowPrivate(win)) { + this.everSeenPrivateBrowsing = true; + return true; + } + } catch (e) { + // Firefox < 20, this state is global + try { + var pbs = CC["@mozilla.org/privatebrowsing;1"].getService(CI.nsIPrivateBrowsingService); + if (pbs.privateBrowsingEnabled) { + this.everSeenPrivateBrowsing = true; + return true; + } + } catch (e) { /* seamonkey or very old firefox */ } + } + return false; + }, + + myGetBoolPref: function(prefstring) { + // syntactic sugar + return this.prefs.getBoolPref ("extensions.https_everywhere._observatory." + prefstring); + }, + + isChainWhitelisted: function(chainhash) { + if (X509ChainWhitelist == null) { + this.log(WARN, "Could not find whitelist of popular certificate chains, so ignoring whitelist"); + return false; + } + if (X509ChainWhitelist[chainhash] != null) { + return true; + } + return false; + }, + + findRootInChain: function(certArray) { + // Return the position in the chain Array of the/a root CA + var rootidx = -1; + var nextInChain = certArray[0].issuer; + for (var i = 0; i < certArray.length; i++) { + // Find the next cert in the valid chain + if (certArray[i].equals(nextInChain)) { + if (certArray[i].issuerName == certArray[i].subjectName) { + // All X509 root certs are self-signed + this.log(INFO, "Got root cert at position: "+i); + rootidx = i; + break; + } else { + // This is an intermediate CA cert; keep looking for the root + nextInChain = certArray[i].issuer; + } + } + } + return rootidx; + }, + + processConvergenceChain: function(chain) { + // Make sure the chain we're working with is sane, even if Convergence is + // present. + + // Convergence currently performs MITMs against the Firefox in order to + // get around https://bugzilla.mozilla.org/show_bug.cgi?id=644640. The + // end-entity cert produced by Convergence contains a copy of the real + // end-entity cert inside an X509v3 extension. We extract this and send + // it rather than the Convergence certs. + var convergence = Components.classes['@thoughtcrime.org/convergence;1']; + if (!convergence) return null; + convergence = convergence.getService().wrappedJSObject; + if (!convergence || !convergence.enabled) return null; + + this.log(INFO, "Convergence uses its own internal root certs; not submitting those"); + + //this.log(WARN, convergence.certificateStatus.getVerificiationStatus(chain.certArray[0])); + try { + var certInfo = this.extractRealLeafFromConveregenceLeaf(chain.certArray[0]); + var b64Cert = certInfo["certificate"]; + var certDB = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB); + chain.leaf = certDB.constructX509FromBase64(b64Cert); + chain.certArray = [chain.leaf]; + chain.fps = [this.ourFingerprint(chain.leaf)]; + } catch (e) { + this.log(WARN, "Failed to extract leaf cert from Convergence cert " + e); + chain.certArray = chain.certArray.slice(0,1); + chain.fps = chain.fps.slice(0,1); + } + + }, + + extractRealLeafFromConveregenceLeaf: function(certificate) { + // Copied from Convergence's CertificateStatus.getVerificiationStatus + var len = {}; + var derEncoding = certificate.getRawDER(len); + + var derItem = NSS.types.SECItem(); + derItem.data = NSS.lib.ubuffer(derEncoding); + derItem.len = len.value; + + var completeCertificate = NSS.lib.CERT_DecodeDERCertificate(derItem.address(), 1, null); + + var extItem = NSS.types.SECItem(); + var status = NSS.lib.CERT_FindCertExtension(completeCertificate, + NSS.lib.SEC_OID_NS_CERT_EXT_COMMENT, + extItem.address()); + if (status != -1) { + var encoded = ''; + var asArray = ctypes.cast(extItem.data, ctypes.ArrayType(ctypes.unsigned_char, extItem.len).ptr).contents; + var marker = false; + + for (var i=0;i<asArray.length;i++) { + if (marker) { + encoded += String.fromCharCode(asArray[i]); + } else if (asArray[i] == 0x00) { + marker = true; + } + } + + return JSON.parse(encoded); + } + }, + + shouldSubmit: function(chain, domain) { + // Return true if we should submit this chain to the SSL Observatory + var rootidx = this.findRootInChain(chain.certArray); + var ss = false; // ss: self-signed + + if (chain.leaf.issuerName == chain.leaf.subjectName) + ss = true; + + if (!this.myGetBoolPref("self_signed") && ss) { + this.log(INFO, "Not submitting self-signed cert for " + domain); + return false; + } + + if (!ss && !this.myGetBoolPref("alt_roots")) { + if (rootidx == -1) { + // A cert with an unknown/absent Issuer. Out of caution, don't submit these + this.log(INFO, "Cert for " + domain + " issued by unknown CA " + + chain.leaf.issuerName + " (not submitting due to settings)"); + return false; + } else if (!(chain.fps[rootidx] in this.public_roots)) { + // A cert with a known but non-public Issuer + this.log(INFO, "Got a private root cert. Ignoring domain " + +domain+" with root "+chain.fps[rootidx]); + return false; + } + } + + if (chain.fps[0] in this.already_submitted) { + this.log(INFO, "Already submitted cert for "+domain+". Ignoring"); + return false; + } + return true; + }, + + submitChainArray: function(certArray, fps, domain, channel, host_ip, warning, resubmitting) { + var base64Certs = []; + // Put all this chain data in one object so that it can be modified by + // subroutines if required + var c = {}; c.certArray = certArray; c.fps = fps; c.leaf = certArray[0]; + this.processConvergenceChain(c); + if (!this.shouldSubmit(c,domain)) return; + + // only try to submit now if there aren't too many outstanding requests + if (this.current_outstanding_requests > MAX_OUTSTANDING) { + this.log(WARN, "Too many outstanding requests ("+this.current_outstanding_requests+"), not submitting"); + + // if there are too many current requests but not too many + // delayed/pending ones, then delay this one + if (Object.keys(this.delayed_submissions).length < MAX_DELAYED) + if (!(c.fps[0] in this.delayed_submissions)) { + this.log(WARN, "Planning to retry submission..."); + let retry = function() { this.submitChainArray(certArray, fps, domain, channel, host_ip, warning, true); }; + this.delayed_submissions[c.fps[0]] = retry; + } + return; + } + + for (var i = 0; i < c.certArray.length; i++) { + var len = new Object(); + var derData = c.certArray[i].getRawDER(len); + let result = ""; + for (let j = 0, dataLength = derData.length; j < dataLength; ++j) + result += String.fromCharCode(derData[j]); + base64Certs.push(btoa(result)); + } + + var reqParams = []; + reqParams.push("domain="+domain); + reqParams.push("server_ip="+host_ip); + if (this.myGetBoolPref("testing")) { + reqParams.push("testing=1"); + // The server can compute these, but they're a nice test suite item! + reqParams.push("fplist="+this.compatJSON.encode(c.fps)); + } + reqParams.push("certlist="+this.compatJSON.encode(base64Certs)); + + if (resubmitting) { + reqParams.push("client_asn="+ASN_UNKNOWABLE); + } else { + reqParams.push("client_asn="+this.client_asn); + } + + if (this.myGetBoolPref("priv_dns")) { + reqParams.push("private_opt_in=1"); + } else { + reqParams.push("private_opt_in=0"); + } + + if (warning) { + reqParams.push("browser_warning=1"); + } else { + reqParams.push("browser_warning=0"); + } + + var params = reqParams.join("&") + "&padding=0"; + var tot_len = BASE_REQ_SIZE; + + this.log(INFO, "Submitting cert for "+domain); + this.log(DBUG, "submit_cert params: "+params); + + // Pad to exp scale. This is done because the distribution of cert sizes + // is almost certainly pareto, and definitely not uniform. + for (tot_len = BASE_REQ_SIZE; tot_len < params.length; tot_len*=2); + + while (params.length != tot_len) { + params += "0"; + } + + var that = this; // We have neither SSLObservatory nor this in scope in the lambda + + var win = channel ? this.HTTPSEverywhere.getWindowForChannel(channel) : null; + var req = this.buildRequest(params); + req.timeout = TIMEOUT; + + req.onreadystatechange = function(evt) { + if (req.readyState == 4) { + // pop off one outstanding request + that.current_outstanding_requests -= 1; + that.log(DBUG, "Popping one off of outstanding requests, current num is: "+that.current_outstanding_requests); + + if (req.status == 200) { + that.log(INFO, "Successful cert submission"); + if (!that.prefs.getBoolPref("extensions.https_everywhere._observatory.cache_submitted")) + if (c.fps[0] in that.already_submitted) + delete that.already_submitted[c.fps[0]]; + + // Retry up to two previously failed submissions + let n = 0; + for (let fp in that.delayed_submissions) { + that.log(WARN, "Retrying a submission..."); + that.delayed_submissions[fp](); + delete that.delayed_submissions[fp]; + if (++n >= 2) break; + } + } else if (req.status == 403) { + that.log(WARN, "The SSL Observatory has issued a warning about this certificate for " + domain); + try { + var warningObj = JSON.parse(req.responseText); + if (win) that.warnUser(warningObj, win, c.certArray[0]); + } catch(e) { + that.log(WARN, "Failed to process SSL Observatory cert warnings :( " + e); + that.log(WARN, req.responseText); + } + } else { + // Submission failed + if (c.fps[0] in that.already_submitted) + delete that.already_submitted[c.fps[0]]; + try { + that.log(WARN, "Cert submission failure "+req.status+": "+req.responseText); + } catch(e) { + that.log(WARN, "Cert submission failure and exception: "+e); + } + // If we don't have too many delayed submissions, and this isn't + // (somehow?) one of them, then plan to retry this submission later + if (Object.keys(that.delayed_submissions).length < MAX_DELAYED) + if (!(c.fps[0] in that.delayed_submissions)) { + that.log(WARN, "Planning to retry submission..."); + let retry = function() { that.submitChainArray(certArray, fps, domain, channel, host_ip, warning, true); }; + that.delayed_submissions[c.fps[0]] = retry; + } + + } + } + }; + + // Cache this here to prevent multiple submissions for all the content elements. + that.already_submitted[c.fps[0]] = true; + + // add one to current outstanding request number + that.current_outstanding_requests += 1; + that.log(DBUG, "Adding outstanding request, current num is: "+that.current_outstanding_requests); + req.send(params); + }, + + buildRequest: function(params) { + var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(Ci.nsIXMLHttpRequest); + + // We do this again in case the user altered about:config + this.findSubmissionTarget(); + req.open("POST", this.submit_url+this.csrf_nonce, true); + + // Send the proper header information along with the request + // Do not set gzip header.. It will ruin the padding + req.setRequestHeader("X-Privacy-Info", "EFF SSL Observatory: https://eff.org/r.22c"); + req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + req.setRequestHeader("Content-length", params.length); + req.setRequestHeader("Connection", "close"); + // Need to clear useragent and other headers.. + req.setRequestHeader("User-Agent", ""); + req.setRequestHeader("Accept", ""); + req.setRequestHeader("Accept-Language", ""); + req.setRequestHeader("Accept-Encoding", ""); + req.setRequestHeader("Accept-Charset", ""); + return req; + }, + + warnUser: function(warningObj, win, cert) { + var aWin = CC['@mozilla.org/appshell/window-mediator;1'] + .getService(CI.nsIWindowMediator) + .getMostRecentWindow('navigator:browser'); + aWin.openDialog("chrome://https-everywhere/content/observatory-warning.xul", + "","chrome,centerscreen", warningObj, win, cert); + }, + + registerProxyTestNotification: function(callback_fcn) { + if (this.proxy_test_successful != null) { + /* Proxy test already ran. Callback immediately. */ + callback_fcn(this.proxy_test_successful); + this.proxy_test_callback = null; + return; + } else { + this.proxy_test_callback = callback_fcn; + } + }, + + testProxySettings: function() { + /* Plan: + * 1. Launch an async XMLHttpRequest to check.tp.o with magic nonce + * 3. Filter the nonce in protocolProxyFilter to use proxy settings + * 4. Async result function sets test result status based on check.tp.o + */ + this.proxy_test_successful = null; + + try { + var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(Components.interfaces.nsIXMLHttpRequest); + var url = this.cto_url + this.csrf_nonce; + req.open('GET', url, true); + req.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE; + req.overrideMimeType("text/xml"); + var that = this; // Scope gymnastics for async callback + req.onreadystatechange = function (oEvent) { + if (req.readyState === 4) { + that.proxy_test_successful = false; + + if(req.status == 200) { + if(!req.responseXML) { + that.log(INFO, "Tor check failed: No XML returned by check service."); + that.proxyTestFinished(); + return; + } + + var result = req.responseXML.getElementById('TorCheckResult'); + if(result===null) { + that.log(INFO, "Tor check failed: Non-XML returned by check service."); + } else if(typeof(result.target) == 'undefined' + || result.target === null) { + that.log(INFO, "Tor check failed: Busted XML returned by check service."); + } else if(result.target === "success") { + that.log(INFO, "Tor check succeeded."); + that.proxy_test_successful = true; + } else { + that.log(INFO, "Tor check failed: "+result.target); + } + } else { + that.log(INFO, "Tor check failed: HTTP Error "+req.status); + } + + /* Notify the UI of the test result */ + if (that.proxy_test_callback) { + that.proxy_test_callback(that.proxy_test_successful); + that.proxy_test_callback = null; + } + that.proxyTestFinished(); + } + }; + req.send(null); + } catch(e) { + this.proxy_test_successful = false; + if(e.result == 0x80004005) { // NS_ERROR_FAILURE + this.log(INFO, "Tor check failed: Proxy not running."); + } + this.log(INFO, "Tor check failed: Internal error: "+e); + if (this.proxy_test_callback) { + this.proxy_test_callback(this.proxy_test_successful); + this.proxy_test_callback = null; + } + that.proxyTestFinished(); + } + }, + + proxyTestFinished: function() { + if (!this.myGetBoolPref("enabled")) { + this.pps.unregisterFilter(this); + } + }, + + getProxySettings: function(testingForTor) { + // This may be called either for an Observatory submission, or during a test to see if Tor is + // present. The testingForTor argument is true in the latter case. + var proxy_settings = ["direct", "", 0]; + this.log(INFO,"in getProxySettings()"); + var custom_proxy_type = this.prefs.getCharPref("extensions.https_everywhere._observatory.proxy_type"); + if (this.torbutton_installed && this.myGetBoolPref("use_tor_proxy")) { + this.log(INFO,"CASE: use_tor_proxy"); + // extract torbutton proxy settings + proxy_settings[0] = "http"; + proxy_settings[1] = this.prefs.getCharPref("extensions.torbutton.https_proxy"); + proxy_settings[2] = this.prefs.getIntPref("extensions.torbutton.https_port"); + + if (proxy_settings[2] == 0) { + proxy_settings[0] = "socks"; + proxy_settings[1] = this.prefs.getCharPref("extensions.torbutton.socks_host"); + proxy_settings[2] = this.prefs.getIntPref("extensions.torbutton.socks_port"); + } + /* Regarding the test below: + * + * custom_proxy_type == "direct" is indicative of the user having selected "submit certs even if + * Tor is not available", rather than true custom Tor proxy settings. So in that case, there's + * not much point probing to see if the direct proxy is actually a Tor connection, and + * localhost:9050 is a better bet. People whose networks send all traffc through Tor can just + * tell the Observatory to submit certs without Tor. + */ + } else if (this.myGetBoolPref("use_custom_proxy") && !(testingForTor && custom_proxy_type == "direct")) { + this.log(INFO,"CASE: use_custom_proxy"); + proxy_settings[0] = custom_proxy_type; + proxy_settings[1] = this.prefs.getCharPref("extensions.https_everywhere._observatory.proxy_host"); + proxy_settings[2] = this.prefs.getIntPref("extensions.https_everywhere._observatory.proxy_port"); + } else { + /* Take a guess at default tor proxy settings */ + this.log(INFO,"CASE: try localhost:9050"); + proxy_settings[0] = "socks"; + proxy_settings[1] = "localhost"; + proxy_settings[2] = 9050; + } + this.log(INFO, "Using proxy: " + proxy_settings); + return proxy_settings; + }, + + applyFilter: function(aProxyService, inURI, aProxy) { + + try { + if (inURI instanceof Ci.nsIURI) { + var aURI = inURI.QueryInterface(Ci.nsIURI); + if (!aURI) this.log(WARN, "Failed to QI to nsIURI!"); + } else { + this.log(WARN, "applyFilter called without URI"); + } + } catch (e) { + this.log(WARN, "EXPLOSION: " + e); + } + + var isSubmission = this.submission_regexp.test(aURI.spec); + var testingForTor = this.cto_regexp.test(aURI.spec); + + if (isSubmission || testingForTor) { + if (aURI.path.search(this.csrf_nonce+"$") != -1) { + + this.log(INFO, "Got observatory url + nonce: "+aURI.spec); + var proxy_settings = null; + var proxy = null; + + // Send it through tor by creating an nsIProxy instance + // for the torbutton proxy settings. + try { + proxy_settings = this.getProxySettings(testingForTor); + proxy = this.pps.newProxyInfo(proxy_settings[0], proxy_settings[1], + proxy_settings[2], + Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST, + 0xFFFFFFFF, null); + } catch(e) { + this.log(WARN, "Error specifying proxy for observatory: "+e); + } + + this.log(INFO, "Specifying proxy: "+proxy); + + // TODO: Use new identity or socks u/p to ensure we get a unique + // tor circuit for this request + return proxy; + } + } + return aProxy; + }, + + // [optional] an array of categories to register this component in. + // Hack to cause us to get instantiate early + _xpcom_categories: [ { category: "profile-after-change" }, ], + + encString: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + encStringS: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', + + log: function(level, str) { + var econsole = CC["@mozilla.org/consoleservice;1"] + .getService(CI.nsIConsoleService); + try { + var threshold = this.prefs.getIntPref(LLVAR); + } catch (e) { + econsole.logStringMessage( "SSL Observatory: Failed to read about:config LogLevel"); + threshold = WARN; + } + if (level >= threshold) { + dump("SSL Observatory: "+str+"\n"); + econsole.logStringMessage("SSL Observatory: " +str); + } + } +}; + +/** +* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). +* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6). +*/ +if (XPCOMUtils.generateNSGetFactory) + var NSGetFactory = XPCOMUtils.generateNSGetFactory([SSLObservatory]); +else + var NSGetModule = XPCOMUtils.generateNSGetModule([SSLObservatory]); diff --git a/data/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js b/data/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js new file mode 100644 index 0000000..205bf8d --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/defaults/preferences/preferences.js @@ -0,0 +1,45 @@ +pref("extensions.https_everywhere.LogLevel", 5); +pref("extensions.https_everywhere.globalEnabled",true); + +// this is the HTTPS Everywhere preferences version (for migrations) +pref("extensions.https_everywhere.prefs_version", 0); + +// this is a popup asking whether the user really meant to be on the dev branch +pref("extensions.https_everywhere.dev_popup_shown", false); + +// show ruleset tests in the menu +pref("extensions.https_everywhere.show_ruleset_tests", false); +// run a ruleset performance test at startup +pref("extensions.https_everywhere.performance_tests", false); + +// enable rulesets that trigger mixed content blocking +pref("extensions.https_everywhere.enable_mixed_rulesets", false); + + +// SSl Observatory preferences +pref("extensions.https_everywhere._observatory.enabled",false); + +// "testing" currently means send unecessary fingerprints and other test-suite +// type stuff +pref("extensions.https_everywhere._observatory.testing",false); + +pref("extensions.https_everywhere._observatory.server_host","observatory.eff.org"); +pref("extensions.https_everywhere._observatory.use_tor_proxy",true); +pref("extensions.https_everywhere._observatory.submit_during_tor",true); +pref("extensions.https_everywhere._observatory.submit_during_nontor",true); + +pref("extensions.https_everywhere._observatory.cache_submitted",true); + +pref("extensions.https_everywhere._observatory.use_custom_proxy",false); +pref("extensions.https_everywhere._observatory.popup_shown",true); +pref("extensions.https_everywhere.toolbar_hint_shown",true); +pref("extensions.https_everywhere._observatory.proxy_host",""); +pref("extensions.https_everywhere._observatory.proxy_port",0); +pref("extensions.https_everywhere._observatory.proxy_type","direct"); +pref("extensions.https_everywhere._observatory.use_tor_proxy",true); +pref("extensions.https_everywhere._observatory.alt_roots",false); +pref("extensions.https_everywhere._observatory.self_signed",true); +pref("extensions.https_everywhere._observatory.priv_dns",false); +pref("extensions.https_everywhere._observatory.send_asn",true); +pref("extensions.https_everywhere._observatory.use_whitelist",true); +pref("extensions.https_everywhere._observatory.clean_config",false); diff --git a/data/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite b/data/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite Binary files differnew file mode 100644 index 0000000..6141547 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/defaults/rulesets.sqlite diff --git a/data/extensions/https-everywhere@eff.org/install.rdf b/data/extensions/https-everywhere@eff.org/install.rdf new file mode 100644 index 0000000..ddb6e14 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/install.rdf @@ -0,0 +1,51 @@ +<?xml version="1.0"?> +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:em="http://www.mozilla.org/2004/em-rdf#"> + + <Description about="urn:mozilla:install-manifest"> + <em:name>HTTPS-Everywhere</em:name> + <em:creator>Mike Perry & Peter Eckersley</em:creator> + <em:aboutURL>chrome://https-everywhere/content/about.xul</em:aboutURL> + <em:id>https-everywhere@eff.org</em:id> + <em:description>Encrypt the Web! Automatically use HTTPS security on many sites.</em:description> + <em:version>3.5.1</em:version> + <em:homepageURL>https://www.eff.org/https-everywhere</em:homepageURL> + <em:optionsURL>chrome://https-everywhere/content/meta-preferences.xul</em:optionsURL> + <em:iconURL>chrome://https-everywhere/skin/https-everywhere.png</em:iconURL> + <em:updateURL>https://www.eff.org/files/https-everywhere-update-2048.rdf</em:updateURL> + <em:unpack>true</em:unpack> <!-- Required for Firefox 4 --> + <em:updateKey>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6MR8W/galdxnpGqBsYbqOzQb2eyW15YFjDDEMI0ZOzt8f504obNs920lDnpPD2/KqgsfjOgw2K7xWDJIj/18xUvWPk3LDkrnokNiRkA3KOx3W6fHycKL+zID7zy+xZYBuh2fLyQtWV1VGQ45iNRp9+Zo7rH86cdfgkdnWTlNSHyTLW9NbXvyv/E12bppPcEvgCTAQXgnDVJ0/sqmeiijn9tTFh03aM+R2V/21h8aTraAS24qiPCz6gkmYGC8yr6mglcnNoYbsLNYZ69zF1XHcXPduCPdPdfLlzVlKK1/U7hkA28eG3BIAMh6uJYBRJTpiGgaGdPd7YekUB8S6cy+CQIDAQAB</em:updateKey> + <!-- firefox --> + <em:targetApplication> + <Description> + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> + <em:minVersion>20</em:minVersion> + <em:maxVersion>32.*</em:maxVersion> + </Description> + </em:targetApplication> + <!-- Seamonkey --> + <em:targetApplication> + <Description> + <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> + <em:minVersion>2.17</em:minVersion> + <em:maxVersion>3.*</em:maxVersion> + </Description> + </em:targetApplication> + <!-- thunderbird --> + <em:targetApplication> + <Description> + <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> + <em:minVersion>17.0.5</em:minVersion> + <em:maxVersion>32</em:maxVersion> + </Description> + </em:targetApplication> + <!-- Conkeror --> + <em:targetApplication> + <Description> + <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id> + <em:minVersion>0.1</em:minVersion> + <em:maxVersion>99.*</em:maxVersion> + </Description> + </em:targetApplication> + </Description> +</RDF> |