mirror of
https://github.com/PurpleI2P/i2pdbrowser.git
synced 2024-12-06 19:16:29 +01:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e57722acf6 | |||
| af9bae374c | |||
| 7b9e5e03fd | |||
| e813faef70 | |||
| 4ac93b47f4 | |||
| 2cc0cfddfa | |||
| a67e602620 | |||
| 64e96852ae | |||
| 9188271b06 | |||
| 4eac450fc3 |
@@ -0,0 +1 @@
|
||||
.DS_Store
|
||||
@@ -15,3 +15,6 @@ Since 1.2.6 pre-built version for Windows is excluded from repository, but relea
|
||||
### TODO:
|
||||
* English version of Windows how-to for using it.
|
||||
* Russian translation of README, both this one and the one for /windows
|
||||
|
||||
### Release signing
|
||||
Release hashsums signed with key [66f6c87b98ebcfe2](http://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0x66F6C87B98EBCFE2)
|
||||
|
||||
+3
-3
@@ -1,3 +1,3 @@
|
||||
./app
|
||||
./data
|
||||
./firefox-portable
|
||||
/app
|
||||
/data
|
||||
/firefox-portable
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
pub 4096R/98EBCFE2 2016-12-14
|
||||
uid R4SAS (r4sas) <r4sas@i2pmail.org>
|
||||
sub 4096R/9206EEF0 2016-12-14
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
=BDxP
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -1,27 +0,0 @@
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
9323039ddd7ef3f504642bde8a1fab8bcd733539c5454a0f7d65293e0feaebf5296ca96b73f38bdddf0828e9969c36ffec9c29cefd1c63d42a6a6b577df4be4d build/build
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a i2pd/i2pd.conf
|
||||
3696afd04f6d0f33070374575d06d14cc8543590057df3c79ba292edb31412ecb3534ef189913c9ed579639ebe8013f65d1c35fe05cdafb1603bcd6b48e8fcb8 i2pd/i2pd-i386
|
||||
49e26ab09e610776f8b98035042c7bfd79c3f952859745eb34c6edb9fed487a457ce0e3b6cb5b64e3eb447e0325a69630fc3c2dfe240f049639c817d13c8abd0 i2pd/i2pd
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
cbf0eff7dacb01301be1813dd2927044e7e8cdcafff78c6b1f4e1866424fea8402ad7f5f0499e2566bb1008c061d57b1c4ae4460fc4b1481b8811a3d9b7e537c i2pd/i2pd-amd64
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 i2pd/tunnels.conf
|
||||
@@ -1,47 +0,0 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
9323039ddd7ef3f504642bde8a1fab8bcd733539c5454a0f7d65293e0feaebf5296ca96b73f38bdddf0828e9969c36ffec9c29cefd1c63d42a6a6b577df4be4d build/build
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a i2pd/i2pd.conf
|
||||
3696afd04f6d0f33070374575d06d14cc8543590057df3c79ba292edb31412ecb3534ef189913c9ed579639ebe8013f65d1c35fe05cdafb1603bcd6b48e8fcb8 i2pd/i2pd-i386
|
||||
49e26ab09e610776f8b98035042c7bfd79c3f952859745eb34c6edb9fed487a457ce0e3b6cb5b64e3eb447e0325a69630fc3c2dfe240f049639c817d13c8abd0 i2pd/i2pd
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
cbf0eff7dacb01301be1813dd2927044e7e8cdcafff78c6b1f4e1866424fea8402ad7f5f0499e2566bb1008c061d57b1c4ae4460fc4b1481b8811a3d9b7e537c i2pd/i2pd-amd64
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 i2pd/tunnels.conf
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1
|
||||
|
||||
iQIcBAEBCgAGBQJbN2D0AAoJEGb2yHuY68/i/HYQAJhBJ6cO6BT8qXVIgNv1U3Gt
|
||||
s82uujIZnx+oOkegQX+hTJPANFV50kheJaEJAMiiDpv+Wujb//Wk61wLvwSjOFIN
|
||||
fi+7/P1hlU3AukNMHMYmCo3SV3gA0KW6aiGcxvalV4o8/irCNAS5VtqPOTMZOxNx
|
||||
6JzyPtOZm9HMPa5khK2aefv0KGndzZEpNffOwEWFEn9DGezgecnH5pTk/nvpB+cp
|
||||
Uq3Bm2ji+f3IBV+2P9DuYlQ/C+M1iRJLI0dJ6hQDwwBsyN561qPx+3sgGimTPRSZ
|
||||
6V99PCrPeSS9myOB2Ol8Crfnmi1MX2n5KxINQHqDarnep2o7T/8Rz/zsMlVHXe+x
|
||||
w+KFZ/JJD/XIKwXw7Gl0F0lr9/27ourauoDGET0641ct0JLp+ZYBmxEwdX84rB+Y
|
||||
oSEHUvAcAV7h0IMSktxyzGTI/7/4Qpc0ip2fXwxY5B4K3GJXn9LudWh6ErF94mr5
|
||||
T8RwCIStik5xnRqidpmCfqUZX0UXb1EUy1BkpZIuSKFthVHZaquf48S8D80mq0q0
|
||||
Xlo+1hV+zqRkNWEx4HifOYeBUwPlWpQraHLf1E8p6v6PFxk9Bzl20fd/qgY3MreO
|
||||
mqf7N+mseQsb15nuPTaibtiolJ00Te/s3jeA2ieUz9jnqCO18HhQjg/f297Ce/9o
|
||||
jiTFUVmJMZD6Bs8SrJZ/
|
||||
=t9j2
|
||||
-----END PGP SIGNATURE-----
|
||||
+14
-6
@@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
#
|
||||
# Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
# This file is part of Purple I2P project and licensed under BSD3
|
||||
#
|
||||
# See full license text in LICENSE file at top of project tree
|
||||
|
||||
dir=${0%/*}
|
||||
@@ -14,7 +12,7 @@ cd $dir
|
||||
|
||||
arch=$(uname -m)
|
||||
language=$(echo $LANG | cut -c-5 | sed s/_/-/g)
|
||||
version="60.1.0esr"
|
||||
version="60.7.1esr"
|
||||
application="firefox"
|
||||
ftpmirror="https://ftp.mozilla.org/pub/$application/releases/$version"
|
||||
|
||||
@@ -75,10 +73,20 @@ mkdir ../data
|
||||
|
||||
# Deleting some not needed files
|
||||
rm ../app/crashreporter*
|
||||
rm ../app/minidump-analyzer
|
||||
rm ../app/pingsender
|
||||
rm ../app/precomplete
|
||||
rm ../app/removed-files
|
||||
rm ../app/run-mozilla.sh
|
||||
rm ../app/update*
|
||||
rm ../app/browser/blocklist.xml
|
||||
rm ../app/browser/crashreporter-override.ini
|
||||
rm ../app/browser/features/aushelper@mozilla.org.xpi
|
||||
rm ../app/browser/features/firefox@getpocket.com.xpi
|
||||
rm ../app/browser/features/followonsearch@mozilla.com.xpi
|
||||
rm ../app/browser/features/formautofill@mozilla.org.xpi
|
||||
rm ../app/browser/features/jaws-esr@mozilla.org.xpi
|
||||
rm ../app/browser/features/onboarding@mozilla.org.xpi
|
||||
rm ../app/browser/features/screenshots@mozilla.org.xpi
|
||||
rm -r ../app/dictionaries
|
||||
# And edit some places
|
||||
sed -i 's/Enabled=1/Enabled=0/g' ../app/application.ini
|
||||
@@ -92,7 +100,7 @@ curl -L -f -# -o ../app/browser/extensions/langpack-ru@firefox.mozilla.org.xpi h
|
||||
curl -L -f -# -o ../app/browser/extensions/langpack-en-US@firefox.mozilla.org.xpi https://addons.mozilla.org/firefox/downloads/file/978493/english_us_language_pack-60.0buildid20180605171542-an+fx.xpi
|
||||
|
||||
echo "Downloading NoScript extension..."
|
||||
curl -L -f -# -o ../app/browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi https://addons.mozilla.org/firefox/downloads/file/972162/noscript_security_suite-10.1.8.2-an+fx.xpi
|
||||
curl -L -f -# -o ../app/browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi https://addons.mozilla.org/firefox/downloads/file/3028550/noscript_security_suite-10.6.3-an+fx.xpi
|
||||
|
||||
echo "Adding standard configs..."
|
||||
cp profile/* ../data/
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[XRE]
|
||||
EnableProfileMigrator=0
|
||||
@@ -0,0 +1 @@
|
||||
resource cck2 modules/
|
||||
@@ -0,0 +1,154 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gForceExternalHandler = false;
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "extProtocolSvc",
|
||||
"@mozilla.org/uriloader/external-protocol-service;1", "nsIExternalProtocolService");
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
doc.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
event.target.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
// If the parent document is a local file, don't do anything
|
||||
// Links will just work
|
||||
if (doc.location.href.indexOf("file://") == 0) {
|
||||
return;
|
||||
}
|
||||
var links = event.target.getElementsByTagName("a");
|
||||
for (var i=0; i < links.length; i++) {
|
||||
var link = links[i];
|
||||
if (link.href.indexOf("file://") != 0) {
|
||||
continue;
|
||||
}
|
||||
link.addEventListener("click", function(link) {
|
||||
return function(event) {
|
||||
event.preventDefault();
|
||||
if (gForceExternalHandler) {
|
||||
extProtocolSvc.loadUrl(Services.io.newURI(link.href, null, null));
|
||||
} else {
|
||||
var target = "_self";
|
||||
if (link.hasAttribute("target")) {
|
||||
target = link.getAttribute("target");
|
||||
}
|
||||
// If we were told somewhere other than current (based on modifier keys), use it
|
||||
var where = whereToOpenLink(event);
|
||||
if (where != "current" || target == "_blank") {
|
||||
sendAsyncMessage("cck2:open-url", {
|
||||
"url": link.href,
|
||||
"where": (target == "_blank") ? "tab" : where
|
||||
});
|
||||
return;
|
||||
}
|
||||
switch (target) {
|
||||
case "_self":
|
||||
link.ownerDocument.location = link.href;
|
||||
break;
|
||||
case "_parent":
|
||||
link.ownerDocument.defaultView.parent.document.location = link.href;
|
||||
break;
|
||||
case "_top":
|
||||
link.ownerDocument.defaultView.top.document.location = link.href;
|
||||
break;
|
||||
default:
|
||||
// Attempt to find the iframe that this goes into
|
||||
var iframes = doc.defaultView.parent.document.getElementsByName(target);
|
||||
if (iframes.length > 0) {
|
||||
iframes[0].contentDocument.location = link.href;
|
||||
} else {
|
||||
link.ownerDocument.location = link.href;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}(link), false);
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.checkloaduri.enabled") == "allAccess") {
|
||||
gForceExternalHandler = !extProtocolSvc.isExposedProtocol('file');
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
|
||||
/* Copied from http://mxr.mozilla.org/mozilla-central/source/browser/base/content/utilityOverlay.js?raw=1 */
|
||||
|
||||
function getBoolPref(prefname, def)
|
||||
{
|
||||
try {
|
||||
return Services.prefs.getBoolPref(prefname);
|
||||
}
|
||||
catch(er) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/* whereToOpenLink() looks at an event to decide where to open a link.
|
||||
*
|
||||
* The event may be a mouse event (click, double-click, middle-click) or keypress event (enter).
|
||||
*
|
||||
* On Windows, the modifiers are:
|
||||
* Ctrl new tab, selected
|
||||
* Shift new window
|
||||
* Ctrl+Shift new tab, in background
|
||||
* Alt save
|
||||
*
|
||||
* Middle-clicking is the same as Ctrl+clicking (it opens a new tab).
|
||||
*
|
||||
* Exceptions:
|
||||
* - Alt is ignored for menu items selected using the keyboard so you don't accidentally save stuff.
|
||||
* (Currently, the Alt isn't sent here at all for menu items, but that will change in bug 126189.)
|
||||
* - Alt is hard to use in context menus, because pressing Alt closes the menu.
|
||||
* - Alt can't be used on the bookmarks toolbar because Alt is used for "treat this as something draggable".
|
||||
* - The button is ignored for the middle-click-paste-URL feature, since it's always a middle-click.
|
||||
*/
|
||||
function whereToOpenLink( e, ignoreButton, ignoreAlt )
|
||||
{
|
||||
Components.utils.import("resource://gre/modules/AppConstants.jsm");
|
||||
|
||||
// This method must treat a null event like a left click without modifier keys (i.e.
|
||||
// e = { shiftKey:false, ctrlKey:false, metaKey:false, altKey:false, button:0 })
|
||||
// for compatibility purposes.
|
||||
if (!e)
|
||||
return "current";
|
||||
|
||||
var shift = e.shiftKey;
|
||||
var ctrl = e.ctrlKey;
|
||||
var meta = e.metaKey;
|
||||
var alt = e.altKey && !ignoreAlt;
|
||||
|
||||
// ignoreButton allows "middle-click paste" to use function without always opening in a new window.
|
||||
var middle = !ignoreButton && e.button == 1;
|
||||
var middleUsesTabs = true;
|
||||
|
||||
// Don't do anything special with right-mouse clicks. They're probably clicks on context menu items.
|
||||
|
||||
var metaKey = AppConstants.platform == "macosx" ? meta : ctrl;
|
||||
if (metaKey || (middle && middleUsesTabs))
|
||||
return shift ? "tabshifted" : "tab";
|
||||
|
||||
if (alt && getBoolPref("browser.altClickSave", false))
|
||||
return "save";
|
||||
|
||||
if (shift || (middle && !middleUsesTabs))
|
||||
return "window";
|
||||
|
||||
return "current";
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gAllowedPasteSites = [];
|
||||
var gAllowedCutCopySites = [];
|
||||
var gDeniedPasteSites = [];
|
||||
var gDeniedCutCopySites = [];
|
||||
var gDefaultPastePolicy = false;
|
||||
var gDefaultCutCopyPolicy = false;
|
||||
|
||||
function allowCutCopy(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultCutCopyPolicy == true) {
|
||||
for (var i=0; i < gDeniedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedCutCopySites[i]) == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedCutCopySites[i]) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function allowPaste(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultPastePolicy == true) {
|
||||
for (var i=0; i < gDeniedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedPasteSites[i]) == 0) {
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedPasteSites[i]) == 0) {
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function myExecCommand(doc, originalExecCommand) {
|
||||
return function(aCommandName, aShowDefaultUI, aValueArgument) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalExecCommand.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
function myQueryCommandSupported(doc, originalQueryCommandSupported) {
|
||||
return function(aCommandName) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalQueryCommandSupported.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
var cutCopyAllowed = allowCutCopy(doc);
|
||||
var pasteAllowed = allowPaste(doc);
|
||||
if (!cutCopyAllowed && !pasteAllowed) {
|
||||
return;
|
||||
}
|
||||
var originalExecCommand = Cu.waiveXrays(doc).execCommand;
|
||||
Cu.exportFunction(myExecCommand(doc, originalExecCommand), doc, {defineAs: "execCommand"});
|
||||
var originalQueryCommandSupported = Cu.waiveXrays(doc).queryCommandSupported;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandSupported), doc, {defineAs: "queryCommandSupported"});
|
||||
var originalQueryCommandEnabled = Cu.waiveXrays(doc).queryCommandEnabled;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandEnabled), doc, {defineAs: "queryCommandEnabled"});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.cutcopy") == "allAccess") {
|
||||
gDefaultCutCopyPolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.paste") == "allAccess") {
|
||||
gDefaultPastePolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
var policies = [];
|
||||
policies = Services.prefs.getCharPref("capability.policy.policynames").split(', ');
|
||||
for (var i=0; i < policies.length; i++ ) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "allAccess") {
|
||||
var allowedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedCutCopySites.length; j++) {
|
||||
gAllowedCutCopySites.push(allowedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "noAccess") {
|
||||
var deniedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedCutCopySites.length; j++) {
|
||||
gDeniedCutCopySites.push(deniedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "allAccess") {
|
||||
var allowedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedPasteSites.length; j++) {
|
||||
gAllowedPasteSites.push(allowedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "noAccess") {
|
||||
var deniedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedPasteSites.length; j++) {
|
||||
gDeniedPasteSites.push(deniedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
} catch (e) {}
|
||||
if (gDefaultCutCopyPolicy || gDefaultPastePolicy ||
|
||||
gAllowedCutCopySites.length > 0 || gAllowedPasteSites> 0) {
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,111 @@
|
||||
/* This file overlays about:addons. It does the following: */
|
||||
/* Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1132971 */
|
||||
/* Hide the "Install Add-on From File" menu if xpinstall.enabled is false */
|
||||
/* Hides the discover pane if xpinstall.enabled is false */
|
||||
/* Hides the add-on entry if specified in the CCK2 config */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var addonId = "cck2wizard@kaply.com";
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:addons":
|
||||
case "chrome://mozapps/content/extensions/extensions.xul":
|
||||
var configs = CCK2.getConfigs();
|
||||
var hiddenAddons = [];
|
||||
var requiredAddons = [];
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config && "extension" in config && config.extension.hide) {
|
||||
hiddenAddons.push(config.extension.id);
|
||||
}
|
||||
if (config.requiredAddons) {
|
||||
requiredAddons.push.apply(requiredAddons, config.requiredAddons.split(","));
|
||||
}
|
||||
}
|
||||
if (hiddenAddons.length > 0 || requiredAddons.length > 0) {
|
||||
var ss;
|
||||
for (var i = 0; i < doc.styleSheets.length; i++) {
|
||||
if (doc.styleSheets[i].href == "chrome://mozapps/skin/extensions/extensions.css") {
|
||||
ss = doc.styleSheets[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (var i=0; i < hiddenAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + hiddenAddons[i] + "'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
for (var i=0; i < requiredAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='disable-btn'] { display: none;}", ss.cssRules.length);
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='remove-btn'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
if (requiredAddons.length > 0) {
|
||||
win.gViewController.commands.cmd_disableItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_disableItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
win.gViewController.commands.cmd_uninstallItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_uninstallItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
}
|
||||
}
|
||||
var showDiscoverPane = true;
|
||||
var xpinstallEnabled = true;
|
||||
try {
|
||||
xpinstallEnabled = Services.prefs.getBoolPref("xpinstall.enabled");
|
||||
} catch (e) {}
|
||||
try {
|
||||
showDiscoverPane = Services.prefs.getBoolPref("extensions.getAddons.showPane");
|
||||
} catch (e) {}
|
||||
if (!xpinstallEnabled || !showDiscoverPane) {
|
||||
// Work around Mozilla bug 1132971
|
||||
// Hide the discover pane if it is the selected pane
|
||||
if (E("view-port", doc) && E("view-port", doc).selectedIndex == 0) {
|
||||
try {
|
||||
win.gViewController.loadView("addons://list/extension");
|
||||
} catch (ex) {
|
||||
// This fails with Webconverger installed. Ignore it.
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!xpinstallEnabled) {
|
||||
// Hide the "Install Add-on From File" separator
|
||||
hide(E("utils-installFromFile-separator", doc));
|
||||
// Hide the "Install Add-on From File" menuitem
|
||||
hide(E("utils-installFromFile", doc));
|
||||
win.gDragDrop.onDragOver = function(event) {
|
||||
event.dataTransfer.dropEffect = "none";
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
};
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/* This file is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1139509 */
|
||||
/* It bolds the Firefox version in the about dialog and unbolds the distribution information */
|
||||
/* It can be removed once Firefox 38 ESR is out of support */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/aboutDialog.xul":
|
||||
doc.querySelector("#version").style.fontWeight = "bold";
|
||||
doc.querySelector("#distribution").style.fontWeight = "normal";
|
||||
doc.querySelector("#distributionId").style.fontWeight = "normal";
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
@@ -0,0 +1,79 @@
|
||||
/* This file overrides about:home. It does the following:
|
||||
* Remove the sync button if Sync is disabled
|
||||
* Remove the Addons button if Sync is disabled
|
||||
* Remove the snippets if snippets are disabled
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "content-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:home":
|
||||
case "chrome://browser/content/abouthome/aboutHome.xhtml":
|
||||
if (!configs) {
|
||||
// TODO - Make this Async
|
||||
configs = sendSyncMessage("cck2:get-configs")[0];
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
remove(E("sync", doc));
|
||||
}
|
||||
if (config.disableAddonsManager) {
|
||||
remove(E("addons", doc));
|
||||
}
|
||||
if (config.disableWebApps) {
|
||||
remove(E("apps", doc));
|
||||
}
|
||||
if (config.removeSnippets) {
|
||||
var snippets = E("snippets", doc);
|
||||
if (snippets) {
|
||||
snippets.style.display = "none";
|
||||
}
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
var uiElements = doc.querySelectorAll(config.hiddenUI[i]);
|
||||
for (var j=0; j < uiElements.length; j++) {
|
||||
var uiElement = uiElements[j];
|
||||
uiElement.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "content-document-global-created", false);
|
||||
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(observer, "content-document-global-created", false);
|
||||
})
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* This file overrides about:support It does the following:
|
||||
* Remove the reset Firefox button if disableResetFirefox is set
|
||||
* Remove the safe mode Button if disableSafeMode is set
|
||||
* Remove the box if both are set
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:support":
|
||||
case "chrome://global/content/aboutSupport.xhtml":
|
||||
if (!configs) {
|
||||
configs = CCK2.getConfigs();
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableResetFirefox) {
|
||||
remove(E("reset-box", doc));
|
||||
}
|
||||
if (config.disableSafeMode) {
|
||||
remove(E("safe-mode-box", doc));
|
||||
}
|
||||
if (config.disableResetFirefox &&
|
||||
config.disableSafeMode) {
|
||||
remove(E("action-box", doc));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
@@ -0,0 +1,373 @@
|
||||
/* This file modifies the main browser window. It does the following:
|
||||
* Goes through the hiddenUI list and hides any UI
|
||||
*
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource:///modules/CustomizableUI.jsm");
|
||||
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/browser.xul":
|
||||
// Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1149617
|
||||
var origSetReportPhishingMenu = win.gSafeBrowsing.setReportPhishingMenu;
|
||||
win.gSafeBrowsing.setReportPhishingMenu = function() {
|
||||
try {
|
||||
origSetReportPhishingMenu();
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
win.addEventListener("unload", function onUnload(event) {
|
||||
win.removeEventListener("unload", onUnload, false);
|
||||
var panelUIPopup = doc.getElementById("PanelUI-popup");
|
||||
if (panelUIPopup) {
|
||||
E("PanelUI-popup", doc).removeEventListener("popupshowing", onPanelShowing, false);
|
||||
}
|
||||
});
|
||||
var panelUIPopup = doc.getElementById("PanelUI-popup");
|
||||
if (panelUIPopup) {
|
||||
E("PanelUI-popup", doc).addEventListener("popupshowing", onPanelShowing, false);
|
||||
}
|
||||
var appMenuPopup = doc.getElementById("appMenu-popup");
|
||||
if (appMenuPopup) {
|
||||
E("appMenu-popup", doc).addEventListener("popupshowing", onAppMenuShowing, false);
|
||||
}
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
config = configs[id];
|
||||
if (config.disablePrivateBrowsing &&
|
||||
PrivateBrowsingUtils.isWindowPrivate(win)) {
|
||||
win.setTimeout(function() {
|
||||
Services.prompt.alert(win, "Private Browsing", "Private Browsing has been disabled by your administrator");
|
||||
win.close();
|
||||
}, 0, false);
|
||||
}
|
||||
if (config.disablePrivateBrowsing) {
|
||||
disablePrivateBrowsing(doc);
|
||||
}
|
||||
if (config.disableSync) {
|
||||
disableSync(doc);
|
||||
}
|
||||
if (config.disableAddonsManager) {
|
||||
disableAddonsManager(doc);
|
||||
}
|
||||
if (config.removeDeveloperTools) {
|
||||
Services.tm.mainThread.dispatch(function() {
|
||||
removeDeveloperTools(doc);
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
if (config.disableErrorConsole) {
|
||||
disableErrorConsole(doc);
|
||||
}
|
||||
if (config.disableFirefoxHealthReport) {
|
||||
var healthReportMenu = doc.getElementById("healthReport");
|
||||
if (healthReportMenu) {
|
||||
healthReportMenu.parentNode.removeChild(healthReportMenu);
|
||||
}
|
||||
}
|
||||
if (config.removeSafeModeMenu) {
|
||||
hide(E("helpSafeMode", doc));
|
||||
}
|
||||
if (config.titlemodifier) {
|
||||
doc.getElementById("main-window").setAttribute("titlemodifier", config.titlemodifier);
|
||||
}
|
||||
if (config.removeSetDesktopBackground) {
|
||||
// Because this is on a context menu, we can't use "hidden"
|
||||
if (E("context-setDesktopBackground", doc)) {
|
||||
E("context-setDesktopBackground", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.disableWebApps) {
|
||||
CustomizableUI.destroyWidget("web-apps-button");
|
||||
hide(E("menu_openApps", doc));
|
||||
}
|
||||
if (config.disableHello) {
|
||||
CustomizableUI.destroyWidget("loop-button");
|
||||
hide(E("menu_openLoop", doc));
|
||||
}
|
||||
if (config.disablePocket) {
|
||||
CustomizableUI.destroyWidget("pocket-button");
|
||||
}
|
||||
if (config.disableSharePage) {
|
||||
CustomizableUI.destroyWidget("social-share-button");
|
||||
// Because these are on a context menu, we can't use "hidden"
|
||||
if (E("context-sharelink", doc)) {
|
||||
E("context-sharelink", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-shareselect", doc)) {
|
||||
E("context-shareselect", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-shareimage", doc)) {
|
||||
E("context-shareimage", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-sharevideo", doc)) {
|
||||
E("context-sharevideo", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-sharepage", doc)) {
|
||||
E("context-sharepage", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.disableSocialAPI) {
|
||||
win.SocialActivationListener = {};
|
||||
}
|
||||
if (config.disableForget) {
|
||||
CustomizableUI.destroyWidget("panic-button");
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
hideUIElements(doc, config.hiddenUI);
|
||||
}
|
||||
if (config.helpMenu) {
|
||||
// We need to run this function on a delay, because we won't know
|
||||
// if the about menu is hidden for mac until after it is run.
|
||||
Services.tm.mainThread.dispatch(function() {
|
||||
var helpMenuPopup = doc.getElementById("menu_HelpPopup");
|
||||
var menuitem = doc.createElement("menuitem");
|
||||
menuitem.setAttribute("label", config.helpMenu.label);
|
||||
if ("accesskey" in config.helpMenu) {
|
||||
menuitem.setAttribute("accesskey", config.helpMenu.accesskey);
|
||||
}
|
||||
menuitem.setAttribute("oncommand", "openUILink('" + config.helpMenu.url + "');");
|
||||
menuitem.setAttribute("onclick", "checkForMiddleClick(this, event);");
|
||||
if (!E("aboutName", doc) || E("aboutName", doc).hidden) {
|
||||
// Mac
|
||||
helpMenuPopup.appendChild(menuitem);
|
||||
} else {
|
||||
helpMenuPopup.insertBefore(menuitem, E("aboutName", doc));
|
||||
helpMenuPopup.insertBefore(doc.createElement("menuseparator"),
|
||||
E("aboutName", doc));
|
||||
}
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
if (config.firstrun || config.upgrade) {
|
||||
if (config.displayBookmarksToolbar || (config.bookmarks && config.bookmarks.toolbar)) {
|
||||
CustomizableUI.setToolbarVisibility("PersonalToolbar", "true");
|
||||
}
|
||||
if (config.displayMenuBar) {
|
||||
CustomizableUI.setToolbarVisibility("toolbar-menubar", "true");
|
||||
}
|
||||
if (config.showSearchBar) {
|
||||
CustomizableUI.addWidgetToArea("search-container", CustomizableUI.AREA_NAVBAR,
|
||||
CustomizableUI.getPlacementOfWidget("urlbar-container").position + 1);
|
||||
}
|
||||
config.firstrun = false;
|
||||
config.upgrade = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "chrome://browser/content/places/places.xul":
|
||||
case "chrome://browser/content/bookmarks/bookmarksPanel.xul":
|
||||
case "chrome://browser/content/history/history-panel.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disablePrivateBrowsing) {
|
||||
if (E("placesContext_open:newprivatewindow", doc)) {
|
||||
E("placesContext_open:newprivatewindow", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
hideUIElements(doc, config.hiddenUI);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function disableSync(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win.gSyncUI) {
|
||||
var mySyncUI = {
|
||||
init: function() {
|
||||
return;
|
||||
},
|
||||
initUI: function() {
|
||||
return;
|
||||
},
|
||||
updateUI: function() {
|
||||
hide(E("sync-setup-state", doc));
|
||||
hide(E("sync-syncnow-state", doc));
|
||||
hide(E("sync-setup", doc));
|
||||
hide(E("sync-syncnowitem", doc));
|
||||
}
|
||||
}
|
||||
win.gSyncUI = mySyncUI;
|
||||
}
|
||||
CustomizableUI.destroyWidget("sync-button");
|
||||
CustomizableUI.removeWidgetFromArea("sync-button");
|
||||
var toolbox = doc.getElementById("navigator-toolbox");
|
||||
if (toolbox && toolbox.palette) {
|
||||
let element = toolbox.palette.querySelector("#sync-button");
|
||||
if (element) {
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
}
|
||||
hide(E("sync-setup-state", doc));
|
||||
hide(E("sync-syncnow-state", doc));
|
||||
hide(E("sync-setup", doc));
|
||||
hide(E("sync-syncnowitem", doc));
|
||||
}
|
||||
|
||||
function disablePrivateBrowsing(doc) {
|
||||
disable(E("Tools:PrivateBrowsing", doc));
|
||||
hide(E("menu_newPrivateWindow", doc));
|
||||
// Because this is on a context menu, we can't use "hidden"
|
||||
if (E("context-openlinkprivate", doc))
|
||||
E("context-openlinkprivate", doc).setAttribute("style", "display: none;");
|
||||
if (E("placesContext_open:newprivatewindow", doc))
|
||||
E("placesContext_open:newprivatewindow", doc).setAttribute("style", "display: none;");
|
||||
CustomizableUI.destroyWidget("privatebrowsing-button")
|
||||
}
|
||||
|
||||
function disableAddonsManager(doc) {
|
||||
hide(E("menu_openAddons", doc));
|
||||
disable(E("Tools:Addons", doc)); // Ctrl+Shift+A
|
||||
CustomizableUI.destroyWidget("add-ons-button")
|
||||
}
|
||||
|
||||
function removeDeveloperTools(doc) {
|
||||
var win = doc.defaultView;
|
||||
// Need to delay this because devtools is created dynamically
|
||||
win.setTimeout(function() {
|
||||
CustomizableUI.destroyWidget("developer-button")
|
||||
hide(E("webDeveloperMenu", doc));
|
||||
var devtoolsKeyset = doc.getElementById("devtoolsKeyset");
|
||||
if (devtoolsKeyset) {
|
||||
for (var i = 0; i < devtoolsKeyset.childNodes.length; i++) {
|
||||
devtoolsKeyset.childNodes[i].removeAttribute("oncommand");
|
||||
devtoolsKeyset.childNodes[i].removeAttribute("command");
|
||||
}
|
||||
}
|
||||
}, 0);
|
||||
try {
|
||||
doc.getElementById("Tools:ResponsiveUI").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:Scratchpad").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:BrowserConsole").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:BrowserToolbox").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevAppsMgr").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbar").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbox").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbarFocus").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
CustomizableUI.destroyWidget("developer-button")
|
||||
}
|
||||
|
||||
function disableErrorConsole(doc) {
|
||||
doc.getElementById("Tools:ErrorConsole").removeAttribute("oncommand");
|
||||
}
|
||||
|
||||
function onPanelShowing(event) {
|
||||
var configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("PanelUI-fxa-status", event.target.ownerDocument));
|
||||
hide(E("PanelUI-footer-fxa", event.target.ownerDocument)); // Firefox 42+
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onAppMenuShowing(event) {
|
||||
var configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("appMenu-fxa-container", event.target.ownerDocument));
|
||||
}
|
||||
if (config.removeDeveloperTools) {
|
||||
hide(E("appMenu-developer-button", event.target.ownerDocument));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function disable(element) {
|
||||
if (element) {
|
||||
element.disabled = true;
|
||||
element.setAttribute("disabled", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function hideUIElements(doc, hiddenUI) {
|
||||
for (var i=0; i < hiddenUI.length; i++) {
|
||||
var uiElements = doc.querySelectorAll(hiddenUI[i]);
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + hiddenUI[i] + "{display: none !important;}";
|
||||
if (!uiElements || uiElements.length == 0) {
|
||||
continue;
|
||||
}
|
||||
for (var j=0; j < uiElements.length; j++) {
|
||||
var uiElement = uiElements[j];
|
||||
if (uiElement.nodeName == "menuitem") {
|
||||
uiElement.removeAttribute("key");
|
||||
uiElement.removeAttribute("oncommand");
|
||||
if (uiElement.hasAttribute("command")) {
|
||||
var commandId = uiElement.getAttribute("command");
|
||||
uiElement.removeAttribute("command");
|
||||
var command = doc.getElementById(commandId);
|
||||
command.removeAttribute("oncommand");
|
||||
var keys = doc.querySelectorAll("key[command='" + commandId + "']")
|
||||
for (var k=0; k < keys.length; k++) {
|
||||
keys[k].removeAttribute("command");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Horrible hack to work around the crappy Australis help menu
|
||||
// Items on the menu always show up in the Australis menu, so we have to remove them.
|
||||
if (uiElements[j].parentNode.id == "menu_HelpPopup") {
|
||||
uiElements[j].parentNode.removeChild(uiElements[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
var EXPORTED_SYMBOLS = [];
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
let CCK2FileBlock = {
|
||||
chromeBlacklist: ["browser", "mozapps", "marionette", "specialpowers",
|
||||
"branding", "alerts"],
|
||||
shouldLoad: function(aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aExtra) {
|
||||
// Prevent the loading of chrome URLs into the main browser window
|
||||
if (aContentLocation.scheme == "chrome") {
|
||||
if (aRequestOrigin &&
|
||||
(aRequestOrigin.spec == "chrome://browser/content/browser.xul" ||
|
||||
aRequestOrigin.scheme == "moz-nullprincipal")) {
|
||||
for (var i=0; i < this.chromeBlacklist.length; i++) {
|
||||
if (aContentLocation.host == this.chromeBlacklist[i]) {
|
||||
if (aContentLocation.spec.includes(".xul")) {
|
||||
return Ci.nsIContentPolicy.REJECT_REQUEST;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Ci.nsIContentPolicy.ACCEPT;
|
||||
},
|
||||
shouldProcess: function(aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aExtra) {
|
||||
return Ci.nsIContentPolicy.ACCEPT;
|
||||
},
|
||||
classDescription: "CCK2 FileBlock Service",
|
||||
contractID: "@kaply.com/cck2-fileblock-service;1",
|
||||
classID: Components.ID('{26e7afc9-e22d-4d12-bb57-c184fe24b828}'),
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy]),
|
||||
createInstance: function(outer, iid) {
|
||||
return this.QueryInterface(iid);
|
||||
},
|
||||
};
|
||||
|
||||
var registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
registrar.registerFactory(CCK2FileBlock.classID,
|
||||
CCK2FileBlock.classDescription,
|
||||
CCK2FileBlock.contractID,
|
||||
CCK2FileBlock);
|
||||
|
||||
var cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
|
||||
cm.addCategoryEntry("content-policy", CCK2FileBlock.contractID,
|
||||
CCK2FileBlock.contractID, false, true);
|
||||
@@ -0,0 +1,51 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var disableSearchEngineInstall = false;
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
doc.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
event.target.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
if (disableSearchEngineInstall) {
|
||||
subject.wrappedJSObject.external.AddSearchProvider = function() {};
|
||||
}
|
||||
if (!doc.documentURI.startsWith("about:")) {
|
||||
return;
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + config.hiddenUI[i] + "{display: none !important;}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var configs = sendSyncMessage("cck2:get-configs")[0];
|
||||
for (var id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSearchEngineInstall) {
|
||||
disableSearchEngineInstall = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
@@ -0,0 +1,123 @@
|
||||
/* This file modifies the preferences dialogs. It does the following:
|
||||
* Removes private browsing from the pref UI if it is disabled
|
||||
* Removes Sync from the pref UI if it is diabled
|
||||
* Disables the crash reporter button if crash reporter is disabled
|
||||
* Removed the master password UI if it is disabled
|
||||
* Goes through the hiddenUI list and hides any UI
|
||||
*
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/preferences/preferences.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
win.addEventListener("paneload", function(event) {
|
||||
updatePrefUI(event.target.ownerDocument);
|
||||
}, false);
|
||||
updatePrefUI(doc);
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (!config.disableSync) {
|
||||
continue;
|
||||
}
|
||||
var prefWindow = E("BrowserPreferences", doc);
|
||||
var paneSyncRadio = doc.getAnonymousElementByAttribute(prefWindow, "pane", "paneSync");
|
||||
hide(paneSyncRadio);
|
||||
var paneDeck = doc.getAnonymousElementByAttribute(prefWindow, "anonid", "paneDeck");
|
||||
var paneSync = E("paneSync", doc);
|
||||
paneSync.removeAttribute("helpTopic");
|
||||
var weavePrefsDeck = E("weavePrefsDeck", doc);
|
||||
if (weavePrefsDeck)
|
||||
weavePrefsDeck.parentNode.removeChild(weavePrefsDeck);
|
||||
if (prefWindow.currentPane == E("paneSync", doc))
|
||||
prefWindow.showPane(E("paneMain", doc));
|
||||
}
|
||||
break;
|
||||
case "about:preferences":
|
||||
case "chrome://browser/content/preferences/in-content/preferences.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("category-sync", doc));
|
||||
}
|
||||
}
|
||||
updatePrefUI(doc);
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
// The IDs are the same, so I can reuse this for regular and in-content prefs
|
||||
function updatePrefUI(doc) {
|
||||
for (var id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disablePrivateBrowsing) {
|
||||
hide(E("privateBrowsingAutoStart", doc));
|
||||
var privateBrowsingMenu = doc.querySelector("menuitem[value='dontremember']");
|
||||
hide(privateBrowsingMenu, doc);
|
||||
}
|
||||
if (config.disableCrashReporter) {
|
||||
disable(E("submitCrashesBox", doc));
|
||||
}
|
||||
if (config.disableSync) {
|
||||
hide(E("noFxaAccount", doc));
|
||||
hide(E("hasFxaAccount", doc));
|
||||
}
|
||||
if (config.noMasterPassword == true) {
|
||||
hide(E("useMasterPassword", doc));
|
||||
hide(E("changeMasterPassword", doc));
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + config.hiddenUI[i] + "{display: none !important;}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function disable(element) {
|
||||
if (element) {
|
||||
element.disabled = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Copied from https://github.com/jvillalobos/CTP-Manager/blob/master/extension/modules/permissions.js
|
||||
**/
|
||||
|
||||
/**
|
||||
* Copyright 2013 Jorge Villalobos
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var EXPORTED_SYMBOLS = ["CTP"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var CTP = {
|
||||
/**
|
||||
* Cleans up the plugin name to a more readable form.
|
||||
* Taken from /browser/base/content/pageinfo/permissions.js (Firefox 20)
|
||||
* @param aPluginName the name to clean up.
|
||||
* @return cleaned up plugin name.
|
||||
*/
|
||||
makeNicePluginName : function(aPluginName) {
|
||||
let newName =
|
||||
aPluginName.replace(/[\s\d\.\-\_\(\)]+$/, "").
|
||||
replace(/\bplug-?in\b/i, "").trim();
|
||||
|
||||
return newName;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the plugin permission string from the tag object. In Firefox 20, this
|
||||
* is the plugin filename. In 21 an above, the file extension is removed and
|
||||
* Flash and Java are special-cased.
|
||||
* @param aTag the tag object with the plugin information.
|
||||
* @return permission string that corresponds to the plugin in the tag.
|
||||
*/
|
||||
getPluginPermissionFromTag : function(aTag) {
|
||||
let permission = null;
|
||||
let majorVersion = Services.appinfo.platformVersion.split(".")[0];
|
||||
|
||||
if (21 <= majorVersion) {
|
||||
let mimeTypes = aTag.getMimeTypes();
|
||||
|
||||
if (CTP.isFlashPlugin(mimeTypes)) {
|
||||
permission = "flash";
|
||||
} else if (CTP.isJavaPlugin(mimeTypes)) {
|
||||
permission = "java";
|
||||
} else {
|
||||
let lastPeriod = aTag.filename.lastIndexOf(".");
|
||||
|
||||
permission =
|
||||
((0 < lastPeriod) ? aTag.filename.substring(0, lastPeriod) :
|
||||
aTag.filename);
|
||||
// Remove digits at the end
|
||||
permission = permission.replace(/[0-9]+$/, "");
|
||||
permission = permission.toLowerCase();
|
||||
}
|
||||
} else {
|
||||
permission = aTag.filename;
|
||||
}
|
||||
|
||||
return permission;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if the tag object corresponds to the Java plugin.
|
||||
* @param aMimeTypes the list of MIME types for the plugin.
|
||||
* @return true if the tag corresponds to the Java plugin.
|
||||
*/
|
||||
isJavaPlugin : function(aMimeTypes) {
|
||||
let isJava = false;
|
||||
let mimeType;
|
||||
|
||||
for (let i = 0; i < aMimeTypes.length; i++) {
|
||||
mimeType =
|
||||
((null != aMimeTypes[i].type) ? aMimeTypes[i].type : aMimeTypes[i]);
|
||||
|
||||
if ((0 == mimeType.indexOf("application/x-java-vm")) ||
|
||||
(0 == mimeType.indexOf("application/x-java-applet")) ||
|
||||
(0 == mimeType.indexOf("application/x-java-bean"))) {
|
||||
isJava = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isJava;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if the tag object corresponds to the Flash plugin.
|
||||
* @param aMimeTypes the list of MIME types for the plugin.
|
||||
* @return true if the tag corresponds to the Flash plugin.
|
||||
*/
|
||||
isFlashPlugin : function(aMimeTypes) {
|
||||
let isFlash = false;
|
||||
let mimeType;
|
||||
|
||||
for (let i = 0; i < aMimeTypes.length; i++) {
|
||||
mimeType =
|
||||
((null != aMimeTypes[i].type) ? aMimeTypes[i].type : aMimeTypes[i]);
|
||||
|
||||
if (0 == mimeType.indexOf("application/x-shockwave-flash")) {
|
||||
isFlash = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isFlash;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,629 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Preferences.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Mozilla.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Myk Melez <myk@mozilla.org>
|
||||
* Daniel Aquino <mr.danielaquino@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
let EXPORTED_SYMBOLS = ["Preferences"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cr = Components.results;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
// The minimum and maximum integers that can be set as preferences.
|
||||
// The range of valid values is narrower than the range of valid JS values
|
||||
// because the native preferences code treats integers as NSPR PRInt32s,
|
||||
// which are 32-bit signed integers on all platforms.
|
||||
const MAX_INT = Math.pow(2, 31) - 1;
|
||||
const MIN_INT = -MAX_INT;
|
||||
|
||||
function Preferences(args) {
|
||||
if (isObject(args)) {
|
||||
if (args.branch)
|
||||
this._prefBranch = args.branch;
|
||||
}
|
||||
else if (args)
|
||||
this._prefBranch = args;
|
||||
this.isDefaultBranch = false;
|
||||
}
|
||||
|
||||
Preferences.prototype = {
|
||||
/**
|
||||
* Get the value of a pref, if any; otherwise return the default value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to get, or an array of prefs to get
|
||||
*
|
||||
* @param defaultValue
|
||||
* the default value, if any, for prefs that don't have one
|
||||
*
|
||||
* @returns the value of the pref, if any; otherwise the default value
|
||||
*/
|
||||
get: function(prefName, defaultValue) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(v => this.get(v, defaultValue));
|
||||
|
||||
return this._get(prefName, defaultValue);
|
||||
},
|
||||
|
||||
// In all cases below, the preference might exist as a user pref, but not
|
||||
// have a default value. In those cases, get* throws. Return the default value.
|
||||
_get: function(prefName, defaultValue) {
|
||||
switch (this._prefSvc.getPrefType(prefName)) {
|
||||
case Ci.nsIPrefBranch.PREF_STRING:
|
||||
try {
|
||||
return this._prefSvc.getComplexValue(prefName, Ci.nsISupportsString).data;
|
||||
} catch (ex) {
|
||||
if (this.isDefaultBranch)
|
||||
return defaultValue;
|
||||
else
|
||||
return this._prefSvc.getCharPref(prefName);
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_INT:
|
||||
try {
|
||||
return this._prefSvc.getIntPref(prefName);
|
||||
} catch (ex) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_BOOL:
|
||||
try {
|
||||
return this._prefSvc.getBoolPref(prefName);
|
||||
} catch (ex) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_INVALID:
|
||||
return defaultValue;
|
||||
|
||||
default:
|
||||
// This should never happen.
|
||||
throw "Error getting pref " + prefName + "; its value's type is " +
|
||||
this._prefSvc.getPrefType(prefName) + ", which I don't know " +
|
||||
"how to handle.";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Set a preference to a value.
|
||||
*
|
||||
* You can set multiple prefs by passing an object as the only parameter.
|
||||
* In that case, this method will treat the properties of the object
|
||||
* as preferences to set, where each property name is the name of a pref
|
||||
* and its corresponding property value is the value of the pref.
|
||||
*
|
||||
* @param prefName {String|Object}
|
||||
* the name of the pref to set; or an object containing a set
|
||||
* of prefs to set
|
||||
*
|
||||
* @param prefValue {String|Number|Boolean}
|
||||
* the value to which to set the pref
|
||||
*
|
||||
* Note: Preferences cannot store non-integer numbers or numbers outside
|
||||
* the signed 32-bit range -(2^31-1) to 2^31-1, If you have such a number,
|
||||
* store it as a string by calling toString() on the number before passing
|
||||
* it to this method, i.e.:
|
||||
* Preferences.set("pi", 3.14159.toString())
|
||||
* Preferences.set("big", Math.pow(2, 31).toString()).
|
||||
*/
|
||||
set: function(prefName, prefValue) {
|
||||
if (isObject(prefName)) {
|
||||
for (let [name, value] in Iterator(prefName))
|
||||
this.set(name, value);
|
||||
return;
|
||||
}
|
||||
|
||||
this._set(prefName, prefValue);
|
||||
},
|
||||
|
||||
_set: function(prefName, prefValue) {
|
||||
let prefType;
|
||||
if (typeof prefValue != "undefined" && prefValue != null)
|
||||
prefType = prefValue.constructor.name;
|
||||
|
||||
var existingPrefType = this._prefSvc.getPrefType(prefName);
|
||||
if (existingPrefType != Ci.nsIPrefBranch.PREF_INVALID)
|
||||
{
|
||||
// convert
|
||||
if (existingPrefType == Ci.nsIPrefBranch.PREF_INT && prefType == "String")
|
||||
{
|
||||
prefValue = parseInt(prefValue);
|
||||
if (isNaN(prefValue))
|
||||
throw "Incompatible pref value type - " + prefName;
|
||||
prefType = "Number";
|
||||
}
|
||||
else if (existingPrefType == Ci.nsIPrefBranch.PREF_BOOL && prefType == "String")
|
||||
{
|
||||
if (prefValue == "true")
|
||||
prefValue = true;
|
||||
else if (prefValue == "false")
|
||||
prefValue = false;
|
||||
else
|
||||
throw "Incompatible pref value type - " + prefName;
|
||||
prefType = "Boolean";
|
||||
}
|
||||
else if (existingPrefType == Ci.nsIPrefBranch.PREF_BOOL && prefType == "Number")
|
||||
{
|
||||
prefValue = prefValue != 0;
|
||||
prefType = "Boolean";
|
||||
}
|
||||
}
|
||||
|
||||
switch (prefType) {
|
||||
case "String":
|
||||
{
|
||||
try {
|
||||
this._prefSvc.setStringPref(prefName, prefValue);
|
||||
} catch (e) {
|
||||
try {
|
||||
let string = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
|
||||
string.data = prefValue;
|
||||
this._prefSvc.setComplexValue(prefName, Ci.nsISupportsString, string);
|
||||
} catch (e2) {
|
||||
Components.utils.reportError(e2);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "Number":
|
||||
// We throw if the number is outside the range, since the result
|
||||
// will never be what the consumer wanted to store, but we only warn
|
||||
// if the number is non-integer, since the consumer might not mind
|
||||
// the loss of precision.
|
||||
if (prefValue > MAX_INT || prefValue < MIN_INT)
|
||||
throw("you cannot set the " + prefName + " pref to the number " +
|
||||
prefValue + ", as number pref values must be in the signed " +
|
||||
"32-bit integer range -(2^31-1) to 2^31-1. To store numbers " +
|
||||
"outside that range, store them as strings.");
|
||||
try {
|
||||
this._prefSvc.setIntPref(prefName, prefValue);
|
||||
} catch (e) {
|
||||
throw new Error(e.toString() + " - " + prefName);
|
||||
}
|
||||
if (prefValue % 1 != 0)
|
||||
Cu.reportError("Warning: setting the " + prefName + " pref to the " +
|
||||
"non-integer number " + prefValue + " converted it " +
|
||||
"to the integer number " + this.get(prefName) +
|
||||
"; to retain fractional precision, store non-integer " +
|
||||
"numbers as strings.");
|
||||
break;
|
||||
|
||||
case "Boolean":
|
||||
this._prefSvc.setBoolPref(prefName, prefValue);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw "can't set pref " + prefName + " to value '" + prefValue +
|
||||
"'; it isn't a String, Number, or Boolean";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a value. This is different from isSet
|
||||
* because it returns true whether the value of the pref is a default value
|
||||
* or a user-set value, while isSet only returns true if the value
|
||||
* is a user-set value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref has a value; or, if the caller provided
|
||||
* an array of pref names, an array of booleans indicating whether
|
||||
* or not the prefs have values
|
||||
*/
|
||||
has: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.has, this);
|
||||
|
||||
return this._has(prefName);
|
||||
},
|
||||
|
||||
_has: function(prefName) {
|
||||
return (this._prefSvc.getPrefType(prefName) != Ci.nsIPrefBranch.PREF_INVALID);
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a user-set value. This is different
|
||||
* from |has| because it returns true only if the value of the pref is a user-
|
||||
* set value, while |has| returns true if the value of the pref is a default
|
||||
* value or a user-set value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref has a user-set value; or, if the caller
|
||||
* provided an array of pref names, an array of booleans indicating
|
||||
* whether or not the prefs have user-set values
|
||||
*/
|
||||
isSet: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.isSet, this);
|
||||
|
||||
return (this.has(prefName) && this._prefSvc.prefHasUserValue(prefName));
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a user-set value. Use isSet instead,
|
||||
* which is equivalent.
|
||||
* @deprecated
|
||||
*/
|
||||
modified: function(prefName) { return this.isSet(prefName) },
|
||||
|
||||
reset: function(prefName) {
|
||||
if (isArray(prefName)) {
|
||||
prefName.map(v => this.reset(v));
|
||||
return;
|
||||
}
|
||||
|
||||
this._reset(prefName);
|
||||
},
|
||||
|
||||
_reset: function(prefName) {
|
||||
try {
|
||||
this._prefSvc.clearUserPref(prefName);
|
||||
}
|
||||
catch(ex) {
|
||||
// The pref service throws NS_ERROR_UNEXPECTED when the caller tries
|
||||
// to reset a pref that doesn't exist or is already set to its default
|
||||
// value. This interface fails silently in those cases, so callers
|
||||
// can unconditionally reset a pref without having to check if it needs
|
||||
// resetting first or trap exceptions after the fact. It passes through
|
||||
// other exceptions, however, so callers know about them, since we don't
|
||||
// know what other exceptions might be thrown and what they might mean.
|
||||
if (ex.result != Cr.NS_ERROR_UNEXPECTED)
|
||||
throw ex;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* If you need to know the default values, without resetting the actual
|
||||
* user prefs, you can use this.
|
||||
* @returns {Preferences} a new Preferences object, which accesses
|
||||
* the defaults rather than the user prefs.
|
||||
* *Only* call get() on this.
|
||||
* If you call set(), you will modify the defaults, so don't do that!
|
||||
*/
|
||||
get defaults() {
|
||||
// nsIPrefService
|
||||
let defaultBranch = Services.prefs.
|
||||
getDefaultBranch(this._prefBranch).
|
||||
QueryInterface(Ci.nsIPrefBranch);
|
||||
let prefs = new Preferences(this._prefBranch);
|
||||
// override. nasty, but this is internal, so OK.
|
||||
Object.defineProperty(prefs, "_prefSvc", {
|
||||
get: function() {
|
||||
return defaultBranch;
|
||||
}
|
||||
});
|
||||
prefs.isDefaultBranch = true;
|
||||
return prefs;
|
||||
},
|
||||
|
||||
/**
|
||||
* Lock a pref so it can't be changed.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to lock, or an array of prefs to lock
|
||||
* @param prefValue {String} (optional)
|
||||
* default value of pref to lock only works if prefName isn't an array
|
||||
*/
|
||||
lock: function(prefName, prefValue) {
|
||||
if (isArray(prefName))
|
||||
prefName.map(this.lock, this);
|
||||
else if (typeof prefValue != "undefined")
|
||||
this.defaults.set(prefName, prefValue);
|
||||
|
||||
this._prefSvc.lockPref(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Unlock a pref so it can be changed.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to lock, or an array of prefs to lock
|
||||
*/
|
||||
unlock: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
prefName.map(this.unlock, this);
|
||||
|
||||
this._prefSvc.unlockPref(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref is locked against changes and
|
||||
* if it is set to the passedi n value
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
* @param prefValue {String|Number|Boolean}}
|
||||
* the pref value to compare against
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref is locked; or, if the caller
|
||||
* provided an array of pref names, an array of booleans indicating
|
||||
* whether or not the prefs are locked
|
||||
* If a pref value was specified returns whether or not the pref
|
||||
* was locked and equal to the passed in value.
|
||||
*/
|
||||
locked: function(prefName, prefValue) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.locked, this);
|
||||
|
||||
if (prefValue)
|
||||
return this._prefSvc.prefIsLocked(prefName) && (this.get(prefName) == prefValue);
|
||||
else
|
||||
return this._prefSvc.prefIsLocked(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Start observing a pref.
|
||||
*
|
||||
* The callback can be a function or any object that implements nsIObserver.
|
||||
* When the callback is a function and thisObject is provided, it gets called
|
||||
* as a method of thisObject.
|
||||
*
|
||||
* @param prefName {String}
|
||||
* the name of the pref to observe
|
||||
*
|
||||
* @param callback {Function|Object}
|
||||
* the code to notify when the pref changes;
|
||||
*
|
||||
* @param thisObject {Object} [optional]
|
||||
* the object to use as |this| when calling a Function callback;
|
||||
*
|
||||
* @returns the wrapped observer
|
||||
*/
|
||||
observe: function(prefName, callback, thisObject) {
|
||||
let fullPrefName = this._prefBranch + (prefName || "");
|
||||
|
||||
let observer = new PrefObserver(fullPrefName, callback, thisObject);
|
||||
Preferences._prefSvc.addObserver(fullPrefName, observer, true);
|
||||
observers.push(observer);
|
||||
|
||||
return observer;
|
||||
},
|
||||
|
||||
/**
|
||||
* Stop observing a pref.
|
||||
*
|
||||
* You must call this method with the same prefName, callback, and thisObject
|
||||
* with which you originally registered the observer. However, you don't have
|
||||
* to call this method on the same exact instance of Preferences; you can call
|
||||
* it on any instance. For example, the following code first starts and then
|
||||
* stops observing the "foo.bar.baz" preference:
|
||||
*
|
||||
* let observer = function() {...};
|
||||
* Preferences.observe("foo.bar.baz", observer);
|
||||
* new Preferences("foo.bar.").ignore("baz", observer);
|
||||
*
|
||||
* @param prefName {String}
|
||||
* the name of the pref being observed
|
||||
*
|
||||
* @param callback {Function|Object}
|
||||
* the code being notified when the pref changes
|
||||
*
|
||||
* @param thisObject {Object} [optional]
|
||||
* the object being used as |this| when calling a Function callback
|
||||
*/
|
||||
ignore: function(prefName, callback, thisObject) {
|
||||
let fullPrefName = this._prefBranch + (prefName || "");
|
||||
|
||||
// This seems fairly inefficient, but I'm not sure how much better we can
|
||||
// make it. We could index by fullBranch, but we can't index by callback
|
||||
// or thisObject, as far as I know, since the keys to JavaScript hashes
|
||||
// (a.k.a. objects) can apparently only be primitive values.
|
||||
let [observer] = observers.filter(v => v.prefName == fullPrefName &&
|
||||
v.callback == callback &&
|
||||
v.thisObject == thisObject);
|
||||
|
||||
if (observer) {
|
||||
Preferences._prefSvc.removeObserver(fullPrefName, observer);
|
||||
observers.splice(observers.indexOf(observer), 1);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Same as observe(), but automatically unregisters itself when
|
||||
* the window closes, saving you from writing an unload handler and
|
||||
* calling ignore().
|
||||
* @param win {nsIDOMWindow} your |window|
|
||||
*/
|
||||
observeAuto: function(win, prefName, callback, thisObject) {
|
||||
if (!win instanceof Ci.nsIDOMWindow)
|
||||
throw "Need your |window| as first parameter";
|
||||
this.observe(prefName, callback, thisObject);
|
||||
var self = this;
|
||||
win.addEventListener("unload", function()
|
||||
{
|
||||
self.ignore(prefName, callback, thisObject);
|
||||
}, false);
|
||||
win = null; // don't let closure hold on to window unnecessarily
|
||||
},
|
||||
|
||||
resetBranch: function(prefBranch) {
|
||||
try {
|
||||
this._prefSvc.resetBranch(prefBranch);
|
||||
}
|
||||
catch(ex) {
|
||||
// The current implementation of nsIPrefBranch in Mozilla
|
||||
// doesn't implement resetBranch, so we do it ourselves.
|
||||
if (ex.result == Cr.NS_ERROR_NOT_IMPLEMENTED)
|
||||
this.reset(this._prefSvc.getChildList(prefBranch, []));
|
||||
else
|
||||
throw ex;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns all child prefs of this pref branch.
|
||||
* This equals nsIPrefBranch.getChildList().
|
||||
* This allows you to do e.g.
|
||||
* var myPrefs = new Preferences("extensions.cooler.");
|
||||
* var contents = myPrefs.branch("contents.");
|
||||
* for each (let prefname in contents.childPrefNames())
|
||||
* dump("have " + contents.get(prefname) + " " + prefname + "\n");
|
||||
*
|
||||
* @returns {Array of String} The names of the children,
|
||||
* without the base pref branch, but with subbranch.
|
||||
*/
|
||||
childPrefNames : function() {
|
||||
return this._prefSvc.getChildList("", []);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an nsIPrefBranch for the pref branch that this object stands for.
|
||||
* You can use this to use functions that are not supported here.
|
||||
* @returns {nsIPrefBranch}
|
||||
*/
|
||||
get mozillaPrefBranch() {
|
||||
return this._prefSvc;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the base pref name that this object stands for.
|
||||
* E.g. "extensions.yourcooler.";
|
||||
* @returns {String}
|
||||
*/
|
||||
get prefBranchName() {
|
||||
return this._prefBranch;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an Preferences object for an sub pref branch
|
||||
* underneath the current pref branch.
|
||||
* @param subbranch {String} Will be appended to the
|
||||
* current pref branch. Don't forget the trailing dot,
|
||||
* where necessary.
|
||||
* E.g. "contents."
|
||||
* @returns {Preferences}
|
||||
*/
|
||||
branch : function(subbranch) {
|
||||
return new Preferences(this._prefBranch + subbranch);
|
||||
},
|
||||
|
||||
/**
|
||||
* The branch of the preferences tree to which this instance provides access.
|
||||
* @private
|
||||
*/
|
||||
_prefBranch: "",
|
||||
|
||||
/**
|
||||
* Preferences Service
|
||||
* @private
|
||||
*/
|
||||
get _prefSvc() {
|
||||
// nsIPrefService
|
||||
let prefSvc = Services.prefs.
|
||||
getBranch(this._prefBranch).
|
||||
QueryInterface(Ci.nsIPrefBranch);
|
||||
Object.defineProperty(this, "_prefSvc", {
|
||||
get: function() {
|
||||
return prefSvc;
|
||||
}
|
||||
});
|
||||
return this._prefSvc;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Give the constructor the same prototype as its instances, so users can access
|
||||
// preferences directly via the constructor without having to create an instance
|
||||
// first.
|
||||
Preferences.__proto__ = Preferences.prototype;
|
||||
|
||||
/**
|
||||
* A cache of pref observers.
|
||||
*
|
||||
* We use this to remove observers when a caller calls Preferences::ignore.
|
||||
*
|
||||
* All Preferences instances share this object, because we want callers to be
|
||||
* able to remove an observer using a different Preferences object than the one
|
||||
* with which they added it. That means we have to identify the observers
|
||||
* in this object by their complete pref name, not just their name relative to
|
||||
* the root branch of the Preferences object with which they were created.
|
||||
*/
|
||||
let observers = [];
|
||||
|
||||
function PrefObserver(prefName, callback, thisObject) {
|
||||
this.prefName = prefName;
|
||||
this.callback = callback;
|
||||
this.thisObject = thisObject;
|
||||
}
|
||||
|
||||
PrefObserver.prototype = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
||||
|
||||
observe: function(subject, topic, data) {
|
||||
// The pref service only observes whole branches, but we only observe
|
||||
// individual preferences, so we check here that the pref that changed
|
||||
// is the exact one we're observing (and not some sub-pref on the branch).
|
||||
if (data != this.prefName)
|
||||
return;
|
||||
|
||||
if (typeof this.callback == "function") {
|
||||
let prefValue = Preferences.get(this.prefName);
|
||||
|
||||
if (this.thisObject)
|
||||
this.callback.call(this.thisObject, prefValue);
|
||||
else
|
||||
this.callback(prefValue);
|
||||
}
|
||||
else // typeof this.callback == "object" (nsIObserver)
|
||||
this.callback.observe(subject, topic, data);
|
||||
}
|
||||
};
|
||||
|
||||
function isArray(val) {
|
||||
// We can't check for |val.constructor == Array| here, since the value
|
||||
// might be from a different context whose Array constructor is not the same
|
||||
// as ours, so instead we match based on the name of the constructor.
|
||||
return (typeof val != "undefined" && val != null && typeof val == "object" &&
|
||||
val.constructor.name == "Array");
|
||||
}
|
||||
|
||||
function isObject(val) {
|
||||
// We can't check for |val.constructor == Object| here, since the value
|
||||
// might be from a different context whose Object constructor is not the same
|
||||
// as ours, so instead we match based on the name of the constructor.
|
||||
return (typeof val != "undefined" && val != null && typeof val == "object" &&
|
||||
val.constructor.name == "Object");
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* JS module implementation of nsIDOMJSWindow.setTimeout and clearTimeout.
|
||||
*/
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["setTimeout", "clearTimeout"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
// This gives us >=2^30 unique timer IDs, enough for 1 per ms for 12.4 days.
|
||||
let gNextTimeoutId = 1; // setTimeout must return a positive integer
|
||||
|
||||
let gTimeoutTable = new Map(); // int -> nsITimer
|
||||
|
||||
this.setTimeout = function setTimeout(aCallback, aMilliseconds) {
|
||||
let id = gNextTimeoutId++;
|
||||
let args = Array.slice(arguments, 2);
|
||||
let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
timer.initWithCallback(function setTimeout_timer() {
|
||||
gTimeoutTable.delete(id);
|
||||
aCallback.apply(null, args);
|
||||
}, aMilliseconds, timer.TYPE_ONE_SHOT);
|
||||
|
||||
gTimeoutTable.set(id, timer);
|
||||
return id;
|
||||
}
|
||||
|
||||
this.clearTimeout = function clearTimeout(aId) {
|
||||
if (gTimeoutTable.has(aId)) {
|
||||
gTimeoutTable.get(aId).cancel();
|
||||
gTimeoutTable.delete(aId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
var EXPORTED_SYMBOLS = ["errorCritical"];
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
function errorCritical(e)
|
||||
{
|
||||
Services.prompt.alert(null, "", e);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID9zCCAt+gAwIBAgIUervWv7EoWkk4Gt8J34xDR9nhH50wDQYJKoZIhvcNAQEL
|
||||
BQAwgYIxCzAJBgNVBAYTAldXMRQwEgYDVQQIDAtJMlAgTmV0d29yazESMBAGA1UE
|
||||
CgwJUHVycGxlSTJQMSowKAYDVQQDDCFQdXJwbGVJMlAgQ2VydGlmaWNhdGlvbiBB
|
||||
dXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDnI0c2FzQG1haWwuaTJwMB4XDTE5MDMw
|
||||
MzE2MjcxNFoXDTI5MDIyODE2MjcxNFowgYIxCzAJBgNVBAYTAldXMRQwEgYDVQQI
|
||||
DAtJMlAgTmV0d29yazESMBAGA1UECgwJUHVycGxlSTJQMSowKAYDVQQDDCFQdXJw
|
||||
bGVJMlAgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDnI0
|
||||
c2FzQG1haWwuaTJwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwLEy
|
||||
A0TamzrfORA+aIM/NRRGrKYkI9o5Q9UB/pTM8IFlSBREGleUfnC6LFHZeNV+Y1Tn
|
||||
jrMBOZ7PmIKjPIv+fJP7KjhHACZdk6iqVZqkiGqE0/V17kG16g1+g05Bj2lkWr94
|
||||
mp1rhzBeKJJSI8cG82824qdfDcgWZheziye+O0okENhi0o2bDhg78EnyysJiN/tu
|
||||
OuoZSGfC9ZdITbpMWgqwuQcdeBg0FNy4hEqUJWoYNgrghe5uc0WMOjTAegSntYPE
|
||||
MeaaZyzlGICZ2F+rKZgTjnzVYW60QlHqfg7sShieSPYIZmeN5l5hZ5GZk9Giaj/X
|
||||
4pz4sup2iafKclWAmQIDAQABo2MwYTAdBgNVHQ4EFgQUCARvpDaXqPaF4amObzzV
|
||||
GaDoZm4wHwYDVR0jBBgwFoAUCARvpDaXqPaF4amObzzVGaDoZm4wDwYDVR0TBAgw
|
||||
BgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKcmGUXV
|
||||
gCw8PRHe0+XlkcSTX69e0TIPP+j5uJxMT3BHasvBdyV4FcjuUokHGjAnHal5OV4N
|
||||
yWdbRPnIge7su4yLQZzlNM1OzbcRds1wSbqTEpb68R/6E8mv3ms6Rc8AcRoXwusc
|
||||
byZvzS9tBSXTQ21wCVrltnIARAYabWlWu+URv+DFvlwMik6H8+DklHSVkPC6K3Ov
|
||||
V1aMJztMnJ/XTTsFDS/yvaTfmJFG16LABIiSsEAW5QK64sWsN4sxvpcg0D6/EjWP
|
||||
knyLM4KXuD3i08mzwzus8d97AjGxC5RCEFL5ADBpVaDU/5CpmZmZdY1daYjiHrXm
|
||||
EVNoSbqid1fAVyA=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,10 +1,8 @@
|
||||
// I2Pd Browser preferences
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
*
|
||||
* Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
* This file is part of Purple i2pd project and licensed under BSD3
|
||||
*
|
||||
* See full license text in LICENSE file at top of project tree
|
||||
*/
|
||||
|
||||
@@ -18,49 +16,40 @@
|
||||
*/
|
||||
|
||||
lockPref("accessibility.force_disabled", 1);
|
||||
pref("app.normandy.first_run", false);
|
||||
defaultPref("app.normandy.first_run", false);
|
||||
lockPref("app.update.auto", false);
|
||||
lockPref("app.update.channel", "no");
|
||||
lockPref("app.update.channel", "i2pdbrowser");
|
||||
lockPref("app.update.enabled", false);
|
||||
lockPref("app.update.interval", 0);
|
||||
lockPref("app.update.service.enabled", false);
|
||||
pref("app.update.staging.enabled", false);
|
||||
pref("app.update.timer", 0);
|
||||
defaultPref("beacon.enabled", false);
|
||||
pref("breakpad.reportURL", "");
|
||||
pref("browser.aboutHomeSnippets.updateUrl", "");
|
||||
defaultPref("browser.cache.disk.capacity", 131072);
|
||||
defaultPref("browser.cache.offline.enable", false);
|
||||
defaultPref("browser.casting.enabled", false);
|
||||
pref("browser.crashReports.unsubmittedCheck.enabled", false);
|
||||
// pref("browser.display.use_document_fonts", 0);
|
||||
pref("browser.download.manager.retention", 0);
|
||||
defaultPref("browser.download.useDownloadDir", false);
|
||||
defaultPref("browser.feeds.showFirstRunUI", false);
|
||||
defaultPref("browser.fixup.alternate.enabled", false);
|
||||
pref("browser.fixup.hide_user_pass", true);
|
||||
defaultPref("browser.formfill.enable", false);
|
||||
// PREF: Delete Search and Form History
|
||||
defaultPref("browser.formfill.expire_days", 0);
|
||||
// PREF: Delete temporary files on exit
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
lockPref("browser.newtabpage.activity-stream.default.sites", "http://i2pd.i2p/,http://333.i2p/,http://inr.i2p/,http://102chan.i2p/,http://flibusta.i2p/,http://fsoc.i2p/,http://lifebox.i2p/,http://onelon.i2p/,http://wiki.ilita.i2p/");
|
||||
lockPref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
|
||||
lockPref("browser.newtabpage.activity-stream.feeds.snippets", false);
|
||||
lockPref("browser.newtabpage.activity-stream.showSearch", false);
|
||||
defaultPref("browser.newtabpage.activity-stream.showSearch", true);
|
||||
lockPref("browser.newtabpage.activity-stream.telemetry", false);
|
||||
pref("browser.newtabpage.activity-stream.topSitesRows", 2);
|
||||
pref("browser.newtabpage.enhanced", false);
|
||||
defaultPref("browser.newtabpage.introShown", true);
|
||||
pref("browser.newtabpage.introShown", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-addons.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-customize.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-default-browser.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-performance.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-private-browsing.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-screenshots.completed", true);
|
||||
// PREF: Do not create screenshots of visited pages
|
||||
pref("browser.pagethumbnails.capturing_disabled", true);
|
||||
pref("browser.places.smartBookmarksVersion", -1);
|
||||
defaultPref("browser.pocket.enabled", false);
|
||||
pref("browser.pocket.useLocaleList", false);
|
||||
defaultPref("browser.pagethumbnails.capturing_disabled", true);
|
||||
defaultPref("browser.places.smartBookmarksVersion", -1);
|
||||
pref("browser.reader.detectedFirstArticle", false);
|
||||
pref("browser.rights.3.shown", true);
|
||||
defaultPref("browser.safebrowsing.appRepURL", "");
|
||||
@@ -89,32 +78,31 @@ defaultPref("browser.safebrowsing.reportURL", "");
|
||||
defaultPref("browser.safebrowsing.updateURL", "");
|
||||
defaultPref("browser.safebrowsing.warning.infoURL", "");
|
||||
defaultPref("browser.search.countryCode", "US");
|
||||
defaultPref("browser.search.defaultenginename", "DuckDuckGo");
|
||||
defaultPref("browser.search.defaultenginename", "YaCy 'legwork'");
|
||||
defaultPref("browser.search.geoSpecificDefaults", false);
|
||||
defaultPref("browser.search.geoSpecificDefaults.url", "");
|
||||
defaultPref("browser.search.geoip.url", "");
|
||||
defaultPref("browser.search.order.1", "DuckDuckGo");
|
||||
defaultPref("browser.search.hiddenOneOffs", "Amazon.com,Bing,DuckDuckGo,eBay,Google,Twitter,Wikipedia (en)");
|
||||
defaultPref("browser.search.official", false);
|
||||
defaultPref("browser.search.order.1", "YaCy 'legwork'");
|
||||
defaultPref("browser.search.redirectWindowsSearch", false);
|
||||
defaultPref("browser.search.region", "US");
|
||||
defaultPref("browser.search.searchEnginesURL", "");
|
||||
defaultPref("browser.search.suggest.enabled", false);
|
||||
defaultPref("browser.search.update", false);
|
||||
pref("browser.send_pings", false);
|
||||
pref("browser.search.widget.inNavBar", true);
|
||||
lockPref("browser.send_pings", false);
|
||||
pref("browser.send_pings.require_same_host", true);
|
||||
pref("browser.selfsupport.url", "");
|
||||
defaultPref("browser.shell.checkDefaultBrowser", false);
|
||||
//defaultPref("browser.startup.firstrunSkipsHomepage", false);
|
||||
pref("browser.startup.homepage", "http://i2pd.i2p/");
|
||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||
defaultPref("browser.tabs.closeWindowWithLastTab", false);
|
||||
lockPref("browser.tabs.crashReporting.sendReport", false);
|
||||
pref("browser.tabs.loadInBackground", true);
|
||||
defaultPref("browser.uitour.enabled", false);
|
||||
pref("browser.urlbar.filter.javascript", true);
|
||||
pref("browser.urlbar.formatting.enabled", false);
|
||||
pref("browser.urlbar.maxRichResults", 12);
|
||||
// pref("browser.urlbar.suggest.history", false);
|
||||
defaultPref("browser.urlbar.formatting.enabled", false);
|
||||
defaultPref("browser.urlbar.maxRichResults", 12);
|
||||
defaultPref("browser.urlbar.speculativeConnect.enabled", false);
|
||||
defaultPref("browser.urlbar.suggest.searches", false);
|
||||
pref("browser.urlbar.trimURLs", false);
|
||||
defaultPref("browser.urlbar.trimURLs", false);
|
||||
lockPref("browser.usedOnWindows10", false);
|
||||
lockPref("browser.usedOnWindows10.introURL", "");
|
||||
lockPref("camera.control.face_detection.enabled", false);
|
||||
@@ -126,27 +114,20 @@ defaultPref("datareporting.healthreport.documentServerURI", "");
|
||||
defaultPref("datareporting.healthreport.pendingDeleteRemoteData", true);
|
||||
lockPref("datareporting.healthreport.service.enabled", false);
|
||||
defaultPref("datareporting.healthreport.service.firstRun", false);
|
||||
defaultPref("datareporting.healthreport.uploadEnabled", false);
|
||||
lockPref("datareporting.healthreport.uploadEnabled", false);
|
||||
pref("datareporting.policy.dataSubmissionEnabled", false);
|
||||
pref("datareporting.policy.dataSubmissionEnabled.v2", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyAccepted", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyBypassAcceptance", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "0");
|
||||
pref("datareporting.policy.dataSubmissionPolicyResponseType", "accepted-info-bar-dismissed");
|
||||
pref("datareporting.policy.dataSubmissionPolicyResponseTime", "0");
|
||||
pref("datareporting.policy.firstRunTime", "0");
|
||||
pref("datareporting.sessions.current.clean", true);
|
||||
pref("device.sensors.enabled", false);
|
||||
pref("devtools.chrome.enabled", false);
|
||||
pref("devtools.debugger.remote-enabled", false);
|
||||
pref("devtools.debugger.force-local", true);
|
||||
pref("devtools.webide.enabled", false);
|
||||
pref("devtools.debugger.remote-enabled", false);
|
||||
pref("devtools.webide.autoinstallADBHelper", false);
|
||||
pref("devtools.webide.autoinstallFxdtAdapters", false);
|
||||
pref("devtools.webide.enabled", false);
|
||||
pref("dom.allow_cut_copy", false);
|
||||
pref("dom.archivereader.enabled", false);
|
||||
pref("dom.battery.enabled", false);
|
||||
pref("dom.disable_open_during_load", true);
|
||||
pref("dom.enable_performance", false);
|
||||
pref("dom.enable_user_timing", false);
|
||||
pref("dom.event.clipboardevents.enabled", false);
|
||||
@@ -154,208 +135,239 @@ pref("dom.flyweb.enabled", false);
|
||||
pref("dom.gamepad.enabled", false);
|
||||
pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);
|
||||
pref("dom.ipc.plugins.reportCrashURL", false);
|
||||
// pref("dom.indexedDB.enabled", false);
|
||||
pref("dom.maxHardwareConcurrency", 2);
|
||||
pref("dom.mozTCPSocket.enabled", false);
|
||||
pref("dom.netinfo.enabled", false);
|
||||
pref("dom.network.enabled", false);
|
||||
pref("dom.serviceWorkers.enabled", false);
|
||||
pref("dom.telephony.enabled", false);
|
||||
pref("dom.vibrator.enabled", false);
|
||||
pref("dom.vr.enabled", false);
|
||||
pref("dom.webaudio.enabled", false);
|
||||
pref("dom.webnotifications.enabled", false);
|
||||
pref("dom.workers.enabled", false);
|
||||
pref("experiments.supported", false);
|
||||
pref("experiments.enabled", false);
|
||||
pref("experiments.manifest.uri", "");
|
||||
pref("experiments.supported", false);
|
||||
pref("extensions.autoDisableScopes", 0);
|
||||
pref("extensions.blocklist.enabled", false);
|
||||
pref("extensions.blocklist.url", "");
|
||||
pref("extensions.getAddons.cache.enabled", false);
|
||||
pref("extensions.getAddons.showPane", false);
|
||||
pref("extensions.lazarus.showDonateNotification", false);
|
||||
pref("extensions.pocket.enabled", false);
|
||||
lockPref("extensions.pocket.enabled", false);
|
||||
pref("extensions.shownSelectionUI", true);
|
||||
pref("extensions.ui.lastCategory", "addons://list/extension");
|
||||
pref("extensions.update.autoUpdateDefault", false);
|
||||
defaultPref("extensions.update.enabled", false);
|
||||
pref("full-screen-api.approval-required", false);
|
||||
pref("full-screen-api.warning.timeout", 0);
|
||||
pref("general.buildID.override", "19700101");
|
||||
pref("general.buildID.override", "20100101");
|
||||
lockPref("general.platform.override", "Win32");
|
||||
lockPref("general.useragent.locale", "en-US");
|
||||
lockPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0");
|
||||
pref("general.warnOnAboutConfig", false);
|
||||
defaultPref("geo.enabled", false);
|
||||
defaultPref("geo.wifi.uri", "");
|
||||
lockPref("geo.wifi.logging.enabled", false);
|
||||
// pref("gfx.font_rendering.opentype_svg.enabled", false);
|
||||
defaultPref("geo.wifi.uri", "");
|
||||
lockPref("identity.fxaccounts.enabled", false);
|
||||
defaultPref("intl.locale.matchOS", true);
|
||||
// pref("javascript.options.asmjs", false);
|
||||
pref("javascript.use_us_english_locale", true);
|
||||
pref("keyword.enabled", false);
|
||||
pref("lightweightThemes.update.enabled", false);
|
||||
pref("loop.logDomains", false);
|
||||
defaultPref("media.eme.enabled", false);
|
||||
defaultPref("media.getusermedia.screensharing.enabled", false);
|
||||
defaultPref("media.getusermedia.audiocapture.enabled", false);
|
||||
lockPref("media.getusermedia.audiocapture.enabled", false);
|
||||
lockPref("media.getusermedia.screensharing.enabled", false);
|
||||
pref("media.gmp-eme-adobe.enabled", false);
|
||||
pref("media.gmp-gmpopenh264.enabled", false);
|
||||
pref("media.gmp-gmpopenh264.provider.enabled", false);
|
||||
pref("media.gmp-manager.url", "");
|
||||
// pref("media.gmp-provider.enabled", false);
|
||||
defaultPref("media.navigator.enabled", false);
|
||||
defaultPref("media.navigator.video.enabled", false);
|
||||
defaultPref("media.peerconnection.enabled", false);
|
||||
defaultPref("media.peerconnection.ice.default_address_only", true);
|
||||
defaultPref("media.peerconnection.ice.no_host", true);
|
||||
defaultPref("media.peerconnection.identity.timeout", 1);
|
||||
defaultPref("media.peerconnection.turn.disable", true);
|
||||
defaultPref("media.peerconnection.use_document_iceservers", false);
|
||||
defaultPref("media.video_stats.enabled", false);
|
||||
defaultPref("media.webspeech.recognition.enable", false);
|
||||
defaultPref("media.webspeech.synth.enabled", false);
|
||||
pref("network.allow-experiments", false);
|
||||
// pref("network.cookie.cookieBehavior", 1);
|
||||
// PREF: Cookies expires at the end of the session (when the browser closes)
|
||||
// pref("network.cookie.lifetimePolicy", 2);
|
||||
defaultPref("network.IDN.whitelist.i2p", true);
|
||||
defaultPref("network.IDN_show_punycode", true);
|
||||
defaultPref("network.allow-experiments", false);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
// pref("network.cookie.thirdparty.sessionOnly", true);
|
||||
// pref("network.dns.blockDotOnion", true);
|
||||
defaultPref("network.dns.disableIPv6", true);
|
||||
defaultPref("network.dns.disableprefetch", true);
|
||||
defaultPref("network.dns.disableprefetchFromHTTPS", true);
|
||||
defaultPref("network.dns.disablePrefetch", true);
|
||||
defaultPref("network.dns.disablePrefetchFromHTTPS", true);
|
||||
// pref("network.http.referer.spoofSource", true);
|
||||
// pref("network.http.referer.XOriginPolicy", 2);
|
||||
defaultPref("network.dns.disableprefetch", true);
|
||||
pref("network.http.speculative-parallel-limit", 0);
|
||||
pref("network.IDN_show_punycode", true);
|
||||
pref("network.jar.open-unsafe-types", false);
|
||||
defaultPref("network.jar.open-unsafe-types", false);
|
||||
pref("network.manage-offline-status", false);
|
||||
pref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
defaultPref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
pref("network.predictor.enabled", false);
|
||||
defaultPref("network.prefetch-next", false);
|
||||
pref("network.protocol-handler.warn-external-default", true);
|
||||
pref("network.protocol-handler.external.http", false);
|
||||
pref("network.protocol-handler.external.https", false);
|
||||
pref("network.protocol-handler.external.javascript", false);
|
||||
pref("network.protocol-handler.external.moz-extension", false);
|
||||
pref("network.protocol-handler.external.ftp", false);
|
||||
pref("network.protocol-handler.external.file", false);
|
||||
pref("network.protocol-handler.external.about", false);
|
||||
pref("network.protocol-handler.expose-all", false);
|
||||
pref("network.protocol-handler.expose.about", true);
|
||||
pref("network.protocol-handler.expose.file", true);
|
||||
pref("network.protocol-handler.expose.ftp", true);
|
||||
pref("network.protocol-handler.expose.http", true);
|
||||
pref("network.protocol-handler.expose.https", true);
|
||||
pref("network.protocol-handler.expose.javascript", true);
|
||||
pref("network.protocol-handler.expose.moz-extension", true);
|
||||
pref("network.protocol-handler.expose.ftp", true);
|
||||
pref("network.protocol-handler.expose.file", true);
|
||||
pref("network.protocol-handler.expose.about", true);
|
||||
lockPref("network.proxy.backup.ftp", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.ftp_port", 4444);
|
||||
lockPref("network.proxy.backup.socks", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.socks_port", 4444);
|
||||
lockPref("network.proxy.backup.ssl", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.ssl_port", 4444);
|
||||
lockPref("network.proxy.ftp", "127.0.0.1");
|
||||
lockPref("network.proxy.ftp_port", 4444);
|
||||
lockPref("network.proxy.http", "127.0.0.1");
|
||||
lockPref("network.proxy.http_port", 4444);
|
||||
lockPref("network.proxy.share_proxy_settings", true);
|
||||
lockPref("network.proxy.socks", "127.0.0.1");
|
||||
lockPref("network.proxy.socks_port", 4444);
|
||||
lockPref("network.proxy.socks_remote_dns", true);
|
||||
lockPref("network.proxy.ssl", "127.0.0.1");
|
||||
lockPref("network.proxy.ssl_port", 4444);
|
||||
pref("network.protocol-handler.external.about", false);
|
||||
pref("network.protocol-handler.external.file", false);
|
||||
pref("network.protocol-handler.external.ftp", false);
|
||||
pref("network.protocol-handler.external.http", false);
|
||||
pref("network.protocol-handler.external.https", false);
|
||||
pref("network.protocol-handler.external.javascript", false);
|
||||
pref("network.protocol-handler.external.moz-extension", false);
|
||||
defaultPref("network.protocol-handler.warn-external-default", true);
|
||||
defaultPref("network.proxy.ftp", "127.0.0.1");
|
||||
defaultPref("network.proxy.ftp_port", 4444);
|
||||
defaultPref("network.proxy.http", "127.0.0.1");
|
||||
defaultPref("network.proxy.http_port", 4444);
|
||||
defaultPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
|
||||
defaultPref("network.proxy.share_proxy_settings", true);
|
||||
defaultPref("network.proxy.socks_remote_dns", true);
|
||||
defaultPref("network.proxy.ssl", "127.0.0.1");
|
||||
defaultPref("network.proxy.ssl_port", 4444);
|
||||
lockPref("network.proxy.type", 1);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
pref("pdfjs.disabled", true);
|
||||
pref("pdfjs.enableWebGL", false);
|
||||
defaultPref("pdfjs.disabled", true);
|
||||
defaultPref("pdfjs.enableWebGL", false);
|
||||
defaultPref("permissions.default.camera", 2);
|
||||
defaultPref("permissions.default.desktop-notification", 2);
|
||||
defaultPref("permissions.default.geo", 2);
|
||||
defaultPref("permissions.default.microphone", 2);
|
||||
defaultPref("plugin.default_plugin_disabled", true);
|
||||
// pref("plugin.state.flash", 0);
|
||||
pref("plugin.state.java", 0);
|
||||
pref("plugin.state.libgnome-shell-browser-plugin", 0);
|
||||
pref("plugins.click_to_play", true);
|
||||
pref("plugins.load_appdir_plugins", false);
|
||||
pref("plugins.update.notifyUser", false);
|
||||
pref("plugins.update.url", "");
|
||||
// PREF: Clear history when Firefox closes
|
||||
// pref("privacy.sanitize.sanitizeOnShutdown", true);
|
||||
// pref("privacy.clearOnShutdown.cache", true);
|
||||
// pref("privacy.clearOnShutdown.cookies", true);
|
||||
// pref("privacy.clearOnShutdown.downloads", true);
|
||||
// pref("privacy.clearOnShutdown.formdata", true);
|
||||
// pref("privacy.clearOnShutdown.history", true);
|
||||
// pref("privacy.clearOnShutdown.offlineApps", true);
|
||||
// pref("privacy.clearOnShutdown.sessions", true);
|
||||
// pref("privacy.clearOnShutdown.openWindows", true);
|
||||
defaultPref("plugin.state.java", 0);
|
||||
defaultPref("plugin.state.libgnome-shell-browser-plugin", 0);
|
||||
defaultPref("plugins.click_to_play", true);
|
||||
defaultPref("plugins.load_appdir_plugins", false);
|
||||
defaultPref("plugins.update.notifyUser", false);
|
||||
defaultPref("plugins.update.url", "");
|
||||
pref("privacy.cpd.offlineApps", true);
|
||||
pref("privacy.cpd.cache", true);
|
||||
pref("privacy.cpd.cookies", true);
|
||||
pref("privacy.cpd.downloads", true);
|
||||
pref("privacy.cpd.formdata", true);
|
||||
pref("privacy.cpd.history", true);
|
||||
pref("privacy.cpd.sessions", true);
|
||||
pref("privacy.donottrackheader.enabled", true);
|
||||
pref("privacy.resistFingerprinting", true);
|
||||
pref("privacy.firstparty.isolate", true);
|
||||
defaultPref("privacy.resistFingerprinting", true);
|
||||
pref("privacy.sanitize.timeSpan", 0);
|
||||
defaultPref("privacy.spoof_english", 2);
|
||||
pref("privacy.trackingprotection.enabled", true);
|
||||
pref("privacy.trackingprotection.pbmode.enabled", true);
|
||||
pref("privacy.userContext.enabled", true);
|
||||
pref("reader.parse-on-load.enabled", false);
|
||||
pref("reader.parse-on-load.force-enabled", false);
|
||||
pref("security.csp.enable", true);
|
||||
pref("security.csp.experimentalEnabled", true);
|
||||
pref("security.dialog_enable_delay", 1000);
|
||||
pref("security.fileuri.strict_origin_policy", true);
|
||||
pref("security.insecure_field_warning.contextual.enabled", false);
|
||||
// PREF: Enable insecure password warnings (login forms in non-HTTPS pages)
|
||||
pref("security.insecure_password.ui.enabled", false);
|
||||
pref("security.mixed_content.block_active_content", true);
|
||||
pref("security.mixed_content.block_display_content", true);
|
||||
pref("services.blocklist.update_enabled", false);
|
||||
pref("security.sri.enable", true);
|
||||
pref("security.ssl.errorReporting.automatic", false);
|
||||
pref("security.ssl.errorReporting.enabled", false);
|
||||
defaultPref("privacy.trackingprotection.enabled", true);
|
||||
lockPref("privacy.userContext.enabled", true);
|
||||
defaultPref("reader.parse-on-load.enabled", false);
|
||||
defaultPref("reader.parse-on-load.force-enabled", false);
|
||||
defaultPref("security.insecure_field_warning.contextual.enabled", false);
|
||||
defaultPref("security.insecure_password.ui.enabled", false);
|
||||
defaultPref("security.ssl.errorReporting.enabled", false);
|
||||
defaultPref("services.blocklist.update_enabled", false);
|
||||
lockPref("services.sync.enabled", false);
|
||||
pref("services.sync.prefs.sync.browser.download.manager.scanWhenDone", false);
|
||||
pref("services.sync.prefs.sync.browser.safebrowsing.enabled", false);
|
||||
defaultPref("services.sync.prefs.sync.browser.search.update", false);
|
||||
defaultPref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
// pref("shumway.disabled", true);
|
||||
pref("services.sync.prefs.sync.browser.search.update", false);
|
||||
pref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
pref("signon.autofillForms", false);
|
||||
// PREF: Disable password manager
|
||||
pref("signon.rememberSignons", false);
|
||||
defaultPref("startup.homepage_welcome_url", "http://i2pd.i2p/");
|
||||
pref("startup.homepage_welcome_url.additional", "about:blank");
|
||||
pref("toolkit.telemetry.archive.enabled", false);
|
||||
lockPref("toolkit.telemetry.archive.enabled", false);
|
||||
lockPref("toolkit.telemetry.enabled", false);
|
||||
pref("toolkit.telemetry.optoutSample", false);
|
||||
defaultPref("toolkit.telemetry.optoutSample", false);
|
||||
defaultPref("toolkit.telemetry.reportingpolicy.firstRun", false);
|
||||
lockPref("toolkit.telemetry.server", "");
|
||||
defaultPref("toolkit.telemetry.unified", false);
|
||||
pref("toolkit.telemetry.unifiedIsOptIn", true);
|
||||
pref("webgl.disabled", true);
|
||||
pref("webgl.disable-extensions", true);
|
||||
pref("webgl.disable-fail-if-major-performance-caveat", true);
|
||||
pref("webgl.enable-debug-renderer-info", false);
|
||||
pref("webgl.min_capability_mode", true);
|
||||
// Ensure domain logging is disabled
|
||||
pref("loop.logDomains", false);
|
||||
// Spoof to dual-core cpu
|
||||
pref("dom.maxHardwareConcurrency", 2);
|
||||
// Disable offline cache
|
||||
pref("browser.cache.offline.enable", false);
|
||||
// Prevent tracking over multiple domains
|
||||
pref("privacy.firstparty.isolate", true);
|
||||
pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
|
||||
// In relation to webrtc
|
||||
pref("media.peerconnection.turn.disable", true);
|
||||
pref("media.peerconnection.use_document_iceservers", false);
|
||||
pref("media.peerconnection.identity.timeout", 1);
|
||||
pref("media.peerconnection.ice.default_address_only", true);
|
||||
// Disable url prefetch
|
||||
pref("browser.urlbar.speculativeConnect.enabled", false);
|
||||
// Set platform, user-agent and locale to same values as Tor Browser 7.0.10
|
||||
pref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0");
|
||||
pref("general.useragent.locale", "en-US");
|
||||
pref("general.platform.override", "Win32");
|
||||
defaultPref("toolkit.telemetry.unifiedIsOptIn", true);
|
||||
defaultPref("webgl.disable-extensions", true);
|
||||
defaultPref("webgl.disable-fail-if-major-performance-caveat", true);
|
||||
defaultPref("webgl.disabled", true);
|
||||
defaultPref("webgl.enable-debug-renderer-info", false);
|
||||
defaultPref("webgl.min_capability_mode", true);
|
||||
|
||||
var config = {
|
||||
"cckVersion": "2.2.9",
|
||||
"name": "I2Pd Browser",
|
||||
"description": "Preconfigured for use with I2P browser",
|
||||
"version": "1.2.8",
|
||||
"homePage": "http://i2pd.i2p/",
|
||||
"welcomePage": "http://i2pd.i2p/",
|
||||
"titlemodifier": "I2Pd Browser",
|
||||
"extension": {
|
||||
"name": "I2Pd Browser"
|
||||
},
|
||||
"noWelcomePage": true,
|
||||
"noUpgradePage": true,
|
||||
"removeSetDesktopBackground": true,
|
||||
"removeSafeModeMenu": true,
|
||||
"noGetAddons": true,
|
||||
"noAddonCompatibilityCheck": true,
|
||||
"disableSearchEngineInstall": true,
|
||||
"removeDefaultSearchEngines": false,
|
||||
"displayBookmarksToolbar": true,
|
||||
"removeSmartBookmarks": true,
|
||||
"removeDefaultBookmarks": true,
|
||||
"removeDuplicateBookmarkNames": true,
|
||||
"dontCheckDefaultBrowser": true,
|
||||
"dontUseDownloadDir": true,
|
||||
"disableFormFill": true,
|
||||
"disableSync": true,
|
||||
"disableCrashReporter": true,
|
||||
"disableTelemetry": true,
|
||||
"disableFirefoxHealthReportUpload": true,
|
||||
"disableFirefoxHealthReport": true,
|
||||
"disableFirefoxUpdates": true,
|
||||
"removeSnippets": true,
|
||||
"disableResetFirefox": true,
|
||||
"disableWebApps": true,
|
||||
"disableHello": true,
|
||||
"disableSharePage": true,
|
||||
"disableForget": true,
|
||||
"disableHeartbeat": true,
|
||||
"disablePocket": true,
|
||||
"disableAboutSupport": true,
|
||||
"disableAboutProfiles": true,
|
||||
"showSearchBar": true,
|
||||
"autoconfig": {
|
||||
"disableProfileMigrator": true
|
||||
},
|
||||
"id": "i2pdbrowser",
|
||||
"hiddenUI": [
|
||||
"#defaultBrowserBox",
|
||||
"#enableSearchUpdate",
|
||||
"#dataCollectionCategory",
|
||||
"#dataCollectionGroup",
|
||||
".help-button",
|
||||
"#onboarding-overlay-button",
|
||||
".prefs-modal-inner-wrapper > section:nth-child(6)"
|
||||
],
|
||||
"searchplugins": {
|
||||
"YaCy 'legwork'": "http://legwork.i2p/opensearchdescription.xml"
|
||||
},
|
||||
"defaultSearchEngine": "YaCy 'legwork'",
|
||||
"certs": {
|
||||
"ca": [
|
||||
{
|
||||
"url": "resource://cck2_i2pdbrowser/certs/purplei2p_ca.pem",
|
||||
"trust": "CTc,CTc,CTc"
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
var io = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
var resource = io.getProtocolHandler("resource")
|
||||
.QueryInterface(Components.interfaces.nsIResProtocolHandler);
|
||||
|
||||
var greDir = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties)
|
||||
.get("GreD", Components.interfaces.nsIFile);
|
||||
var cck2ModuleDir = greDir.clone();
|
||||
cck2ModuleDir.append("cck2");
|
||||
cck2ModuleDir.append("modules");
|
||||
var cck2Alias = io.newFileURI(cck2ModuleDir);
|
||||
resource.setSubstitution("cck2", cck2Alias);
|
||||
|
||||
var configModuleDir = greDir.clone();
|
||||
configModuleDir.append("cck2");
|
||||
configModuleDir.append("resources");
|
||||
var configAlias = io.newFileURI(configModuleDir);
|
||||
resource.setSubstitution("cck2_i2pdbrowser", configAlias);
|
||||
|
||||
Components.utils.import("resource://cck2/CCK2.jsm");
|
||||
CCK2.init(config, "ä"[0], "ä");
|
||||
|
||||
+693
-1097
File diff suppressed because it is too large
Load Diff
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cGpnw4a2u9sHZIUNHzoGq32+7UWXsBI5Ow==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF3DCCA8SgAwIBAgIQPxUlcrbHX/xdyJ09E36rJzANBgkqhkiG9w0BAQsFADB3
|
||||
MQswCQYDVQQGEwJYWDELMAkGA1UEBxMCWFgxCzAJBgNVBAkTAlhYMR4wHAYDVQQK
|
||||
ExVJMlAgQW5vbnltb3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEgMB4GA1UEAwwX
|
||||
cmVzZWVkaTJwbmV0aW5AbWFpbC5pMnAwHhcNMTgxMjA3MTYzNDIxWhcNMjgxMjA3
|
||||
MTYzNDIxWjB3MQswCQYDVQQGEwJYWDELMAkGA1UEBxMCWFgxCzAJBgNVBAkTAlhY
|
||||
MR4wHAYDVQQKExVJMlAgQW5vbnltb3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEg
|
||||
MB4GA1UEAwwXcmVzZWVkaTJwbmV0aW5AbWFpbC5pMnAwggIiMA0GCSqGSIb3DQEB
|
||||
AQUAA4ICDwAwggIKAoICAQC912NDk6x85uqB4gyQQcded0RVrbWehWOanDRv7kC3
|
||||
92jeziPbeMtqrLsfU1MdDtQiGijpNkQ/IIitPw+6vJAIh82gyOUZvsn2XOyb/Fz0
|
||||
Fu8OrDghwl39yK8kwtqCFw3VAgafgKxz2oRge9mxFBECi50vYEPIBwNhr4yc/opu
|
||||
wWUmzmRyX4gD7vKmRU6ZTwX4LXnwdl+5VbW3updcZKsDuTnKvC9FGhDRR9kIk2G9
|
||||
43sLN263nCYPykP7DaB1cUdi1vDEMw5dot+eu16qTIbuypEvYNvbB/9FyCQllm1h
|
||||
vBbSku3IYpcnRPmoeyhoR/MmCySRbK5R4SrSsVD1YBpwxgn0Q4+fzEgFzT9P4oez
|
||||
HkDGKVP2HdgmXx9j36fEqqvjqzRleWDwEWwIZVRLCFO+hhhT3JAjnNGJTWv1SQGB
|
||||
8tz9nyYTJuhvyHE/CO5owFeCdeOGMq2KPge9w34T+mvewTEEhGU8yRAt8Xp8s5Y9
|
||||
RCUGvuQ79+edRtj7FJg7yVB8pAQ+VB9msNQvzrTnPYC9Wo7chJhBiraMiIabzIhC
|
||||
f34Gg9lkX1N0dVND5rnZWwzBM6JhNG1iZZCRHVPnXdZRixUlqmFpCP/eekshksj/
|
||||
6UP/WeGA6X4HyEsC6QEf7eMhcHYjyyTzYagKrwCHg77fmIjF8rmpP2LqWSQW8bDD
|
||||
uQIDAQABo2QwYjAOBgNVHQ8BAf8EBAMCAoQwHQYDVR0lBBYwFAYIKwYBBQUHAwIG
|
||||
CCsGAQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wIAYDVR0OBBkEF3Jlc2VlZGkycG5l
|
||||
dGluQG1haWwuaTJwMA0GCSqGSIb3DQEBCwUAA4ICAQCWpXs6iuTy/w2R7q7Ua6vl
|
||||
JYZwbQ+czk5ydzkBgcNkMMMNRT7sZR9xYvV+ftiL4bFQP/3ZJyo7cYz2Q6+M3oAm
|
||||
YDcZWBkLUVihSlMxhWwmeFTKV2EL+bzwY1V/cy7wgukKnFIes75dLP/v25jgjdlw
|
||||
Xe6R+fQM0EoHeVzzrWk/qYp6oEwtQXfZnUu/Bf45hRnnHBzzh1wCql41vbEs3Niq
|
||||
+SVwY1wLT0yC1L8HqjCLX1/L5PAXxbvEGzwnXSkLKK4bPxdmVDZvS9uzXrWmTbNi
|
||||
HpKIFnOif16zSgyeaOM7HETIJuVzgooUMtt+Vsr1VGdtm6K7I9J5C+rX/ckU8oaX
|
||||
UjmzhWXudN0VTslogsKUCV6xG2CskeE3wnuT8HYXz9NMw6c/kIGH4hY7LcfU8Teu
|
||||
QjSy2RRvy6InmZNV5sY9lzzO6romEycSoUlpCa3Ltb/5KKoYZFTsXr8suqJk89lC
|
||||
e+TVMHqOZdLK/usqQDcafLypHpw9SH2Tg4jrzV/zLqacbjx6bZD5IrpY0Gf7BXg/
|
||||
pikwyA9c490G6ZcWrSEP8bzh6LL2rA2AwxaeJJNVyLHCSLrn/7DezM5J/qhd90Qg
|
||||
kcZGJrUOCSWl6mDvUZn5XiQ955XwOnZQ+wsM85B3CVX22x5bp0SYWHCQBPnthPwP
|
||||
Q5DD3jExbpwG5n35HEcHYw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
fNr8P7NIRyZ8
|
||||
-----END CERTIFICATE-----
|
||||
+1
-3
@@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2013-2017, The PurpleI2P Project
|
||||
#
|
||||
# Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
# This file is part of Purple i2pd project and licensed under BSD3
|
||||
#
|
||||
# See full license text in LICENSE file at top of project tree
|
||||
|
||||
arch=$(uname -m)
|
||||
|
||||
@@ -1 +1 @@
|
||||
a6b8db67404dad711c7fc81e57131a454f0e16b8
|
||||
8ac8c1452a00b9654755be88ab805982c1d56a92
|
||||
@@ -1 +1 @@
|
||||
d60decdb94de8e31eb606c53258e384586dd421e
|
||||
af5de0612c40f715740fd4d168aa444b4baca790
|
||||
@@ -21,7 +21,7 @@ name = I2Pd
|
||||
verify = true
|
||||
|
||||
[addressbook]
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt,http://identiguy.i2p/hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://i2p-projekt.i2p/hosts.txt
|
||||
|
||||
[http]
|
||||
enabled = true
|
||||
@@ -42,3 +42,8 @@ port = 4447
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7656
|
||||
|
||||
[ntcp2]
|
||||
enabled = true
|
||||
published = true
|
||||
#port =
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-ILITA]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6669
|
||||
#destination = irc.ilita.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-IRC2P]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6668
|
||||
#destination = irc.postman.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,4 @@
|
||||
# In that directory you can store separated config files for every tunnel.
|
||||
# Please read documentation for more info.
|
||||
#
|
||||
# You can find examples in /usr/share/doc/i2pd/tunnels.d directory
|
||||
+4
-3
@@ -1,3 +1,4 @@
|
||||
./FirefoxESR.app
|
||||
./i2pd
|
||||
./data
|
||||
/FirefoxESR.app
|
||||
/i2pd
|
||||
/data
|
||||
/i2pdbrowser-portable
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
pub 4096R/98EBCFE2 2016-12-14
|
||||
uid R4SAS (r4sas) <r4sas@i2pmail.org>
|
||||
sub 4096R/9206EEF0 2016-12-14
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
=BDxP
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -1,25 +0,0 @@
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a build/i2pd/i2pd.conf
|
||||
65cc7b71df694cca2d49243df63557f28cdf79d9ec19e8c27ed21d71a54de74c19d80682c1b77cdda4228e3b945a34bac00ad8b2ee8df50a59a9c833b664218f build/i2pd/i2pd
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 build/i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 build/i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 build/i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 build/i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 build/i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d build/i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 build/i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 build/i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 build/i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be build/i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 build/i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 build/i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 build/i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f build/i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 build/i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a build/i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc build/i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 build/i2pd/tunnels.conf
|
||||
9b6e52011e96278c757ed635d76e46536186d91bea5ea65e03a7fee6d1d36536869bd47c4c1fca3e4620f617044d81a5a5a66765c50bc76dbf0902d6f44e5126 build/build
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
@@ -1,45 +0,0 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a build/i2pd/i2pd.conf
|
||||
65cc7b71df694cca2d49243df63557f28cdf79d9ec19e8c27ed21d71a54de74c19d80682c1b77cdda4228e3b945a34bac00ad8b2ee8df50a59a9c833b664218f build/i2pd/i2pd
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 build/i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 build/i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 build/i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 build/i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 build/i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d build/i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 build/i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 build/i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 build/i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be build/i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 build/i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 build/i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 build/i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f build/i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 build/i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a build/i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc build/i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 build/i2pd/tunnels.conf
|
||||
9b6e52011e96278c757ed635d76e46536186d91bea5ea65e03a7fee6d1d36536869bd47c4c1fca3e4620f617044d81a5a5a66765c50bc76dbf0902d6f44e5126 build/build
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1
|
||||
|
||||
iQIcBAEBCgAGBQJbN2EaAAoJEGb2yHuY68/iiJwQAI+JUOqh1F0px5zWZf/2k2MN
|
||||
NPJoCfCgy8yVp5B6t7WWtdRLpgF9Dkltl9uTI0bjoIGKwQdM5Q0TfpLaLR4xPvoE
|
||||
BE3gQVR1BaxNiaBgciKQ0HdS3Ajs6llcerCqlE6Xt1Fwj97VekjiN0+GdbLbapIe
|
||||
13k9YGevrlbSVsXEh+aXzezfXKvYRIopuulu+VGeWK1oNeHT+SYmwcdb6RMh19xw
|
||||
iRuEaQEcXZGYlY1iPfy8rzujkXWaXXKZmBbux458nlz2sd0FXWERFPLxddDaSPOX
|
||||
oM8w11/AFi/Oyv+cmVdSrC2nhTsYo9pt+DoKlcDhrj1Z0Ci7hDu4w7lYOhG4wMKc
|
||||
BFOseswyuCY/c235B6rLNjVVFu7aelPV7FBYHcLWUfCFaCFfMfktcsQoa90i1ZpG
|
||||
sx1R94iJR3FxnGFdm1fq+lN0jr8WsbzGVqFTAFU8T3MFAOVpT+303wnYdIFxMClj
|
||||
bR7az4piPqnjdRBilAvooARwAFuyfo/PMEZHtDcZwnvL7uVTWXvkZtPqRoEFxKix
|
||||
qiJU3z+v59q9GTA2cIwW+2pAi5erGE+dbtlWFt8IUAapLwec6S4ZpDSdJZZ3Do/B
|
||||
GNtdZhfeFBNt2916wLLqgiBY8dfdTreOiiAXmppxtD6oh1CYDrZ6QqBNE814xmmG
|
||||
A+b/T+QKPzn6bmzQ8vy8
|
||||
=fjK2
|
||||
-----END PGP SIGNATURE-----
|
||||
+19
-10
@@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
#
|
||||
# Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
# This file is part of Purple I2P project and licensed under BSD3
|
||||
#
|
||||
# See full license text in LICENSE file at top of project tree
|
||||
|
||||
dir=${0%/*}
|
||||
@@ -13,9 +11,9 @@ fi
|
||||
cd $dir
|
||||
|
||||
arch=$(uname -m)
|
||||
language=$(osascript -e 'user locale of (get system info)')
|
||||
version="60.1.0esr"
|
||||
i2pdversion="2.19.0"
|
||||
language=$(osascript -e 'user locale of (get system info)' | sed -e 's/_/-/g')
|
||||
version="60.7.1esr"
|
||||
i2pdversion="2.26.0"
|
||||
|
||||
ftpmirror="https://ftp.mozilla.org/pub/firefox/releases/${version}"
|
||||
|
||||
@@ -33,7 +31,7 @@ filepath="mac/${language}/${file}"
|
||||
echo "Downloading $application..."
|
||||
|
||||
tmpfilepath=$(echo $filepath | sed 's/ /%20/g')
|
||||
curl -L -f -# -O "${ftpmirror}/${tmpfilepath}"
|
||||
curl -L -f -# -o "${file}" "${ftpmirror}/${tmpfilepath}"
|
||||
if [ $? -ne 0 ]; then # Not found error, trying to cut language variable
|
||||
echo "[TRY 2] I'll try downloading Firefox with shorter language code";
|
||||
language=$(echo $language | cut -c-2)
|
||||
@@ -47,7 +45,7 @@ if [ $? -ne 0 ]; then # Not found error, trying to cut language variable
|
||||
# re-create lang variable
|
||||
filepath="mac/$language/$file"
|
||||
tmpfilepath=$(echo $filepath | sed 's/ /%20/g')
|
||||
curl -L -f -# -O "${ftpmirror}/${tmpfilepath}"
|
||||
curl -L -f -# -o "${file}" "${ftpmirror}/${tmpfilepath}"
|
||||
if [ $? -ne 0 ]; then # After that i can say only that user haven't internet connection
|
||||
echo "[Error] Can't download file. Check your internet connectivity."
|
||||
exit 1;
|
||||
@@ -85,7 +83,18 @@ rm "$file"
|
||||
# Deleting some not needed files
|
||||
rm -r ../FirefoxESR.app/Contents/Library
|
||||
rm -r ../FirefoxESR.app/Contents/MacOS/crashreporter.app
|
||||
rm ../FirefoxESR.app/Contents/MacOS/pingsender
|
||||
rm -r ../FirefoxESR.app/Contents/MacOS/updater.app
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/blocklist.xml
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/crashreporter-override.ini
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/aushelper@mozilla.org.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/firefox@getpocket.com.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/followonsearch@mozilla.com.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/formautofill@mozilla.org.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/jaws-esr@mozilla.org.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/onboarding@mozilla.org.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/browser/features/screenshots@mozilla.org.xpi
|
||||
rm ../FirefoxESR.app/Contents/Resources/precomplete
|
||||
rm ../FirefoxESR.app/Contents/Resources/removed-files
|
||||
rm ../FirefoxESR.app/Contents/Resources/update*
|
||||
# And edit some places
|
||||
@@ -98,7 +107,7 @@ curl -L -f -# -o ../FirefoxESR.app/Contents/Resources/browser/extensions/langpac
|
||||
curl -L -f -# -o ../FirefoxESR.app/Contents/Resources/browser/extensions/langpack-en-US@firefox.mozilla.org.xpi "https://addons.mozilla.org/firefox/downloads/file/978493/english_us_language_pack-60.0buildid20180605171542-an+fx.xpi"
|
||||
|
||||
echo "Downloading NoScript extension..."
|
||||
curl -L -f -# -o ../FirefoxESR.app/Contents/Resources/browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi "https://addons.mozilla.org/firefox/downloads/file/972162/noscript_security_suite-10.1.8.2-an+fx.xpi"
|
||||
curl -L -f -# -o ../FirefoxESR.app/Contents/Resources/browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi "https://addons.mozilla.org/firefox/downloads/file/3028550/noscript_security_suite-10.6.3-an+fx.xpi"
|
||||
|
||||
echo "Adding standard configs..."
|
||||
cp profile/* ../data/
|
||||
@@ -119,7 +128,7 @@ curl -L -f -# -O "https://github.com/PurpleI2P/i2pd/releases/download/${i2pdvers
|
||||
mkdir ../i2pd
|
||||
tar xfz i2pd_${i2pdversion}_osx.tar.gz -C ../i2pd
|
||||
mv ../i2pd/i2pd ../i2pd/i2pd-osx
|
||||
cp -rf i2pd ../i2pd
|
||||
cp -rf i2pd/* ../i2pd
|
||||
rm "i2pd_${i2pdversion}_osx.tar.gz"
|
||||
|
||||
echo "... finished"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cGpnw4a2u9sHZIUNHzoGq32+7UWXsBI5Ow==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Q5DD3jExbpwG5n35HEcHYw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
fNr8P7NIRyZ8
|
||||
-----END CERTIFICATE-----
|
||||
+1
-3
@@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2013-2017, The PurpleI2P Project
|
||||
#
|
||||
# Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
# This file is part of Purple i2pd project and licensed under BSD3
|
||||
#
|
||||
# See full license text in LICENSE file at top of project tree
|
||||
|
||||
screenfind=$(which screen)
|
||||
|
||||
@@ -21,7 +21,7 @@ name = I2Pd
|
||||
verify = true
|
||||
|
||||
[addressbook]
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt,http://identiguy.i2p/hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://i2p-projekt.i2p/hosts.txt
|
||||
|
||||
[http]
|
||||
enabled = true
|
||||
@@ -42,3 +42,8 @@ port = 4447
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7656
|
||||
|
||||
[ntcp2]
|
||||
enabled = true
|
||||
published = true
|
||||
#port =
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-ILITA]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6669
|
||||
#destination = irc.ilita.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-IRC2P]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6668
|
||||
#destination = irc.postman.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,4 @@
|
||||
# In that directory you can store separated config files for every tunnel.
|
||||
# Please read documentation for more info.
|
||||
#
|
||||
# You can find examples in /usr/share/doc/i2pd/tunnels.d directory
|
||||
@@ -0,0 +1,2 @@
|
||||
[XRE]
|
||||
EnableProfileMigrator=0
|
||||
@@ -0,0 +1 @@
|
||||
resource cck2 modules/
|
||||
@@ -0,0 +1,154 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gForceExternalHandler = false;
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "extProtocolSvc",
|
||||
"@mozilla.org/uriloader/external-protocol-service;1", "nsIExternalProtocolService");
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
doc.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
event.target.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
// If the parent document is a local file, don't do anything
|
||||
// Links will just work
|
||||
if (doc.location.href.indexOf("file://") == 0) {
|
||||
return;
|
||||
}
|
||||
var links = event.target.getElementsByTagName("a");
|
||||
for (var i=0; i < links.length; i++) {
|
||||
var link = links[i];
|
||||
if (link.href.indexOf("file://") != 0) {
|
||||
continue;
|
||||
}
|
||||
link.addEventListener("click", function(link) {
|
||||
return function(event) {
|
||||
event.preventDefault();
|
||||
if (gForceExternalHandler) {
|
||||
extProtocolSvc.loadUrl(Services.io.newURI(link.href, null, null));
|
||||
} else {
|
||||
var target = "_self";
|
||||
if (link.hasAttribute("target")) {
|
||||
target = link.getAttribute("target");
|
||||
}
|
||||
// If we were told somewhere other than current (based on modifier keys), use it
|
||||
var where = whereToOpenLink(event);
|
||||
if (where != "current" || target == "_blank") {
|
||||
sendAsyncMessage("cck2:open-url", {
|
||||
"url": link.href,
|
||||
"where": (target == "_blank") ? "tab" : where
|
||||
});
|
||||
return;
|
||||
}
|
||||
switch (target) {
|
||||
case "_self":
|
||||
link.ownerDocument.location = link.href;
|
||||
break;
|
||||
case "_parent":
|
||||
link.ownerDocument.defaultView.parent.document.location = link.href;
|
||||
break;
|
||||
case "_top":
|
||||
link.ownerDocument.defaultView.top.document.location = link.href;
|
||||
break;
|
||||
default:
|
||||
// Attempt to find the iframe that this goes into
|
||||
var iframes = doc.defaultView.parent.document.getElementsByName(target);
|
||||
if (iframes.length > 0) {
|
||||
iframes[0].contentDocument.location = link.href;
|
||||
} else {
|
||||
link.ownerDocument.location = link.href;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}(link), false);
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.checkloaduri.enabled") == "allAccess") {
|
||||
gForceExternalHandler = !extProtocolSvc.isExposedProtocol('file');
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
|
||||
/* Copied from http://mxr.mozilla.org/mozilla-central/source/browser/base/content/utilityOverlay.js?raw=1 */
|
||||
|
||||
function getBoolPref(prefname, def)
|
||||
{
|
||||
try {
|
||||
return Services.prefs.getBoolPref(prefname);
|
||||
}
|
||||
catch(er) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/* whereToOpenLink() looks at an event to decide where to open a link.
|
||||
*
|
||||
* The event may be a mouse event (click, double-click, middle-click) or keypress event (enter).
|
||||
*
|
||||
* On Windows, the modifiers are:
|
||||
* Ctrl new tab, selected
|
||||
* Shift new window
|
||||
* Ctrl+Shift new tab, in background
|
||||
* Alt save
|
||||
*
|
||||
* Middle-clicking is the same as Ctrl+clicking (it opens a new tab).
|
||||
*
|
||||
* Exceptions:
|
||||
* - Alt is ignored for menu items selected using the keyboard so you don't accidentally save stuff.
|
||||
* (Currently, the Alt isn't sent here at all for menu items, but that will change in bug 126189.)
|
||||
* - Alt is hard to use in context menus, because pressing Alt closes the menu.
|
||||
* - Alt can't be used on the bookmarks toolbar because Alt is used for "treat this as something draggable".
|
||||
* - The button is ignored for the middle-click-paste-URL feature, since it's always a middle-click.
|
||||
*/
|
||||
function whereToOpenLink( e, ignoreButton, ignoreAlt )
|
||||
{
|
||||
Components.utils.import("resource://gre/modules/AppConstants.jsm");
|
||||
|
||||
// This method must treat a null event like a left click without modifier keys (i.e.
|
||||
// e = { shiftKey:false, ctrlKey:false, metaKey:false, altKey:false, button:0 })
|
||||
// for compatibility purposes.
|
||||
if (!e)
|
||||
return "current";
|
||||
|
||||
var shift = e.shiftKey;
|
||||
var ctrl = e.ctrlKey;
|
||||
var meta = e.metaKey;
|
||||
var alt = e.altKey && !ignoreAlt;
|
||||
|
||||
// ignoreButton allows "middle-click paste" to use function without always opening in a new window.
|
||||
var middle = !ignoreButton && e.button == 1;
|
||||
var middleUsesTabs = true;
|
||||
|
||||
// Don't do anything special with right-mouse clicks. They're probably clicks on context menu items.
|
||||
|
||||
var metaKey = AppConstants.platform == "macosx" ? meta : ctrl;
|
||||
if (metaKey || (middle && middleUsesTabs))
|
||||
return shift ? "tabshifted" : "tab";
|
||||
|
||||
if (alt && getBoolPref("browser.altClickSave", false))
|
||||
return "save";
|
||||
|
||||
if (shift || (middle && !middleUsesTabs))
|
||||
return "window";
|
||||
|
||||
return "current";
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gAllowedPasteSites = [];
|
||||
var gAllowedCutCopySites = [];
|
||||
var gDeniedPasteSites = [];
|
||||
var gDeniedCutCopySites = [];
|
||||
var gDefaultPastePolicy = false;
|
||||
var gDefaultCutCopyPolicy = false;
|
||||
|
||||
function allowCutCopy(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultCutCopyPolicy == true) {
|
||||
for (var i=0; i < gDeniedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedCutCopySites[i]) == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedCutCopySites[i]) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function allowPaste(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultPastePolicy == true) {
|
||||
for (var i=0; i < gDeniedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedPasteSites[i]) == 0) {
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedPasteSites[i]) == 0) {
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function myExecCommand(doc, originalExecCommand) {
|
||||
return function(aCommandName, aShowDefaultUI, aValueArgument) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalExecCommand.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
function myQueryCommandSupported(doc, originalQueryCommandSupported) {
|
||||
return function(aCommandName) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalQueryCommandSupported.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
var cutCopyAllowed = allowCutCopy(doc);
|
||||
var pasteAllowed = allowPaste(doc);
|
||||
if (!cutCopyAllowed && !pasteAllowed) {
|
||||
return;
|
||||
}
|
||||
var originalExecCommand = Cu.waiveXrays(doc).execCommand;
|
||||
Cu.exportFunction(myExecCommand(doc, originalExecCommand), doc, {defineAs: "execCommand"});
|
||||
var originalQueryCommandSupported = Cu.waiveXrays(doc).queryCommandSupported;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandSupported), doc, {defineAs: "queryCommandSupported"});
|
||||
var originalQueryCommandEnabled = Cu.waiveXrays(doc).queryCommandEnabled;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandEnabled), doc, {defineAs: "queryCommandEnabled"});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.cutcopy") == "allAccess") {
|
||||
gDefaultCutCopyPolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.paste") == "allAccess") {
|
||||
gDefaultPastePolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
var policies = [];
|
||||
policies = Services.prefs.getCharPref("capability.policy.policynames").split(', ');
|
||||
for (var i=0; i < policies.length; i++ ) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "allAccess") {
|
||||
var allowedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedCutCopySites.length; j++) {
|
||||
gAllowedCutCopySites.push(allowedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "noAccess") {
|
||||
var deniedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedCutCopySites.length; j++) {
|
||||
gDeniedCutCopySites.push(deniedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "allAccess") {
|
||||
var allowedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedPasteSites.length; j++) {
|
||||
gAllowedPasteSites.push(allowedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "noAccess") {
|
||||
var deniedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedPasteSites.length; j++) {
|
||||
gDeniedPasteSites.push(deniedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
} catch (e) {}
|
||||
if (gDefaultCutCopyPolicy || gDefaultPastePolicy ||
|
||||
gAllowedCutCopySites.length > 0 || gAllowedPasteSites> 0) {
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,111 @@
|
||||
/* This file overlays about:addons. It does the following: */
|
||||
/* Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1132971 */
|
||||
/* Hide the "Install Add-on From File" menu if xpinstall.enabled is false */
|
||||
/* Hides the discover pane if xpinstall.enabled is false */
|
||||
/* Hides the add-on entry if specified in the CCK2 config */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var addonId = "cck2wizard@kaply.com";
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:addons":
|
||||
case "chrome://mozapps/content/extensions/extensions.xul":
|
||||
var configs = CCK2.getConfigs();
|
||||
var hiddenAddons = [];
|
||||
var requiredAddons = [];
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config && "extension" in config && config.extension.hide) {
|
||||
hiddenAddons.push(config.extension.id);
|
||||
}
|
||||
if (config.requiredAddons) {
|
||||
requiredAddons.push.apply(requiredAddons, config.requiredAddons.split(","));
|
||||
}
|
||||
}
|
||||
if (hiddenAddons.length > 0 || requiredAddons.length > 0) {
|
||||
var ss;
|
||||
for (var i = 0; i < doc.styleSheets.length; i++) {
|
||||
if (doc.styleSheets[i].href == "chrome://mozapps/skin/extensions/extensions.css") {
|
||||
ss = doc.styleSheets[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (var i=0; i < hiddenAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + hiddenAddons[i] + "'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
for (var i=0; i < requiredAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='disable-btn'] { display: none;}", ss.cssRules.length);
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='remove-btn'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
if (requiredAddons.length > 0) {
|
||||
win.gViewController.commands.cmd_disableItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_disableItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
win.gViewController.commands.cmd_uninstallItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_uninstallItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
}
|
||||
}
|
||||
var showDiscoverPane = true;
|
||||
var xpinstallEnabled = true;
|
||||
try {
|
||||
xpinstallEnabled = Services.prefs.getBoolPref("xpinstall.enabled");
|
||||
} catch (e) {}
|
||||
try {
|
||||
showDiscoverPane = Services.prefs.getBoolPref("extensions.getAddons.showPane");
|
||||
} catch (e) {}
|
||||
if (!xpinstallEnabled || !showDiscoverPane) {
|
||||
// Work around Mozilla bug 1132971
|
||||
// Hide the discover pane if it is the selected pane
|
||||
if (E("view-port", doc) && E("view-port", doc).selectedIndex == 0) {
|
||||
try {
|
||||
win.gViewController.loadView("addons://list/extension");
|
||||
} catch (ex) {
|
||||
// This fails with Webconverger installed. Ignore it.
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!xpinstallEnabled) {
|
||||
// Hide the "Install Add-on From File" separator
|
||||
hide(E("utils-installFromFile-separator", doc));
|
||||
// Hide the "Install Add-on From File" menuitem
|
||||
hide(E("utils-installFromFile", doc));
|
||||
win.gDragDrop.onDragOver = function(event) {
|
||||
event.dataTransfer.dropEffect = "none";
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
};
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/* This file is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1139509 */
|
||||
/* It bolds the Firefox version in the about dialog and unbolds the distribution information */
|
||||
/* It can be removed once Firefox 38 ESR is out of support */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/aboutDialog.xul":
|
||||
doc.querySelector("#version").style.fontWeight = "bold";
|
||||
doc.querySelector("#distribution").style.fontWeight = "normal";
|
||||
doc.querySelector("#distributionId").style.fontWeight = "normal";
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
@@ -0,0 +1,79 @@
|
||||
/* This file overrides about:home. It does the following:
|
||||
* Remove the sync button if Sync is disabled
|
||||
* Remove the Addons button if Sync is disabled
|
||||
* Remove the snippets if snippets are disabled
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "content-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:home":
|
||||
case "chrome://browser/content/abouthome/aboutHome.xhtml":
|
||||
if (!configs) {
|
||||
// TODO - Make this Async
|
||||
configs = sendSyncMessage("cck2:get-configs")[0];
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
remove(E("sync", doc));
|
||||
}
|
||||
if (config.disableAddonsManager) {
|
||||
remove(E("addons", doc));
|
||||
}
|
||||
if (config.disableWebApps) {
|
||||
remove(E("apps", doc));
|
||||
}
|
||||
if (config.removeSnippets) {
|
||||
var snippets = E("snippets", doc);
|
||||
if (snippets) {
|
||||
snippets.style.display = "none";
|
||||
}
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
var uiElements = doc.querySelectorAll(config.hiddenUI[i]);
|
||||
for (var j=0; j < uiElements.length; j++) {
|
||||
var uiElement = uiElements[j];
|
||||
uiElement.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "content-document-global-created", false);
|
||||
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(observer, "content-document-global-created", false);
|
||||
})
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* This file overrides about:support It does the following:
|
||||
* Remove the reset Firefox button if disableResetFirefox is set
|
||||
* Remove the safe mode Button if disableSafeMode is set
|
||||
* Remove the box if both are set
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:support":
|
||||
case "chrome://global/content/aboutSupport.xhtml":
|
||||
if (!configs) {
|
||||
configs = CCK2.getConfigs();
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableResetFirefox) {
|
||||
remove(E("reset-box", doc));
|
||||
}
|
||||
if (config.disableSafeMode) {
|
||||
remove(E("safe-mode-box", doc));
|
||||
}
|
||||
if (config.disableResetFirefox &&
|
||||
config.disableSafeMode) {
|
||||
remove(E("action-box", doc));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
@@ -0,0 +1,373 @@
|
||||
/* This file modifies the main browser window. It does the following:
|
||||
* Goes through the hiddenUI list and hides any UI
|
||||
*
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource:///modules/CustomizableUI.jsm");
|
||||
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/browser.xul":
|
||||
// Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1149617
|
||||
var origSetReportPhishingMenu = win.gSafeBrowsing.setReportPhishingMenu;
|
||||
win.gSafeBrowsing.setReportPhishingMenu = function() {
|
||||
try {
|
||||
origSetReportPhishingMenu();
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
win.addEventListener("unload", function onUnload(event) {
|
||||
win.removeEventListener("unload", onUnload, false);
|
||||
var panelUIPopup = doc.getElementById("PanelUI-popup");
|
||||
if (panelUIPopup) {
|
||||
E("PanelUI-popup", doc).removeEventListener("popupshowing", onPanelShowing, false);
|
||||
}
|
||||
});
|
||||
var panelUIPopup = doc.getElementById("PanelUI-popup");
|
||||
if (panelUIPopup) {
|
||||
E("PanelUI-popup", doc).addEventListener("popupshowing", onPanelShowing, false);
|
||||
}
|
||||
var appMenuPopup = doc.getElementById("appMenu-popup");
|
||||
if (appMenuPopup) {
|
||||
E("appMenu-popup", doc).addEventListener("popupshowing", onAppMenuShowing, false);
|
||||
}
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
config = configs[id];
|
||||
if (config.disablePrivateBrowsing &&
|
||||
PrivateBrowsingUtils.isWindowPrivate(win)) {
|
||||
win.setTimeout(function() {
|
||||
Services.prompt.alert(win, "Private Browsing", "Private Browsing has been disabled by your administrator");
|
||||
win.close();
|
||||
}, 0, false);
|
||||
}
|
||||
if (config.disablePrivateBrowsing) {
|
||||
disablePrivateBrowsing(doc);
|
||||
}
|
||||
if (config.disableSync) {
|
||||
disableSync(doc);
|
||||
}
|
||||
if (config.disableAddonsManager) {
|
||||
disableAddonsManager(doc);
|
||||
}
|
||||
if (config.removeDeveloperTools) {
|
||||
Services.tm.mainThread.dispatch(function() {
|
||||
removeDeveloperTools(doc);
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
if (config.disableErrorConsole) {
|
||||
disableErrorConsole(doc);
|
||||
}
|
||||
if (config.disableFirefoxHealthReport) {
|
||||
var healthReportMenu = doc.getElementById("healthReport");
|
||||
if (healthReportMenu) {
|
||||
healthReportMenu.parentNode.removeChild(healthReportMenu);
|
||||
}
|
||||
}
|
||||
if (config.removeSafeModeMenu) {
|
||||
hide(E("helpSafeMode", doc));
|
||||
}
|
||||
if (config.titlemodifier) {
|
||||
doc.getElementById("main-window").setAttribute("titlemodifier", config.titlemodifier);
|
||||
}
|
||||
if (config.removeSetDesktopBackground) {
|
||||
// Because this is on a context menu, we can't use "hidden"
|
||||
if (E("context-setDesktopBackground", doc)) {
|
||||
E("context-setDesktopBackground", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.disableWebApps) {
|
||||
CustomizableUI.destroyWidget("web-apps-button");
|
||||
hide(E("menu_openApps", doc));
|
||||
}
|
||||
if (config.disableHello) {
|
||||
CustomizableUI.destroyWidget("loop-button");
|
||||
hide(E("menu_openLoop", doc));
|
||||
}
|
||||
if (config.disablePocket) {
|
||||
CustomizableUI.destroyWidget("pocket-button");
|
||||
}
|
||||
if (config.disableSharePage) {
|
||||
CustomizableUI.destroyWidget("social-share-button");
|
||||
// Because these are on a context menu, we can't use "hidden"
|
||||
if (E("context-sharelink", doc)) {
|
||||
E("context-sharelink", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-shareselect", doc)) {
|
||||
E("context-shareselect", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-shareimage", doc)) {
|
||||
E("context-shareimage", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-sharevideo", doc)) {
|
||||
E("context-sharevideo", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
if (E("context-sharepage", doc)) {
|
||||
E("context-sharepage", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.disableSocialAPI) {
|
||||
win.SocialActivationListener = {};
|
||||
}
|
||||
if (config.disableForget) {
|
||||
CustomizableUI.destroyWidget("panic-button");
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
hideUIElements(doc, config.hiddenUI);
|
||||
}
|
||||
if (config.helpMenu) {
|
||||
// We need to run this function on a delay, because we won't know
|
||||
// if the about menu is hidden for mac until after it is run.
|
||||
Services.tm.mainThread.dispatch(function() {
|
||||
var helpMenuPopup = doc.getElementById("menu_HelpPopup");
|
||||
var menuitem = doc.createElement("menuitem");
|
||||
menuitem.setAttribute("label", config.helpMenu.label);
|
||||
if ("accesskey" in config.helpMenu) {
|
||||
menuitem.setAttribute("accesskey", config.helpMenu.accesskey);
|
||||
}
|
||||
menuitem.setAttribute("oncommand", "openUILink('" + config.helpMenu.url + "');");
|
||||
menuitem.setAttribute("onclick", "checkForMiddleClick(this, event);");
|
||||
if (!E("aboutName", doc) || E("aboutName", doc).hidden) {
|
||||
// Mac
|
||||
helpMenuPopup.appendChild(menuitem);
|
||||
} else {
|
||||
helpMenuPopup.insertBefore(menuitem, E("aboutName", doc));
|
||||
helpMenuPopup.insertBefore(doc.createElement("menuseparator"),
|
||||
E("aboutName", doc));
|
||||
}
|
||||
}, Ci.nsIThread.DISPATCH_NORMAL);
|
||||
}
|
||||
if (config.firstrun || config.upgrade) {
|
||||
if (config.displayBookmarksToolbar || (config.bookmarks && config.bookmarks.toolbar)) {
|
||||
CustomizableUI.setToolbarVisibility("PersonalToolbar", "true");
|
||||
}
|
||||
if (config.displayMenuBar) {
|
||||
CustomizableUI.setToolbarVisibility("toolbar-menubar", "true");
|
||||
}
|
||||
if (config.showSearchBar) {
|
||||
CustomizableUI.addWidgetToArea("search-container", CustomizableUI.AREA_NAVBAR,
|
||||
CustomizableUI.getPlacementOfWidget("urlbar-container").position + 1);
|
||||
}
|
||||
config.firstrun = false;
|
||||
config.upgrade = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "chrome://browser/content/places/places.xul":
|
||||
case "chrome://browser/content/bookmarks/bookmarksPanel.xul":
|
||||
case "chrome://browser/content/history/history-panel.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disablePrivateBrowsing) {
|
||||
if (E("placesContext_open:newprivatewindow", doc)) {
|
||||
E("placesContext_open:newprivatewindow", doc).setAttribute("style", "display: none;");
|
||||
}
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
hideUIElements(doc, config.hiddenUI);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function disableSync(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win.gSyncUI) {
|
||||
var mySyncUI = {
|
||||
init: function() {
|
||||
return;
|
||||
},
|
||||
initUI: function() {
|
||||
return;
|
||||
},
|
||||
updateUI: function() {
|
||||
hide(E("sync-setup-state", doc));
|
||||
hide(E("sync-syncnow-state", doc));
|
||||
hide(E("sync-setup", doc));
|
||||
hide(E("sync-syncnowitem", doc));
|
||||
}
|
||||
}
|
||||
win.gSyncUI = mySyncUI;
|
||||
}
|
||||
CustomizableUI.destroyWidget("sync-button");
|
||||
CustomizableUI.removeWidgetFromArea("sync-button");
|
||||
var toolbox = doc.getElementById("navigator-toolbox");
|
||||
if (toolbox && toolbox.palette) {
|
||||
let element = toolbox.palette.querySelector("#sync-button");
|
||||
if (element) {
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
}
|
||||
hide(E("sync-setup-state", doc));
|
||||
hide(E("sync-syncnow-state", doc));
|
||||
hide(E("sync-setup", doc));
|
||||
hide(E("sync-syncnowitem", doc));
|
||||
}
|
||||
|
||||
function disablePrivateBrowsing(doc) {
|
||||
disable(E("Tools:PrivateBrowsing", doc));
|
||||
hide(E("menu_newPrivateWindow", doc));
|
||||
// Because this is on a context menu, we can't use "hidden"
|
||||
if (E("context-openlinkprivate", doc))
|
||||
E("context-openlinkprivate", doc).setAttribute("style", "display: none;");
|
||||
if (E("placesContext_open:newprivatewindow", doc))
|
||||
E("placesContext_open:newprivatewindow", doc).setAttribute("style", "display: none;");
|
||||
CustomizableUI.destroyWidget("privatebrowsing-button")
|
||||
}
|
||||
|
||||
function disableAddonsManager(doc) {
|
||||
hide(E("menu_openAddons", doc));
|
||||
disable(E("Tools:Addons", doc)); // Ctrl+Shift+A
|
||||
CustomizableUI.destroyWidget("add-ons-button")
|
||||
}
|
||||
|
||||
function removeDeveloperTools(doc) {
|
||||
var win = doc.defaultView;
|
||||
// Need to delay this because devtools is created dynamically
|
||||
win.setTimeout(function() {
|
||||
CustomizableUI.destroyWidget("developer-button")
|
||||
hide(E("webDeveloperMenu", doc));
|
||||
var devtoolsKeyset = doc.getElementById("devtoolsKeyset");
|
||||
if (devtoolsKeyset) {
|
||||
for (var i = 0; i < devtoolsKeyset.childNodes.length; i++) {
|
||||
devtoolsKeyset.childNodes[i].removeAttribute("oncommand");
|
||||
devtoolsKeyset.childNodes[i].removeAttribute("command");
|
||||
}
|
||||
}
|
||||
}, 0);
|
||||
try {
|
||||
doc.getElementById("Tools:ResponsiveUI").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:Scratchpad").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:BrowserConsole").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:BrowserToolbox").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevAppsMgr").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbar").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbox").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
try {
|
||||
doc.getElementById("Tools:DevToolbarFocus").removeAttribute("oncommand");
|
||||
} catch (e) {}
|
||||
CustomizableUI.destroyWidget("developer-button")
|
||||
}
|
||||
|
||||
function disableErrorConsole(doc) {
|
||||
doc.getElementById("Tools:ErrorConsole").removeAttribute("oncommand");
|
||||
}
|
||||
|
||||
function onPanelShowing(event) {
|
||||
var configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("PanelUI-fxa-status", event.target.ownerDocument));
|
||||
hide(E("PanelUI-footer-fxa", event.target.ownerDocument)); // Firefox 42+
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onAppMenuShowing(event) {
|
||||
var configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("appMenu-fxa-container", event.target.ownerDocument));
|
||||
}
|
||||
if (config.removeDeveloperTools) {
|
||||
hide(E("appMenu-developer-button", event.target.ownerDocument));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function disable(element) {
|
||||
if (element) {
|
||||
element.disabled = true;
|
||||
element.setAttribute("disabled", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function hideUIElements(doc, hiddenUI) {
|
||||
for (var i=0; i < hiddenUI.length; i++) {
|
||||
var uiElements = doc.querySelectorAll(hiddenUI[i]);
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + hiddenUI[i] + "{display: none !important;}";
|
||||
if (!uiElements || uiElements.length == 0) {
|
||||
continue;
|
||||
}
|
||||
for (var j=0; j < uiElements.length; j++) {
|
||||
var uiElement = uiElements[j];
|
||||
if (uiElement.nodeName == "menuitem") {
|
||||
uiElement.removeAttribute("key");
|
||||
uiElement.removeAttribute("oncommand");
|
||||
if (uiElement.hasAttribute("command")) {
|
||||
var commandId = uiElement.getAttribute("command");
|
||||
uiElement.removeAttribute("command");
|
||||
var command = doc.getElementById(commandId);
|
||||
command.removeAttribute("oncommand");
|
||||
var keys = doc.querySelectorAll("key[command='" + commandId + "']")
|
||||
for (var k=0; k < keys.length; k++) {
|
||||
keys[k].removeAttribute("command");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Horrible hack to work around the crappy Australis help menu
|
||||
// Items on the menu always show up in the Australis menu, so we have to remove them.
|
||||
if (uiElements[j].parentNode.id == "menu_HelpPopup") {
|
||||
uiElements[j].parentNode.removeChild(uiElements[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
var EXPORTED_SYMBOLS = [];
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
let CCK2FileBlock = {
|
||||
chromeBlacklist: ["browser", "mozapps", "marionette", "specialpowers",
|
||||
"branding", "alerts"],
|
||||
shouldLoad: function(aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aExtra) {
|
||||
// Prevent the loading of chrome URLs into the main browser window
|
||||
if (aContentLocation.scheme == "chrome") {
|
||||
if (aRequestOrigin &&
|
||||
(aRequestOrigin.spec == "chrome://browser/content/browser.xul" ||
|
||||
aRequestOrigin.scheme == "moz-nullprincipal")) {
|
||||
for (var i=0; i < this.chromeBlacklist.length; i++) {
|
||||
if (aContentLocation.host == this.chromeBlacklist[i]) {
|
||||
if (aContentLocation.spec.includes(".xul")) {
|
||||
return Ci.nsIContentPolicy.REJECT_REQUEST;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Ci.nsIContentPolicy.ACCEPT;
|
||||
},
|
||||
shouldProcess: function(aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aExtra) {
|
||||
return Ci.nsIContentPolicy.ACCEPT;
|
||||
},
|
||||
classDescription: "CCK2 FileBlock Service",
|
||||
contractID: "@kaply.com/cck2-fileblock-service;1",
|
||||
classID: Components.ID('{26e7afc9-e22d-4d12-bb57-c184fe24b828}'),
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy]),
|
||||
createInstance: function(outer, iid) {
|
||||
return this.QueryInterface(iid);
|
||||
},
|
||||
};
|
||||
|
||||
var registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
registrar.registerFactory(CCK2FileBlock.classID,
|
||||
CCK2FileBlock.classDescription,
|
||||
CCK2FileBlock.contractID,
|
||||
CCK2FileBlock);
|
||||
|
||||
var cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
|
||||
cm.addCategoryEntry("content-policy", CCK2FileBlock.contractID,
|
||||
CCK2FileBlock.contractID, false, true);
|
||||
@@ -0,0 +1,51 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var disableSearchEngineInstall = false;
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
doc.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
event.target.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
if (disableSearchEngineInstall) {
|
||||
subject.wrappedJSObject.external.AddSearchProvider = function() {};
|
||||
}
|
||||
if (!doc.documentURI.startsWith("about:")) {
|
||||
return;
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + config.hiddenUI[i] + "{display: none !important;}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var configs = sendSyncMessage("cck2:get-configs")[0];
|
||||
for (var id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSearchEngineInstall) {
|
||||
disableSearchEngineInstall = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
@@ -0,0 +1,123 @@
|
||||
/* This file modifies the preferences dialogs. It does the following:
|
||||
* Removes private browsing from the pref UI if it is disabled
|
||||
* Removes Sync from the pref UI if it is diabled
|
||||
* Disables the crash reporter button if crash reporter is disabled
|
||||
* Removed the master password UI if it is disabled
|
||||
* Goes through the hiddenUI list and hides any UI
|
||||
*
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/preferences/preferences.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
win.addEventListener("paneload", function(event) {
|
||||
updatePrefUI(event.target.ownerDocument);
|
||||
}, false);
|
||||
updatePrefUI(doc);
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (!config.disableSync) {
|
||||
continue;
|
||||
}
|
||||
var prefWindow = E("BrowserPreferences", doc);
|
||||
var paneSyncRadio = doc.getAnonymousElementByAttribute(prefWindow, "pane", "paneSync");
|
||||
hide(paneSyncRadio);
|
||||
var paneDeck = doc.getAnonymousElementByAttribute(prefWindow, "anonid", "paneDeck");
|
||||
var paneSync = E("paneSync", doc);
|
||||
paneSync.removeAttribute("helpTopic");
|
||||
var weavePrefsDeck = E("weavePrefsDeck", doc);
|
||||
if (weavePrefsDeck)
|
||||
weavePrefsDeck.parentNode.removeChild(weavePrefsDeck);
|
||||
if (prefWindow.currentPane == E("paneSync", doc))
|
||||
prefWindow.showPane(E("paneMain", doc));
|
||||
}
|
||||
break;
|
||||
case "about:preferences":
|
||||
case "chrome://browser/content/preferences/in-content/preferences.xul":
|
||||
configs = CCK2.getConfigs();
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
hide(E("category-sync", doc));
|
||||
}
|
||||
}
|
||||
updatePrefUI(doc);
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
// The IDs are the same, so I can reuse this for regular and in-content prefs
|
||||
function updatePrefUI(doc) {
|
||||
for (var id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disablePrivateBrowsing) {
|
||||
hide(E("privateBrowsingAutoStart", doc));
|
||||
var privateBrowsingMenu = doc.querySelector("menuitem[value='dontremember']");
|
||||
hide(privateBrowsingMenu, doc);
|
||||
}
|
||||
if (config.disableCrashReporter) {
|
||||
disable(E("submitCrashesBox", doc));
|
||||
}
|
||||
if (config.disableSync) {
|
||||
hide(E("noFxaAccount", doc));
|
||||
hide(E("hasFxaAccount", doc));
|
||||
}
|
||||
if (config.noMasterPassword == true) {
|
||||
hide(E("useMasterPassword", doc));
|
||||
hide(E("changeMasterPassword", doc));
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
// Don't use .hidden since it doesn't work sometimes
|
||||
var style = doc.getElementById("cck2-hidden-style");
|
||||
if (!style) {
|
||||
style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
|
||||
style.setAttribute("id", "cck2-hidden-style");
|
||||
style.setAttribute("type", "text/css");
|
||||
doc.documentElement.appendChild(style);
|
||||
}
|
||||
style.textContent = style.textContent + config.hiddenUI[i] + "{display: none !important;}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
|
||||
function disable(element) {
|
||||
if (element) {
|
||||
element.disabled = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Copied from https://github.com/jvillalobos/CTP-Manager/blob/master/extension/modules/permissions.js
|
||||
**/
|
||||
|
||||
/**
|
||||
* Copyright 2013 Jorge Villalobos
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var EXPORTED_SYMBOLS = ["CTP"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var CTP = {
|
||||
/**
|
||||
* Cleans up the plugin name to a more readable form.
|
||||
* Taken from /browser/base/content/pageinfo/permissions.js (Firefox 20)
|
||||
* @param aPluginName the name to clean up.
|
||||
* @return cleaned up plugin name.
|
||||
*/
|
||||
makeNicePluginName : function(aPluginName) {
|
||||
let newName =
|
||||
aPluginName.replace(/[\s\d\.\-\_\(\)]+$/, "").
|
||||
replace(/\bplug-?in\b/i, "").trim();
|
||||
|
||||
return newName;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the plugin permission string from the tag object. In Firefox 20, this
|
||||
* is the plugin filename. In 21 an above, the file extension is removed and
|
||||
* Flash and Java are special-cased.
|
||||
* @param aTag the tag object with the plugin information.
|
||||
* @return permission string that corresponds to the plugin in the tag.
|
||||
*/
|
||||
getPluginPermissionFromTag : function(aTag) {
|
||||
let permission = null;
|
||||
let majorVersion = Services.appinfo.platformVersion.split(".")[0];
|
||||
|
||||
if (21 <= majorVersion) {
|
||||
let mimeTypes = aTag.getMimeTypes();
|
||||
|
||||
if (CTP.isFlashPlugin(mimeTypes)) {
|
||||
permission = "flash";
|
||||
} else if (CTP.isJavaPlugin(mimeTypes)) {
|
||||
permission = "java";
|
||||
} else {
|
||||
let lastPeriod = aTag.filename.lastIndexOf(".");
|
||||
|
||||
permission =
|
||||
((0 < lastPeriod) ? aTag.filename.substring(0, lastPeriod) :
|
||||
aTag.filename);
|
||||
// Remove digits at the end
|
||||
permission = permission.replace(/[0-9]+$/, "");
|
||||
permission = permission.toLowerCase();
|
||||
}
|
||||
} else {
|
||||
permission = aTag.filename;
|
||||
}
|
||||
|
||||
return permission;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if the tag object corresponds to the Java plugin.
|
||||
* @param aMimeTypes the list of MIME types for the plugin.
|
||||
* @return true if the tag corresponds to the Java plugin.
|
||||
*/
|
||||
isJavaPlugin : function(aMimeTypes) {
|
||||
let isJava = false;
|
||||
let mimeType;
|
||||
|
||||
for (let i = 0; i < aMimeTypes.length; i++) {
|
||||
mimeType =
|
||||
((null != aMimeTypes[i].type) ? aMimeTypes[i].type : aMimeTypes[i]);
|
||||
|
||||
if ((0 == mimeType.indexOf("application/x-java-vm")) ||
|
||||
(0 == mimeType.indexOf("application/x-java-applet")) ||
|
||||
(0 == mimeType.indexOf("application/x-java-bean"))) {
|
||||
isJava = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isJava;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if the tag object corresponds to the Flash plugin.
|
||||
* @param aMimeTypes the list of MIME types for the plugin.
|
||||
* @return true if the tag corresponds to the Flash plugin.
|
||||
*/
|
||||
isFlashPlugin : function(aMimeTypes) {
|
||||
let isFlash = false;
|
||||
let mimeType;
|
||||
|
||||
for (let i = 0; i < aMimeTypes.length; i++) {
|
||||
mimeType =
|
||||
((null != aMimeTypes[i].type) ? aMimeTypes[i].type : aMimeTypes[i]);
|
||||
|
||||
if (0 == mimeType.indexOf("application/x-shockwave-flash")) {
|
||||
isFlash = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isFlash;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,629 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Preferences.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Mozilla.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Myk Melez <myk@mozilla.org>
|
||||
* Daniel Aquino <mr.danielaquino@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
let EXPORTED_SYMBOLS = ["Preferences"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cr = Components.results;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
// The minimum and maximum integers that can be set as preferences.
|
||||
// The range of valid values is narrower than the range of valid JS values
|
||||
// because the native preferences code treats integers as NSPR PRInt32s,
|
||||
// which are 32-bit signed integers on all platforms.
|
||||
const MAX_INT = Math.pow(2, 31) - 1;
|
||||
const MIN_INT = -MAX_INT;
|
||||
|
||||
function Preferences(args) {
|
||||
if (isObject(args)) {
|
||||
if (args.branch)
|
||||
this._prefBranch = args.branch;
|
||||
}
|
||||
else if (args)
|
||||
this._prefBranch = args;
|
||||
this.isDefaultBranch = false;
|
||||
}
|
||||
|
||||
Preferences.prototype = {
|
||||
/**
|
||||
* Get the value of a pref, if any; otherwise return the default value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to get, or an array of prefs to get
|
||||
*
|
||||
* @param defaultValue
|
||||
* the default value, if any, for prefs that don't have one
|
||||
*
|
||||
* @returns the value of the pref, if any; otherwise the default value
|
||||
*/
|
||||
get: function(prefName, defaultValue) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(v => this.get(v, defaultValue));
|
||||
|
||||
return this._get(prefName, defaultValue);
|
||||
},
|
||||
|
||||
// In all cases below, the preference might exist as a user pref, but not
|
||||
// have a default value. In those cases, get* throws. Return the default value.
|
||||
_get: function(prefName, defaultValue) {
|
||||
switch (this._prefSvc.getPrefType(prefName)) {
|
||||
case Ci.nsIPrefBranch.PREF_STRING:
|
||||
try {
|
||||
return this._prefSvc.getComplexValue(prefName, Ci.nsISupportsString).data;
|
||||
} catch (ex) {
|
||||
if (this.isDefaultBranch)
|
||||
return defaultValue;
|
||||
else
|
||||
return this._prefSvc.getCharPref(prefName);
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_INT:
|
||||
try {
|
||||
return this._prefSvc.getIntPref(prefName);
|
||||
} catch (ex) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_BOOL:
|
||||
try {
|
||||
return this._prefSvc.getBoolPref(prefName);
|
||||
} catch (ex) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
case Ci.nsIPrefBranch.PREF_INVALID:
|
||||
return defaultValue;
|
||||
|
||||
default:
|
||||
// This should never happen.
|
||||
throw "Error getting pref " + prefName + "; its value's type is " +
|
||||
this._prefSvc.getPrefType(prefName) + ", which I don't know " +
|
||||
"how to handle.";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Set a preference to a value.
|
||||
*
|
||||
* You can set multiple prefs by passing an object as the only parameter.
|
||||
* In that case, this method will treat the properties of the object
|
||||
* as preferences to set, where each property name is the name of a pref
|
||||
* and its corresponding property value is the value of the pref.
|
||||
*
|
||||
* @param prefName {String|Object}
|
||||
* the name of the pref to set; or an object containing a set
|
||||
* of prefs to set
|
||||
*
|
||||
* @param prefValue {String|Number|Boolean}
|
||||
* the value to which to set the pref
|
||||
*
|
||||
* Note: Preferences cannot store non-integer numbers or numbers outside
|
||||
* the signed 32-bit range -(2^31-1) to 2^31-1, If you have such a number,
|
||||
* store it as a string by calling toString() on the number before passing
|
||||
* it to this method, i.e.:
|
||||
* Preferences.set("pi", 3.14159.toString())
|
||||
* Preferences.set("big", Math.pow(2, 31).toString()).
|
||||
*/
|
||||
set: function(prefName, prefValue) {
|
||||
if (isObject(prefName)) {
|
||||
for (let [name, value] in Iterator(prefName))
|
||||
this.set(name, value);
|
||||
return;
|
||||
}
|
||||
|
||||
this._set(prefName, prefValue);
|
||||
},
|
||||
|
||||
_set: function(prefName, prefValue) {
|
||||
let prefType;
|
||||
if (typeof prefValue != "undefined" && prefValue != null)
|
||||
prefType = prefValue.constructor.name;
|
||||
|
||||
var existingPrefType = this._prefSvc.getPrefType(prefName);
|
||||
if (existingPrefType != Ci.nsIPrefBranch.PREF_INVALID)
|
||||
{
|
||||
// convert
|
||||
if (existingPrefType == Ci.nsIPrefBranch.PREF_INT && prefType == "String")
|
||||
{
|
||||
prefValue = parseInt(prefValue);
|
||||
if (isNaN(prefValue))
|
||||
throw "Incompatible pref value type - " + prefName;
|
||||
prefType = "Number";
|
||||
}
|
||||
else if (existingPrefType == Ci.nsIPrefBranch.PREF_BOOL && prefType == "String")
|
||||
{
|
||||
if (prefValue == "true")
|
||||
prefValue = true;
|
||||
else if (prefValue == "false")
|
||||
prefValue = false;
|
||||
else
|
||||
throw "Incompatible pref value type - " + prefName;
|
||||
prefType = "Boolean";
|
||||
}
|
||||
else if (existingPrefType == Ci.nsIPrefBranch.PREF_BOOL && prefType == "Number")
|
||||
{
|
||||
prefValue = prefValue != 0;
|
||||
prefType = "Boolean";
|
||||
}
|
||||
}
|
||||
|
||||
switch (prefType) {
|
||||
case "String":
|
||||
{
|
||||
try {
|
||||
this._prefSvc.setStringPref(prefName, prefValue);
|
||||
} catch (e) {
|
||||
try {
|
||||
let string = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
|
||||
string.data = prefValue;
|
||||
this._prefSvc.setComplexValue(prefName, Ci.nsISupportsString, string);
|
||||
} catch (e2) {
|
||||
Components.utils.reportError(e2);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "Number":
|
||||
// We throw if the number is outside the range, since the result
|
||||
// will never be what the consumer wanted to store, but we only warn
|
||||
// if the number is non-integer, since the consumer might not mind
|
||||
// the loss of precision.
|
||||
if (prefValue > MAX_INT || prefValue < MIN_INT)
|
||||
throw("you cannot set the " + prefName + " pref to the number " +
|
||||
prefValue + ", as number pref values must be in the signed " +
|
||||
"32-bit integer range -(2^31-1) to 2^31-1. To store numbers " +
|
||||
"outside that range, store them as strings.");
|
||||
try {
|
||||
this._prefSvc.setIntPref(prefName, prefValue);
|
||||
} catch (e) {
|
||||
throw new Error(e.toString() + " - " + prefName);
|
||||
}
|
||||
if (prefValue % 1 != 0)
|
||||
Cu.reportError("Warning: setting the " + prefName + " pref to the " +
|
||||
"non-integer number " + prefValue + " converted it " +
|
||||
"to the integer number " + this.get(prefName) +
|
||||
"; to retain fractional precision, store non-integer " +
|
||||
"numbers as strings.");
|
||||
break;
|
||||
|
||||
case "Boolean":
|
||||
this._prefSvc.setBoolPref(prefName, prefValue);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw "can't set pref " + prefName + " to value '" + prefValue +
|
||||
"'; it isn't a String, Number, or Boolean";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a value. This is different from isSet
|
||||
* because it returns true whether the value of the pref is a default value
|
||||
* or a user-set value, while isSet only returns true if the value
|
||||
* is a user-set value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref has a value; or, if the caller provided
|
||||
* an array of pref names, an array of booleans indicating whether
|
||||
* or not the prefs have values
|
||||
*/
|
||||
has: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.has, this);
|
||||
|
||||
return this._has(prefName);
|
||||
},
|
||||
|
||||
_has: function(prefName) {
|
||||
return (this._prefSvc.getPrefType(prefName) != Ci.nsIPrefBranch.PREF_INVALID);
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a user-set value. This is different
|
||||
* from |has| because it returns true only if the value of the pref is a user-
|
||||
* set value, while |has| returns true if the value of the pref is a default
|
||||
* value or a user-set value.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref has a user-set value; or, if the caller
|
||||
* provided an array of pref names, an array of booleans indicating
|
||||
* whether or not the prefs have user-set values
|
||||
*/
|
||||
isSet: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.isSet, this);
|
||||
|
||||
return (this.has(prefName) && this._prefSvc.prefHasUserValue(prefName));
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref has a user-set value. Use isSet instead,
|
||||
* which is equivalent.
|
||||
* @deprecated
|
||||
*/
|
||||
modified: function(prefName) { return this.isSet(prefName) },
|
||||
|
||||
reset: function(prefName) {
|
||||
if (isArray(prefName)) {
|
||||
prefName.map(v => this.reset(v));
|
||||
return;
|
||||
}
|
||||
|
||||
this._reset(prefName);
|
||||
},
|
||||
|
||||
_reset: function(prefName) {
|
||||
try {
|
||||
this._prefSvc.clearUserPref(prefName);
|
||||
}
|
||||
catch(ex) {
|
||||
// The pref service throws NS_ERROR_UNEXPECTED when the caller tries
|
||||
// to reset a pref that doesn't exist or is already set to its default
|
||||
// value. This interface fails silently in those cases, so callers
|
||||
// can unconditionally reset a pref without having to check if it needs
|
||||
// resetting first or trap exceptions after the fact. It passes through
|
||||
// other exceptions, however, so callers know about them, since we don't
|
||||
// know what other exceptions might be thrown and what they might mean.
|
||||
if (ex.result != Cr.NS_ERROR_UNEXPECTED)
|
||||
throw ex;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* If you need to know the default values, without resetting the actual
|
||||
* user prefs, you can use this.
|
||||
* @returns {Preferences} a new Preferences object, which accesses
|
||||
* the defaults rather than the user prefs.
|
||||
* *Only* call get() on this.
|
||||
* If you call set(), you will modify the defaults, so don't do that!
|
||||
*/
|
||||
get defaults() {
|
||||
// nsIPrefService
|
||||
let defaultBranch = Services.prefs.
|
||||
getDefaultBranch(this._prefBranch).
|
||||
QueryInterface(Ci.nsIPrefBranch);
|
||||
let prefs = new Preferences(this._prefBranch);
|
||||
// override. nasty, but this is internal, so OK.
|
||||
Object.defineProperty(prefs, "_prefSvc", {
|
||||
get: function() {
|
||||
return defaultBranch;
|
||||
}
|
||||
});
|
||||
prefs.isDefaultBranch = true;
|
||||
return prefs;
|
||||
},
|
||||
|
||||
/**
|
||||
* Lock a pref so it can't be changed.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to lock, or an array of prefs to lock
|
||||
* @param prefValue {String} (optional)
|
||||
* default value of pref to lock only works if prefName isn't an array
|
||||
*/
|
||||
lock: function(prefName, prefValue) {
|
||||
if (isArray(prefName))
|
||||
prefName.map(this.lock, this);
|
||||
else if (typeof prefValue != "undefined")
|
||||
this.defaults.set(prefName, prefValue);
|
||||
|
||||
this._prefSvc.lockPref(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Unlock a pref so it can be changed.
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to lock, or an array of prefs to lock
|
||||
*/
|
||||
unlock: function(prefName) {
|
||||
if (isArray(prefName))
|
||||
prefName.map(this.unlock, this);
|
||||
|
||||
this._prefSvc.unlockPref(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether or not the given pref is locked against changes and
|
||||
* if it is set to the passedi n value
|
||||
*
|
||||
* @param prefName {String|Array}
|
||||
* the pref to check, or an array of prefs to check
|
||||
* @param prefValue {String|Number|Boolean}}
|
||||
* the pref value to compare against
|
||||
*
|
||||
* @returns {Boolean|Array}
|
||||
* whether or not the pref is locked; or, if the caller
|
||||
* provided an array of pref names, an array of booleans indicating
|
||||
* whether or not the prefs are locked
|
||||
* If a pref value was specified returns whether or not the pref
|
||||
* was locked and equal to the passed in value.
|
||||
*/
|
||||
locked: function(prefName, prefValue) {
|
||||
if (isArray(prefName))
|
||||
return prefName.map(this.locked, this);
|
||||
|
||||
if (prefValue)
|
||||
return this._prefSvc.prefIsLocked(prefName) && (this.get(prefName) == prefValue);
|
||||
else
|
||||
return this._prefSvc.prefIsLocked(prefName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Start observing a pref.
|
||||
*
|
||||
* The callback can be a function or any object that implements nsIObserver.
|
||||
* When the callback is a function and thisObject is provided, it gets called
|
||||
* as a method of thisObject.
|
||||
*
|
||||
* @param prefName {String}
|
||||
* the name of the pref to observe
|
||||
*
|
||||
* @param callback {Function|Object}
|
||||
* the code to notify when the pref changes;
|
||||
*
|
||||
* @param thisObject {Object} [optional]
|
||||
* the object to use as |this| when calling a Function callback;
|
||||
*
|
||||
* @returns the wrapped observer
|
||||
*/
|
||||
observe: function(prefName, callback, thisObject) {
|
||||
let fullPrefName = this._prefBranch + (prefName || "");
|
||||
|
||||
let observer = new PrefObserver(fullPrefName, callback, thisObject);
|
||||
Preferences._prefSvc.addObserver(fullPrefName, observer, true);
|
||||
observers.push(observer);
|
||||
|
||||
return observer;
|
||||
},
|
||||
|
||||
/**
|
||||
* Stop observing a pref.
|
||||
*
|
||||
* You must call this method with the same prefName, callback, and thisObject
|
||||
* with which you originally registered the observer. However, you don't have
|
||||
* to call this method on the same exact instance of Preferences; you can call
|
||||
* it on any instance. For example, the following code first starts and then
|
||||
* stops observing the "foo.bar.baz" preference:
|
||||
*
|
||||
* let observer = function() {...};
|
||||
* Preferences.observe("foo.bar.baz", observer);
|
||||
* new Preferences("foo.bar.").ignore("baz", observer);
|
||||
*
|
||||
* @param prefName {String}
|
||||
* the name of the pref being observed
|
||||
*
|
||||
* @param callback {Function|Object}
|
||||
* the code being notified when the pref changes
|
||||
*
|
||||
* @param thisObject {Object} [optional]
|
||||
* the object being used as |this| when calling a Function callback
|
||||
*/
|
||||
ignore: function(prefName, callback, thisObject) {
|
||||
let fullPrefName = this._prefBranch + (prefName || "");
|
||||
|
||||
// This seems fairly inefficient, but I'm not sure how much better we can
|
||||
// make it. We could index by fullBranch, but we can't index by callback
|
||||
// or thisObject, as far as I know, since the keys to JavaScript hashes
|
||||
// (a.k.a. objects) can apparently only be primitive values.
|
||||
let [observer] = observers.filter(v => v.prefName == fullPrefName &&
|
||||
v.callback == callback &&
|
||||
v.thisObject == thisObject);
|
||||
|
||||
if (observer) {
|
||||
Preferences._prefSvc.removeObserver(fullPrefName, observer);
|
||||
observers.splice(observers.indexOf(observer), 1);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Same as observe(), but automatically unregisters itself when
|
||||
* the window closes, saving you from writing an unload handler and
|
||||
* calling ignore().
|
||||
* @param win {nsIDOMWindow} your |window|
|
||||
*/
|
||||
observeAuto: function(win, prefName, callback, thisObject) {
|
||||
if (!win instanceof Ci.nsIDOMWindow)
|
||||
throw "Need your |window| as first parameter";
|
||||
this.observe(prefName, callback, thisObject);
|
||||
var self = this;
|
||||
win.addEventListener("unload", function()
|
||||
{
|
||||
self.ignore(prefName, callback, thisObject);
|
||||
}, false);
|
||||
win = null; // don't let closure hold on to window unnecessarily
|
||||
},
|
||||
|
||||
resetBranch: function(prefBranch) {
|
||||
try {
|
||||
this._prefSvc.resetBranch(prefBranch);
|
||||
}
|
||||
catch(ex) {
|
||||
// The current implementation of nsIPrefBranch in Mozilla
|
||||
// doesn't implement resetBranch, so we do it ourselves.
|
||||
if (ex.result == Cr.NS_ERROR_NOT_IMPLEMENTED)
|
||||
this.reset(this._prefSvc.getChildList(prefBranch, []));
|
||||
else
|
||||
throw ex;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns all child prefs of this pref branch.
|
||||
* This equals nsIPrefBranch.getChildList().
|
||||
* This allows you to do e.g.
|
||||
* var myPrefs = new Preferences("extensions.cooler.");
|
||||
* var contents = myPrefs.branch("contents.");
|
||||
* for each (let prefname in contents.childPrefNames())
|
||||
* dump("have " + contents.get(prefname) + " " + prefname + "\n");
|
||||
*
|
||||
* @returns {Array of String} The names of the children,
|
||||
* without the base pref branch, but with subbranch.
|
||||
*/
|
||||
childPrefNames : function() {
|
||||
return this._prefSvc.getChildList("", []);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an nsIPrefBranch for the pref branch that this object stands for.
|
||||
* You can use this to use functions that are not supported here.
|
||||
* @returns {nsIPrefBranch}
|
||||
*/
|
||||
get mozillaPrefBranch() {
|
||||
return this._prefSvc;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the base pref name that this object stands for.
|
||||
* E.g. "extensions.yourcooler.";
|
||||
* @returns {String}
|
||||
*/
|
||||
get prefBranchName() {
|
||||
return this._prefBranch;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an Preferences object for an sub pref branch
|
||||
* underneath the current pref branch.
|
||||
* @param subbranch {String} Will be appended to the
|
||||
* current pref branch. Don't forget the trailing dot,
|
||||
* where necessary.
|
||||
* E.g. "contents."
|
||||
* @returns {Preferences}
|
||||
*/
|
||||
branch : function(subbranch) {
|
||||
return new Preferences(this._prefBranch + subbranch);
|
||||
},
|
||||
|
||||
/**
|
||||
* The branch of the preferences tree to which this instance provides access.
|
||||
* @private
|
||||
*/
|
||||
_prefBranch: "",
|
||||
|
||||
/**
|
||||
* Preferences Service
|
||||
* @private
|
||||
*/
|
||||
get _prefSvc() {
|
||||
// nsIPrefService
|
||||
let prefSvc = Services.prefs.
|
||||
getBranch(this._prefBranch).
|
||||
QueryInterface(Ci.nsIPrefBranch);
|
||||
Object.defineProperty(this, "_prefSvc", {
|
||||
get: function() {
|
||||
return prefSvc;
|
||||
}
|
||||
});
|
||||
return this._prefSvc;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Give the constructor the same prototype as its instances, so users can access
|
||||
// preferences directly via the constructor without having to create an instance
|
||||
// first.
|
||||
Preferences.__proto__ = Preferences.prototype;
|
||||
|
||||
/**
|
||||
* A cache of pref observers.
|
||||
*
|
||||
* We use this to remove observers when a caller calls Preferences::ignore.
|
||||
*
|
||||
* All Preferences instances share this object, because we want callers to be
|
||||
* able to remove an observer using a different Preferences object than the one
|
||||
* with which they added it. That means we have to identify the observers
|
||||
* in this object by their complete pref name, not just their name relative to
|
||||
* the root branch of the Preferences object with which they were created.
|
||||
*/
|
||||
let observers = [];
|
||||
|
||||
function PrefObserver(prefName, callback, thisObject) {
|
||||
this.prefName = prefName;
|
||||
this.callback = callback;
|
||||
this.thisObject = thisObject;
|
||||
}
|
||||
|
||||
PrefObserver.prototype = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
||||
|
||||
observe: function(subject, topic, data) {
|
||||
// The pref service only observes whole branches, but we only observe
|
||||
// individual preferences, so we check here that the pref that changed
|
||||
// is the exact one we're observing (and not some sub-pref on the branch).
|
||||
if (data != this.prefName)
|
||||
return;
|
||||
|
||||
if (typeof this.callback == "function") {
|
||||
let prefValue = Preferences.get(this.prefName);
|
||||
|
||||
if (this.thisObject)
|
||||
this.callback.call(this.thisObject, prefValue);
|
||||
else
|
||||
this.callback(prefValue);
|
||||
}
|
||||
else // typeof this.callback == "object" (nsIObserver)
|
||||
this.callback.observe(subject, topic, data);
|
||||
}
|
||||
};
|
||||
|
||||
function isArray(val) {
|
||||
// We can't check for |val.constructor == Array| here, since the value
|
||||
// might be from a different context whose Array constructor is not the same
|
||||
// as ours, so instead we match based on the name of the constructor.
|
||||
return (typeof val != "undefined" && val != null && typeof val == "object" &&
|
||||
val.constructor.name == "Array");
|
||||
}
|
||||
|
||||
function isObject(val) {
|
||||
// We can't check for |val.constructor == Object| here, since the value
|
||||
// might be from a different context whose Object constructor is not the same
|
||||
// as ours, so instead we match based on the name of the constructor.
|
||||
return (typeof val != "undefined" && val != null && typeof val == "object" &&
|
||||
val.constructor.name == "Object");
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* JS module implementation of nsIDOMJSWindow.setTimeout and clearTimeout.
|
||||
*/
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["setTimeout", "clearTimeout"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
// This gives us >=2^30 unique timer IDs, enough for 1 per ms for 12.4 days.
|
||||
let gNextTimeoutId = 1; // setTimeout must return a positive integer
|
||||
|
||||
let gTimeoutTable = new Map(); // int -> nsITimer
|
||||
|
||||
this.setTimeout = function setTimeout(aCallback, aMilliseconds) {
|
||||
let id = gNextTimeoutId++;
|
||||
let args = Array.slice(arguments, 2);
|
||||
let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
timer.initWithCallback(function setTimeout_timer() {
|
||||
gTimeoutTable.delete(id);
|
||||
aCallback.apply(null, args);
|
||||
}, aMilliseconds, timer.TYPE_ONE_SHOT);
|
||||
|
||||
gTimeoutTable.set(id, timer);
|
||||
return id;
|
||||
}
|
||||
|
||||
this.clearTimeout = function clearTimeout(aId) {
|
||||
if (gTimeoutTable.has(aId)) {
|
||||
gTimeoutTable.get(aId).cancel();
|
||||
gTimeoutTable.delete(aId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
var EXPORTED_SYMBOLS = ["errorCritical"];
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
function errorCritical(e)
|
||||
{
|
||||
Services.prompt.alert(null, "", e);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID9zCCAt+gAwIBAgIUervWv7EoWkk4Gt8J34xDR9nhH50wDQYJKoZIhvcNAQEL
|
||||
BQAwgYIxCzAJBgNVBAYTAldXMRQwEgYDVQQIDAtJMlAgTmV0d29yazESMBAGA1UE
|
||||
CgwJUHVycGxlSTJQMSowKAYDVQQDDCFQdXJwbGVJMlAgQ2VydGlmaWNhdGlvbiBB
|
||||
dXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDnI0c2FzQG1haWwuaTJwMB4XDTE5MDMw
|
||||
MzE2MjcxNFoXDTI5MDIyODE2MjcxNFowgYIxCzAJBgNVBAYTAldXMRQwEgYDVQQI
|
||||
DAtJMlAgTmV0d29yazESMBAGA1UECgwJUHVycGxlSTJQMSowKAYDVQQDDCFQdXJw
|
||||
bGVJMlAgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHTAbBgkqhkiG9w0BCQEWDnI0
|
||||
c2FzQG1haWwuaTJwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwLEy
|
||||
A0TamzrfORA+aIM/NRRGrKYkI9o5Q9UB/pTM8IFlSBREGleUfnC6LFHZeNV+Y1Tn
|
||||
jrMBOZ7PmIKjPIv+fJP7KjhHACZdk6iqVZqkiGqE0/V17kG16g1+g05Bj2lkWr94
|
||||
mp1rhzBeKJJSI8cG82824qdfDcgWZheziye+O0okENhi0o2bDhg78EnyysJiN/tu
|
||||
OuoZSGfC9ZdITbpMWgqwuQcdeBg0FNy4hEqUJWoYNgrghe5uc0WMOjTAegSntYPE
|
||||
MeaaZyzlGICZ2F+rKZgTjnzVYW60QlHqfg7sShieSPYIZmeN5l5hZ5GZk9Giaj/X
|
||||
4pz4sup2iafKclWAmQIDAQABo2MwYTAdBgNVHQ4EFgQUCARvpDaXqPaF4amObzzV
|
||||
GaDoZm4wHwYDVR0jBBgwFoAUCARvpDaXqPaF4amObzzVGaDoZm4wDwYDVR0TBAgw
|
||||
BgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKcmGUXV
|
||||
gCw8PRHe0+XlkcSTX69e0TIPP+j5uJxMT3BHasvBdyV4FcjuUokHGjAnHal5OV4N
|
||||
yWdbRPnIge7su4yLQZzlNM1OzbcRds1wSbqTEpb68R/6E8mv3ms6Rc8AcRoXwusc
|
||||
byZvzS9tBSXTQ21wCVrltnIARAYabWlWu+URv+DFvlwMik6H8+DklHSVkPC6K3Ov
|
||||
V1aMJztMnJ/XTTsFDS/yvaTfmJFG16LABIiSsEAW5QK64sWsN4sxvpcg0D6/EjWP
|
||||
knyLM4KXuD3i08mzwzus8d97AjGxC5RCEFL5ADBpVaDU/5CpmZmZdY1daYjiHrXm
|
||||
EVNoSbqid1fAVyA=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,10 +1,8 @@
|
||||
// I2Pd Browser preferences
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
*
|
||||
* Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
* This file is part of Purple i2pd project and licensed under BSD3
|
||||
*
|
||||
* See full license text in LICENSE file at top of project tree
|
||||
*/
|
||||
|
||||
@@ -18,49 +16,40 @@
|
||||
*/
|
||||
|
||||
lockPref("accessibility.force_disabled", 1);
|
||||
pref("app.normandy.first_run", false);
|
||||
defaultPref("app.normandy.first_run", false);
|
||||
lockPref("app.update.auto", false);
|
||||
lockPref("app.update.channel", "no");
|
||||
lockPref("app.update.channel", "i2pdbrowser");
|
||||
lockPref("app.update.enabled", false);
|
||||
lockPref("app.update.interval", 0);
|
||||
lockPref("app.update.service.enabled", false);
|
||||
pref("app.update.staging.enabled", false);
|
||||
pref("app.update.timer", 0);
|
||||
defaultPref("beacon.enabled", false);
|
||||
pref("breakpad.reportURL", "");
|
||||
pref("browser.aboutHomeSnippets.updateUrl", "");
|
||||
defaultPref("browser.cache.disk.capacity", 131072);
|
||||
defaultPref("browser.cache.offline.enable", false);
|
||||
defaultPref("browser.casting.enabled", false);
|
||||
pref("browser.crashReports.unsubmittedCheck.enabled", false);
|
||||
// pref("browser.display.use_document_fonts", 0);
|
||||
pref("browser.download.manager.retention", 0);
|
||||
defaultPref("browser.download.useDownloadDir", false);
|
||||
defaultPref("browser.feeds.showFirstRunUI", false);
|
||||
defaultPref("browser.fixup.alternate.enabled", false);
|
||||
pref("browser.fixup.hide_user_pass", true);
|
||||
defaultPref("browser.formfill.enable", false);
|
||||
// PREF: Delete Search and Form History
|
||||
defaultPref("browser.formfill.expire_days", 0);
|
||||
// PREF: Delete temporary files on exit
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
lockPref("browser.newtabpage.activity-stream.default.sites", "http://i2pd.i2p/,http://333.i2p/,http://inr.i2p/,http://102chan.i2p/,http://flibusta.i2p/,http://fsoc.i2p/,http://lifebox.i2p/,http://onelon.i2p/,http://wiki.ilita.i2p/");
|
||||
lockPref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
|
||||
lockPref("browser.newtabpage.activity-stream.feeds.snippets", false);
|
||||
lockPref("browser.newtabpage.activity-stream.showSearch", false);
|
||||
defaultPref("browser.newtabpage.activity-stream.showSearch", true);
|
||||
lockPref("browser.newtabpage.activity-stream.telemetry", false);
|
||||
pref("browser.newtabpage.activity-stream.topSitesRows", 2);
|
||||
pref("browser.newtabpage.enhanced", false);
|
||||
defaultPref("browser.newtabpage.introShown", true);
|
||||
pref("browser.newtabpage.introShown", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-addons.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-customize.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-default-browser.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-performance.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-private-browsing.completed", true);
|
||||
defaultPref("browser.onboarding.tour.onboarding-tour-screenshots.completed", true);
|
||||
// PREF: Do not create screenshots of visited pages
|
||||
pref("browser.pagethumbnails.capturing_disabled", true);
|
||||
pref("browser.places.smartBookmarksVersion", -1);
|
||||
defaultPref("browser.pocket.enabled", false);
|
||||
pref("browser.pocket.useLocaleList", false);
|
||||
defaultPref("browser.pagethumbnails.capturing_disabled", true);
|
||||
defaultPref("browser.places.smartBookmarksVersion", -1);
|
||||
pref("browser.reader.detectedFirstArticle", false);
|
||||
pref("browser.rights.3.shown", true);
|
||||
defaultPref("browser.safebrowsing.appRepURL", "");
|
||||
@@ -89,32 +78,31 @@ defaultPref("browser.safebrowsing.reportURL", "");
|
||||
defaultPref("browser.safebrowsing.updateURL", "");
|
||||
defaultPref("browser.safebrowsing.warning.infoURL", "");
|
||||
defaultPref("browser.search.countryCode", "US");
|
||||
defaultPref("browser.search.defaultenginename", "DuckDuckGo");
|
||||
defaultPref("browser.search.defaultenginename", "YaCy 'legwork'");
|
||||
defaultPref("browser.search.geoSpecificDefaults", false);
|
||||
defaultPref("browser.search.geoSpecificDefaults.url", "");
|
||||
defaultPref("browser.search.geoip.url", "");
|
||||
defaultPref("browser.search.order.1", "DuckDuckGo");
|
||||
defaultPref("browser.search.hiddenOneOffs", "Amazon.com,Bing,DuckDuckGo,eBay,Google,Twitter,Wikipedia (en)");
|
||||
defaultPref("browser.search.official", false);
|
||||
defaultPref("browser.search.order.1", "YaCy 'legwork'");
|
||||
defaultPref("browser.search.redirectWindowsSearch", false);
|
||||
defaultPref("browser.search.region", "US");
|
||||
defaultPref("browser.search.searchEnginesURL", "");
|
||||
defaultPref("browser.search.suggest.enabled", false);
|
||||
defaultPref("browser.search.update", false);
|
||||
pref("browser.send_pings", false);
|
||||
pref("browser.search.widget.inNavBar", true);
|
||||
lockPref("browser.send_pings", false);
|
||||
pref("browser.send_pings.require_same_host", true);
|
||||
pref("browser.selfsupport.url", "");
|
||||
defaultPref("browser.shell.checkDefaultBrowser", false);
|
||||
//defaultPref("browser.startup.firstrunSkipsHomepage", false);
|
||||
pref("browser.startup.homepage", "http://i2pd.i2p/");
|
||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||
defaultPref("browser.tabs.closeWindowWithLastTab", false);
|
||||
lockPref("browser.tabs.crashReporting.sendReport", false);
|
||||
pref("browser.tabs.loadInBackground", true);
|
||||
defaultPref("browser.uitour.enabled", false);
|
||||
pref("browser.urlbar.filter.javascript", true);
|
||||
pref("browser.urlbar.formatting.enabled", false);
|
||||
pref("browser.urlbar.maxRichResults", 12);
|
||||
// pref("browser.urlbar.suggest.history", false);
|
||||
defaultPref("browser.urlbar.formatting.enabled", false);
|
||||
defaultPref("browser.urlbar.maxRichResults", 12);
|
||||
defaultPref("browser.urlbar.speculativeConnect.enabled", false);
|
||||
defaultPref("browser.urlbar.suggest.searches", false);
|
||||
pref("browser.urlbar.trimURLs", false);
|
||||
defaultPref("browser.urlbar.trimURLs", false);
|
||||
lockPref("browser.usedOnWindows10", false);
|
||||
lockPref("browser.usedOnWindows10.introURL", "");
|
||||
lockPref("camera.control.face_detection.enabled", false);
|
||||
@@ -126,27 +114,20 @@ defaultPref("datareporting.healthreport.documentServerURI", "");
|
||||
defaultPref("datareporting.healthreport.pendingDeleteRemoteData", true);
|
||||
lockPref("datareporting.healthreport.service.enabled", false);
|
||||
defaultPref("datareporting.healthreport.service.firstRun", false);
|
||||
defaultPref("datareporting.healthreport.uploadEnabled", false);
|
||||
lockPref("datareporting.healthreport.uploadEnabled", false);
|
||||
pref("datareporting.policy.dataSubmissionEnabled", false);
|
||||
pref("datareporting.policy.dataSubmissionEnabled.v2", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyAccepted", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyBypassAcceptance", false);
|
||||
pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "0");
|
||||
pref("datareporting.policy.dataSubmissionPolicyResponseType", "accepted-info-bar-dismissed");
|
||||
pref("datareporting.policy.dataSubmissionPolicyResponseTime", "0");
|
||||
pref("datareporting.policy.firstRunTime", "0");
|
||||
pref("datareporting.sessions.current.clean", true);
|
||||
pref("device.sensors.enabled", false);
|
||||
pref("devtools.chrome.enabled", false);
|
||||
pref("devtools.debugger.remote-enabled", false);
|
||||
pref("devtools.debugger.force-local", true);
|
||||
pref("devtools.webide.enabled", false);
|
||||
pref("devtools.debugger.remote-enabled", false);
|
||||
pref("devtools.webide.autoinstallADBHelper", false);
|
||||
pref("devtools.webide.autoinstallFxdtAdapters", false);
|
||||
pref("devtools.webide.enabled", false);
|
||||
pref("dom.allow_cut_copy", false);
|
||||
pref("dom.archivereader.enabled", false);
|
||||
pref("dom.battery.enabled", false);
|
||||
pref("dom.disable_open_during_load", true);
|
||||
pref("dom.enable_performance", false);
|
||||
pref("dom.enable_user_timing", false);
|
||||
pref("dom.event.clipboardevents.enabled", false);
|
||||
@@ -154,208 +135,239 @@ pref("dom.flyweb.enabled", false);
|
||||
pref("dom.gamepad.enabled", false);
|
||||
pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);
|
||||
pref("dom.ipc.plugins.reportCrashURL", false);
|
||||
// pref("dom.indexedDB.enabled", false);
|
||||
pref("dom.maxHardwareConcurrency", 2);
|
||||
pref("dom.mozTCPSocket.enabled", false);
|
||||
pref("dom.netinfo.enabled", false);
|
||||
pref("dom.network.enabled", false);
|
||||
pref("dom.serviceWorkers.enabled", false);
|
||||
pref("dom.telephony.enabled", false);
|
||||
pref("dom.vibrator.enabled", false);
|
||||
pref("dom.vr.enabled", false);
|
||||
pref("dom.webaudio.enabled", false);
|
||||
pref("dom.webnotifications.enabled", false);
|
||||
pref("dom.workers.enabled", false);
|
||||
pref("experiments.supported", false);
|
||||
pref("experiments.enabled", false);
|
||||
pref("experiments.manifest.uri", "");
|
||||
pref("experiments.supported", false);
|
||||
pref("extensions.autoDisableScopes", 0);
|
||||
pref("extensions.blocklist.enabled", false);
|
||||
pref("extensions.blocklist.url", "");
|
||||
pref("extensions.getAddons.cache.enabled", false);
|
||||
pref("extensions.getAddons.showPane", false);
|
||||
pref("extensions.lazarus.showDonateNotification", false);
|
||||
pref("extensions.pocket.enabled", false);
|
||||
lockPref("extensions.pocket.enabled", false);
|
||||
pref("extensions.shownSelectionUI", true);
|
||||
pref("extensions.ui.lastCategory", "addons://list/extension");
|
||||
pref("extensions.update.autoUpdateDefault", false);
|
||||
defaultPref("extensions.update.enabled", false);
|
||||
pref("full-screen-api.approval-required", false);
|
||||
pref("full-screen-api.warning.timeout", 0);
|
||||
pref("general.buildID.override", "19700101");
|
||||
pref("general.buildID.override", "20100101");
|
||||
lockPref("general.platform.override", "Win32");
|
||||
lockPref("general.useragent.locale", "en-US");
|
||||
lockPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0");
|
||||
pref("general.warnOnAboutConfig", false);
|
||||
defaultPref("geo.enabled", false);
|
||||
defaultPref("geo.wifi.uri", "");
|
||||
lockPref("geo.wifi.logging.enabled", false);
|
||||
// pref("gfx.font_rendering.opentype_svg.enabled", false);
|
||||
defaultPref("geo.wifi.uri", "");
|
||||
lockPref("identity.fxaccounts.enabled", false);
|
||||
defaultPref("intl.locale.matchOS", true);
|
||||
// pref("javascript.options.asmjs", false);
|
||||
pref("javascript.use_us_english_locale", true);
|
||||
pref("keyword.enabled", false);
|
||||
pref("lightweightThemes.update.enabled", false);
|
||||
pref("loop.logDomains", false);
|
||||
defaultPref("media.eme.enabled", false);
|
||||
defaultPref("media.getusermedia.screensharing.enabled", false);
|
||||
defaultPref("media.getusermedia.audiocapture.enabled", false);
|
||||
lockPref("media.getusermedia.audiocapture.enabled", false);
|
||||
lockPref("media.getusermedia.screensharing.enabled", false);
|
||||
pref("media.gmp-eme-adobe.enabled", false);
|
||||
pref("media.gmp-gmpopenh264.enabled", false);
|
||||
pref("media.gmp-gmpopenh264.provider.enabled", false);
|
||||
pref("media.gmp-manager.url", "");
|
||||
// pref("media.gmp-provider.enabled", false);
|
||||
defaultPref("media.navigator.enabled", false);
|
||||
defaultPref("media.navigator.video.enabled", false);
|
||||
defaultPref("media.peerconnection.enabled", false);
|
||||
defaultPref("media.peerconnection.ice.default_address_only", true);
|
||||
defaultPref("media.peerconnection.ice.no_host", true);
|
||||
defaultPref("media.peerconnection.identity.timeout", 1);
|
||||
defaultPref("media.peerconnection.turn.disable", true);
|
||||
defaultPref("media.peerconnection.use_document_iceservers", false);
|
||||
defaultPref("media.video_stats.enabled", false);
|
||||
defaultPref("media.webspeech.recognition.enable", false);
|
||||
defaultPref("media.webspeech.synth.enabled", false);
|
||||
pref("network.allow-experiments", false);
|
||||
// pref("network.cookie.cookieBehavior", 1);
|
||||
// PREF: Cookies expires at the end of the session (when the browser closes)
|
||||
// pref("network.cookie.lifetimePolicy", 2);
|
||||
defaultPref("network.IDN.whitelist.i2p", true);
|
||||
defaultPref("network.IDN_show_punycode", true);
|
||||
defaultPref("network.allow-experiments", false);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
// pref("network.cookie.thirdparty.sessionOnly", true);
|
||||
// pref("network.dns.blockDotOnion", true);
|
||||
defaultPref("network.dns.disableIPv6", true);
|
||||
defaultPref("network.dns.disableprefetch", true);
|
||||
defaultPref("network.dns.disableprefetchFromHTTPS", true);
|
||||
defaultPref("network.dns.disablePrefetch", true);
|
||||
defaultPref("network.dns.disablePrefetchFromHTTPS", true);
|
||||
// pref("network.http.referer.spoofSource", true);
|
||||
// pref("network.http.referer.XOriginPolicy", 2);
|
||||
defaultPref("network.dns.disableprefetch", true);
|
||||
pref("network.http.speculative-parallel-limit", 0);
|
||||
pref("network.IDN_show_punycode", true);
|
||||
pref("network.jar.open-unsafe-types", false);
|
||||
defaultPref("network.jar.open-unsafe-types", false);
|
||||
pref("network.manage-offline-status", false);
|
||||
pref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
defaultPref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
pref("network.predictor.enabled", false);
|
||||
defaultPref("network.prefetch-next", false);
|
||||
pref("network.protocol-handler.warn-external-default", true);
|
||||
pref("network.protocol-handler.external.http", false);
|
||||
pref("network.protocol-handler.external.https", false);
|
||||
pref("network.protocol-handler.external.javascript", false);
|
||||
pref("network.protocol-handler.external.moz-extension", false);
|
||||
pref("network.protocol-handler.external.ftp", false);
|
||||
pref("network.protocol-handler.external.file", false);
|
||||
pref("network.protocol-handler.external.about", false);
|
||||
pref("network.protocol-handler.expose-all", false);
|
||||
pref("network.protocol-handler.expose.about", true);
|
||||
pref("network.protocol-handler.expose.file", true);
|
||||
pref("network.protocol-handler.expose.ftp", true);
|
||||
pref("network.protocol-handler.expose.http", true);
|
||||
pref("network.protocol-handler.expose.https", true);
|
||||
pref("network.protocol-handler.expose.javascript", true);
|
||||
pref("network.protocol-handler.expose.moz-extension", true);
|
||||
pref("network.protocol-handler.expose.ftp", true);
|
||||
pref("network.protocol-handler.expose.file", true);
|
||||
pref("network.protocol-handler.expose.about", true);
|
||||
lockPref("network.proxy.backup.ftp", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.ftp_port", 4444);
|
||||
lockPref("network.proxy.backup.socks", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.socks_port", 4444);
|
||||
lockPref("network.proxy.backup.ssl", "127.0.0.1");
|
||||
lockPref("network.proxy.backup.ssl_port", 4444);
|
||||
lockPref("network.proxy.ftp", "127.0.0.1");
|
||||
lockPref("network.proxy.ftp_port", 4444);
|
||||
lockPref("network.proxy.http", "127.0.0.1");
|
||||
lockPref("network.proxy.http_port", 4444);
|
||||
lockPref("network.proxy.share_proxy_settings", true);
|
||||
lockPref("network.proxy.socks", "127.0.0.1");
|
||||
lockPref("network.proxy.socks_port", 4444);
|
||||
lockPref("network.proxy.socks_remote_dns", true);
|
||||
lockPref("network.proxy.ssl", "127.0.0.1");
|
||||
lockPref("network.proxy.ssl_port", 4444);
|
||||
pref("network.protocol-handler.external.about", false);
|
||||
pref("network.protocol-handler.external.file", false);
|
||||
pref("network.protocol-handler.external.ftp", false);
|
||||
pref("network.protocol-handler.external.http", false);
|
||||
pref("network.protocol-handler.external.https", false);
|
||||
pref("network.protocol-handler.external.javascript", false);
|
||||
pref("network.protocol-handler.external.moz-extension", false);
|
||||
defaultPref("network.protocol-handler.warn-external-default", true);
|
||||
defaultPref("network.proxy.ftp", "127.0.0.1");
|
||||
defaultPref("network.proxy.ftp_port", 4444);
|
||||
defaultPref("network.proxy.http", "127.0.0.1");
|
||||
defaultPref("network.proxy.http_port", 4444);
|
||||
defaultPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
|
||||
defaultPref("network.proxy.share_proxy_settings", true);
|
||||
defaultPref("network.proxy.socks_remote_dns", true);
|
||||
defaultPref("network.proxy.ssl", "127.0.0.1");
|
||||
defaultPref("network.proxy.ssl_port", 4444);
|
||||
lockPref("network.proxy.type", 1);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
pref("pdfjs.disabled", true);
|
||||
pref("pdfjs.enableWebGL", false);
|
||||
defaultPref("pdfjs.disabled", true);
|
||||
defaultPref("pdfjs.enableWebGL", false);
|
||||
defaultPref("permissions.default.camera", 2);
|
||||
defaultPref("permissions.default.desktop-notification", 2);
|
||||
defaultPref("permissions.default.geo", 2);
|
||||
defaultPref("permissions.default.microphone", 2);
|
||||
defaultPref("plugin.default_plugin_disabled", true);
|
||||
// pref("plugin.state.flash", 0);
|
||||
pref("plugin.state.java", 0);
|
||||
pref("plugin.state.libgnome-shell-browser-plugin", 0);
|
||||
pref("plugins.click_to_play", true);
|
||||
pref("plugins.load_appdir_plugins", false);
|
||||
pref("plugins.update.notifyUser", false);
|
||||
pref("plugins.update.url", "");
|
||||
// PREF: Clear history when Firefox closes
|
||||
// pref("privacy.sanitize.sanitizeOnShutdown", true);
|
||||
// pref("privacy.clearOnShutdown.cache", true);
|
||||
// pref("privacy.clearOnShutdown.cookies", true);
|
||||
// pref("privacy.clearOnShutdown.downloads", true);
|
||||
// pref("privacy.clearOnShutdown.formdata", true);
|
||||
// pref("privacy.clearOnShutdown.history", true);
|
||||
// pref("privacy.clearOnShutdown.offlineApps", true);
|
||||
// pref("privacy.clearOnShutdown.sessions", true);
|
||||
// pref("privacy.clearOnShutdown.openWindows", true);
|
||||
defaultPref("plugin.state.java", 0);
|
||||
defaultPref("plugin.state.libgnome-shell-browser-plugin", 0);
|
||||
defaultPref("plugins.click_to_play", true);
|
||||
defaultPref("plugins.load_appdir_plugins", false);
|
||||
defaultPref("plugins.update.notifyUser", false);
|
||||
defaultPref("plugins.update.url", "");
|
||||
pref("privacy.cpd.offlineApps", true);
|
||||
pref("privacy.cpd.cache", true);
|
||||
pref("privacy.cpd.cookies", true);
|
||||
pref("privacy.cpd.downloads", true);
|
||||
pref("privacy.cpd.formdata", true);
|
||||
pref("privacy.cpd.history", true);
|
||||
pref("privacy.cpd.sessions", true);
|
||||
pref("privacy.donottrackheader.enabled", true);
|
||||
pref("privacy.resistFingerprinting", true);
|
||||
pref("privacy.firstparty.isolate", true);
|
||||
defaultPref("privacy.resistFingerprinting", true);
|
||||
pref("privacy.sanitize.timeSpan", 0);
|
||||
defaultPref("privacy.spoof_english", 2);
|
||||
pref("privacy.trackingprotection.enabled", true);
|
||||
pref("privacy.trackingprotection.pbmode.enabled", true);
|
||||
pref("privacy.userContext.enabled", true);
|
||||
pref("reader.parse-on-load.enabled", false);
|
||||
pref("reader.parse-on-load.force-enabled", false);
|
||||
pref("security.csp.enable", true);
|
||||
pref("security.csp.experimentalEnabled", true);
|
||||
pref("security.dialog_enable_delay", 1000);
|
||||
pref("security.fileuri.strict_origin_policy", true);
|
||||
pref("security.insecure_field_warning.contextual.enabled", false);
|
||||
// PREF: Enable insecure password warnings (login forms in non-HTTPS pages)
|
||||
pref("security.insecure_password.ui.enabled", false);
|
||||
pref("security.mixed_content.block_active_content", true);
|
||||
pref("security.mixed_content.block_display_content", true);
|
||||
pref("services.blocklist.update_enabled", false);
|
||||
pref("security.sri.enable", true);
|
||||
pref("security.ssl.errorReporting.automatic", false);
|
||||
pref("security.ssl.errorReporting.enabled", false);
|
||||
defaultPref("privacy.trackingprotection.enabled", true);
|
||||
lockPref("privacy.userContext.enabled", true);
|
||||
defaultPref("reader.parse-on-load.enabled", false);
|
||||
defaultPref("reader.parse-on-load.force-enabled", false);
|
||||
defaultPref("security.insecure_field_warning.contextual.enabled", false);
|
||||
defaultPref("security.insecure_password.ui.enabled", false);
|
||||
defaultPref("security.ssl.errorReporting.enabled", false);
|
||||
defaultPref("services.blocklist.update_enabled", false);
|
||||
lockPref("services.sync.enabled", false);
|
||||
pref("services.sync.prefs.sync.browser.download.manager.scanWhenDone", false);
|
||||
pref("services.sync.prefs.sync.browser.safebrowsing.enabled", false);
|
||||
defaultPref("services.sync.prefs.sync.browser.search.update", false);
|
||||
defaultPref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
// pref("shumway.disabled", true);
|
||||
pref("services.sync.prefs.sync.browser.search.update", false);
|
||||
pref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
pref("signon.autofillForms", false);
|
||||
// PREF: Disable password manager
|
||||
pref("signon.rememberSignons", false);
|
||||
defaultPref("startup.homepage_welcome_url", "http://i2pd.i2p/");
|
||||
pref("startup.homepage_welcome_url.additional", "about:blank");
|
||||
pref("toolkit.telemetry.archive.enabled", false);
|
||||
lockPref("toolkit.telemetry.archive.enabled", false);
|
||||
lockPref("toolkit.telemetry.enabled", false);
|
||||
pref("toolkit.telemetry.optoutSample", false);
|
||||
defaultPref("toolkit.telemetry.optoutSample", false);
|
||||
defaultPref("toolkit.telemetry.reportingpolicy.firstRun", false);
|
||||
lockPref("toolkit.telemetry.server", "");
|
||||
defaultPref("toolkit.telemetry.unified", false);
|
||||
pref("toolkit.telemetry.unifiedIsOptIn", true);
|
||||
pref("webgl.disabled", true);
|
||||
pref("webgl.disable-extensions", true);
|
||||
pref("webgl.disable-fail-if-major-performance-caveat", true);
|
||||
pref("webgl.enable-debug-renderer-info", false);
|
||||
pref("webgl.min_capability_mode", true);
|
||||
// Ensure domain logging is disabled
|
||||
pref("loop.logDomains", false);
|
||||
// Spoof to dual-core cpu
|
||||
pref("dom.maxHardwareConcurrency", 2);
|
||||
// Disable offline cache
|
||||
pref("browser.cache.offline.enable", false);
|
||||
// Prevent tracking over multiple domains
|
||||
pref("privacy.firstparty.isolate", true);
|
||||
pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
|
||||
// In relation to webrtc
|
||||
pref("media.peerconnection.turn.disable", true);
|
||||
pref("media.peerconnection.use_document_iceservers", false);
|
||||
pref("media.peerconnection.identity.timeout", 1);
|
||||
pref("media.peerconnection.ice.default_address_only", true);
|
||||
// Disable url prefetch
|
||||
pref("browser.urlbar.speculativeConnect.enabled", false);
|
||||
// Set platform, user-agent and locale to same values as Tor Browser 7.0.10
|
||||
pref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0");
|
||||
pref("general.useragent.locale", "en-US");
|
||||
pref("general.platform.override", "Win32");
|
||||
defaultPref("toolkit.telemetry.unifiedIsOptIn", true);
|
||||
defaultPref("webgl.disable-extensions", true);
|
||||
defaultPref("webgl.disable-fail-if-major-performance-caveat", true);
|
||||
defaultPref("webgl.disabled", true);
|
||||
defaultPref("webgl.enable-debug-renderer-info", false);
|
||||
defaultPref("webgl.min_capability_mode", true);
|
||||
|
||||
var config = {
|
||||
"cckVersion": "2.2.9",
|
||||
"name": "I2Pd Browser",
|
||||
"description": "Preconfigured for use with I2P browser",
|
||||
"version": "1.2.8",
|
||||
"homePage": "http://i2pd.i2p/",
|
||||
"welcomePage": "http://i2pd.i2p/",
|
||||
"titlemodifier": "I2Pd Browser",
|
||||
"extension": {
|
||||
"name": "I2Pd Browser"
|
||||
},
|
||||
"noWelcomePage": true,
|
||||
"noUpgradePage": true,
|
||||
"removeSetDesktopBackground": true,
|
||||
"removeSafeModeMenu": true,
|
||||
"noGetAddons": true,
|
||||
"noAddonCompatibilityCheck": true,
|
||||
"disableSearchEngineInstall": true,
|
||||
"removeDefaultSearchEngines": false,
|
||||
"displayBookmarksToolbar": true,
|
||||
"removeSmartBookmarks": true,
|
||||
"removeDefaultBookmarks": true,
|
||||
"removeDuplicateBookmarkNames": true,
|
||||
"dontCheckDefaultBrowser": true,
|
||||
"dontUseDownloadDir": true,
|
||||
"disableFormFill": true,
|
||||
"disableSync": true,
|
||||
"disableCrashReporter": true,
|
||||
"disableTelemetry": true,
|
||||
"disableFirefoxHealthReportUpload": true,
|
||||
"disableFirefoxHealthReport": true,
|
||||
"disableFirefoxUpdates": true,
|
||||
"removeSnippets": true,
|
||||
"disableResetFirefox": true,
|
||||
"disableWebApps": true,
|
||||
"disableHello": true,
|
||||
"disableSharePage": true,
|
||||
"disableForget": true,
|
||||
"disableHeartbeat": true,
|
||||
"disablePocket": true,
|
||||
"disableAboutSupport": true,
|
||||
"disableAboutProfiles": true,
|
||||
"showSearchBar": true,
|
||||
"autoconfig": {
|
||||
"disableProfileMigrator": true
|
||||
},
|
||||
"id": "i2pdbrowser",
|
||||
"hiddenUI": [
|
||||
"#defaultBrowserBox",
|
||||
"#enableSearchUpdate",
|
||||
"#dataCollectionCategory",
|
||||
"#dataCollectionGroup",
|
||||
".help-button",
|
||||
"#onboarding-overlay-button",
|
||||
".prefs-modal-inner-wrapper > section:nth-child(6)"
|
||||
],
|
||||
"searchplugins": {
|
||||
"YaCy 'legwork'": "http://legwork.i2p/opensearchdescription.xml"
|
||||
},
|
||||
"defaultSearchEngine": "YaCy 'legwork'",
|
||||
"certs": {
|
||||
"ca": [
|
||||
{
|
||||
"url": "resource://cck2_i2pdbrowser/certs/purplei2p_ca.pem",
|
||||
"trust": "CTc,CTc,CTc"
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
var io = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
var resource = io.getProtocolHandler("resource")
|
||||
.QueryInterface(Components.interfaces.nsIResProtocolHandler);
|
||||
|
||||
var greDir = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties)
|
||||
.get("GreD", Components.interfaces.nsIFile);
|
||||
var cck2ModuleDir = greDir.clone();
|
||||
cck2ModuleDir.append("cck2");
|
||||
cck2ModuleDir.append("modules");
|
||||
var cck2Alias = io.newFileURI(cck2ModuleDir);
|
||||
resource.setSubstitution("cck2", cck2Alias);
|
||||
|
||||
var configModuleDir = greDir.clone();
|
||||
configModuleDir.append("cck2");
|
||||
configModuleDir.append("resources");
|
||||
var configAlias = io.newFileURI(configModuleDir);
|
||||
resource.setSubstitution("cck2_i2pdbrowser", configAlias);
|
||||
|
||||
Components.utils.import("resource://cck2/CCK2.jsm");
|
||||
CCK2.init(config, "ä"[0], "ä");
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
./Firefox
|
||||
./i2pd
|
||||
/Firefox
|
||||
/i2pd
|
||||
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
pub 4096R/98EBCFE2 2016-12-14
|
||||
uid R4SAS (r4sas) <r4sas@i2pmail.org>
|
||||
sub 4096R/9206EEF0 2016-12-14
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
=BDxP
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -1,32 +0,0 @@
|
||||
0c8dc327020295286d7d8e09e954503e122187d7835eb8d932d2063d2e08c1ead503804ab9a8b32c0045ecfd6fc8bb7c93021ec2ad827c09afe46055d16c998a build/firefox-portable/FirefoxPortable.ini
|
||||
c30e47b8df4b2a843d3abcf85c367df455ef93511ee98070ad237003246e8eb6492773a85ba85af08a89087ee80aa586368ce167c1c3cd8f70f61ea8a6707319 build/firefox-portable/FirefoxPortable.exe
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
c205ef59e5bbce31692065ecbad07935e724817d76f0fd38fdc37cc03cc9bb2ad444921ff79f0fe2b2d95d69e6685279f7972a60b1726ccf60cb96a9b0ab72ea build/sed.exe
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a build/i2pd/i2pd.conf
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 build/i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 build/i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 build/i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 build/i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 build/i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d build/i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 build/i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 build/i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 build/i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be build/i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 build/i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 build/i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 build/i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f build/i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 build/i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a build/i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc build/i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 build/i2pd/tunnels.conf
|
||||
c4cdbff5e295a516eab64433c16af3cef7ebec9d056ce8732b681fd37deaf389bc9655052ec3e06d14ca3353ebb547ef8ebd5bc78f8083b6d04eee2d9450f616 build/7z.dll
|
||||
3d951952de7a29aa1a0ca8d35fcf4fc431c94bed3b35a7e11c6e31b0a93f5a083326427c4e56bbc3a76ff238e60591d1bf5e90f1cd2ca312285296374cbae879 build/build.cmd
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
d2d83056bd4ca654bbf69fe17e1fcad19c3e813d0243e629a29f04b8e375dce278839c21fc18d5e06ff95b76deb574f8c09e50def0b52a81d65acdb69c0d6d5c build/7z.exe
|
||||
b73d46c884ba5d08e9d300a0748762691d2c7228d294a153c1b631433d64ee06cddf7902be08620c31690f361327e19691e3e9162b083317d0a3359f0cc8e4b9 build/curl.exe
|
||||
91503dda4b76538e3ade2af4c35ccf4f90136234d95420d681d697a161a5dd211839d8514c8cbbea94841b4f3de0ce3fee62fd1fe97d26f98b9982b291e483c0 build/ca-bundle.crt
|
||||
7d1a022be508183424a0c88394b148d57520b3cb70f3b50d805f3e6fb565f85c61c40f6fa45bacb8bd106b576d50701549f3e5d595fc82659c4bed1637f9f9fb StartI2PdBrowser.bat
|
||||
@@ -1,52 +0,0 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
0c8dc327020295286d7d8e09e954503e122187d7835eb8d932d2063d2e08c1ead503804ab9a8b32c0045ecfd6fc8bb7c93021ec2ad827c09afe46055d16c998a build/firefox-portable/FirefoxPortable.ini
|
||||
c30e47b8df4b2a843d3abcf85c367df455ef93511ee98070ad237003246e8eb6492773a85ba85af08a89087ee80aa586368ce167c1c3cd8f70f61ea8a6707319 build/firefox-portable/FirefoxPortable.exe
|
||||
6e9e4888d6a858a0e4dc939443dea1f67e3ebfbaf585b84c7dcc2084d34803582355b6e37441619ab858d6b664264e4de87724b2f26af1aba54231180608d522 build/preferences/defaults/pref/autoconfig.js
|
||||
ea81a93c95f8b36075662810280ab3cdaae2033dda7e77ed1ec32a2f00c34a185d15f7b23ae79f8bc43ebaac6c964127ef7c2a14afc7201558f63f5880950d3e build/preferences/i2pdbrowser.cfg
|
||||
c205ef59e5bbce31692065ecbad07935e724817d76f0fd38fdc37cc03cc9bb2ad444921ff79f0fe2b2d95d69e6685279f7972a60b1726ccf60cb96a9b0ab72ea build/sed.exe
|
||||
148030732cc3990d2ed611b22eb6b7f91e5b867518fdd0c52ad11f82ccbb71a75c91b3bb6d12de750902b9d33770e15d2a80132e58167d8ee9155d4f184b4d4a build/i2pd/i2pd.conf
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 build/i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 build/i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 build/i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 build/i2pd/certificates/family/volatile.crt
|
||||
2297e46d39a6edb7a0dd7adf3a1488b190fef6e50ad1794733709adaa547d0320485202c7627ef7f3a41c8ade09ed3ea7c562ddce2788f2c78935c88ccd10b60 build/i2pd/certificates/family/gostcoin.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d build/i2pd/certificates/family/i2p-dev.crt
|
||||
55224b77505aca8de01ae692d4ec63c591edf557a243fed50257b80bdfa1b04594373f65697ece94ec6f13f252b96bff468d7d886cc6fbe07fd0c534ce4658a3 build/i2pd/certificates/reseed/igor_at_novg.net.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 build/i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
4d294022339f31880a393be1a843d8ea021c7c38e6289fd90befaf3b4fb2f499f75f9f9e45da649a6c20972e5cc3dda88f82d5bead69846a1b01002b4a34b412 build/i2pd/certificates/reseed/r4sas-reseed_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be build/i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 build/i2pd/certificates/reseed/atomike_at_mail.i2p.crt
|
||||
0468afb62a372dc4c98dcde2e17e62b4a73693b1516c9dddcc771ee7f47bcbbd0184498bd225cf77bf19ca4ab0f29df1235003f943412ab25ad92c47fe9141b3 build/i2pd/certificates/reseed/creativecowpat_at_mail.i2p.crt
|
||||
4389d70d40ff74bc02eee5bb4a96d80585a3684e9b457d216b0723def2cde2107e82a8239ee7325a08822a4ee17dd70237932fa6833dc31d21a14b2355dbb5b1 build/i2pd/certificates/reseed/meeh_at_mail.i2p.crt
|
||||
1114d76b59a9dc0a3075ea5dcdcf270107240793bb82160c9f21c2fad7c581d358915fabe323b381ca95ce8f99a7e4536d6e183f4bdb67676dd581bfce5d4c9f build/i2pd/certificates/reseed/zmx_at_mail.i2p.crt
|
||||
3487bba6ba8e1f1d5f8759740bf8194379ad258aba14714dcd1338d12924c9ea0b849cf3914cb447911d6907d254ee8b82cae2ba4e80128f646a9d9656dd7c07 build/i2pd/certificates/reseed/lazygravy_at_mail.i2p.crt
|
||||
78c6375c1fff1e06599429606f1ad84ed2244a0e6c9ff15f8abcf150f0085b9793548bb42ed1b3ae534e77826c180aaee4ef3417d8beddd707481004c475ce0a build/i2pd/certificates/reseed/echelon_at_mail.i2p.crt
|
||||
13fd2563bbc0486ca5c87ac5aa2509250a0ef300125a42548dff2dc4f06f3cd39f6a12cd36f9008b7e6ceba97011f8d1acdd2b0bbc8ba07dfd96515f9bc623fc build/i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 build/i2pd/tunnels.conf
|
||||
c4cdbff5e295a516eab64433c16af3cef7ebec9d056ce8732b681fd37deaf389bc9655052ec3e06d14ca3353ebb547ef8ebd5bc78f8083b6d04eee2d9450f616 build/7z.dll
|
||||
3d951952de7a29aa1a0ca8d35fcf4fc431c94bed3b35a7e11c6e31b0a93f5a083326427c4e56bbc3a76ff238e60591d1bf5e90f1cd2ca312285296374cbae879 build/build.cmd
|
||||
035c2d5c91880c948d965766bcaa24fef31734742eb228559f4e9ba4f39855c6086be421967e676c634e4c3b67314f204340ca3df57f15fc6634aacec6a1c37e build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
d2d83056bd4ca654bbf69fe17e1fcad19c3e813d0243e629a29f04b8e375dce278839c21fc18d5e06ff95b76deb574f8c09e50def0b52a81d65acdb69c0d6d5c build/7z.exe
|
||||
b73d46c884ba5d08e9d300a0748762691d2c7228d294a153c1b631433d64ee06cddf7902be08620c31690f361327e19691e3e9162b083317d0a3359f0cc8e4b9 build/curl.exe
|
||||
91503dda4b76538e3ade2af4c35ccf4f90136234d95420d681d697a161a5dd211839d8514c8cbbea94841b4f3de0ce3fee62fd1fe97d26f98b9982b291e483c0 build/ca-bundle.crt
|
||||
7d1a022be508183424a0c88394b148d57520b3cb70f3b50d805f3e6fb565f85c61c40f6fa45bacb8bd106b576d50701549f3e5d595fc82659c4bed1637f9f9fb StartI2PdBrowser.bat
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1
|
||||
|
||||
iQIcBAEBCgAGBQJbN27BAAoJEGb2yHuY68/iTrgQAJBLlzCjCHskpm8F0dqibZ4l
|
||||
jzbLkBmpwd30bPgm29dxalZLBoMvdN5Ch7wh0Gok4mynY4KV0VTy/1aH5SVlMQgY
|
||||
80PRRYJtI5QIKdcwh/OHJkFAtGsWwn+N2dpuGtmFZvW9HvGUdBezp2bTdhDIaI09
|
||||
DKEJ3yFtArxTjX3qhvt0L43860BaXu9CLsbFH0YdEXUx2JHGVriDfaiP0AXCWMrO
|
||||
h1SKiCj4VWdl09WdKLk+Ss1yJ+f01pUpLxVPYJa7SiUOhqPPi9p96xtKoHKfArmy
|
||||
jiblwyrD8veGZzRfOKFuBGOk1vTtjl8g99oNPwDpOWBkW3XIMbK4Dqk+cW52EdoK
|
||||
PQfr0mauP7vqBoXd3tYUfUZAbTnj4ZZHLm5H1jG960ywhtGPKGkiZR8moVYYbXGu
|
||||
jM3ZqYwWqzNIcmN1Ws1UVoKYFxQjD9k1NXb8uzOGlm3ADehrZFCCgv9xB1vSGh1x
|
||||
ixWVHDMBfjGvSY0LTcw9ac3WTnGqPhSeCFnqp+gZKLJDuhCLwHf0t0HYC0kkQsoI
|
||||
LYeEam8f3uRM7SKPYyWZ6ZW2t+936+6Y7Jpg7doJrdXeA5TlPR6jcsw3kN25hU03
|
||||
pBrlz2YrMKQ7TbO/dXiqXK9hAhxumDctg9UXw1vTzppkqHQ0hmyCHUxq+IvKR/Nb
|
||||
TUpaxRb7yn+3YDrfCUYy
|
||||
=BhtM
|
||||
-----END PGP SIGNATURE-----
|
||||
@@ -1,9 +1,9 @@
|
||||
@ECHO OFF
|
||||
REM Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
REM Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
REM This file is part of Purple i2pd project and licensed under BSD3
|
||||
REM See full license text in LICENSE file at top of project tree
|
||||
|
||||
title Starting I2Pd Browser 1.2.7
|
||||
title Starting I2Pd Browser 1.2.8
|
||||
set $pause=ping.exe 0.0.0.0 -n
|
||||
set $cd=%CD%
|
||||
ver| find "6." >nul && set $pause=timeout.exe /t
|
||||
|
||||
+39
-6
@@ -1,14 +1,14 @@
|
||||
@echo off
|
||||
|
||||
REM Copyright (c) 2013-2018, The PurpleI2P Project
|
||||
REM Copyright (c) 2013-2019, The PurpleI2P Project
|
||||
REM This file is part of Purple i2pd project and licensed under BSD3
|
||||
REM See full license text in LICENSE file at top of project tree
|
||||
|
||||
setlocal enableextensions
|
||||
|
||||
set CURL=%~dp0curl.exe
|
||||
set FFversion=60.1.0
|
||||
set I2Pdversion=2.19.0
|
||||
set FFversion=60.7.1
|
||||
set I2Pdversion=2.26.0
|
||||
call :GET_LOCALE
|
||||
call :GET_PROXY
|
||||
call :GET_ARCH
|
||||
@@ -43,12 +43,26 @@ if "%locale%"=="ru" (
|
||||
del /Q firefox.exe
|
||||
ren ..\Firefox\App\core Firefox
|
||||
del /Q ..\Firefox\App\setup.exe
|
||||
rmdir /S /Q ..\Firefox\App\Firefox\dictionaries
|
||||
rmdir /S /Q ..\Firefox\App\Firefox\uninstall
|
||||
del /Q ..\Firefox\App\Firefox\browser\blocklist.xml
|
||||
del /Q ..\Firefox\App\Firefox\browser\crashreporter-override.ini
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\aushelper@mozilla.org.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\firefox@getpocket.com.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\followonsearch@mozilla.com.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\formautofill@mozilla.org.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\jaws-esr@mozilla.org.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\onboarding@mozilla.org.xpi
|
||||
del /Q ..\Firefox\App\Firefox\browser\features\screenshots@mozilla.org.xpi
|
||||
rmdir /S /Q ..\Firefox\App\Firefox\dictionaries
|
||||
rmdir /S /Q ..\Firefox\App\Firefox\gmp-clearkey
|
||||
rmdir /S /Q ..\Firefox\App\Firefox\uninstall
|
||||
del /Q ..\Firefox\App\Firefox\Accessible*.*
|
||||
del /Q ..\Firefox\App\Firefox\crashreporter.*
|
||||
del /Q ..\Firefox\App\Firefox\*.sig
|
||||
del /Q ..\Firefox\App\Firefox\*.chk
|
||||
del /Q ..\Firefox\App\Firefox\IA2Marshal.dll
|
||||
del /Q ..\Firefox\App\Firefox\maintenanceservice*.*
|
||||
del /Q ..\Firefox\App\Firefox\minidump-analyzer.exe
|
||||
del /Q ..\Firefox\App\Firefox\ucrtbase.dll
|
||||
del /Q ..\Firefox\App\Firefox\update*.*
|
||||
|
||||
if "%locale%"=="ru" (
|
||||
@@ -75,9 +89,28 @@ if "%locale%"=="ru" (
|
||||
) else (
|
||||
echo Downloading NoScript extension
|
||||
)
|
||||
"%CURL%" -L -f -# -o ..\Firefox\App\Firefox\browser\extensions\{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi https://addons.mozilla.org/firefox/downloads/file/972162/noscript_security_suite-10.1.8.2-an+fx.xpi
|
||||
"%CURL%" -L -f -# -o ..\Firefox\App\Firefox\browser\extensions\{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi https://addons.mozilla.org/firefox/downloads/file/3028550/noscript_security_suite-10.6.3-an+fx.xpi
|
||||
if errorlevel 1 ( echo ERROR:%ErrorLevel% && pause && exit ) else (echo OK!)
|
||||
|
||||
REM echo.
|
||||
REM if "%locale%"=="ru" (
|
||||
REM echo ‡ £à㧪 ¤®¯®«¥¨ï CanvasBlocker
|
||||
REM ) else (
|
||||
REM echo Downloading CanvasBlocker extension
|
||||
REM )
|
||||
REM "%CURL%" -L -f -# -o ..\Firefox\App\Firefox\browser\extensions\CanvasBlocker@kkapsner.de.xpi https://addons.mozilla.org/firefox/downloads/file/1086424/canvasblocker-0.5.4-an+fx.xpi
|
||||
REM if errorlevel 1 ( echo ERROR:%ErrorLevel% && pause && exit ) else (echo OK!)
|
||||
|
||||
|
||||
REM echo.
|
||||
REM if "%locale%"=="ru" (
|
||||
REM echo ‡ £à㧪 ¤®¯®«¥¨ï Privacy Badger
|
||||
REM ) else (
|
||||
REM echo Downloading Privacy Badger extension
|
||||
REM )
|
||||
REM "%CURL%" -L -f -# -o ..\Firefox\App\Firefox\browser\extensions\jid1-MnnxcxisBPnSXQ-eff@jetpack.xpi https://www.eff.org/files/privacy-badger-latest.xpi
|
||||
REM if errorlevel 1 ( echo ERROR:%ErrorLevel% && pause && exit ) else (echo OK!)
|
||||
|
||||
echo.
|
||||
if "%locale%"=="ru" (
|
||||
echo Š®¯¨à®¢ ¨¥ ä ©«®¢ áâ஥ª ¢ ¯ ¯ªã Firefox
|
||||
|
||||
+231
-168
@@ -1,7 +1,7 @@
|
||||
##
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Sun Apr 22 22:00:11 2018 GMT
|
||||
## Certificate data from Mozilla as of: Tue Jan 22 14:14:40 2019 GMT
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
@@ -14,7 +14,7 @@
|
||||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl version 1.27.
|
||||
## SHA256: 704f02707ec6b4c4a7597a8c6039b020def11e64f3ef0605a9c3543d48038a57
|
||||
## SHA256: 18372117493b5b7ec006c31d966143fc95a9464a2b5f8d5188e23c5557b2292d
|
||||
##
|
||||
|
||||
|
||||
@@ -261,28 +261,6 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
|
||||
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Visa eCommerce Root
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
||||
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
||||
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
||||
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
||||
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
||||
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
||||
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
||||
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
||||
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
||||
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
||||
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
||||
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
||||
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
||||
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
||||
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
||||
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
||||
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Comodo AAA Services root
|
||||
========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -2635,30 +2613,6 @@ kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
|
||||
ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
|
||||
====================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
|
||||
BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
||||
bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg
|
||||
RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw
|
||||
ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w
|
||||
SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE
|
||||
n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp
|
||||
ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537
|
||||
jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m
|
||||
ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP
|
||||
9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV
|
||||
4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH
|
||||
HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
||||
hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo
|
||||
BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
|
||||
URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl
|
||||
lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
|
||||
B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certinomis - Root CA
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -2816,126 +2770,6 @@ GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
|
||||
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certplus Root CA G1
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certplus Root CA G2
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
|
||||
AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
|
||||
NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
|
||||
cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
||||
BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
|
||||
Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
|
||||
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
|
||||
IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
|
||||
HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
|
||||
vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
OpenTrust Root CA G1
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
OpenTrust Root CA G2
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
OpenTrust Root CA G3
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
|
||||
AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
|
||||
DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
|
||||
ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||
IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
|
||||
ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
|
||||
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
|
||||
BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
|
||||
BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
|
||||
3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ISRG Root X1
|
||||
============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -3336,3 +3170,232 @@ BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
|
||||
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
|
||||
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign Root CA - R6
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
OISTE WISeKey Global Root GC CA
|
||||
===============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
|
||||
SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
|
||||
MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
|
||||
Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
|
||||
ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
|
||||
bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
|
||||
VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
|
||||
NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
|
||||
BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
|
||||
AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
|
||||
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R1
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
CFF1pkgl
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R2
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
o/DUhgkC
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R3
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
||||
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
||||
UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
||||
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
|
||||
hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
|
||||
Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
|
||||
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
|
||||
0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
|
||||
glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
|
||||
KaqW04MjyaR7YbPMAuhd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R4
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
||||
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
||||
UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
||||
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
|
||||
hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
|
||||
6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
|
||||
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
|
||||
2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
|
||||
N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
|
||||
zPKwTdb+mciUqXWi4w==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
UCA Global G2 Root
|
||||
==================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG
|
||||
EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x
|
||||
NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU
|
||||
cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
|
||||
MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT
|
||||
oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV
|
||||
8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS
|
||||
h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o
|
||||
LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/
|
||||
R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe
|
||||
KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa
|
||||
4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc
|
||||
OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97
|
||||
8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||
BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo
|
||||
5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
|
||||
1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A
|
||||
Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9
|
||||
yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX
|
||||
c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo
|
||||
jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk
|
||||
bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x
|
||||
ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn
|
||||
RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
UCA Extended Validation Root
|
||||
============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
dhh2n1ax
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certigna Root CA
|
||||
================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cGpnw4a2u9sHZIUNHzoGq32+7UWXsBI5Ow==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Q5DD3jExbpwG5n35HEcHYw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
fNr8P7NIRyZ8
|
||||
-----END CERTIFICATE-----
|
||||
@@ -21,7 +21,7 @@ name = I2Pd
|
||||
verify = true
|
||||
|
||||
[addressbook]
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt
|
||||
subscriptions = http://inr.i2p/export/alive-hosts.txt,http://identiguy.i2p/hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://i2p-projekt.i2p/hosts.txt
|
||||
|
||||
[http]
|
||||
enabled = true
|
||||
@@ -42,3 +42,8 @@ port = 4447
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7656
|
||||
|
||||
[ntcp2]
|
||||
enabled = true
|
||||
published = true
|
||||
#port =
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-ILITA]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6669
|
||||
#destination = irc.ilita.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,7 @@
|
||||
#[IRC-IRC2P]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6668
|
||||
#destination = irc.postman.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
@@ -0,0 +1,4 @@
|
||||
# In that directory you can store separated config files for every tunnel.
|
||||
# Please read documentation for more info.
|
||||
#
|
||||
# You can find examples in /usr/share/doc/i2pd/tunnels.d directory
|
||||
@@ -0,0 +1,2 @@
|
||||
[XRE]
|
||||
EnableProfileMigrator=0
|
||||
@@ -0,0 +1 @@
|
||||
resource cck2 modules/
|
||||
@@ -0,0 +1,154 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gForceExternalHandler = false;
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "extProtocolSvc",
|
||||
"@mozilla.org/uriloader/external-protocol-service;1", "nsIExternalProtocolService");
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
doc.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
event.target.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
// If the parent document is a local file, don't do anything
|
||||
// Links will just work
|
||||
if (doc.location.href.indexOf("file://") == 0) {
|
||||
return;
|
||||
}
|
||||
var links = event.target.getElementsByTagName("a");
|
||||
for (var i=0; i < links.length; i++) {
|
||||
var link = links[i];
|
||||
if (link.href.indexOf("file://") != 0) {
|
||||
continue;
|
||||
}
|
||||
link.addEventListener("click", function(link) {
|
||||
return function(event) {
|
||||
event.preventDefault();
|
||||
if (gForceExternalHandler) {
|
||||
extProtocolSvc.loadUrl(Services.io.newURI(link.href, null, null));
|
||||
} else {
|
||||
var target = "_self";
|
||||
if (link.hasAttribute("target")) {
|
||||
target = link.getAttribute("target");
|
||||
}
|
||||
// If we were told somewhere other than current (based on modifier keys), use it
|
||||
var where = whereToOpenLink(event);
|
||||
if (where != "current" || target == "_blank") {
|
||||
sendAsyncMessage("cck2:open-url", {
|
||||
"url": link.href,
|
||||
"where": (target == "_blank") ? "tab" : where
|
||||
});
|
||||
return;
|
||||
}
|
||||
switch (target) {
|
||||
case "_self":
|
||||
link.ownerDocument.location = link.href;
|
||||
break;
|
||||
case "_parent":
|
||||
link.ownerDocument.defaultView.parent.document.location = link.href;
|
||||
break;
|
||||
case "_top":
|
||||
link.ownerDocument.defaultView.top.document.location = link.href;
|
||||
break;
|
||||
default:
|
||||
// Attempt to find the iframe that this goes into
|
||||
var iframes = doc.defaultView.parent.document.getElementsByName(target);
|
||||
if (iframes.length > 0) {
|
||||
iframes[0].contentDocument.location = link.href;
|
||||
} else {
|
||||
link.ownerDocument.location = link.href;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}(link), false);
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.checkloaduri.enabled") == "allAccess") {
|
||||
gForceExternalHandler = !extProtocolSvc.isExposedProtocol('file');
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
|
||||
/* Copied from http://mxr.mozilla.org/mozilla-central/source/browser/base/content/utilityOverlay.js?raw=1 */
|
||||
|
||||
function getBoolPref(prefname, def)
|
||||
{
|
||||
try {
|
||||
return Services.prefs.getBoolPref(prefname);
|
||||
}
|
||||
catch(er) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/* whereToOpenLink() looks at an event to decide where to open a link.
|
||||
*
|
||||
* The event may be a mouse event (click, double-click, middle-click) or keypress event (enter).
|
||||
*
|
||||
* On Windows, the modifiers are:
|
||||
* Ctrl new tab, selected
|
||||
* Shift new window
|
||||
* Ctrl+Shift new tab, in background
|
||||
* Alt save
|
||||
*
|
||||
* Middle-clicking is the same as Ctrl+clicking (it opens a new tab).
|
||||
*
|
||||
* Exceptions:
|
||||
* - Alt is ignored for menu items selected using the keyboard so you don't accidentally save stuff.
|
||||
* (Currently, the Alt isn't sent here at all for menu items, but that will change in bug 126189.)
|
||||
* - Alt is hard to use in context menus, because pressing Alt closes the menu.
|
||||
* - Alt can't be used on the bookmarks toolbar because Alt is used for "treat this as something draggable".
|
||||
* - The button is ignored for the middle-click-paste-URL feature, since it's always a middle-click.
|
||||
*/
|
||||
function whereToOpenLink( e, ignoreButton, ignoreAlt )
|
||||
{
|
||||
Components.utils.import("resource://gre/modules/AppConstants.jsm");
|
||||
|
||||
// This method must treat a null event like a left click without modifier keys (i.e.
|
||||
// e = { shiftKey:false, ctrlKey:false, metaKey:false, altKey:false, button:0 })
|
||||
// for compatibility purposes.
|
||||
if (!e)
|
||||
return "current";
|
||||
|
||||
var shift = e.shiftKey;
|
||||
var ctrl = e.ctrlKey;
|
||||
var meta = e.metaKey;
|
||||
var alt = e.altKey && !ignoreAlt;
|
||||
|
||||
// ignoreButton allows "middle-click paste" to use function without always opening in a new window.
|
||||
var middle = !ignoreButton && e.button == 1;
|
||||
var middleUsesTabs = true;
|
||||
|
||||
// Don't do anything special with right-mouse clicks. They're probably clicks on context menu items.
|
||||
|
||||
var metaKey = AppConstants.platform == "macosx" ? meta : ctrl;
|
||||
if (metaKey || (middle && middleUsesTabs))
|
||||
return shift ? "tabshifted" : "tab";
|
||||
|
||||
if (alt && getBoolPref("browser.altClickSave", false))
|
||||
return "save";
|
||||
|
||||
if (shift || (middle && !middleUsesTabs))
|
||||
return "window";
|
||||
|
||||
return "current";
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
var gAllowedPasteSites = [];
|
||||
var gAllowedCutCopySites = [];
|
||||
var gDeniedPasteSites = [];
|
||||
var gDeniedCutCopySites = [];
|
||||
var gDefaultPastePolicy = false;
|
||||
var gDefaultCutCopyPolicy = false;
|
||||
|
||||
function allowCutCopy(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultCutCopyPolicy == true) {
|
||||
for (var i=0; i < gDeniedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedCutCopySites[i]) == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedCutCopySites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedCutCopySites[i]) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function allowPaste(doc) {
|
||||
var win = doc.defaultView;
|
||||
if (win !== win.top) {
|
||||
// It's an iframe. Use the top level window
|
||||
// for security purposes
|
||||
win = win.top;
|
||||
}
|
||||
|
||||
if (gDefaultPastePolicy == true) {
|
||||
for (var i=0; i < gDeniedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gDeniedPasteSites[i]) == 0) {
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
for (var i=0; i < gAllowedPasteSites.length; i++) {
|
||||
if (win.location.href.indexOf(gAllowedPasteSites[i]) == 0) {
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function myExecCommand(doc, originalExecCommand) {
|
||||
return function(aCommandName, aShowDefaultUI, aValueArgument) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
var win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
win.goDoCommand("cmd_" + aCommandName.toLowerCase());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalExecCommand.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
function myQueryCommandSupported(doc, originalQueryCommandSupported) {
|
||||
return function(aCommandName) {
|
||||
switch (aCommandName.toLowerCase()) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
if (allowCutCopy(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case "paste":
|
||||
if (allowPaste(doc)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return originalQueryCommandSupported.call(doc, aCommandName, aShowDefaultUI, aValueArgument);
|
||||
}
|
||||
}
|
||||
|
||||
var documentObserver = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
if (subject instanceof Ci.nsIDOMWindow && topic == 'content-document-global-created') {
|
||||
var doc = subject.document;
|
||||
var cutCopyAllowed = allowCutCopy(doc);
|
||||
var pasteAllowed = allowPaste(doc);
|
||||
if (!cutCopyAllowed && !pasteAllowed) {
|
||||
return;
|
||||
}
|
||||
var originalExecCommand = Cu.waiveXrays(doc).execCommand;
|
||||
Cu.exportFunction(myExecCommand(doc, originalExecCommand), doc, {defineAs: "execCommand"});
|
||||
var originalQueryCommandSupported = Cu.waiveXrays(doc).queryCommandSupported;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandSupported), doc, {defineAs: "queryCommandSupported"});
|
||||
var originalQueryCommandEnabled = Cu.waiveXrays(doc).queryCommandEnabled;
|
||||
Cu.exportFunction(myQueryCommandSupported(doc, originalQueryCommandEnabled), doc, {defineAs: "queryCommandEnabled"});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Don't do this check before Firefox 29
|
||||
if (Services.vc.compare(Services.appinfo.version, "29") > 0) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.cutcopy") == "allAccess") {
|
||||
gDefaultCutCopyPolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy.default.Clipboard.paste") == "allAccess") {
|
||||
gDefaultPastePolicy = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
var policies = [];
|
||||
policies = Services.prefs.getCharPref("capability.policy.policynames").split(', ');
|
||||
for (var i=0; i < policies.length; i++ ) {
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "allAccess") {
|
||||
var allowedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedCutCopySites.length; j++) {
|
||||
gAllowedCutCopySites.push(allowedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.cutcopy") == "noAccess") {
|
||||
var deniedCutCopySites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedCutCopySites.length; j++) {
|
||||
gDeniedCutCopySites.push(deniedCutCopySites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "allAccess") {
|
||||
var allowedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < allowedPasteSites.length; j++) {
|
||||
gAllowedPasteSites.push(allowedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
try {
|
||||
if (Services.prefs.getCharPref("capability.policy." + policies[i] + ".Clipboard.paste") == "noAccess") {
|
||||
var deniedPasteSites = Services.prefs.getCharPref("capability.policy." + policies[i] + ".sites").split(" ");
|
||||
for (var j=0; j < deniedPasteSites.length; j++) {
|
||||
gDeniedPasteSites.push(deniedPasteSites[j]);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
} catch (e) {}
|
||||
if (gDefaultCutCopyPolicy || gDefaultPastePolicy ||
|
||||
gAllowedCutCopySites.length > 0 || gAllowedPasteSites> 0) {
|
||||
Services.obs.addObserver(documentObserver, "content-document-global-created", false);
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(documentObserver, "content-document-global-created", false);
|
||||
})
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,111 @@
|
||||
/* This file overlays about:addons. It does the following: */
|
||||
/* Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1132971 */
|
||||
/* Hide the "Install Add-on From File" menu if xpinstall.enabled is false */
|
||||
/* Hides the discover pane if xpinstall.enabled is false */
|
||||
/* Hides the add-on entry if specified in the CCK2 config */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var addonId = "cck2wizard@kaply.com";
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:addons":
|
||||
case "chrome://mozapps/content/extensions/extensions.xul":
|
||||
var configs = CCK2.getConfigs();
|
||||
var hiddenAddons = [];
|
||||
var requiredAddons = [];
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config && "extension" in config && config.extension.hide) {
|
||||
hiddenAddons.push(config.extension.id);
|
||||
}
|
||||
if (config.requiredAddons) {
|
||||
requiredAddons.push.apply(requiredAddons, config.requiredAddons.split(","));
|
||||
}
|
||||
}
|
||||
if (hiddenAddons.length > 0 || requiredAddons.length > 0) {
|
||||
var ss;
|
||||
for (var i = 0; i < doc.styleSheets.length; i++) {
|
||||
if (doc.styleSheets[i].href == "chrome://mozapps/skin/extensions/extensions.css") {
|
||||
ss = doc.styleSheets[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (var i=0; i < hiddenAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + hiddenAddons[i] + "'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
for (var i=0; i < requiredAddons.length; i++) {
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='disable-btn'] { display: none;}", ss.cssRules.length);
|
||||
ss.insertRule("richlistitem[value='" + requiredAddons[i] + "'] button[anonid='remove-btn'] { display: none;}", ss.cssRules.length);
|
||||
}
|
||||
if (requiredAddons.length > 0) {
|
||||
win.gViewController.commands.cmd_disableItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_disableItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
win.gViewController.commands.cmd_uninstallItem.origIsEnabled = win.gViewController.commands.cmd_disableItem.isEnabled;
|
||||
win.gViewController.commands.cmd_uninstallItem.isEnabled = function(aAddon) { if (aAddon && requiredAddons.indexOf(aAddon.id) != -1) return false; return this.origIsEnabled;}
|
||||
}
|
||||
}
|
||||
var showDiscoverPane = true;
|
||||
var xpinstallEnabled = true;
|
||||
try {
|
||||
xpinstallEnabled = Services.prefs.getBoolPref("xpinstall.enabled");
|
||||
} catch (e) {}
|
||||
try {
|
||||
showDiscoverPane = Services.prefs.getBoolPref("extensions.getAddons.showPane");
|
||||
} catch (e) {}
|
||||
if (!xpinstallEnabled || !showDiscoverPane) {
|
||||
// Work around Mozilla bug 1132971
|
||||
// Hide the discover pane if it is the selected pane
|
||||
if (E("view-port", doc) && E("view-port", doc).selectedIndex == 0) {
|
||||
try {
|
||||
win.gViewController.loadView("addons://list/extension");
|
||||
} catch (ex) {
|
||||
// This fails with Webconverger installed. Ignore it.
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!xpinstallEnabled) {
|
||||
// Hide the "Install Add-on From File" separator
|
||||
hide(E("utils-installFromFile-separator", doc));
|
||||
// Hide the "Install Add-on From File" menuitem
|
||||
hide(E("utils-installFromFile", doc));
|
||||
win.gDragDrop.onDragOver = function(event) {
|
||||
event.dataTransfer.dropEffect = "none";
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
};
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function hide(element) {
|
||||
if (element) {
|
||||
element.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/* This file is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1139509 */
|
||||
/* It bolds the Firefox version in the about dialog and unbolds the distribution information */
|
||||
/* It can be removed once Firefox 38 ESR is out of support */
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "chrome://browser/content/aboutDialog.xul":
|
||||
doc.querySelector("#version").style.fontWeight = "bold";
|
||||
doc.querySelector("#distribution").style.fontWeight = "normal";
|
||||
doc.querySelector("#distributionId").style.fontWeight = "normal";
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
@@ -0,0 +1,79 @@
|
||||
/* This file overrides about:home. It does the following:
|
||||
* Remove the sync button if Sync is disabled
|
||||
* Remove the Addons button if Sync is disabled
|
||||
* Remove the snippets if snippets are disabled
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "content-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:home":
|
||||
case "chrome://browser/content/abouthome/aboutHome.xhtml":
|
||||
if (!configs) {
|
||||
// TODO - Make this Async
|
||||
configs = sendSyncMessage("cck2:get-configs")[0];
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableSync) {
|
||||
remove(E("sync", doc));
|
||||
}
|
||||
if (config.disableAddonsManager) {
|
||||
remove(E("addons", doc));
|
||||
}
|
||||
if (config.disableWebApps) {
|
||||
remove(E("apps", doc));
|
||||
}
|
||||
if (config.removeSnippets) {
|
||||
var snippets = E("snippets", doc);
|
||||
if (snippets) {
|
||||
snippets.style.display = "none";
|
||||
}
|
||||
}
|
||||
if (config.hiddenUI) {
|
||||
for (var i=0; i < config.hiddenUI.length; i++) {
|
||||
var uiElements = doc.querySelectorAll(config.hiddenUI[i]);
|
||||
for (var j=0; j < uiElements.length; j++) {
|
||||
var uiElement = uiElements[j];
|
||||
uiElement.setAttribute("hidden", "true");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "content-document-global-created", false);
|
||||
|
||||
addEventListener("unload", function() {
|
||||
Services.obs.removeObserver(observer, "content-document-global-created", false);
|
||||
})
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* This file overrides about:support It does the following:
|
||||
* Remove the reset Firefox button if disableResetFirefox is set
|
||||
* Remove the safe mode Button if disableSafeMode is set
|
||||
* Remove the box if both are set
|
||||
*/
|
||||
|
||||
const EXPORTED_SYMBOLS = [];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://cck2/CCK2.jsm");
|
||||
|
||||
var configs = null;
|
||||
|
||||
var observer = {
|
||||
observe: function observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "chrome-document-global-created":
|
||||
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
|
||||
win.addEventListener("load", function onLoad(event) {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
var doc = event.target;
|
||||
var url = doc.location.href.split("?")[0].split("#")[0];
|
||||
switch (url) {
|
||||
case "about:support":
|
||||
case "chrome://global/content/aboutSupport.xhtml":
|
||||
if (!configs) {
|
||||
configs = CCK2.getConfigs();
|
||||
}
|
||||
for (let id in configs) {
|
||||
var config = configs[id];
|
||||
if (config.disableResetFirefox) {
|
||||
remove(E("reset-box", doc));
|
||||
}
|
||||
if (config.disableSafeMode) {
|
||||
remove(E("safe-mode-box", doc));
|
||||
}
|
||||
if (config.disableResetFirefox &&
|
||||
config.disableSafeMode) {
|
||||
remove(E("action-box", doc));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.obs.addObserver(observer, "chrome-document-global-created", false);
|
||||
|
||||
function E(id, context) {
|
||||
var element = context.getElementById(id);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
||||
function remove(element) {
|
||||
if (element && element.parentNode)
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user