mirror of
https://github.com/PurpleI2P/i2pdbrowser.git
synced 2024-12-06 19:16:29 +01:00
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e57722acf6 | |||
| af9bae374c | |||
| 7b9e5e03fd | |||
| e813faef70 | |||
| 4ac93b47f4 | |||
| 2cc0cfddfa | |||
| a67e602620 | |||
| 64e96852ae | |||
| 9188271b06 | |||
| 4eac450fc3 | |||
| 8968f94f81 | |||
| c86545c7b7 | |||
| 25082974b0 | |||
| 7782e323d8 | |||
| f5e1c8ed97 | |||
| 9f799f1f58 | |||
| b4a1d778cf | |||
| ab030ae7c0 | |||
| 22e7f39ef9 | |||
| 6423760c3c | |||
| 66ac810309 | |||
| ce8c9227af | |||
| 300c71bef7 | |||
| d3ce560bbd | |||
| a0a9647336 | |||
| d82db360e0 | |||
| 3ccc2d1022 | |||
| 7edb16e57e | |||
| 0425c7284f | |||
| 5749801894 | |||
| fd02319397 | |||
| fcf9b0864c | |||
| 35ece2f882 | |||
| 6bd8b5a117 | |||
| 3c07223eca | |||
| 85a1d92aee | |||
| 7674e76642 | |||
| 995f751792 | |||
| 886642ce94 | |||
| 864be41417 | |||
| 5f280d98cd | |||
| 07873b984f | |||
| 2394243667 | |||
| 47a786939d | |||
| fc351b98ad | |||
| c1ad99e386 | |||
| 198167ba2b | |||
| f64fe361d9 | |||
| c5862b35d3 |
@@ -0,0 +1 @@
|
||||
.DS_Store
|
||||
@@ -1,6 +1,20 @@
|
||||
# i2pdbrowser
|
||||
--------
|
||||
### English
|
||||
i2pd browser bundle
|
||||
|
||||
todo:
|
||||
--------
|
||||
README
|
||||
This is a collection of scripts that will download the recent Firefox ESR release and configure it to connect over I2P, using i2pd.
|
||||
Since 1.2.6 pre-built version for Windows is excluded from repository, but releases will contain it.
|
||||
|
||||
## How to use it on Linux
|
||||
|
||||
1. Build preconfigured FireFox using script `build.sh` from `build` folder
|
||||
2. Run i2pd by executing `./i2pd` from `i2pd` folder
|
||||
3. Run FireFox by executing `./firefox-portable`
|
||||
|
||||
### 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-----
|
||||
+7
-7
@@ -1,24 +1,24 @@
|
||||
I2Pd Browser Portable builder for Linux
|
||||
=====
|
||||
This is script-based builder of I2Pd Browser Portable
|
||||
This is a script-based builder of I2Pd Browser Portable
|
||||
|
||||
What works now
|
||||
-----
|
||||
* Auto detecting system language
|
||||
* Auto detecting architecture
|
||||
* Pre-configuring FireFox to use with I2Pd
|
||||
* Pre-configuring Firefox to use with I2Pd
|
||||
* Auto downloading NoScript extension
|
||||
|
||||
How to use
|
||||
-----
|
||||
1. Build preconfigured FireFox using script `build.sh` from `build` folder
|
||||
2. Run i2pd by executing `./i2pd` from `i2pd` folder
|
||||
3. Run FireFox by executing `./firefox-portable`
|
||||
1. Build pre-configured Firefox using script `build.sh` from `build` folder
|
||||
2. Run I2Pd by executing `./i2pd` from `i2pd` folder
|
||||
3. Run Firefox by executing `./firefox-portable`
|
||||
|
||||
Additional info
|
||||
-----
|
||||
`./i2pd` from `i2pd` folder starts screen session with i2pd in it.
|
||||
To stop i2pd router you can use command `Start graceful shutdown` of `Force shutdown`
|
||||
`./i2pd` from `i2pd` folder starts a screen session with i2pd in it.
|
||||
To stop the i2pd router you can use the commands `Start graceful shutdown` or `Force shutdown`
|
||||
from i2pd webconsole page `http://127.0.0.1:7070/?page=commands`
|
||||
|
||||
SHA512SUMS created with `find * -type f -print0 | xargs -0 -i sha512sum {}` command
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
d4c4e0cb87a10609e775bc1acfd3d8b9ffac24f055ce39c4bbd4782532992b297d1f0fe6d068596959831ceec40655ed1f85e81766be07a17359b83b8148e3c4 build/preferences/syspref.js
|
||||
3de0dee4b7b2677906e87b751510e480f767b72b792b5edf3f0ac1ad5cc60eed9b38f2ebe74038f630493860623a3c4b1296fb42a130b6ab9fcfc6433fa51c57 build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
9ef9ab52683229adb6bcf7679cc39e02f7d2be4a5734838a113cd7149e60e2245b869dc45b4b8843913433281c1ecd93193b476efd915e8afeb109b17e376bb5 build/profile/prefs.js
|
||||
5e165570501a9ffda5d527e776b1fc1277612ea0ed998f1e244ca3f847fa878b8ed6242d16db1e32436e90b926fb683e9a00e798ac53b0dfdea919c683aaceed build/build.sh
|
||||
afa6f8d59ca6150d420637cee7f1c949d714e62843a85d1906ccdd226d3535e0580371ab5ada4b0dfb38637318a27c110fcd9c43d2b0c6c5b8b82257ab1a9866 i2pd/i2pd.conf
|
||||
14652fc917cb8c56340a8ff89b8537a07df7a39be3c836fda951d26d65861ea99ac1e807c88cf0c5296ab0bd4f9a50db729982efa0d058951c00d47133cea2f4 i2pd/i2pd-i386
|
||||
9dfbc0cad372d987620f4f07d02fcd9bcaa1bf319d7452bc8bc42c8ae11ab21a2c857b53b2ddaa1b41bd77fbee25a6904cfc1e536ad1493e7756626bbaaba099 i2pd/i2pd
|
||||
8a6fb6a2ef06ed6a27ddd527b769e958a14ee4d609bfd364ba68ac9d15095430d850701a663f31b864d8e8d81f8b946ef273b6b85e3bcc168fc91eaac6c962c0 i2pd/certificates/router/killyourtv_at_mail.i2p.crt
|
||||
3215addc495a340e102ac1d4297300acf126e1cc6dc79feb2794d853017e4748b532321dc895a38141776b6b0b8bb9f01c96099b6939acec908d247ecf3e6bcd i2pd/certificates/router/str4d_at_mail.i2p.crt
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
64344ddd135f0f8c6a1b6d37c8019224066bf3e4c3e9a068d644222335c34c813f06c7ebb583c5cf0b91c80c225807ccf23c63c59b4a0a47e834063b70a6e574 i2pd/certificates/router/zzz_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 i2pd/certificates/family/volatile.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d i2pd/certificates/family/i2p-dev.crt
|
||||
fb8c0090b86af4109f931804c8cfe44984a6e167b150725873fb45f60fd3e4ecf10ea98e139bf708646ce935dbdd859ff60f12e5ae95d656e7fece160cecc1db i2pd/certificates/reseed/hottuna_at_mail.i2p.crt
|
||||
9573377dcc5a54336944911885384645f0672ef4ad880aa711d2d56aa3f73f206446d83640a86272cd3b890538b7803e55c0e1547fe8a5d882b577ca879a0f4e i2pd/certificates/reseed/randomrng_at_mail.i2p.crt
|
||||
101a68dca122dd1b089ad58193220eb028467197cd9ec20245b47ffa19741ad17d8e8b5332659b36fbeb63b51ec16d033a83ede445e673a65e19e77211a8208a i2pd/certificates/reseed/parg_at_mail.i2p.crt
|
||||
11cfcdb54739b618f27b58a7ce0d32c4cf49abd87c5642fd0dca6de9e65cb3e7aff670f500891911830acec92f86cf9ba01bca35ea7dd98bcc7cb4b3956a05f9 i2pd/certificates/reseed/r4sas_at_mail.i2p.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 i2pd/certificates/reseed/atomike_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
|
||||
916e3d551f4d275e2cb1e9e7aad1f420d3439b92e3f82d5ef848f287b9711c6553e0dfe7fde87788b85f017a96a96e1033a098e16e890532fb3b35502aebeaf6 i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 i2pd/tunnels.conf
|
||||
8fa9bf93fb7e5397fed7d68c5405a643209d1bf0ad485559468949b141b48640edcdde168e08bc38d883d56f1e2bf71c36abf805bd35e68bfbfbf912dbb23300 i2pd/i2pd-x86_64
|
||||
75758ffcbab5c27e05eb3bb912f9147fd920eb1dec21203af6e67a4a6925924edbeb0118f52246ad2d1c9b906a7598dcda53c7e6c8659571ae26d88dc49a6b15 README.md
|
||||
@@ -1,51 +0,0 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
d4c4e0cb87a10609e775bc1acfd3d8b9ffac24f055ce39c4bbd4782532992b297d1f0fe6d068596959831ceec40655ed1f85e81766be07a17359b83b8148e3c4 build/preferences/syspref.js
|
||||
3de0dee4b7b2677906e87b751510e480f767b72b792b5edf3f0ac1ad5cc60eed9b38f2ebe74038f630493860623a3c4b1296fb42a130b6ab9fcfc6433fa51c57 build/profile/xulstore.json
|
||||
94bf052b929dac72959f498a43b66ab6990ebc3f3f24e4041416471e69988290fd212062e1a6b2070f40a46658a25db346e584bcebd542840fea8bf02e587514 build/profile/bookmarks.html
|
||||
9ef9ab52683229adb6bcf7679cc39e02f7d2be4a5734838a113cd7149e60e2245b869dc45b4b8843913433281c1ecd93193b476efd915e8afeb109b17e376bb5 build/profile/prefs.js
|
||||
5e165570501a9ffda5d527e776b1fc1277612ea0ed998f1e244ca3f847fa878b8ed6242d16db1e32436e90b926fb683e9a00e798ac53b0dfdea919c683aaceed build/build.sh
|
||||
afa6f8d59ca6150d420637cee7f1c949d714e62843a85d1906ccdd226d3535e0580371ab5ada4b0dfb38637318a27c110fcd9c43d2b0c6c5b8b82257ab1a9866 i2pd/i2pd.conf
|
||||
14652fc917cb8c56340a8ff89b8537a07df7a39be3c836fda951d26d65861ea99ac1e807c88cf0c5296ab0bd4f9a50db729982efa0d058951c00d47133cea2f4 i2pd/i2pd-i386
|
||||
9dfbc0cad372d987620f4f07d02fcd9bcaa1bf319d7452bc8bc42c8ae11ab21a2c857b53b2ddaa1b41bd77fbee25a6904cfc1e536ad1493e7756626bbaaba099 i2pd/i2pd
|
||||
8a6fb6a2ef06ed6a27ddd527b769e958a14ee4d609bfd364ba68ac9d15095430d850701a663f31b864d8e8d81f8b946ef273b6b85e3bcc168fc91eaac6c962c0 i2pd/certificates/router/killyourtv_at_mail.i2p.crt
|
||||
3215addc495a340e102ac1d4297300acf126e1cc6dc79feb2794d853017e4748b532321dc895a38141776b6b0b8bb9f01c96099b6939acec908d247ecf3e6bcd i2pd/certificates/router/str4d_at_mail.i2p.crt
|
||||
662c515175e401d6ab3ccb9d36a17f91762b3c35d6eb2c58c72e4c2bdf1fff5b7c904622c03d2c041193b1b01b75f2f470726ce8741f9e72e6aab7e128c43452 i2pd/certificates/router/orignal_at_mail.i2p.crt
|
||||
64344ddd135f0f8c6a1b6d37c8019224066bf3e4c3e9a068d644222335c34c813f06c7ebb583c5cf0b91c80c225807ccf23c63c59b4a0a47e834063b70a6e574 i2pd/certificates/router/zzz_at_mail.i2p.crt
|
||||
78649814a1f06933768873edd171f2be24227b31a21e3c3cd63d8c0a933af1aec48b7b595ea9c9298df24cc32fbb71e350846efd7c6384e2f923ec2dab3578c4 i2pd/certificates/family/mca2-i2p.crt
|
||||
1bd66f93e71fb41ad77b9caeb6ec873dd9f40bae4a90bd3eaa331fcaf45c4a4779b567cb89730ce99b2dff609bb26ee383c3d904d1ad852299d5bc5fc6ed17e1 i2pd/certificates/family/i2pd-dev.crt
|
||||
ce565903357ca19724371c57fd68d071b7ea546c354f1b82d3afd4514db35598c6a36746b8fdb5caf0e1fb1af205d3f21dc4dc64863b431d9c18d75a3d9b7cb8 i2pd/certificates/family/volatile.crt
|
||||
b6c6f6ac207a058ae6f61e8e3a2374822af51cff7d39ef8810dedee9dd84302d0c04c569aa2c3e901aa8db1f46f46a13dac83df289d0b23faaaa7dd6d9da281d i2pd/certificates/family/i2p-dev.crt
|
||||
fb8c0090b86af4109f931804c8cfe44984a6e167b150725873fb45f60fd3e4ecf10ea98e139bf708646ce935dbdd859ff60f12e5ae95d656e7fece160cecc1db i2pd/certificates/reseed/hottuna_at_mail.i2p.crt
|
||||
9573377dcc5a54336944911885384645f0672ef4ad880aa711d2d56aa3f73f206446d83640a86272cd3b890538b7803e55c0e1547fe8a5d882b577ca879a0f4e i2pd/certificates/reseed/randomrng_at_mail.i2p.crt
|
||||
101a68dca122dd1b089ad58193220eb028467197cd9ec20245b47ffa19741ad17d8e8b5332659b36fbeb63b51ec16d033a83ede445e673a65e19e77211a8208a i2pd/certificates/reseed/parg_at_mail.i2p.crt
|
||||
11cfcdb54739b618f27b58a7ce0d32c4cf49abd87c5642fd0dca6de9e65cb3e7aff670f500891911830acec92f86cf9ba01bca35ea7dd98bcc7cb4b3956a05f9 i2pd/certificates/reseed/r4sas_at_mail.i2p.crt
|
||||
a26558600bdde3b131c26268968d484d5a4de6d9d12aac65e967a85db4f3560730421ee9a3099807fff79e9e0a0ac0f6e081b845451c1d0903dcee3c83cb36a7 i2pd/certificates/reseed/bugme_at_mail.i2p.crt
|
||||
46d4e72689716b886b52865dbc592acdd320488f08058b6e33cc9736c06d193cb21790d565ec3bb063b994cdce041a199cda9b1a438a7a3df76505a2e32341be i2pd/certificates/reseed/backup_at_mail.i2p.crt
|
||||
89a26ec55be179e5b8a00e8806ddfa5d8bf0c9b3b379247ec9477c326f0ed58e5bb25fb029304ee24b800755039f0fd42a8cff49350588c406cbea240ee94539 i2pd/certificates/reseed/atomike_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
|
||||
916e3d551f4d275e2cb1e9e7aad1f420d3439b92e3f82d5ef848f287b9711c6553e0dfe7fde87788b85f017a96a96e1033a098e16e890532fb3b35502aebeaf6 i2pd/addressbook/addresses.csv
|
||||
dfeb4a93ba399b1b49b351a7478288de205e727ec6edbbc42ab91667b5400c1ac582b0883758d4e93c421e6942dacbd0e57d77c3870a1378951a06de214ea8e7 i2pd/tunnels.conf
|
||||
8fa9bf93fb7e5397fed7d68c5405a643209d1bf0ad485559468949b141b48640edcdde168e08bc38d883d56f1e2bf71c36abf805bd35e68bfbfbf912dbb23300 i2pd/i2pd-x86_64
|
||||
75758ffcbab5c27e05eb3bb912f9147fd920eb1dec21203af6e67a4a6925924edbeb0118f52246ad2d1c9b906a7598dcda53c7e6c8659571ae26d88dc49a6b15 README.md
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1
|
||||
|
||||
iQIcBAEBCgAGBQJZab7uAAoJEGb2yHuY68/ic1MQAMK6sMY7D+ufespHTQ7KfUI4
|
||||
BDG7wNOHJ8mhON6GdhY6z9AMEPjBuUb2ztivGpB5h786YVOaXE08FLKMxu7gefkZ
|
||||
pBkPCkvjaOue6nab+U+3v3cDhpPZGXK41puMiw1LsV5Ku3RihEkjfQ0QfEqYwpzE
|
||||
87XMqgf1ZIzdoEB/lw3uDGe6qVL+YYL1mLqJl2ErZXqE/x5P1HKdxckF1LiOhYbC
|
||||
cTlcES89OKko6xYqGQOy2XltFLOOiA0aC0A5OfsjxQZr+E89tlNqZA1ZYro6jVsr
|
||||
vaXr8Q/MW12FXuE2ewwx11teGtHTYN2Y6ukYp9FF5K93AkN9WQQbLKv0qdiHusL9
|
||||
0rAdI7x8H2MaYWQEMl3J4x7ZtarAFSz9prrgMBeD9h9GyqnzLMLsW5s7msevVVKZ
|
||||
zjmbM1fioMXhVoM65hoDKbhveDvHI/JlUQezFvGhDKSG5hPMp5lLOylzKIu9jH5z
|
||||
0HHvUQvTjw3Xn6VTan4DdcPZfKLW9IOc2/QRHJ5RCvrNTETxcFGIuCy+zhUSS3Le
|
||||
E54wqHcusSmxnMEP4H8rabjgCQMX6bI1YgLiNsZBl0r5DuRsnVMdDzMg5bfmIUll
|
||||
tzIwJ047su85nYlPR7MSZ8DF7JLmhTym03Nrjgw6MIkVPsEx1+tPvZIt+on194Xg
|
||||
eJEhG5WN1m5XGp5ixLCv
|
||||
=p1xd
|
||||
-----END PGP SIGNATURE-----
|
||||
@@ -1,24 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2013-2017, The PurpleI2P Project
|
||||
#
|
||||
# This file is part of Purple i2pd project and licensed under BSD3
|
||||
#
|
||||
# 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%/*}
|
||||
if [ "$dir" = "$0" ]; then
|
||||
dir="."
|
||||
fi
|
||||
cd $dir
|
||||
|
||||
arch=$(uname -m)
|
||||
language=$(echo $LANG | cut -c-5 | sed s/_/-/g)
|
||||
version="52.2.1esr"
|
||||
version="60.7.1esr"
|
||||
application="firefox"
|
||||
ftpmirror="https://ftp.mozilla.org/pub/$application/releases/$version"
|
||||
|
||||
curlfind=$(which curl)
|
||||
if [ -z $curlfind ]; then
|
||||
echo "Can't find 'cURL' installed. That script needs it!";
|
||||
echo "'cURL' does not seem to be installed. The script needs it!";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
echo "This script prepearing $application $version for use with I2Pd"
|
||||
echo "This script is preparing $application $version for use with I2Pd"
|
||||
|
||||
file="$application-$version.tar.bz2"
|
||||
filepath="linux-$arch/$language/$file"
|
||||
@@ -26,13 +30,13 @@ filepath="linux-$arch/$language/$file"
|
||||
echo "Downloading $application..."
|
||||
curl -L -f -# -O $ftpmirror/$filepath
|
||||
if [ $? -ne 0 ]; then # Not found error, trying to cut language variable
|
||||
echo "[TRY 2] I'll try download Firefox with shortener language code";
|
||||
echo "[TRY 2] I'll try downloading Firefox with shorter language code";
|
||||
language=$(echo $language | cut -c-2)
|
||||
# re-create variable with cutted lang
|
||||
filepath="linux-$arch/$language/$file"
|
||||
curl -L -f -# -O $ftpmirror/$filepath
|
||||
if [ $? -ne 0 ]; then # Not found error, trying to download english version
|
||||
echo "[TRY 3] I'll try download Firefox with English language code";
|
||||
echo "[TRY 3] I'll try downloading Firefox with the English language code";
|
||||
language="en_US"
|
||||
# re-create lang variable
|
||||
filepath="linux-$arch/$language/$file"
|
||||
@@ -45,7 +49,7 @@ if [ $? -ne 0 ]; then # Not found error, trying to cut language variable
|
||||
fi
|
||||
|
||||
if [ ! -f $file ]; then
|
||||
echo "[Error] Can't find downloaded file. Is it really exists?"
|
||||
echo "[Error] Can't find downloaded file. Does it really exist?"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
@@ -69,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
|
||||
@@ -81,14 +95,16 @@ sed -i 's/ServerURL=.*/ServerURL=-/' ../app/application.ini
|
||||
# sed -i 's/ServerURL=.*/ServerURL=-/' ../app/webapprt/webapprt.ini
|
||||
# Done!
|
||||
|
||||
echo "Downloading NoScript extension..."
|
||||
curl -L -f -# -O https://addons.mozilla.org/firefox/downloads/latest/noscript/addon-722-latest.xpi
|
||||
mv addon-722-latest.xpi ../app/browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
|
||||
echo "Downloading language packs..."
|
||||
curl -L -f -# -o ../app/browser/extensions/langpack-ru@firefox.mozilla.org.xpi https://addons.mozilla.org/firefox/downloads/file/978562/russian_ru_language_pack-60.0buildid20180605171542-an+fx.xpi
|
||||
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 "Adding standart configs..."
|
||||
echo "Downloading NoScript extension..."
|
||||
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/
|
||||
mkdir -p ../app/browser/defaults
|
||||
cp -r preferences ../app/browser/defaults/
|
||||
cp -r preferences/* ../app/
|
||||
|
||||
echo '#!/bin/sh' > "../${application}-portable"
|
||||
echo 'dir=${0%/*}' >> "../${application}-portable"
|
||||
@@ -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-----
|
||||
@@ -0,0 +1,2 @@
|
||||
pref("general.config.filename", "i2pdbrowser.cfg");
|
||||
pref("general.config.obscure_value", 0);
|
||||
@@ -0,0 +1,373 @@
|
||||
// I2Pd Browser preferences
|
||||
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/* Do not edit this file.
|
||||
*
|
||||
* If you make changes to this file while the browser is running,
|
||||
* the changes will be overwritten when the browser exits.
|
||||
*
|
||||
* To make a manual change to preferences, you can visit the URL about:config
|
||||
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
|
||||
*/
|
||||
|
||||
lockPref("accessibility.force_disabled", 1);
|
||||
defaultPref("app.normandy.first_run", false);
|
||||
lockPref("app.update.auto", false);
|
||||
lockPref("app.update.channel", "i2pdbrowser");
|
||||
lockPref("app.update.enabled", false);
|
||||
lockPref("app.update.interval", 0);
|
||||
lockPref("app.update.service.enabled", false);
|
||||
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.download.manager.retention", 0);
|
||||
defaultPref("browser.download.useDownloadDir", false);
|
||||
defaultPref("browser.feeds.showFirstRunUI", false);
|
||||
defaultPref("browser.fixup.alternate.enabled", false);
|
||||
defaultPref("browser.formfill.enable", false);
|
||||
defaultPref("browser.formfill.expire_days", 0);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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", "");
|
||||
defaultPref("browser.safebrowsing.blockedURIs.enabled", false);
|
||||
defaultPref("browser.safebrowsing.downloads.enabled", false);
|
||||
defaultPref("browser.safebrowsing.downloads.remote.enabled", false);
|
||||
defaultPref("browser.safebrowsing.gethashURL", "");
|
||||
defaultPref("browser.safebrowsing.keyURL", "localhost");
|
||||
defaultPref("browser.safebrowsing.malware.enabled", false);
|
||||
defaultPref("browser.safebrowsing.malware.reportURL", "");
|
||||
defaultPref("browser.safebrowsing.phishing.enabled", false);
|
||||
defaultPref("browser.safebrowsing.provider.google.appRepURL", "");
|
||||
defaultPref("browser.safebrowsing.provider.google.gethashURL", "");
|
||||
defaultPref("browser.safebrowsing.provider.google.lists", "");
|
||||
defaultPref("browser.safebrowsing.provider.google.reportURL", "");
|
||||
defaultPref("browser.safebrowsing.provider.google.updateURL", "");
|
||||
defaultPref("browser.safebrowsing.provider.mozilla.gethashURL", "");
|
||||
defaultPref("browser.safebrowsing.provider.mozilla.lists", "");
|
||||
defaultPref("browser.safebrowsing.provider.mozilla.updateURL", "");
|
||||
defaultPref("browser.safebrowsing.reportErrorURL", "");
|
||||
defaultPref("browser.safebrowsing.reportGenericURL", "");
|
||||
defaultPref("browser.safebrowsing.reportMalwareErrorURL", "");
|
||||
defaultPref("browser.safebrowsing.reportMalwareURL", "");
|
||||
defaultPref("browser.safebrowsing.reportPhishURL", "");
|
||||
defaultPref("browser.safebrowsing.reportURL", "");
|
||||
defaultPref("browser.safebrowsing.updateURL", "");
|
||||
defaultPref("browser.safebrowsing.warning.infoURL", "");
|
||||
defaultPref("browser.search.countryCode", "US");
|
||||
defaultPref("browser.search.defaultenginename", "YaCy 'legwork'");
|
||||
defaultPref("browser.search.geoSpecificDefaults", false);
|
||||
defaultPref("browser.search.geoSpecificDefaults.url", "");
|
||||
defaultPref("browser.search.geoip.url", "");
|
||||
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.search.widget.inNavBar", true);
|
||||
lockPref("browser.send_pings", false);
|
||||
pref("browser.send_pings.require_same_host", true);
|
||||
defaultPref("browser.shell.checkDefaultBrowser", false);
|
||||
pref("browser.startup.homepage", "http://i2pd.i2p/");
|
||||
defaultPref("browser.tabs.closeWindowWithLastTab", false);
|
||||
lockPref("browser.tabs.crashReporting.sendReport", false);
|
||||
defaultPref("browser.uitour.enabled", false);
|
||||
defaultPref("browser.urlbar.formatting.enabled", false);
|
||||
defaultPref("browser.urlbar.maxRichResults", 12);
|
||||
defaultPref("browser.urlbar.speculativeConnect.enabled", false);
|
||||
defaultPref("browser.urlbar.suggest.searches", false);
|
||||
defaultPref("browser.urlbar.trimURLs", false);
|
||||
lockPref("browser.usedOnWindows10", false);
|
||||
lockPref("browser.usedOnWindows10.introURL", "");
|
||||
lockPref("camera.control.face_detection.enabled", false);
|
||||
pref("canvas.capturestream.enabled", false);
|
||||
pref("clipboard.autocopy", false);
|
||||
defaultPref("datareporting.healthreport.about.reportUrl", "");
|
||||
defaultPref("datareporting.healthreport.about.reportUrlUnified", "");
|
||||
defaultPref("datareporting.healthreport.documentServerURI", "");
|
||||
defaultPref("datareporting.healthreport.pendingDeleteRemoteData", true);
|
||||
lockPref("datareporting.healthreport.service.enabled", false);
|
||||
defaultPref("datareporting.healthreport.service.firstRun", false);
|
||||
lockPref("datareporting.healthreport.uploadEnabled", false);
|
||||
pref("datareporting.policy.dataSubmissionEnabled", false);
|
||||
pref("datareporting.policy.firstRunTime", "0");
|
||||
pref("datareporting.sessions.current.clean", true);
|
||||
pref("device.sensors.enabled", false);
|
||||
pref("devtools.chrome.enabled", false);
|
||||
pref("devtools.debugger.force-local", true);
|
||||
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.enable_performance", false);
|
||||
pref("dom.enable_user_timing", false);
|
||||
pref("dom.event.clipboardevents.enabled", false);
|
||||
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.maxHardwareConcurrency", 2);
|
||||
pref("dom.mozTCPSocket.enabled", false);
|
||||
pref("dom.netinfo.enabled", false);
|
||||
pref("dom.network.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.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.lazarus.showDonateNotification", 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", "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);
|
||||
lockPref("geo.wifi.logging.enabled", false);
|
||||
defaultPref("geo.wifi.uri", "");
|
||||
lockPref("identity.fxaccounts.enabled", false);
|
||||
defaultPref("intl.locale.matchOS", true);
|
||||
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);
|
||||
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", "");
|
||||
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);
|
||||
defaultPref("network.IDN.whitelist.i2p", true);
|
||||
defaultPref("network.IDN_show_punycode", true);
|
||||
defaultPref("network.allow-experiments", false);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
defaultPref("network.dns.disableIPv6", true);
|
||||
defaultPref("network.dns.disablePrefetchFromHTTPS", true);
|
||||
defaultPref("network.dns.disableprefetch", true);
|
||||
pref("network.http.speculative-parallel-limit", 0);
|
||||
defaultPref("network.jar.open-unsafe-types", false);
|
||||
pref("network.manage-offline-status", false);
|
||||
defaultPref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
pref("network.predictor.enabled", false);
|
||||
defaultPref("network.prefetch-next", 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.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);
|
||||
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);
|
||||
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.firstparty.isolate", true);
|
||||
defaultPref("privacy.resistFingerprinting", true);
|
||||
pref("privacy.sanitize.timeSpan", 0);
|
||||
defaultPref("privacy.spoof_english", 2);
|
||||
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);
|
||||
pref("services.sync.prefs.sync.browser.search.update", false);
|
||||
pref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
pref("signon.autofillForms", false);
|
||||
pref("signon.rememberSignons", false);
|
||||
defaultPref("startup.homepage_welcome_url", "http://i2pd.i2p/");
|
||||
pref("startup.homepage_welcome_url.additional", "about:blank");
|
||||
lockPref("toolkit.telemetry.archive.enabled", false);
|
||||
lockPref("toolkit.telemetry.enabled", false);
|
||||
defaultPref("toolkit.telemetry.optoutSample", false);
|
||||
defaultPref("toolkit.telemetry.reportingpolicy.firstRun", false);
|
||||
lockPref("toolkit.telemetry.server", "");
|
||||
defaultPref("toolkit.telemetry.unified", false);
|
||||
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], "ä");
|
||||
@@ -1,322 +0,0 @@
|
||||
# Mozilla User preferences
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013-2017, 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
|
||||
*/
|
||||
|
||||
/* Do not edit this file.
|
||||
*
|
||||
* If you make changes to this file while the browser is running,
|
||||
* the changes will be overwritten when the browser exits.
|
||||
*
|
||||
* To make a manual change to preferences, you can visit the URL about:config
|
||||
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
|
||||
*/
|
||||
|
||||
pref("app.update.auto", false);
|
||||
pref("app.update.channel", "no");
|
||||
pref("app.update.enabled", false);
|
||||
pref("app.update.interval", 0);
|
||||
pref("app.update.service.enabled", false);
|
||||
pref("app.update.staging.enabled", false);
|
||||
pref("app.update.timer", 0);
|
||||
pref("beacon.enabled", false);
|
||||
pref("breakpad.reportURL", "");
|
||||
pref("browser.aboutHomeSnippets.updateUrl", "");
|
||||
pref("browser.cache.disk.capacity", 131072);
|
||||
pref("browser.casting.enabled", false);
|
||||
pref("browser.crashReports.unsubmittedCheck.enabled", false);
|
||||
// pref("browser.display.use_document_fonts", 0);
|
||||
pref("browser.download.manager.retention", 0);
|
||||
pref("browser.download.useDownloadDir", false);
|
||||
pref("browser.feeds.showFirstRunUI", false);
|
||||
pref("browser.fixup.alternate.enabled", false);
|
||||
pref("browser.fixup.hide_user_pass", true);
|
||||
pref("browser.formfill.enable", false);
|
||||
// PREF: Delete Search and Form History
|
||||
pref("browser.formfill.expire_days", 0);
|
||||
// PREF: Delete temporary files on exit
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
pref("browser.newtabpage.enhanced", false);
|
||||
pref("browser.newtabpage.introShown", true);
|
||||
// PREF: Do not create screenshots of visited pages
|
||||
pref("browser.pagethumbnails.capturing_disabled", true);
|
||||
pref("browser.places.smartBookmarksVersion", -1);
|
||||
pref("browser.pocket.enabled", false);
|
||||
pref("browser.pocket.useLocaleList", false);
|
||||
pref("browser.reader.detectedFirstArticle", false);
|
||||
pref("browser.rights.3.shown", true);
|
||||
pref("browser.safebrowsing.appRepURL", "");
|
||||
pref("browser.safebrowsing.blockedURIs.enabled", false);
|
||||
pref("browser.safebrowsing.downloads.enabled", false);
|
||||
pref("browser.safebrowsing.downloads.remote.enabled", false);
|
||||
pref("browser.safebrowsing.gethashURL", "");
|
||||
pref("browser.safebrowsing.keyURL", "localhost");
|
||||
pref("browser.safebrowsing.malware.enabled", false);
|
||||
pref("browser.safebrowsing.malware.reportURL", "");
|
||||
pref("browser.safebrowsing.phishing.enabled", false);
|
||||
pref("browser.safebrowsing.provider.google.appRepURL", "");
|
||||
pref("browser.safebrowsing.provider.google.gethashURL", "");
|
||||
pref("browser.safebrowsing.provider.google.lists", "");
|
||||
pref("browser.safebrowsing.provider.google.reportURL", "");
|
||||
pref("browser.safebrowsing.provider.google.updateURL", "");
|
||||
pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
|
||||
pref("browser.safebrowsing.provider.mozilla.lists", "");
|
||||
pref("browser.safebrowsing.provider.mozilla.updateURL", "");
|
||||
pref("browser.safebrowsing.reportErrorURL", "");
|
||||
pref("browser.safebrowsing.reportGenericURL", "");
|
||||
pref("browser.safebrowsing.reportMalwareErrorURL", "");
|
||||
pref("browser.safebrowsing.reportMalwareURL", "");
|
||||
pref("browser.safebrowsing.reportPhishURL", "");
|
||||
pref("browser.safebrowsing.reportURL", "");
|
||||
pref("browser.safebrowsing.updateURL", "");
|
||||
pref("browser.safebrowsing.warning.infoURL", "");
|
||||
pref("browser.search.countryCode", "US");
|
||||
pref("browser.search.defaultenginename", "DuckDuckGo");
|
||||
pref("browser.search.geoSpecificDefaults", false);
|
||||
pref("browser.search.geoSpecificDefaults.url", "");
|
||||
pref("browser.search.geoip.url", "");
|
||||
pref("browser.search.order.1", "DuckDuckGo");
|
||||
pref("browser.search.redirectWindowsSearch", false);
|
||||
pref("browser.search.region", "US");
|
||||
pref("browser.search.searchEnginesURL", "");
|
||||
pref("browser.search.suggest.enabled", false);
|
||||
pref("browser.search.update", false);
|
||||
pref("browser.send_pings", false);
|
||||
pref("browser.send_pings.require_same_host", true);
|
||||
pref("browser.selfsupport.url", "");
|
||||
pref("browser.shell.checkDefaultBrowser", false);
|
||||
user_pref("browser.startup.homepage", "http://i2pd.i2p/");
|
||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||
pref("browser.tabs.crashReporting.sendReport", false);
|
||||
pref("browser.tabs.loadInBackground", true);
|
||||
pref("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);
|
||||
pref("browser.urlbar.suggest.searches", false);
|
||||
pref("browser.urlbar.trimURLs", false);
|
||||
pref("browser.usedOnWindows10", false);
|
||||
pref("browser.usedOnWindows10.introURL", "");
|
||||
pref("camera.control.face_detection.enabled", false);
|
||||
pref("canvas.capturestream.enabled", false);
|
||||
pref("clipboard.autocopy", false);
|
||||
pref("datareporting.healthreport.about.reportUrl", "");
|
||||
pref("datareporting.healthreport.about.reportUrlUnified", "");
|
||||
pref("datareporting.healthreport.documentServerURI", "");
|
||||
pref("datareporting.healthreport.pendingDeleteRemoteData", true);
|
||||
pref("datareporting.healthreport.service.enabled", false);
|
||||
pref("datareporting.healthreport.service.firstRun", false);
|
||||
pref("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.webide.autoinstallADBHelper", false);
|
||||
pref("devtools.webide.autoinstallFxdtAdapters", 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);
|
||||
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.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("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);
|
||||
pref("extensions.shownSelectionUI", true);
|
||||
pref("extensions.ui.lastCategory", "addons://list/extension");
|
||||
pref("extensions.update.autoUpdateDefault", false);
|
||||
pref("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.warnOnAboutConfig", false);
|
||||
pref("geo.enabled", false);
|
||||
pref("geo.wifi.uri", "");
|
||||
pref("geo.wifi.logging.enabled", false);
|
||||
// pref("gfx.font_rendering.opentype_svg.enabled", false);
|
||||
pref("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("media.eme.enabled", false);
|
||||
pref("media.getusermedia.screensharing.enabled", false);
|
||||
pref("media.getusermedia.audiocapture.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);
|
||||
pref("media.navigator.enabled", false);
|
||||
pref("media.navigator.video.enabled", false);
|
||||
pref("media.peerconnection.enabled", false);
|
||||
pref("media.peerconnection.ice.no_host", true);
|
||||
pref("media.video_stats.enabled", false);
|
||||
pref("media.webspeech.recognition.enable", false);
|
||||
pref("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);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
// pref("network.cookie.thirdparty.sessionOnly", true);
|
||||
// pref("network.dns.blockDotOnion", true);
|
||||
pref("network.dns.disableIPv6", true);
|
||||
pref("network.dns.disableprefetch", true);
|
||||
pref("network.dns.disableprefetchFromHTTPS", true);
|
||||
pref("network.dns.disablePrefetch", true);
|
||||
pref("network.dns.disablePrefetchFromHTTPS", true);
|
||||
// pref("network.http.referer.spoofSource", true);
|
||||
// pref("network.http.referer.XOriginPolicy", 2);
|
||||
pref("network.http.speculative-parallel-limit", 0);
|
||||
pref("network.IDN_show_punycode", true);
|
||||
pref("network.jar.open-unsafe-types", false);
|
||||
pref("network.manage-offline-status", false);
|
||||
pref("network.negotiate-auth.allow-insecure-ntlm-v1", false);
|
||||
pref("network.predictor.enabled", false);
|
||||
pref("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.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);
|
||||
pref("network.proxy.backup.ftp", "127.0.0.1");
|
||||
pref("network.proxy.backup.ftp_port", 4444);
|
||||
pref("network.proxy.backup.socks", "127.0.0.1");
|
||||
pref("network.proxy.backup.socks_port", 4444);
|
||||
pref("network.proxy.backup.ssl", "127.0.0.1");
|
||||
pref("network.proxy.backup.ssl_port", 4444);
|
||||
pref("network.proxy.ftp", "127.0.0.1");
|
||||
pref("network.proxy.ftp_port", 4444);
|
||||
pref("network.proxy.http", "127.0.0.1");
|
||||
pref("network.proxy.http_port", 4444);
|
||||
pref("network.proxy.share_proxy_settings", true);
|
||||
pref("network.proxy.socks", "127.0.0.1");
|
||||
pref("network.proxy.socks_port", 4444);
|
||||
pref("network.proxy.socks_remote_dns", true);
|
||||
pref("network.proxy.ssl", "127.0.0.1");
|
||||
pref("network.proxy.ssl_port", 4444);
|
||||
pref("network.proxy.type", 1);
|
||||
pref("network.cookie.prefsMigrated", true);
|
||||
pref("noscript.ABE.enabled", false);
|
||||
pref("noscript.ABE.wanIpAsLocal", false);
|
||||
pref("pdfjs.disabled", true);
|
||||
pref("pdfjs.enableWebGL", false);
|
||||
pref("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", true);
|
||||
// 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);
|
||||
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.sanitize.timeSpan", 0);
|
||||
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);
|
||||
pref("services.sync.enabled", false);
|
||||
pref("services.sync.prefs.sync.browser.download.manager.scanWhenDone", false);
|
||||
pref("services.sync.prefs.sync.browser.safebrowsing.enabled", false);
|
||||
pref("services.sync.prefs.sync.browser.search.update", false);
|
||||
pref("services.sync.prefs.sync.extensions.update.enabled", false);
|
||||
// pref("shumway.disabled", true);
|
||||
pref("signon.autofillForms", false);
|
||||
// PREF: Disable password manager
|
||||
pref("signon.rememberSignons", false);
|
||||
pref("startup.homepage_welcome_url", "about:blank");
|
||||
pref("startup.homepage_welcome_url.additional", "about:blank");
|
||||
pref("toolkit.telemetry.archive.enabled", false);
|
||||
pref("toolkit.telemetry.enabled", false);
|
||||
pref("toolkit.telemetry.optoutSample", false);
|
||||
pref("toolkit.telemetry.reportingpolicy.firstRun", false);
|
||||
pref("toolkit.telemetry.server", "");
|
||||
pref("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);
|
||||
@@ -1,12 +0,0 @@
|
||||
# Mozilla User Preferences
|
||||
|
||||
/* Do not edit this file.
|
||||
*
|
||||
* If you make changes to this file while the browser is running,
|
||||
* the changes will be overwritten when the browser exits.
|
||||
*
|
||||
* To make a manual change to preferences, you can visit the URL about:config
|
||||
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
|
||||
*/
|
||||
|
||||
user_pref("browser.startup.homepage", "http://i2pd.i2p/");
|
||||
@@ -1 +1 @@
|
||||
{"chrome://browser/content/browser.xul":{"navigator-toolbox":{"iconsize":"small"},"titlebar-placeholder-on-menubar-for-caption-buttons":{"width":"96"},"titlebar-placeholder-on-TabsToolbar-for-captions-buttons":{"width":"96"},"main-window":{"screenX":"0","screenY":"0","width":"1280","height":"720","sizemode":"normal"},"PersonalToolbar":{"collapsed":"false","currentset":"personal-bookmarks"},"toolbar-menubar":{"currentset":"menubar-items"},"TabsToolbar":{"currentset":"tabbrowser-tabs,new-tab-button,alltabs-button"},"addon-bar":{"currentset":"addonbar-closebutton,status-bar"},"sidebar-title":{"value":""}}}
|
||||
{"chrome://browser/content/browser.xul":{"navigator-toolbox":{"iconsize":"small"},"titlebar-placeholder-on-menubar-for-caption-buttons":{"width":"102"},"titlebar-placeholder-on-TabsToolbar-for-captions-buttons":{"width":"102"},"main-window":{"screenX":"30","screenY":"30","width":"1280","height":"720","sizemode":"normal"},"PersonalToolbar":{"collapsed":"false","currentset":"personal-bookmarks"},"toolbar-menubar":{"currentset":"menubar-items"},"TabsToolbar":{"currentset":"tabbrowser-tabs,new-tab-button,alltabs-button"},"addon-bar":{"currentset":"addonbar-closebutton,status-bar"},"nav-bar":{"currentset":"back-button,forward-button,stop-reload-button,urlbar-container,bookmarks-menu-button,downloads-button,_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action"},"sidebar-title":{"value":""}}}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB6jCCAY+gAwIBAgIJAPeWi4iUKLBJMAoGCCqGSM49BAMCMHoxCzAJBgNVBAYT
|
||||
AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNVBAoMFUkyUCBBbm9u
|
||||
eW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYDVQQDDBdnb3N0Y29p
|
||||
bi5mYW1pbHkuaTJwLm5ldDAeFw0xNzA4MDExMzQ4MzdaFw0yNzA3MzAxMzQ4Mzda
|
||||
MHoxCzAJBgNVBAYTAlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNV
|
||||
BAoMFUkyUCBBbm9ueW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYD
|
||||
VQQDDBdnb3N0Y29pbi5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABC+9iIYumUNnsqKbnTluHimV8OdGvo7yeGxuqhfNNB2b3jvbFJ81scgH
|
||||
dsZtMQmUxgKM5nH+NQJMoCxHhSlRy2QwCgYIKoZIzj0EAwIDSQAwRgIhANNh7mOp
|
||||
nBBPRh2a/ipG1VYS0d+mNjSrpz8xWcG3CXPLAiEAjM5MTfv9sOJ74PeZVhFZ02w4
|
||||
vhgyZCeLJ57f123Lm1A=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
cGpnw4a2u9sHZIUNHzoGq32+7UWXsBI5Ow==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,35 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Hz8KWVkHZg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
N1tGWBZt9Prq
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
gfvIm7v+cELj8a53EQY0LafzZqNC5kQAp916coU=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
E/w1AJEepnw/KfHqS3bw
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Cw==
|
||||
-----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,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
749STYJRfZXdIe69M9zpM5unxENAsiPJgQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
hqQ7usTy3oaWD85MbJ0q
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
pwvcQcjIzbUzEK0=
|
||||
-----END CERTIFICATE-----
|
||||
+2
-4
@@ -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)
|
||||
@@ -15,7 +13,7 @@ if [ -z $screenfind ]; then
|
||||
fi
|
||||
|
||||
if [ $arch = "x86_64" ]; then
|
||||
screen -Adm -S i2pd ./i2pd-x86_64 --datadir=.
|
||||
screen -Adm -S i2pd ./i2pd-amd64 --datadir=.
|
||||
else
|
||||
screen -Adm -S i2pd ./i2pd-i386 --datadir=.
|
||||
fi
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
8ac8c1452a00b9654755be88ab805982c1d56a92
|
||||
@@ -1 +1 @@
|
||||
5aa5a9af3415dc4e70aefa935e08119eec238cb2
|
||||
af5de0612c40f715740fd4d168aa444b4baca790
|
||||
@@ -1 +0,0 @@
|
||||
6b9d8a3b0acaf45a0babe302b29f7a2c259220e8
|
||||
+14
-133
@@ -2,167 +2,48 @@
|
||||
## See https://i2pd.readthedocs.org/en/latest/configuration.html
|
||||
## for more options you can use in this file.
|
||||
|
||||
## Lines that begin with "## " try to explain what's going on. Lines
|
||||
## that begin with just "#" are disabled commands: you can enable them
|
||||
## by removing the "#" symbol.
|
||||
#log = file
|
||||
#logfile = ./i2pd.log
|
||||
|
||||
## Tunnels config file
|
||||
## Default: ~/.i2pd/tunnels.conf or /var/lib/i2pd/tunnels.conf
|
||||
tunconf = ./tunnels.conf
|
||||
|
||||
## Where to write pidfile (don't write by default)
|
||||
pidfile = ./i2pd.pid
|
||||
|
||||
## Logging configuration section
|
||||
## By default logs go to stdout with level 'info' and higher
|
||||
##
|
||||
## Logs destination (valid values: stdout, file, syslog)
|
||||
## * stdout - print log entries to stdout
|
||||
## * file - log entries to a file
|
||||
## * syslog - use syslog, see man 3 syslog
|
||||
# log = file
|
||||
## Path to logfile (default - autodetect)
|
||||
# logfile = /var/log/i2pd.log
|
||||
## Log messages above this level (debug, *info, warn, error)
|
||||
# loglevel = info
|
||||
|
||||
## Path to storage of i2pd data (RI, keys, peer profiles, ...)
|
||||
## Default: ~/.i2pd or /var/lib/i2pd
|
||||
datadir = .
|
||||
|
||||
## Daemon mode. Router will go to background after start
|
||||
# daemon = true
|
||||
## Run as a service. Router will use system folders like ‘/var/lib/i2pd’
|
||||
# service = true
|
||||
|
||||
## Specify a family, router belongs to (default - none)
|
||||
# family =
|
||||
|
||||
## External IP address to listen for connections
|
||||
## By default i2pd sets IP automatically
|
||||
# host = 1.2.3.4
|
||||
|
||||
## Port to listen for connections
|
||||
## By default i2pd picks random port. You MUST pick a random number too,
|
||||
## don't just uncomment this
|
||||
# port = 4567
|
||||
|
||||
## Enable communication through ipv4
|
||||
ipv4 = true
|
||||
## Enable communication through ipv6
|
||||
ipv6 = false
|
||||
|
||||
## Network interface to bind to
|
||||
# ifname =
|
||||
|
||||
## Enable NTCP transport (default = true)
|
||||
# ntcp = true
|
||||
## Enable SSU transport (default = true)
|
||||
# ssu = true
|
||||
|
||||
## Should we assume we are behind NAT? (false only in MeshNet)
|
||||
# nat = true
|
||||
|
||||
## Bandwidth configuration
|
||||
## L limit bandwidth to 32Kbs/sec, O - to 256Kbs/sec, P - to 2048Kbs/sec,
|
||||
## X - unlimited
|
||||
## Default is X for floodfill, L for regular node
|
||||
bandwidth = O
|
||||
|
||||
## Router will not accept transit tunnels at startup
|
||||
# notransit = true
|
||||
|
||||
## Router will be floodfill
|
||||
# floodfill = true
|
||||
|
||||
[limits]
|
||||
## Maximum active transit sessions (default:2500)
|
||||
# transittunnels = 2500
|
||||
|
||||
[precomputation]
|
||||
## Enable or disable elgamal precomputation table
|
||||
## By default, enabled on i386 hosts
|
||||
elgamal = true
|
||||
|
||||
[upnp]
|
||||
## Enable or disable UPnP: automatic port forwarding (enabled by default in WINDOWS, ANDROID)
|
||||
enabled = true
|
||||
|
||||
## Name i2pd appears in UPnP forwardings list (default = I2Pd)
|
||||
# name = I2Pd
|
||||
name = I2Pd
|
||||
|
||||
[reseed]
|
||||
## Enable or disable reseed data verification.
|
||||
verify = true
|
||||
## URLs to request reseed data from, separated by comma
|
||||
## Default: "mainline" I2P Network reseeds
|
||||
# urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/
|
||||
## Path to local reseed data file (.su3) for manual reseeding
|
||||
# file = /path/to/i2pseeds.su3
|
||||
## or HTTPS URL to reseed from
|
||||
# file = https://legit-website.com/i2pseeds.su3
|
||||
|
||||
[addressbook]
|
||||
## AddressBook subscription URL for initial setup
|
||||
## Default: inr.i2p at "mainline" I2P Network
|
||||
# defaulturl = http://joajgazyztfssty4w2on5oaqksz6tqoxbduy553y34mf4byv6gpq.b32.i2p/export/alive-hosts.txt
|
||||
## Optional subscriptions URLs, separated by comma
|
||||
# subscriptions = http://inr.i2p/export/alive-hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://rus.i2p/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]
|
||||
## Uncomment and set to 'false' to disable Web Console
|
||||
# enabled = true
|
||||
## Address and port service will listen on
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7070
|
||||
|
||||
[httpproxy]
|
||||
## Uncomment and set to 'false' to disable HTTP Proxy
|
||||
# enabled = true
|
||||
## Address and port service will listen on
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 4444
|
||||
## Optional keys file for proxy local destination
|
||||
# keys = http-proxy-keys.dat
|
||||
|
||||
[socksproxy]
|
||||
## Uncomment and set to 'false' to disable SOCKS Proxy
|
||||
# enabled = true
|
||||
## Address and port service will listen on
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 4447
|
||||
## Optional keys file for proxy local destination
|
||||
# keys = socks-proxy-keys.dat
|
||||
|
||||
## Socks outproxy. Example below is set to use Tor for all connections except i2p
|
||||
## Address and port of outproxy
|
||||
# outproxy = 127.0.0.1
|
||||
# outproxyport = 9050
|
||||
|
||||
[sam]
|
||||
## Uncomment and set to 'true' to enable SAM Bridge
|
||||
# enabled = false
|
||||
## Address and port service will listen on
|
||||
# address = 127.0.0.1
|
||||
# port = 7656
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7656
|
||||
|
||||
[bob]
|
||||
## Uncomment and set to 'true' to enable BOB command channel
|
||||
# enabled = false
|
||||
## Address and port service will listen on
|
||||
# address = 127.0.0.1
|
||||
# port = 2827
|
||||
|
||||
[i2cp]
|
||||
## Uncomment and set to 'true' to enable I2CP protocol
|
||||
# enabled = false
|
||||
## Address and port service will listen on
|
||||
# address = 127.0.0.1
|
||||
# port = 7654
|
||||
|
||||
[i2pcontrol]
|
||||
## Uncomment and set to 'true' to enable I2PControl protocol
|
||||
# enabled = false
|
||||
## Address and port service will listen on
|
||||
# address = 127.0.0.1
|
||||
# port = 7650
|
||||
[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,4 @@
|
||||
/FirefoxESR.app
|
||||
/i2pd
|
||||
/data
|
||||
/i2pdbrowser-portable
|
||||
@@ -0,0 +1,23 @@
|
||||
I2Pd Browser Portable builder for MacOS X
|
||||
=====
|
||||
This is a script-based builder of I2Pd Browser Portable
|
||||
|
||||
What **MUST** work now (needed test)
|
||||
-----
|
||||
* Auto detecting system language
|
||||
* Pre-configuring Firefox to use with I2Pd
|
||||
* Auto downloading NoScript extension
|
||||
|
||||
How to use
|
||||
-----
|
||||
1. Build pre-configured Firefox using script `build.sh` from `build` folder
|
||||
2. Run I2Pd by executing `./i2pd` from `i2pd` folder
|
||||
3. Run Firefox by executing `./i2pdbrowser-portable`
|
||||
|
||||
Additional info
|
||||
-----
|
||||
`./i2pd` from `i2pd` folder starts a screen session with i2pd in it.
|
||||
To stop the i2pd router you can use the commands `Start graceful shutdown` or `Force shutdown`
|
||||
from i2pd webconsole page `http://127.0.0.1:7070/?page=commands`
|
||||
|
||||
SHA512SUMS created with `find * -type f -print0 | xargs -0 -i sha512sum {}` command
|
||||
Executable
+134
@@ -0,0 +1,134 @@
|
||||
#!/bin/sh
|
||||
|
||||
# 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%/*}
|
||||
if [ "$dir" = "$0" ]; then
|
||||
dir="."
|
||||
fi
|
||||
cd $dir
|
||||
|
||||
arch=$(uname -m)
|
||||
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}"
|
||||
|
||||
curlfind=$(which curl)
|
||||
if [ -z $curlfind ]; then
|
||||
echo "'cURL' does not seem to be installed. The script needs it!";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
echo "This script is preparing Firefox $version for use with I2Pd"
|
||||
|
||||
file="Firefox ${version}.dmg"
|
||||
filepath="mac/${language}/${file}"
|
||||
|
||||
echo "Downloading $application..."
|
||||
|
||||
tmpfilepath=$(echo $filepath | sed 's/ /%20/g')
|
||||
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)
|
||||
# re-create variable with cutted lang
|
||||
filepath="mac/$language/$file"
|
||||
tmpfilepath=$(echo $filepath | sed 's/ /%20/g')
|
||||
curl -L -f -# -o "${file}" "${ftpmirror}/${tmpfilepath}"
|
||||
if [ $? -ne 0 ]; then # Not found error, trying to download english version
|
||||
echo "[TRY 3] I'll try downloading Firefox with the English language code";
|
||||
language="en_US"
|
||||
# re-create lang variable
|
||||
filepath="mac/$language/$file"
|
||||
tmpfilepath=$(echo $filepath | sed 's/ /%20/g')
|
||||
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;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f $file ]; then
|
||||
echo "[Error] Can't find downloaded file. Does it really exist?"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
echo "Downloading checksum file and checking SHA512 checksum"
|
||||
curl -L -f -# -O "${ftpmirror}/SHA512SUMS"
|
||||
recv_sum=$(grep "$filepath" SHA512SUMS | cut -c-128)
|
||||
file_sum=$(shasum -a 512 "$file" | cut -c-128)
|
||||
if [ $recv_sum != $file_sum ]; then
|
||||
echo "[Error] File checksum failed!"
|
||||
exit 1;
|
||||
else
|
||||
echo "Checksum correct."
|
||||
rm SHA512SUMS
|
||||
fi
|
||||
|
||||
echo "Attaching image and copying files..."
|
||||
hdiutil attach "$file"
|
||||
cp -rf /Volumes/Firefox/Firefox.app ../FirefoxESR.app
|
||||
mkdir ../data
|
||||
|
||||
echo "Detaching image and removing image file..."
|
||||
hdiutil detach /Volumes/Firefox
|
||||
rm "$file"
|
||||
|
||||
## TODO: check on linux before make that changes
|
||||
# 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
|
||||
sed -i '' -e "s/Enabled=1/Enabled=0/g" "../FirefoxESR.app/Contents/Resources/application.ini"
|
||||
sed -i '' -e "s/ServerURL=.*/ServerURL=-/" "../FirefoxESR.app/Contents/Resources/application.ini"
|
||||
# Done!
|
||||
|
||||
echo "Downloading language packs..."
|
||||
curl -L -f -# -o ../FirefoxESR.app/Contents/Resources/browser/extensions/langpack-ru@firefox.mozilla.org.xpi "https://addons.mozilla.org/firefox/downloads/file/978562/russian_ru_language_pack-60.0buildid20180605171542-an+fx.xpi"
|
||||
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/3028550/noscript_security_suite-10.6.3-an+fx.xpi"
|
||||
|
||||
echo "Adding standard configs..."
|
||||
cp profile/* ../data/
|
||||
cp -r preferences/* ../FirefoxESR.app/Contents/Resources/
|
||||
|
||||
echo '#!/bin/sh' > "../i2pdbrowser-portable"
|
||||
echo 'dir=${0%/*}' >> "../i2pdbrowser-portable"
|
||||
echo 'if [ "$dir" = "$0" ]; then' >> "../i2pdbrowser-portable"
|
||||
echo ' dir="."' >> "../i2pdbrowser-portable"
|
||||
echo 'fi' >> "../i2pdbrowser-portable"
|
||||
echo 'cd $dir' >> "../i2pdbrowser-portable"
|
||||
echo 'FirefoxESR.app/Contents/MacOS/firefox -profile data -no-remote' >> "../i2pdbrowser-portable"
|
||||
|
||||
chmod +x "../i2pdbrowser-portable"
|
||||
|
||||
echo "Downloading i2pd..."
|
||||
curl -L -f -# -O "https://github.com/PurpleI2P/i2pd/releases/download/${i2pdversion}/i2pd_${i2pdversion}_osx.tar.gz"
|
||||
mkdir ../i2pd
|
||||
tar xfz i2pd_${i2pdversion}_osx.tar.gz -C ../i2pd
|
||||
mv ../i2pd/i2pd ../i2pd/i2pd-osx
|
||||
cp -rf i2pd/* ../i2pd
|
||||
rm "i2pd_${i2pdversion}_osx.tar.gz"
|
||||
|
||||
echo "... finished"
|
||||
@@ -0,0 +1,693 @@
|
||||
00.i2p,zmzpltxslembpaupg3srh4bbhv5txgh5jmms6sfj4hzsvlv3xugq
|
||||
0ipfs.i2p,cdii3ou5mve5sfxyirs6kogt4tbvivk2d6o25awbcbazjrlhjeza
|
||||
0xcc.i2p,gawouxh2sg32cluwlqsnpy3dwedvoqtfroi4evvdvm2pfv7tdadq
|
||||
1.fcp.freenet.i2p,cuxbeputgxn75ak4nr7ltp7fjktnzl5sul3wstwnsoytbbpb4ixq
|
||||
102chan.i2p,xxu3lso4h2rh6wmrxiou3ax7r7la7x6dhoepnku3jvrlwp35pefq
|
||||
1st.i2p,rduua7bhest6rwsmmyttzssfdw3p4eu6bgl3mb4hin32qo3x5zfq
|
||||
2.fcp.freenet.i2p,ndsznnipoeyapnsg3gj3yi2dzsqduxwalmujm5mzjm7e6x374tta
|
||||
333.i2p,ctvfe2fimcsdfxmzmd42brnbf7ceenwrbroyjx3wzah5eudjyyza
|
||||
55cancri.i2p,b4iqenefh2fr4xtuq6civfc6nhnia6e2yo36pf7vcgdvrwmh7xua
|
||||
adab.i2p,pxjr6f2cig6v7v7ekam3smdnkqgmgseyy5cdwrozdyejm7jknkha
|
||||
alice.i2p,iq26r2ls2qlkhbn62cvgb6a4iib7m5lkoulohdua5z6uvzlovjtq
|
||||
always.i2p,wp43sdtuxum6gxbjvyeor35r5yvgtkp3dcu7dv47lx22zeb3relq
|
||||
amazone.i2p,e6kq73lsxaeyiwpmykdbdo3uy4ppj64bl7y3viegp6mqrilqybqa
|
||||
amiga.i2p,edy2xappzjjh7bxqounevji4wd2binqkv7gft4usrkan45xhbk5q
|
||||
amobius.i2p,rj6432agdprun5baai2hj62xfhb4l75uvzl55dhj6z5zzoxv3htq
|
||||
anarchistfaq.i2p,xosberjz2geveh5dcstztq5kwew6xx2brrqaorkjf2323bjzcd3q
|
||||
animal.i2p,5iedafy32swqq4t2wcmjb4fvg3onscng7ct7wb237jkvrclaftla
|
||||
anodex.i2p,25cb5kixhxm6i6c6wequrhi65mez4duc4l5qk6ictbik3tnxlu6a
|
||||
anoncoin.i2p,nmi3loretkk4zbili32t2e5wyznwoxcsgzmd2z4ll3msgndyqpfa
|
||||
anongw.i2p,owrnciwubb3f3dctvlmnaknb6tjdxtlzvv7klocb45mmhievdjhq
|
||||
anonsfw.i2p,ir6hzi66izmvqx3usjl6br3nndkpazonlckrzt3gtltqcy5ralyq
|
||||
anonymnet.i2p,77ouyl2ane7ffgydosd4ye42g67aomtc4jrusmi76lds5qonlffa
|
||||
anonynanny.i2p,l2lnhq2dynnmf3m46tcbpcmbbn4kifjgt26go6n2hlapy4drhyja
|
||||
anonyradio.i2p,cbobsax3rhoyjbk7ii2nd2fnl5bxh3x7bbearokyxgvmudn7o5bq
|
||||
antipiracyagency.i2p,by4kcmklz7xnkai6ndfio47kts3rndm6wwleegtxghllimikdapq
|
||||
antipiratbyran.i2p,y2qbhrvuciifbszaqqwxd5t75bomp7kzdqx4yxsrkaq542t75k3a
|
||||
aosp.i2p,ly7raldsh2na2cgw5yvueyvqqjgx3vbqinecjrqdldgya76i2p2q
|
||||
arc2.i2p,rnmosuwvtftfcrk5sk7zoyhyadh2g4dhe2mif5ml7qjisgkyw2na
|
||||
archaicbinarybbs.i2p,t7o2tw36cffedgfr6kahewpkrntofnliuapji2e4rucl3os55epa
|
||||
archiv.tutorials.i2p,lldr2miowq6353fxy44pnxfk37d6yn2f6kaivzecbmvvnnf5exyq
|
||||
archive.i2p,x54d5st3dl6mwgfxj6raiekqkypo5pdvuex3n62szwju7hgefiyq
|
||||
archive.syndie.i2p,abbyu5n3mh3nj7pe3b6byldrxswvva5ttxcafsnnseidanurq3kq
|
||||
ardor-wallet.i2p,tm23k5ny3umhf6vf3kghnnwacli5zywq5wrr3xcqowbcofuyr4gq
|
||||
ardvark.i2p,jcmw2sol3hruwc6rfinonx4e23pjkukkg7lg7xt7xb2gpiyyraiq
|
||||
arf.i2p,o46lsq4u7udxg3qqlidrmpj4lb4nr7ldxmbb2x53nftndaeyxqeq
|
||||
arkan.i2p,7o5y2lyyrjx5tf6l4fyumywui7msjv5azaaheatvw5sqj7mxbuvq
|
||||
asciiwhite.i2p,itbzny5ktuenhjwjfqx3jravolhlj5wullhhr2m4qr6k2emnm5dq
|
||||
aspnet.i2p,tsb7zqru57p4q2a7cto2lko4w5cg4lieglwm6t27c44fkphqmf2a
|
||||
asylum.i2p,p45ejjw4p2q6nq3mzi6cm6ep35grtzshboidj2lojmrmic22noha
|
||||
auchan.i2p,6vxz4yp3vhjwbkmxajj7wiikxafwujig63gkhjknbq6xh4rqpm5a
|
||||
aum.i2p,ohdfneqxapfd3fwfbum4tut7z6k3rnr7rrguoxdrrfe2tln2kpbq
|
||||
awup.i2p,v6g32duzrkacnrezfbll3pza5u37h7lnukr2wbsk6rqen6prhbga
|
||||
b.i2p,272kt3gcx6wjurunzaiiwld7s5p4mpjewfubzmlcvw2vie62ckpq
|
||||
bacardi.i2p,hivhnx2v47vh234c7coi2urj5cyvbl4bu3ypjr7snklortyqeljq
|
||||
backup.i2p,kepphem42whle3rkfv26wcksmnegdbg6rdp6t3oobdkc2fmzrdkq
|
||||
badfish.i2p,f6v26gyr4eipy3a7pi2voulw5qvob6dg7zij6xpo2ywbi5tvbu6a
|
||||
badtoyz.i2p,3qz6ubtwlt2c4iasofjirkckq43u5fgkzyg7mlutcsym5gzhijna
|
||||
barry.i2p,4kyahq53ol52n23l44tefgeaxqpp3cbb632t5k3umdvqcooevdzq
|
||||
bash.i2p,s3wouoilbl3mrefxjhp4qoyujgok34e7y6vmpbu6hx4342ivqo4q
|
||||
bdl.i2p,kp6fnuulenbjm7r26pfbmjcq3u7c7kvxeajodvgr5flcnskdgi5a
|
||||
bdsm.i2p,pa7fxql5jljegg7j5tglhnnaod2sptq3gxvdn3ji6muqyhgn3poq
|
||||
betaguru.i2p,d7cduwwhrcc2voameqfkvd66u3advu4jw2p6pysgax35vq6ovriq
|
||||
beyond.i2p,uaicfqlrpjtitqbqkpfujanj5dollzfzee5glsuls67ekw6hlpoa
|
||||
bible.i2p,pypz7ca24n3lyp4tm3kvncg3ltp3gd5pgnacc6zltoeffiyyegda
|
||||
bible4u.i2p,xs6lr2g5jiaajtb3nkno2zmy34eipitrggooxb7wtey7uko7bqmq
|
||||
bigbrother.i2p,tnxiifs6uticzyg6ac4lhv2l5luwi6xra7yngocro56ive5e4jsq
|
||||
bitlox.i2p,lqw5khxcdntlv3u4vhn53upcqirplvnc4etjlmoytrzs66ytettq
|
||||
bittorrent.i2p,pgax2vz572i4zsp6u6paox5xubmjrkqohq6g4hvlp6ruzzy56l5q
|
||||
bk1k.i2p,nlyegmtyfffo5jfgg5h4dxxnlmqko2g36gpaye5a7vd3is35xxfq
|
||||
bl.i2p,e73d6uhnfbylza6wqkhxejmqeyfb7thkzw35gn5ojmna64jzyk2a
|
||||
black.i2p,sjwueu62qpe6dtv5b322k3f23fl4uz3w6qe6wcrwauiwpnymypfq
|
||||
blackbox.i2p,7josyf7zjieoib3ovmr5a4dh5w64kmfh45lv5h436eljtgfegtqa
|
||||
blackexchange.i2p,ztgr5kghkyn43fhhkuycroxgfti6cojo3vg4wdd3usqonyvrla5q
|
||||
blog.curiosity.i2p,yiz6jec5k7ccxdgnh7msqa4ze52bqqmf6rpq6bqdyojra2erd4ta
|
||||
blog.polecat.i2p,orlccceubewvxo3fbdyydq6e4uuidbs4xd5u2gyqbculnowo3ehq
|
||||
blog.tinlans.i2p,ylkch2nkrwehakx4z6wiyjbeqwlgasknukdkex6r6yq4xusrjnda
|
||||
bluebeam.i2p,lvxp3cbcfwtol57d5pmrsck32t7ndutlxubjb4smaf32bynhlk6a
|
||||
blueheron.i2p,anfb5jrhixjmvkyxctqwkezqer7dbob22wge2bh6wsewbhgnftfa
|
||||
bnc.i2p,fr4zbcygmx2vdct6nrabakfys4b4derm6jqu2ovppkgqillvlqxa
|
||||
bob.i2p,i76m7dwm5hnapljendbie6fc5y3mjlkdlduo3tvbwiwmvhxbpyaa
|
||||
bobcat.i2p,ftuukjtcquuvppt726w37boit7gp5hf2yxwfop35prx3grzzzxlq
|
||||
bobthebuilder.i2p,qlahgthqhr4uojkkwahnper2cl3ro5f5gtzy5t4lzapbzo4osy6q
|
||||
boerse.i2p,7633w56hd53sesr6b532r5qlbdnvyl5bnvama6ign6xryaxol4rq
|
||||
bofh.i2p,auvuinzogu6gc4pwsgbjijuszxgcjygciu2wy53pfz7mo5nfpc5a
|
||||
boing.i2p,bgsq33bh74j66hn4oh7oovlvuhhdyw22lq2qi2fnv3jyh2ryap3a
|
||||
books.manveru.i2p,eb2tisc2vr5jvjqrixrozcujiucwxg4m722stxwho5666ipl67zq
|
||||
bote.i2p,bhjhc3lsdqzoyhxwzyrd63kvyg4br6n2337d74blyintae66mr2a
|
||||
bozo.i2p,7a2d23h6htprhzrol36vgwgklsbqrnuya4tbaaaspmaeaodt57iq
|
||||
brittanyworld.i2p,e76umhhic3474sdxiuax25ixyfg7y3z7oojj4fmxvhgv3ruet6aa
|
||||
bt.i2p,uhkuu54pg47zey76h45tnvsdtpkf5bthbtrjgnaloi5m54h4hlaq
|
||||
bugfuzz.i2p,ubszn4gsf22vga67rvzzlg4qj2bfcq6o52fmxz46xruawqm6z7rq
|
||||
burntout.i2p,lkep3fd7tjvxrs25crr2c3jy7xm4s7bqiua5r327zgpw37sgyerq
|
||||
bytepay.i2p,7amc4ztwkzu3cgsaaaw3223ohuihn5hlsqc6gpf2rxdyptdkyugq
|
||||
ca.i2pd.i2p,u5safmawcxj5vlrdtqrsqbsndkr5cfenpicgg5euu4xqm73yicba
|
||||
cases.i2p,kmpmk2fmineaiwublteqlifg4fkmewnhmxqlcgg7qwecz6daj43a
|
||||
cathugger.i2p,vq43xjjcnejqpzfprws5qzrea2siieshu4tglpdepql2w3w3bpba
|
||||
cbs.i2p,u3lp7wazvq6opodzwjg5sc5w5kwxehmxd4wcdpt4s4j2k4dx4apq
|
||||
cerapadus.i2p,zroed2cxga5zeuu6rcvmp2yfi77nzduw7yhdplbeuqkuyxwbrzaq
|
||||
cerebrum.i2p,u5gtsfn267udwfh2uq35jiabkufifvcbgv456zz34cydutsiw2eq
|
||||
cgan.i2p,43z65gdr52xe3fxmkumwp3dzhedu4tu4rdtzr24hz5b4awcpfbqa
|
||||
chat.i2p,ollpwnp6yidc3obbb3famgt6rw5jg5w3k3a6z7hhaegj6gcohiuq
|
||||
chess.fillament.i2p,tv6wbanei647yf5bie4dhg2wmybkjurezlpdfwftc5ajqlfswwya
|
||||
chess.i2p,sbnoqznp5yzxals3vs6nzyqaj2fetvonys4e3b3x4ktmfeus54sa
|
||||
china.i2p,wit6f2zx6dtuqqze6nhbykrds3idppfirxvhf2f7ydqoqf4xdzeq
|
||||
chitanka.i2p,u4s3jneepk3akoez46kqiwikoezi6zyj2ibjkjyi4uuvsbcojzba
|
||||
ciaran.i2p,2r3645eete6xwbfu62ogonudcrcgqq25sbnij5v4geru74yrscna
|
||||
ciphercraft.i2p,7s5pkqbpbfdkxtwuu2e2iwstbikyewvvscy76lij4x5pfbygbjca
|
||||
closedshop.i2p,6fg67mbw2okopzyonsck4bsy3cy7l2fame56uiysr2cezhjhzdbq
|
||||
cneal.i2p,g4za73ffigv3ht4jnhzy4dae52djjq7lqcguqsfg3w5cxzqm7nba
|
||||
co.i2p,3mvo5eifcwplcsoubtvqkzdahwo2sdhfygfdde7lj2glybk4q22q
|
||||
codevoid.i2p,2mukrqwtinsw27uoejtrz74zxtilyhnnfdyso7j3yo6vaa6nzlaa
|
||||
colombo-bt.i2p,cyr75zgiu2uuzap5zeosforbgvpfbqos2g6spe4qfulvzpyhnzxa
|
||||
complication.i2p,x2av6rwj5e5tp64yhdmifdyleo4wblw4ncrrcrabxwscuevpdv7a
|
||||
comwiz.i2p,6p7zqfotzbd66etl5xqy3p6xvr5ijucru3am2xqa7wmnj6vf3djq
|
||||
confessions.i2p,lh5vitshufxpmyr44zgyymebo5elc42eda7pxvn5lmtes47c7rxa
|
||||
connelly.i2p,5yrris3nigb3fapvzrlrcaew6cdmzdknzvgrc7y2jpn3ntqurweq
|
||||
costeira.i2p,abhty5xlmnyab2kqdxcd56352kcescxoux3p6dbqdrghggyygnxa
|
||||
cowsay.i2p,q4ghzfpah4ffvm3bhc6fdkrznk5f6jxfjm2daytlparznai5d54q
|
||||
crstrack.i2p,mm3zx3besctrx6peq5wzzueil237jdgscuvn5ugwilxrwzyuajja
|
||||
crypthost.i2p,zywhrxtnkjc3rxxvxbocom7ml4hnutomgtuvqrwyf3rhuupnq5ca
|
||||
crypto.i2p,vffax5jzewwv6pfim55hvhqyynafkygdalvzoqd74lkib3hla3ta
|
||||
cryptostorm.i2p,mlu7mswyirjf53usqq7gyamvqc6rqihezgdbevov3dkxmkfo57aq
|
||||
curiosity.i2p,eomeif4xrykxlzhawc3icdilje5iammijos6tyizwhrfh3j7qdvq
|
||||
cvs.i2p,yd6k7dzpsa2tnlzx4q7xqkmd4qsjk5xk5hbiqpiarwbeyvxaxgba
|
||||
danwin1210.i2p,eoqdf4no5dxn4tw5n256kkd4lzz3uk4p47np4mepsykpsdzrnvba
|
||||
darknetnow.i2p,gkx3o5fy7mv7l4psqqnhp35d5iun7rt3soci6ylf3rgb7a5a655q
|
||||
darknut.i2p,2mk37gtvpk2i63o6vl7vna4dr46rqexxetupgn5efuuins7x3qya
|
||||
darkrealm.i2p,gbh4eerxdsph7etxsxznfhvmuiz54trlkenakqep343u4xcoekzq
|
||||
darrob.i2p,hz2xhtpeo6btgiwi6od4qj2575ml5o2246rd5orarruyjhd63zja
|
||||
dashninja.i2p,dzjzoefy7fx57h5xkdknikvfv3ckbxu2bx5wryn6taud343g2jma
|
||||
davidkra.i2p,nq7ca2egm563nir3xegfv52ocgmxstpz56droji4jgnzfoosk45a
|
||||
dcherukhin.i2p,qa4boq364ndjdgow4kadycr5vvch7hofzblcqangh3nobzvyew7a
|
||||
de-ebook-archiv.i2p,6mhurvyn6b6j6xa4a3wpuz7ovpsejbuncvyl6rnhepasfgdgmn7q
|
||||
de-ebooks.i2p,epqdyuuhtydkg5muwwq47n7jvr66pq4jheve7ky5euls6klzwuyq
|
||||
dead.i2p,7ko27dxvicr2sezvykkrfiktlghx5y5onup3f2bas5ipocy6ibvq
|
||||
deadgod.i2p,63bveyh7wefb44hlia7wtxxb3jal3r67thd6jekmwrtq4ulaaksa
|
||||
debian-multimedia.i2p,cylxxz2y35x6cvyrl57wu3brckurtexatyi2i5awz3eeamqwjspq
|
||||
decadence.i2p,pw5ys7k2grjb5myydpv6ohikm6nna7y6u2dro44i4rucgulu3ikq
|
||||
deepwebradio.i2p,2nait2gdeozkgf6gyhzjfij6mwldwkxxwcvtxobb4b5q5cvtm5la
|
||||
def2.i2p,cepsrw27kdegwo7ihzouwvgcvw2obswwjs23ollgj7hk2yrce3da
|
||||
def3.i2p,xbf3ots2purqun7orn72ypkpjmrzbfrkj3u654zfe77hbrbow6la
|
||||
def4.i2p,yyzdq4fwwmnlojp23drfpfqujln2vcjozjrfzfeuriuqzdq7g4mq
|
||||
deploy.i2p,ujzspsqkbz5z272eozsrdv4ukl434h3fuliwrfxxnab74jmd7e6a
|
||||
det.i2p,y6d4fs3rpqrctuv77ltfajf5m4tl4kzcu7rtwhxgiohylfxxow4q
|
||||
detonate.i2p,nykapdsjjswdkjov7x3jzslhg4ig3cpkhmshxqzijuhbisx25jja
|
||||
dev.i2p,cfscxpnm3w3qxnlv3oikewxm4qrot4u6dwp52ec2iuo6m7xb5mna
|
||||
di.i2p,3irnooyt5spqiem66upksabez4f3yyrvvjwkmwyzlbealg64mgxa
|
||||
diasporg.i2p,edvccoobtjukjgw2os5eetywanbb2mpag5aknkrpia5qx2koksua
|
||||
diftracker.i2p,m4mer767ipj7mq6l7gdrmrq37yzvsj3kzezd7n7nsfuctntjseka
|
||||
dm.i2p,heysbdivyeugdbggpscco5wje3dsvwgcpp5ot4sopooebnmiqvtq
|
||||
docs.i2p,ato242wckzs4eaawlr5matzxudt6t5enw73e4p6r3wajwkxsm3za
|
||||
docs.i2p2.i2p,las5l45ulwwf5i72nht6vk33sfkidcpr2okpf5b6mvgbk3a2ujna
|
||||
downloads.legion.i2p,xpmxdpuuptlekyhs7mmdwkvry7h2jbvpqpzsijqe3a5ctxgodesq
|
||||
dox.i2p,vk27cjdrtegfdnrjqutebgxkpyrfj42trdfbsupl5zn2kp34wb3a
|
||||
dropbox.i2p,omax2s5n4mzvymidpuxp2yqknf23asvu54uon6cxl6gdrlblnuiq
|
||||
duck.i2p,3u2mqm3mvcyc27yliky3xnr4khpgfd4eeadhwwjneaqhj25a65ua
|
||||
dumpteam.i2p,2fwlpuouwxlk2nj4xklvm43m52tqyhqnu2fcfiuv7clvf3wd5nwa
|
||||
dust.i2p,u6xgh6zhhhvdvefbqksfljfs3nyjvqcrmyamp5bryz5f4injmniq
|
||||
dvdr-core.i2p,fg6l2ej6qrk5rkyfzdptxx5xkcm4kvdla4gg2tun7z7fm5cxxw5q
|
||||
dyad.i2p,7n2ljphvp2dep7imoujvydxp4myuxfld3axwfgcny5xc5x6jj6ka
|
||||
e-reading.i2p,z54dnry6rxtmzcg7e6y3qtsig5yf5fmehuvakcg5wnuahx3iafuq
|
||||
easygpg2.i2p,bwxry5alzx5ihgrd3glah4eotddblzhalvpheppnw4zcajzqoora
|
||||
eboochka.i2p,ou7g64d5in4sugv5fgmmzwnunuw5hloixio7puthmrvrkwrp6egq
|
||||
ebooks.i2p,bvpy6xf6ivyws6mshhqmdmr36pruh2hvoceznzeag52mpu647nzq
|
||||
echelon.i2p,afvtspvugtd32rsalxircjglh3fhcjzk7gxrm3gw4s2yrpvzk6wq
|
||||
echo.baffled.i2p,bfr3lyicr72psxvt2umqfb562rtex66w6q3hi3tktzkoyane2iha
|
||||
eco.i2p,2dq2o5h6c6a674qaduipp55mid5iktumjbswuwmpsrcqaeowdvwa
|
||||
eddysblog.i2p,ieac3ub4g5sy3wuhsbqfembnpp7f3a37xgcx537ytzsmgfzexnbq
|
||||
edge.i2p,aknsl5wmzjmwyc4wxutfdwy2w5vgd3vcx52mqx647hcgvyurmqta
|
||||
eepdot.i2p,t6edyotbxmxvy56fofdvmragvsj65te2gkhvzv5qnblicutyvgoa
|
||||
eepshare-project.i2p,sn26kom4qyuzouppv4lwnk6bqabdydcegtrilybviibwiq2s4nfq
|
||||
eepsites.i2p,isskhl4ak3g7qevrarlmblddgr4ugnn3ckalwpjcvxafk5rjgypq
|
||||
elf.i2p,duz6ey27ohpcp3llylklzdb63lylolzcixad6bh7rt5tkq42qqpa
|
||||
elgoog.i2p,z6hrgkg2ajmuzlrddjlffrgctx7x7fkipm6c4hdzmohyn5wkr4ya
|
||||
ems.i2p,734zw4jsegdf55zl3z6s22tqkbxcghu4qvk6q2wevjfmx7xhbn6q
|
||||
epub-eepsite.i2p,yxvzjwd4vin6pnjauekdufh7lxaijal3kqe2bhakuf47g5zkb6xa
|
||||
es.hiddenanswers.i2p,cw7ge5ey4ekp5iep2kaw6j54boebtqytpcbnvio2bfpccd5ejzfa
|
||||
eschaton.i2p,xe75f5hzmrq6rkhsef2geslmi2v2yfngdiysmlmxvh7b4pyyjk4q
|
||||
esuwiki.i2p,cwxuiwcpymb72vm5vluba66ofhugyf5qeevvwo7e2fqrxl243coa
|
||||
evil.i2p,ljfl7cujtmxfffcydq77pgkqfxhgbikbc6qxjgkvcpn4wzd73a4a
|
||||
evilchat.i2p,s5b7l3hzs3ea535vqc5qe2ufnutyxzd63ke5hdvnhz24ltp3pjla
|
||||
evilgit.i2p,mx5vyoqhg77yuhthwznsxrepjsemq4uwitx4lxdzetk36ryl5rla
|
||||
exch.i2p,vsyjsbbf2pyggtilpqwqnhgcc7mymjxblamarmxe5hmbxaxvcndq
|
||||
exchange.gostcoin.i2p,n33uthzyqsbozl2qh5zii2bq2nnvbz6g6c4ew3mwp6uukk6u7wva
|
||||
exchanged.i2p,ylmulgfskl6uiwac4hw4ecwqdzd3oxtwaemzj25zc6k5q4rkexra
|
||||
exitpoint.i2p,5zmjurq3enudcenegnxu5hqmfmayz4lxvnik6ulch4xssa2ithta
|
||||
exotrack.i2p,blbgywsjubw3d2zih2giokakhe3o2cko7jtte4risb3hohbcoyva
|
||||
explorer.gostcoin.i2p,ktoacmumifddtqdw6ewns3szxths2hq2fat2o7xnwq4y3auga3za
|
||||
fa.i2p,6n6p3aj6xqhevfojj36dixwbl4reopkhymxmatz7ai5sroh75rka
|
||||
falafel.i2p,djpn5cbcgmpumwcriuzqistbae66txca2j4apjd2xesfgb7r5zmq
|
||||
false.i2p,77mpz4z6s4eenjexleclqb36uxvqjtztqikjfqa4sovojh6gwwha
|
||||
false2.i2p,j5i2tfumh3ti5sdtafwzzbpupmlcbg5drysfay2kxbdpsaljrosa
|
||||
fantasy-worlds.i2p,62a4xcyyhvfrcq2bkckb7ia37fmrssrgx467tlkxp32fjpq577wq
|
||||
fcp.entropy.i2p,de6h6ti5z3mcbdcwucu45vplikqyoeddsu3rqy7s2zy5i47j3peq
|
||||
fcp.i2p,ndsznnipoeyapnsg3gj3yi2dzsqduxwalmujm5mzjm7e6x374tta
|
||||
fedo.i2p,zoamh7e3k2vf2g6pfy46ho4taujk2f4mxqqsv3gbg554fxbvyfqq
|
||||
feedspace.i2p,kvtnpx4jylgeyojfhix4x462sqn5uork3roml4sfzotkxx62i4wa
|
||||
ferret.i2p,kkqie5qmja7bkf3iad4zxhrdarwj7kbrx2m3etn5kmba3shgwj4q
|
||||
fido.r4sas.i2p,i522xmu63hfbaw2k54cthffcoqmeao6urjyq3jg4hddf6wf57p3q
|
||||
fifi4all.i2p,v2stz6bsot7sbjzix5tky5dm5ej7gidmjnkvzqjju5xvz5sz6fwa
|
||||
files.hypercubus.i2p,qfglq25jwieszgyt7muz6dambzqsrmjhhszygzzx2ttubc77sffa
|
||||
files.i2p,w2sy74xe6oqnuz6sfh5fhkzu7boholgzd5f3anhj47srxwpj2vaa
|
||||
files.nickster.i2p,yil7dp2hg5pbqyovsiwb2ig6zjsq4tize3fnwemmqdrr6j5itdtq
|
||||
fillament.i2p,udj2kiino4cylstsj4edpz2jsls77e32jvffn2a4knjn4222s2oq
|
||||
firerabbit.i2p,awqh7n3wskzl3epyvkdwgarmfybsncm7vye6psg4tpkmplh3mj2q
|
||||
flibs.i2p,ocdm33e3h5tdml3yyholj4objdwsrhlugfqjnqgdkslmgdzb6b3a
|
||||
flibusta.i2p,zmw2cyw2vj7f6obx3msmdvdepdhnw2ctc4okza2zjxlukkdfckhq
|
||||
flipkick.i2p,aso5rzc4ym6g2bcbxjy2n573bmbenkjawva2jg7fhyqhwtwgu6lq
|
||||
flock.i2p,hflpi33ko5bi2655lx6bpzstdnjqgzrz23inovqjx5zpntyzyb3q
|
||||
floureszination.i2p,vitpvfb25sikuk3crgcvtcdi7hajxnnq2t6weay3no7ulur2wwwq
|
||||
forum.fr.i2p,onvelkowkbuwrglhw2cnocggvbdudi75sll5mfirde3cbopjqivq
|
||||
forum.i2p,33pebl3dijgihcdxxuxm27m3m4rgldi5didiqmjqjtg4q6fla6ya
|
||||
forum.rus.i2p,zd37rfivydhkiyvau27qxwzmerlzbqtthsa5ohtcww62zrygjaga
|
||||
forums.i2p,tmlxlzag7lmkgwf6g2msygby3qttxvm6ixlfkq6s6cpgwubp33ya
|
||||
fproxy.i2p,keknios3gm6kh6onez6x2bm2t7stv54oanvltuagphgdfjdw5e2a
|
||||
fproxy.tino.i2p,fpaituvuvyxp6xdjnv3i27alnj2ifzcvqdweqb6yj5uybotzvyha
|
||||
fproxy2.i2p,r4lgw4wmza25g7j5fjocjbwzwthfg4ymcbm52ref3hh2hogskcza
|
||||
fr.i2p,ia6xlsnygorllplx2owokahtrkospukvsmysz7i7bzw3vejc4hdq
|
||||
freeciv.nightblade.i2p,rluupsgxbvw5t7jno3apyzlrdirjkljft4gdoy4mxxh4fmd4xzta
|
||||
freedomarchives.i2p,4ck6oliqfjz3sccpya2q4rh5xkj5xdxkqs76ieml37537nfhwd2q
|
||||
freedomforum.i2p,abzmusjcm3p3llj4z7b5kkkexpsxcnsylikokouk5txfim3evqua
|
||||
freefallheavens.i2p,giqnkltyugfmsb4ot5ywpvf3ievuswfurk6bjie4hxi2hh2axajq
|
||||
freenet.eco.i2p,2kf7ovb35ztqkrurkm76y34jfpwi6go25xj7peznnmxrl7aieo7a
|
||||
freshcoffee.i2p,sscuukigp6alcb3ylhkcugoejjfw5jqgtqbsbafw4hyku42lgc3q
|
||||
frooze.i2p,m6ofa5dmyse4b4jg7kfmluuuc4pw5jqu6zh4qnboin4vropxepja
|
||||
frosk.i2p,63naq7zb3hvbcppj2ng7qwf6ztusp4kwpyrzbt4ptafcdbu4pfjq
|
||||
frostmirror.i2p,ycz3imuz6yte2zhlapmsm3bsvc46senvc2jxzwsbfdct5c72qulq
|
||||
fs.i2p,ah4r4vzunzfa67atljlbrdgtg3zak5esh7ablpm6xno6fhqij35q
|
||||
fsoc.i2p,vaqc4jm2trq7lx2kkglve7rkzxhhaptcwwl32uicx4ehf5k3hx6q
|
||||
galen.i2p,4weo7zkxscxbcouiqx4mlnb35uwl2lromikzk33er3fljktyvi2q
|
||||
gaming.i2p,rfxberwod6st2zc6gblqswxjl57nucgc3xrbwss43pe3dvqqzj4q
|
||||
garden.i2p,qkk2dqx6nocycgt3vinsoc76cxkb4jreybcpgz3fcps2dbe4rowq
|
||||
gaytorrents.i2p,fnggbr2t2aulr6rvlo4aehotx6wecfob7u3k2nxsnvtm4xex424q
|
||||
general.i2p,5fklrsztdqpl3hkkwwrrw2rdowrq7wwhwb6h7avvk4fhansp4vvq
|
||||
gernika.i2p,wpzqv3lxpecdsvcaadvbmrhhwlc7kp4n2mijdv2qjw3zr3ye232a
|
||||
ginnegappen.i2p,kbhfkzx5jeqhfgss4xixnf4cb3jpuo432l3hxc32feelcmnr3yja
|
||||
git-ssh.crypthost.i2p,llcp7jvz3hgtt3yzkdgjolwobisgvhv4xqa5a4oddejllyozur5a
|
||||
git.crypthost.i2p,7frihhdcisdcyrzdbax6jzvx5gvtgwsm7m6kcem2tlaw4jtahbqa
|
||||
git.psi.i2p,em763732l4b7b7zhaolctpt6wewwr7zw3nsxfchr6qmceizzmgpa
|
||||
git.repo.i2p,vsd2vtgtuua2vwqsal2mpmxm2b2cpn3qzmqjoeumrrw2p4aot7uq
|
||||
git.volatile.i2p,gwqdodo2stgwgwusekxpkh3hbtph5jjc3kovmov2e2fbfdxg3woq
|
||||
glog.i2p,ciaqmqmd2wnws3hcpyboqymauyz4dbwmkb3gm2eckklgvdca4rgq
|
||||
gloinsblog.i2p,zqazjq6ttjtbf2psrtmmjthjeuxaubi742ujrk2eptcsaoam4k7a
|
||||
go.i2p,ll6q4lsirhwkln4dqxwqkh2xu4mu3jiy546b4uhe4fypyb4vvx2q
|
||||
gonzo2000.i2p,nogsv7okydhbvrewv6hb4xdojncvhkusnyib4lglluc4uw67a37a
|
||||
google.i2p,4p3ajq4cotnflmuv7fhef3ptop5qpm3uzzgp5bahxif3nc4w3ffq
|
||||
gostcoin.i2p,4gzcllfxktrqzv3uys5k4vgkzbth4gqednwhfpt755yivm3davuq
|
||||
gott.i2p,dqows7dpftxxl2bd4bgcpkck6knrysdun6mtqy4ms5dxobbvg3ja
|
||||
greenflog.i2p,zny5ftmhzxulxzyczmeat53qjnue2xtqv2clisc7dg76lwfceecq
|
||||
gstbtc.i2p,n33uthzyqsbozl2qh5zii2bq2nnvbz6g6c4ew3mwp6uukk6u7wva
|
||||
gusion.i2p,4qyfdhizjixe2psu7wcvqufix5wlijocehpb2futurcmlhlktrta
|
||||
guttersnipe.i2p,kizkhzes2bzp45widihremo6geepfk7dl6juourkvzuvlc6y3spq
|
||||
hack8.i2p,un63fgjgi3auvi7zscznwqfol7ka4johgthvqf635mg3fefsjgpq
|
||||
hagen.i2p,e2t6rqd2ysbvs53t5nnaf7drllkgk6kfriq3lfuz6mip6xfg644q
|
||||
heisenberg.i2p,jz4quyw7zt63tmw65jfp76fblwadjss4iyi4puqdg3dye7oaqlvq
|
||||
heligoland.i2p,gzrjm62ektpqjfsem3r3kwvg6zpjvvhvpjvwfxkm2ay4zu7sp6oq
|
||||
hidden.i2p,iqodhhqo473qv5gwhjcs2bsrbhlqtpzgpnuumpastfiyhuwb2kyq
|
||||
hiddenanswers.i2p,kj2kbzt27naifij4ki6bklsa2qfewxnkzbkgvximr4ecm7y4ojdq
|
||||
hiddenbooru.i2p,zma5du344hy2ip5xcu6xmt4c7dgibnlv5jm4c2fre5nxv44sln3q
|
||||
hiddenchan.i2p,6y4tltjdgqwfdcz6tqwc7dxhhuradop2vejatisu64nwjzh5tuwa
|
||||
hiddengate.i2p,rvblcu54jvkkfffp3fobhunsvpgfc6546crcgzielzwe2s5m5hbq
|
||||
home.duck.i2p,jsh7yfvm2t5urdcnmfzdy4n6vegqskdtlwem53chgxli4ipfmuma
|
||||
hopekiller.i2p,kcaelbgsvrkiwpx36b4wxofebrl3njx7rgm5amzfmqwbomt44cxa
|
||||
hotline.i2p,6cczi27iuxkm3aivazaemzltdqgh42ljzurqp43uclbz2lid2uqq
|
||||
hq.postman.i2p,27ivgyi2xhbwjyqmnx3ufjvc2slg6mv7767hxct74cfwzksjemaq
|
||||
http.entropy.i2p,ytu7kz5bdoc26nkpw2hajwt3q7n5rcbg2eokyefhmkxmmslimbdq
|
||||
human.i2p,nrtcelq3humyfvoxmzmngpka6tmyifweouku5mbi5av4lc43hzaa
|
||||
i2host.i2p,awdf3nnmxxup5q2i6dobhozgcbir7fxpccejwruqcde2ptld443q
|
||||
i2jump.i2p,633kqgmwzzu6vhkevwvbf2pfyejt3gkes34i6upa4og57fgdfcxa
|
||||
i2p-bt.postman.i2p,jeudwnx7mekjcowpqo6xpkwn7263c57y5piurrjrdzinjziu4fla
|
||||
i2p-epub-eepsite.i2p,yxvzjwd4vin6pnjauekdufh7lxaijal3kqe2bhakuf47g5zkb6xa
|
||||
i2p-javadocs.i2p,icgmr6hhjudl4yxhtuq4pxvss2pzypwddzowajgs5rdz6f55novq
|
||||
i2p-projekt.i2p,udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna
|
||||
i2pbote.i2p,tjgidoycrw6s3guetge3kvrvynppqjmvqsosmtbmgqasa6vmsf6a
|
||||
i2pbuggenie.i2p,bioq5jbcnfopqwvk7qssaxcl7avzeta6mu72jmxjeowflpcrhf6q
|
||||
i2pchan.i2p,tduxyvfs7fzi26znvph3mu2d2ewaess7emomfci22wvownajphuq
|
||||
i2pd.i2p,4bpcp4fmvyr46vb4kqjvtxlst6puz4r3dld24umooiy5mesxzspa
|
||||
i2pdocs.str4d.i2p,yfvbtrhjac3jutdsqzugog6mbz3jtyhpwovrt2mqc5mzv534y7cq
|
||||
i2peek-a-boo.i2p,qgv64klyy4tgk4ranaznet5sjgi7ccsrawtjx3j5tvekvvfl67aa
|
||||
i2pforum.i2p,tmipbl5d7ctnz3cib4yd2yivlrssrtpmuuzyqdpqkelzmnqllhda
|
||||
i2pjump.i2p,2mwcgdjvfvd3xwumzqzqntual3l57h3zo7lwdmkjboeraudpkyka
|
||||
i2plugins.i2p,bb63kmnmbpitsdu45ez54kmogvvljn3yudksurcxiyq7dn5abt7a
|
||||
i2pmetrics.i2p,v65p4czypwxrn35zlrfkar2w77vr42acd7gbszegsrqq4u7sip5a
|
||||
i2pnews.i2p,tc73n4kivdroccekirco7rhgxdg5f3cjvbaapabupeyzrqwv5guq
|
||||
i2podisy.i2p,3c2jzypzjpxuq2ncr3wn3swn5d4isxlulqgccb6oq5f6zylcrvcq
|
||||
i2push.i2p,mabdiml4busx53hjh4el5wlyn4go5mgji2dxsfyelagi4v5mzjxq
|
||||
i2pwiki.i2p,nrbnshsndzb6homcipymkkngngw4s6twediqottzqdfyvrvjw3pq
|
||||
iamevil.i2p,au7jhslyt4cxkjp365bvqvend3hhykrrhbohtjqlgoqrlijbezja
|
||||
icu812.i2p,bxgqwfsnr3bgnr6adn62anjcin5nuthqglotb3wn3dgynsfofeva
|
||||
id3nt.i2p,ufuqdzsxltiz224vq5gnuslt3a3t72dhy5kq6i2xway53m6pzv6q
|
||||
identiguy.i2p,3mzmrus2oron5fxptw7hw2puho3bnqmw2hqy7nw64dsrrjwdilva
|
||||
ilcosmista.i2p,6u2rfuq3cyeb7ytjzjxgbfa73ipzpzen5wx3tihyast2f2oeo24q
|
||||
ilita.i2p,isxls447iuumsb35pq5r3di6xrxr2igugvshqwhi5hj5gvhwvqba
|
||||
illuminati.i2p,syi6jakreatlm2z22u76izyqvbm4yi4yj7hr7jb63lgru5yhwwla
|
||||
imhotep.i2p,qegmmhy52bdes2wqot4kfyqyg7xnxm5jzbafdb42rfoafadj2q7a
|
||||
in.i2p,r5vbv2akbp6txy5amkftia757klgdy44s6cglqhmstpg65xycyjq
|
||||
infosecurity.i2p,v3gkh5kqzawn2l3uzhw6xnszsh6w3nztjmlwil7p4kyrwrsm2dba
|
||||
infoserver.i2p,jd3agbakybnhfvkeoxrx7t33iln6suzomv3kxkxf77j7rkonch6q
|
||||
inproxy.tino.i2p,ex5yf6eqqmjkrzxnkn6cgvefgne24qxsskqnpmarmajoit43pgma
|
||||
inr.i2p,joajgazyztfssty4w2on5oaqksz6tqoxbduy553y34mf4byv6gpq
|
||||
instantexchange.i2p,5wiyndm44bysev22kxvczxt37p6o6qroiqykytrvn2yzi55aqfxq
|
||||
investigaciones.i2p,n7hqd4asxrdwf3zwo7rzv27y2qkcfmakmz6mjar6aw6hlc4c7mha
|
||||
invisible-internet.i2p,jnpykdpp46zenz4p64eb3opadl5g42dls3rurk2cvq6a3g3rvbvq
|
||||
io.i2p,tx22i6crnorzuti3x6va4mijsbhoqswy2cfdxjbvprgsq4eerg7q
|
||||
irc.00.i2p,bvcja52pppgfspp2ueuipoysjnvvoyblz2h6smpxcmanjquogirq
|
||||
irc.arcturus.i2p,5nywlbn35p2nwsymwpfmicu6fxono6g64vwusxbsvmm2qwz6vupq
|
||||
irc.baffled.i2p,5zmtoopscym6qagkvpgyn7jnkp6dwnfai745xevkxlou77c2fsjq
|
||||
irc.carambar.i2p,hxzbpivxqxy6nuae4t6fnkhcgnhs4c72vt6mmsqfmfhrkn2ca6gq
|
||||
irc.cerapadus.i2p,e4ckznxcxvgyikzjmjsu72i2dbj2d76ogexyukklbjvpcnhp6zzq
|
||||
irc.dg.i2p,fvp3pkcw4uvijqabwtekcdilklp73gyasuek67wdcs2mucep4caq
|
||||
irc.duck.i2p,chdpmm4gxffyn24xx5dhxvfd5httu42i5gtoe6cctjlsf4mbofeq
|
||||
irc.echelon.i2p,ez2czsvej5p3z5bquue5q3thujcodfze7ptybctqhnqc7hms5uzq
|
||||
irc.freshcoffee.i2p,ubiu2ehtfnrleemgpzsqkahwnvzuaifqa3u4wmaz5maaisd5ycfa
|
||||
irc.i2p,l3ohmm4ccxvyuxuajeaddiptci5lsrnxtvtyq7iohphrt3oj2evq
|
||||
irc.ilita.i2p,5xeoyfvtddmo5k3kxzv7b3d5risil6333ntqrr3yvx3yubz5tk3a
|
||||
irc.ircbnc.i2p,4rqcsqd7xif6r4v55blqvmqu5er6due4eyene3mjorfkts4o3rxa
|
||||
irc.killyourtv.i2p,wre4majmg2vnbi6id27et7yw6lnpf56wkbm6ftnlwpvxnktq73hq
|
||||
irc.nickster.i2p,dhq3fhd5scw3jqhj5ge7kqfpprfolcgxfjbaw24obohaiqjtdu7a
|
||||
irc.orz.i2p,7gifacog4aoons3syybojbbnyqqaaqijhngrehn2xlq3eucuyjcq
|
||||
irc.postman.i2p,mpvr7qmek2yz2ekegp5rur573z7e77vp3xqt2lfbco5i6nkfppcq
|
||||
irc.r4sas.i2p,hodhusp73gltozgrnianlbploon3rrvhrzfn5mf2g46o7aaau5la
|
||||
ircssl.cerapadus.i2p,4x2i745i4w52ss3he2kse6tzwt64pr62yvrcb72lgvrb63fup6ea
|
||||
irongeeks.i2p,ecduxoion5uc5hnvzjxff6iiwhdwph6gse3dknyvlo7e6gaeho7a
|
||||
iscofsi.i2p,enjgdxs4um2dmhdb2ajff2egrdijkjji3g47m6unb74swbrqsddq
|
||||
isotoxin.i2p,wue3ycaccf4texikza3fh6p5yrmtgnooisuypnepo5mo67lmpcqq
|
||||
itemname.i2p,o35ut7hgywy35okvgkjkv3ufzv2ejv4luap4oytwbyy2jqy6u4vq
|
||||
ivorytower.i2p,fpwrfvidfexsz7dspofkwtkmmizm7lyralfz5kvykffk7gubvxsq
|
||||
j.i2p,kjxvohlsf5sdrzxzfcrmvquccnoevi6ytbl63mstsru5wt2dx3ea
|
||||
jabber-2.i2p,pvnmzgemetkwcuvt45omgowmeznwk5xw3nc3ygeoz7yekqxy57na
|
||||
jabber.duck.i2p,rhdzvvzraqzzm67zpyegb7knpfrjeffitixqzeyymdoz56uh2rtq
|
||||
jake.i2p,v2axvy6pqefnla7gun5fmqs4lqe4xfyqovgzcundhxrpcdvfd7cq
|
||||
jar.i2p,2fthkmujup3xiiu3yple24n6g4emzdiiimbuqwvpdddtsr3c4nrq
|
||||
jazzy.i2p,ha5c3zafwkt6mwqwjcf4oqwvbwz473652ljjadiwrj4gfkfkjofa
|
||||
jdot.i2p,kw4jr5qw4bhnj33avkwankjdh3zi7wtahlmgkjwvsv2isskkzgpq
|
||||
jhor.i2p,c6rnm7oemydhuwzmhwwwxphkzanez5rnn7fkcs3lpgu6gkgtssoa
|
||||
jikx.i2p,aazr55itvyns4lwppvx5njyx5tjdwemw4w6jbmpegdunznod2ieq
|
||||
jisko.i2p,jxgfvr663uhr6m65hrgkscshysfshkq32ywdubc4ed7zda3e2pca
|
||||
jmg.i2p,oglpnq7zungdukmk6gk5fzj5jp6wibuoihqgks453wztrwos4ggq
|
||||
jnymo.i2p,nbfplxgykyfutyadlfko2rmizdsxox2pee2ahboj5mju4s3putda
|
||||
jrandom.dev.i2p,htynimemonyzqmn76gworxyfkmqtsa7zcprbrd3i5cxqqm75tuzq
|
||||
jrandom.i2p,dqows7dpftxxl2bd4bgcpkck6knrysdun6mtqy4ms5dxobbvg3ja
|
||||
jrrecology.i2p,qxi24gpbum3w3kesuxvheyu3p5u5o6tuvoypaolub2gnvbld57xq
|
||||
jwebcache.i2p,xdffxnxtjd6ji2zig3cgva7igvl2tiapyjoc7ylbzwqhxudbmvfa
|
||||
k1773r.i2p,zam7u6vslhemddz347uusuzjdk5wma4h5hcmcqlng4ybbpdbjhnq
|
||||
kaji.i2p,z5ic7gvm2k4doczphtrnrspl2w5sfbss2de4z3ihjijhtjw67ydq
|
||||
kaji2.i2p,4lscgc6napekfx7ay5fdcjofeja4fnl7tqcd3fek63t4saavur2a
|
||||
keys.echelon.i2p,mwfpkdmjur5ytq4og36ym3ychinv36b2a57f4rmgqmtrwepq3fva
|
||||
keys.i2p,6qv4x7ltaxckd4vbay5s4ntqqflq4efk6oke2d5yzicqrmk443ba
|
||||
keyserver.sigterm.i2p,isoxvnflrdn7cm76yjlfg5tbcugoito2hur7eidbqmo33xmwz5ga
|
||||
killyourtv.i2p,aululz24ugumppq56jsaw3d7mkbmcgo7dl2lgeanvpniyk2cbrda
|
||||
knijka.i2p,knjkodsakcxihwk5w5new76hibywia5zqcgoqgjttzsausnd22oa
|
||||
knotwork.i2p,2yocdbcjiyfaqgxb4l6oenrrrrie6nydgmbnbfulqg7cik6bozxq
|
||||
kohaar.i2p,qchpjehbhqjbxdo7w3m55jbkrtsneb7oqoxcr24qttiq6j5g3z5q
|
||||
krabs.i2p,3yamyk5bgfgovg6zpvtvpdjk37ivjj2wog2w7wha5agzgxxkqaca
|
||||
kuroneko.i2p,wbit2huhhwlyqp2j4undccuyrodh6qcmzdeyuaoy5o4ym7g5gdgq
|
||||
kycklingar.i2p,gctswdhp4447yibxfbqg3uq2bvx63qjeqnaoaux75zw73leakyva
|
||||
lazyguy.i2p,ia6xlsnygorllplx2owokahtrkospukvsmysz7i7bzw3vejc4hdq
|
||||
legion.i2p,5oirascyhwfy2tr2horw6mixozsre7z6s7jfq7qbnj523q3bkebq
|
||||
legwork.i2p,cuss2sgthm5wfipnnztrjdvtaczb22hnmr2ohnaqqqz3jf6ubf3a
|
||||
lenta.i2p,nevfjzoo3eeef3lbj2nqsuwj5qh3veiztiw6gzeu2eokcowns3ra
|
||||
libertor.i2p,7gajvk4dnnob6wlkoo2zcws7nor3gunvoi7ofalcps5lc76wruuq
|
||||
library.i2p,brqqaq44vbeagesj5o3sxcnkc5yivkwouafyxa77ciu7l644ei2a
|
||||
lifebox.i2p,pyqjnycm55cuxow22voqj62qysrjdnb6nbyladaiaiirqi7vp2yq
|
||||
linuxagent.i2p,ap5riaikrjq2uv5qvy7klzhhqywvqi7wqscyipsewcun7w2eynlq
|
||||
lists.i2p2.i2p,vmfwbic2brek2ez223j6fc6bl5mmouzqvbsch45msvyyzih3iqua
|
||||
lm.i2p,yeyar743vuwmm6fpgf3x6bzmj7fxb5uxhuoxx4ea76wqssdi4f3q
|
||||
lodikon.i2p,u3f67staiwhqxpacya3clmvurdwd2kp7qcthzhstqnhrmlwc2g4a
|
||||
lolicatgirls.i2p,a4lzmjyba7aq7hl6okqpds7znnwymolqnr7xhvno2wraqb7uhfla
|
||||
lolifox.i2p,7fd2clkiotjnaoeigdtxlkkb24eik675ovezjf67x26ysham4zca
|
||||
longhorn.i2p,pohcihzxzttjclrazhs3p76wt3ih737egb5bovqb6ym3du6z3o7a
|
||||
lp.i2p,jiklbujn3cbfikf4pca526jgmorx6mxhil3twqmfoteaplx6ddwq
|
||||
lucky.i2p,wx36m3wnpt2y6bngdpg3ifrarvtkpwnluarx377bllpgvkuhybaa
|
||||
luckypunk.i2p,y4t6cujjxnnrtln3rgmfbgbh46hic7wkef57krd7opitbgngohka
|
||||
lunokhod.i2p,3yc6sp7xic4grmpfecbwuij6z3dp5kdgoo362pszaco7io42mnwa
|
||||
m16.i2p,ucsr3eveuc4mx5y6gxnoaywd4ojvbel5q3ynns6s5yfw3vusmfva
|
||||
mac7.i2p,3yjowssqzydciwa5zx55kazgf7q7w6g7rkocr7bngy35ii44t34q
|
||||
madman2003.i2p,a2sam2xbhxbzmeyobphbxrkdwlppoerewq5qvibbyk3ftsr643qq
|
||||
magix.i2p,cgfnyxv62msfynsfbv3kju22j2mt6tfnopshhmrcmpcrxyts6xwq
|
||||
magnets.i2p,snz46nez6hrrpg6336neinflw56l3vwatk6bzzytwu77xmsfsoca
|
||||
manas.i2p,6qolj62ikkoq6wdn3hbvcbdmlvf2rcyv432kgi5uy7mvrczmjtba
|
||||
manveru.i2p,pbmbofs76wpjnxi55eqtwg4y6ltyij72o4fm4sxfjol3y57ze5sq
|
||||
marcos.i2p,vpo36bsil2voqaou53zshuegssqaroa5mbrzxfmhjywlbojckalq
|
||||
marshmallow.i2p,svdqd6j3y3gwryufcl4fkzpmcujgvrvphvk2oy4r7m75xs327e2q
|
||||
marxists.i2p,lepah55qyp2fhuwxlz7bwrhzckn4gkuofivnofoeuyfpmke5x2hq
|
||||
mattermost.i2p,x5oovnhnuli5fnwtgkbd5z5jvrvdvprqyuofywx6uoxkk4bie6ya
|
||||
me.i2p,dbpegthe42sx2yendpesxgispuohjixm4bds7ts5gjxzni5nu6na
|
||||
meeh.i2p,4oes3rlgrpbkmzv4lqcfili23h3cvpwslqcfjlk6vvguxyggspwa
|
||||
mesh.firerabbit.i2p,3x5wokr4bjy5z3ynji4fyhvwzv4fvgry3xafi5df5h75doezjytq
|
||||
messageinabottle.i2p,avfhe3kvrrv7utxn2vre65lg7damxzzsewq3vukwie4llitd254a
|
||||
metrics.i2p,z45ieamhex2ihqv7oowk5fz4qq47rbvxhhhbaaiinpajbhuevtpq
|
||||
mhatta.i2p,o4rsxdeepfrnncsnjq675xogp5v5qkbfgbt6ooqeyfvlifobrjxq
|
||||
microbleu.i2p,mtapervgibruizniems2yyr47pin2wpysyh7m632rigl26vjc6qa
|
||||
microsoft.i2p,hvaqr5idszdyrjph34amb4mjosqd3ynggoxlnj7ciqhnx7q6plza
|
||||
mindisl0st.i2p,u7rnqhvsuyxd3fabm4kyzn7brgz3i3cporj2emk2jmbpcmltyf7a
|
||||
mindspore.i2p,uuh5dd3y2rqa7x2jpggm4p2pg6znarm5uanwsvybe4tk36ymwr4q
|
||||
modulus.i2p,ctz3o6hdefrzwt3hlg6rjhdcbjk6irppbndq32u6jnn4lz72f62a
|
||||
monerotools.i2p,5bal7dngxde2ddmhuzbtfken6w5nmxmixtjlrlmxt3wbhnemv73q
|
||||
monerujo.i2p,puri6y5dtwh6zr4u77ep6ozatun6iz7v4wai2dzxppz7654corlq
|
||||
morph.i2p,iovyp2dao5rta6g5v6hke2s4ugx2btkpcljddak2yhxfrx3l4dqa
|
||||
mosbot.i2p,5bhmrp43mjwlzf4x64xgdrkwmw4luvng6eq5waa663a7vnkp732a
|
||||
mosfet.i2p,s5ynkgagndmpxpf2kmnenv4x72io664gzd2x3qef54ilammnte3q
|
||||
moxonom.i2p,gcjdrvnlobgexh7ebv276pwmnoj3yoyaqm3w4vmmdha4lgxfinqq
|
||||
mp3.aum.i2p,n7bmu5dwux7f6gedmdik6zrm77bnls4lkzo2vo3bf4bwegk7vkjq
|
||||
mp3.tc.i2p,w3ied5s7ldjcvnhxu2gyofe3oogzbplkyxshzfkhspiy2526snsa
|
||||
mpaa.i2p,m6cqnglo7xlytwxkdsmwf3d23d6lq5r446c3tktb2tdmuah36zya
|
||||
mrbamboo.i2p,tmpmkx6wlbbrgsnexrqlrib7laoegpbfeop7bnyezegii7hecpxa
|
||||
mrflibble.i2p,u7k2qcmkrril6yvudvwxjqz7k3dzgp3jdejjjeapej7liselj3eq
|
||||
mrplod.i2p,fjn5hxtybxyfyvdf6u5v5seg2sjd47hb5by6sa6ais4w3xnrxwyq
|
||||
mtn.i2p,xisk3h6sku3iqj52uriogaajmnku7pwjux7wa4omx2zloamuw6eq
|
||||
mtn.i2p-projekt.i2p,f52x5fp6uhq53f5zle5d6rq5un34xgmxgazvilvmzcby37xcmsfa
|
||||
mtn.i2p2.i2p,l6kuhtmgvbp57d7jwalj5nksi6nr4gfzbz4oit62lxgipb3llt5a
|
||||
mtn.meeh.i2p,h7ylrsuzzynrxp3jql7anoozyqblavj7eqces6o3wngvuuxhs2la
|
||||
mudgaard.i2p,yz32lk42gtoesknesfolq3tt4erxxcejcote5pontaeqev3bj2kq
|
||||
mush.zeit.i2p,dk3sg23kljawxqp3cb6xz5mnzjlyckzvq5jhqs5gnvdsv7wqn6ha
|
||||
music.i2p,akamh76yi6p7xxbvl3qv3yhaockne57yfuh77acogbgpjmwypvia
|
||||
mysterious.i2p,p66g2a4nzfkvidd3l7nwphcnfa3ttyu5kiolcb4czec2rn2kvwsq
|
||||
mywastedlife.i2p,ceumy3puvvsrru5bmfmtgsajsx5qyehqac7l7a23xpwtfs2bvcgq
|
||||
nacl.i2p,bm2fib3tumer72lopjh4nmqomwvqu2sdfyb2hmr6lnk7jbw3vvia
|
||||
nano.i2p,ex5ssv7s3hj6jp7hvadxfw3wvbjbvnczxr4pbk7qw26ihiorjmba
|
||||
nassai.i2p,v653cocvn3i6bgjdm3ciwbdnu32supglv6gn4fh23bohemsp545q
|
||||
neodome.i2p,5hkhjehj3ct2pvcah7dcylwef2oti3xij5myxbv3pd7rocio5vkq
|
||||
news-i2pn.i2p,wwcqkwfo5yhe6uribv5tzylk25j5hkdk6gdnyftzd3k7dawlzwca
|
||||
news.neodome.i2p,trhwcnygfkeqjj6g4xhmrdp4gsjqsye47lsxshbmwbten4ywt5oq
|
||||
news.underscore.i2p,rl7t3kspoktuatjcu7gf7xleu7y6biibs4fspzo24kll6n7hbq4q
|
||||
newsbyte.i2p,gsk3rgsejxxrfabjxu5w5plplxsu47aoeoke22vvhlwwllzosnxq
|
||||
nibble.i2p,jmdxcpdzqafedn3clc4y7u6o56qocfiffrzbzncmtggqtio5qjpa
|
||||
nic.i2p,vzu5ymab6klevpcdudv4ypisjqaznmt44e6lcg7dwiuza4saibxq
|
||||
nickster.i2p,zkwsa6kvq2wdhovw5g5wqakpb7rlaylyhfriwmurots5pvwbqauq
|
||||
nickster2.i2p,eofzi7npzpk4p5gb4qper4hmwgxo6kepo3dheeblakewedxj2bwq
|
||||
nickyb.i2p,gmpxk4tje7mnud32kg2kjmf36f6cpwqakzc2dxuzjnnz4qr5w4sa
|
||||
nightblade.i2p,p4gkon7ytswxrbwkl7vruw6mg7kfw5aofovqjgt4c7tnqmbq6lha
|
||||
ninja.i2p,q6dg6hlb3egzdqz352ri5rc4fx4gcrdeu3tpiyfxlv73yfjgrhya
|
||||
nm.i2p,3itdpqzyn3ii7sivppo4sxxwhvgtpskzkbokrdibim6gqpvlw5ya
|
||||
nntp.baffled.i2p,kc6muo2tih5mttbpzecteegvtonuysjidk3emcy4cm4yifzild2a
|
||||
nntp.duck.i2p,gvzzor4utsqxswvf6jaglfks7yxudlz2s326ftrk56i4lpd2s47q
|
||||
nntp.fr.i2p,npoztnqadfnu4vrokoh6rusoi3yne47s6jurc3lzhcrzzia5eqva
|
||||
nntp.i2p,wwdzmeyler4djegvyt2bxmkwrckfgg3epkkwowyb75s47he6df6q
|
||||
no.i2p,lpsg4x4gdrf7antxcdy47cl6abcqei5ommgzt55retq7go5ku3ba
|
||||
noname56.i2p,oiyoslismzyxuw7ehxoigmtkdj35idim6flmlplddxuiiif6msfa
|
||||
nop.i2p,ssag45lathm4gqp46si7c4w4tioyvjpcza5uvz5x2zuljnplylca
|
||||
normal.i2p,j5fex634r2altzb3kjvu35qekt2r3hgsqzg5qxoy7dp53heu5pma
|
||||
normanabcd.i2p,si2vh43gvxjnw2shwr24j76xyanow4oa6gbu4idookbraoxl3s3a
|
||||
nothingburger.i2p,tesfpn757ysc7nih7mxher2b3jstkc3l5fhfcyb5kxhzhvv52trq
|
||||
nothingspecial.i2p,wzrwqrp52bilqijrlboclynuev4kzpjzfzlvzl5aqxqt5fdnpbga
|
||||
novospice.i2p,ukqap24nwac4gns77s4zy7j5cagt7l7syb5zo7eukfg3zn5gg5qq
|
||||
nsa.i2p,nsetvbclpomqxfcit4mghn6z7vdhnza6jdzczby4crnto32uykga
|
||||
nvspc.i2p,anlncoi2fzbsadbujidqmtji7hshfw3nrkqvbgdleepbxx3d5xra
|
||||
nxt-wallet.i2p,33pp74k4ivy67z332qpyl3qlcqmi6gxqumrow4bldkblxxlxqq5a
|
||||
obmen.i2p,vodkv54jaetjw7q2t2iethc4cbi4gjdrmw2ovfmr43mcybt7ekxa
|
||||
obscuratus.i2p,i4j37hcmfssokfb6w3npup77v6v4awdxzxa65ranu34urjs4cota
|
||||
ogg.aum.i2p,wchgsx6d6p3czloeqvna2db5jr7odw4v4kqrn4gr4qiipfyrbh5q
|
||||
ogg.baffled.i2p,tfbvj2xal6lcuxv3hzuw7cw4g3whguombcv2zuotzvul4qtrimgq
|
||||
ol.i2p,bnb46culzbssz6aipcjkuytanflz6dtndyhmlaxn3pfiv6zqrohq
|
||||
onboard.i2p,qwlgxrmv62mhdu6bgkh4ufnxowxsatfb6tbs2zr666qyunwqnecq
|
||||
onelon.i2p,irkvgdnlc6tidoqomre4qr7q4w4qcjfyvbovatgyolk6d4uvcyha
|
||||
onhere.i2p,vwjowg5exhxxsmt4uhjeumuecf5tvticndq2qilfnhzrdumcnuva
|
||||
oniichan.i2p,nnkikjorplul4dlytwfovkne66lwo7ln26xzuq33isvixw3wu3yq
|
||||
onionforum.i2p,yadam2bp6hccgy7uvcigf5cabknovj5hrplcqxnufcu4ey33pu5q
|
||||
ooo.i2p,iqp5wt326fyai5jajsa3vkkk5uk56ofn4anocgpe5iwlpisq6l7a
|
||||
opal.i2p,li5kue3hfaqhhvaoxiw2ollhhkw765myhwcijgock5rs4erdqdaa
|
||||
open4you.i2p,ice6ax5qrzwfwzsy64bctffj6zlzpuzdr5np65zsxlbt7hztyc6a
|
||||
opendiftracker.i2p,bikpeyxci4zuyy36eau5ycw665dplun4yxamn7vmsastejdqtfoq
|
||||
openforums.i2p,lho7cvuuzddql24utu7x6mzfsdmxqq7virxp5bcqsxzry2vmwj5q
|
||||
opentracker.dg2.i2p,w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa
|
||||
orion.i2p,5vntdqqckjex274sma3uqckwqep2czxs5zew25zlntwoofxk3sga
|
||||
orz.i2p,oxomqkekybmyk6befjlouesit5mhstonzvzd2xnvsk7i6uyrqsfq
|
||||
os3.i2p,s7x4ww5osrrfein3xgwyq67wnk6lgliw4mzt7shtu66wrb2zdojq
|
||||
osiristomb.i2p,t3slf77axkv3qm7c3gzpv3jgmkraoqqe2bojr6h66eipibofsyzq
|
||||
ot.knotwork.i2p,cxhvvfkbp2qbv5qojph7zb46molpe2ffanghnerjag3xdmy6ltxq
|
||||
outproxy-tor.meeh.i2p,77igjr2pbg73ox5ngqy5ohzvrnur3ezqcogtl4vpuqtrcl3irsqq
|
||||
outproxy.h2ik.i2p,nwgvfpfarpnyjjl4pwsxr2zdsppcx5we3kos2vlwicbiukopgaza
|
||||
outproxyng.h2ik.i2p,v32zse2zczzgegelwxbx7n5i2lm2xhh2avltg76h6fz5tb53sfxq
|
||||
overchan.oniichan.i2p,g7c54d4b7yva4ktpbaabqeu2yx6axalh4gevb44afpbwm23xuuya
|
||||
p4bl0.i2p,lkgdfm4w6e2kkjhcdzr4ahhz26s3aunhrn6t2or436o73qh4z7ga
|
||||
pants.i2p,xez3clscjfafkqwk6f473ccp3yvac4kh6rdp6dptwxa2lhixizgq
|
||||
papel.i2p,mxskjqntn2d34q4ovsnd5mud7cgde734tdjldd3lt4hczh2645zq
|
||||
pasta-nojs.i2p,dkkl3ab6iovxfqnp44wsjgqaabznvu7u3hugpzyagbeqlxgvx3la
|
||||
paste.crypthost.i2p,2zaj4u4s4l3lgas2h5p6c6pvzr2dckylkrh5ngabursj4oh25ozq
|
||||
paste.i2p2.i2p,b2gizskfea4sjxlw6ru2tb6kdrj47dsjc77cijsf5mzh4ogbmfvq
|
||||
paste.r4sas.i2p,csen43keji3qiw6uobsgzysxyjd225g6446ylq5uuz6ur2glkzaa
|
||||
pastebin.i2p,mnicncxrg2qqi55qftigiitaheugnj4rpysbk7zabdrirgktelqa
|
||||
pastethis.i2p,erkqiwnjl7vtysqd3wvddv6tfvnhswarqkbn4blhdlhfxn7cf2ha
|
||||
pdforge.i2p,wzeg3ehf6d2mqjqji3sd3rns776thvhe2vam2r6gjlmsqis2dctq
|
||||
perv.i2p,f3k3wm4ae7t7ottfjd4hu6is7zsls73izl2gm2qynzficxcdsiwq
|
||||
pgp.duck.i2p,wujajyxj3cgsfsbtr3g7g7npv5ft3de6pcstxlav26zq6cxdjmha
|
||||
pharos.i2p,vathk2pyvaskeie63yyg4tshjkx5xt6zfvhwhgr3de67q46ob3sa
|
||||
pharoz.i2p,vathk2pyvaskeie63yyg4tshjkx5xt6zfvhwhgr3de67q46ob3sa
|
||||
phonebooth.i2p,noxia7rv6uvamoy2fkcgyj4ssjpdt4io6lzgx6jl6wujpufxedrq
|
||||
photo.i2p,fqhuy77ugd5htnubzkyy5guvwboqn6goahtmn2g7feewvdj7k3iq
|
||||
piespy.i2p,vzusfjzcu5ntnvobcvyzc4dcu4j6ommtnpmba2puk3kexgdzrl7a
|
||||
pisekot.i2p,7yzdwhy723fodqz4onp6k3nyvixra2sa6dl45tcblhmyoa7i36nq
|
||||
pizdabol.i2p,5vik2232yfwyltuwzq7ht2yocla46q76ioacin2bfofgy63hz6wa
|
||||
planet.i2p,y45f23mb2apgywmftrjmfg35oynzfwjed7rxs2mh76pbdeh4fatq
|
||||
plugins.i2p,wwgtflbaa7od2fxbw4u7q7uugmdclxf56alddvizugwcz5edjgia
|
||||
polecat.i2p,het5jrdn35nhkanxmom5mjyggyvmn2wdj2agyqlrv4mhzhtmavwq
|
||||
politguy.i2p,6dkkh3wnlwlr6k7wnlp4dbtf7pebjrph5afra2vqgfjnbihdglkq
|
||||
pomoyka.i2p,omt56v4jxa4hurbwk44vqbbcwn3eavuynyc24c25cy7grucjh24q
|
||||
pool.gostcoin.i2p,m4f4k3eeaj7otbc254ccj7d5hivguqgnohwelkibr4ddk43qhywa
|
||||
pop.mail.i2p,bup6pmac7adgzkb5r6eknk2juczkxigolkwqkbmenawkes5s5qfq
|
||||
pop.postman.i2p,ipkiowj7x4yjj7jc35yay3c6gauynkkl64gzzyxra3wmyhtfxlya
|
||||
pravtor.i2p,2sr27o5x2v2pyqro7wl5nl6krrsbizwrzsky5y7pkohwh24gn6xq
|
||||
pris.i2p,ahiwycgzuutdxvfqu3wseqffdnhy675nes57s4it2uysy5pxmz6a
|
||||
project-future.i2p,ivqynpfwxzl746gxf376lxqvgktql2lqshzwnwjk2twut6xq7xta
|
||||
projectmayhem2012-086.i2p,ehkjj4ptsagxlo27wpv4a5dk4zxqf4kg4p6fh35xrlz4y6mhe4eq
|
||||
protokol.i2p,f4xre35ehc5l6ianjvt3zcktxkjlyp2iwdje65qnu2j6vurhy6nq
|
||||
proxynet.i2p,7gar5a3n4hzvsgi73iizo65mjza4kujf7feopfxuwu5p6wtwog5a
|
||||
psi.i2p,avviiexdngd32ccoy4kuckvc3mkf53ycvzbz6vz75vzhv4tbpk5a
|
||||
psy.i2p,s3elzoj3wo6v6wqu5ehd56vevpz2vrhhjc5m6mxoazicrl43y62q
|
||||
psyco.i2p,eoilbrgyaiikxzdtmk2zeoalteupjrvcu3ui23p4wvfqo25bb73q
|
||||
pt.hiddenanswers.i2p,o5jlxbbnx3byzgmihqye3kysop5jgl3unsrkmurbtr2nrnl2y74a
|
||||
ptm.i2p,7dna5745ynxgogpjermnq26hwrqyjdlsibpjfmjxlwig247bjisa
|
||||
ptt.i2p,q7r32j7lc3xgrcw2ym33wv4lfgqbez7vtm4lts7n34qfe3iygeha
|
||||
pull.git.repo.i2p,3so7htzxzz6h46qvjm3fbd735zl3lrblerlj2xxybhobublcv67q
|
||||
push.git.repo.i2p,jef4g5vxnqybm4zpouum3lzbl6ti6456q57nbyj5kfyldkempm3a
|
||||
pycache.awup.i2p,w45lkxdnqhil4sgzanmxce62sv3q4szeowcjb2e72a5y5vbhm4ra
|
||||
r4sas.i2p,2gafixvoztrndawkmhfxamci5lgd3urwnilxqmlo6ittu552cndq
|
||||
radio.r4sas.i2p,cv72xsje5ihg6e24atitmhyk2cbml6eggi6b6fjfh2vgw62gdpla
|
||||
ragnarok.i2p,jpzw6kbuzz3ll2mfi3emcaan4gidyt7ysdhu62r5k5xawrva7kca
|
||||
ransack.i2p,mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq
|
||||
rasputin-sucks.i2p,fdozdbyak4rul4jwpqfisbkcx4xbrkuvf2o5r6fd3xryyrjgvjiq
|
||||
rebel.i2p,nch2arl45crkyk6bklyk2hrdwjf5nztyxdtoshy6llhwqgxho5jq
|
||||
red.i2p,fzbdltgsg7jrpz7gmjfvhpcdnw5yrglwspnxqp4zoym3bglntzfa
|
||||
redpanda.i2p,3wcnp6afz4cikqzdu2ktb5wfz7hb3ejdbpn7ocpy7fmeqyzbaiea
|
||||
redzara.i2p,ty7bt62rw5ryvk44dd3v5sua6c7wnbpxxqb6v4dohajmwmezi7va
|
||||
reefer.i2p,4cde25mrrnt5n4nvp5tl62gej33nekfvq2viubmx4xdakhm5pfaa
|
||||
relatelist.i2p,utrer5zgnou72hs4eztmk37pmzdtfw3d6s23wwl7nk3lkqpzbdiq
|
||||
repo.i2p,uxe3lqueuuyklel23sf5h25zwgqgjwsofrqchhnptd5y6pedzbxa
|
||||
repo.r4sas.i2p,ymzx5zgt6qzdg6nhxnecdgbqjd34ery6mpqolnbyo5kcwxadnodq
|
||||
reseed.i2p,j7xszhsjy7orrnbdys7yykrssv5imkn4eid7n5ikcnxuhpaaw6cq
|
||||
retrobbs-nntp.i2p,fkyzl24oxcxvjzkx74t3533x7qjketzmvzk6bwn3d6hj5t7hlw6q
|
||||
retrobbs.i2p,mnn77stihntxdoade3ca2vcf456w6vhhvdsfepdvq5qggikvprxq
|
||||
retrobbs2.i2p,ejff7jtyaus37slkwgeqrrcmyhpj26carp7n27f5h6s5vlbeiy6q
|
||||
revo-ua.i2p,hpojpumki22xjwhmhe6zkiy44oanyn7u4ctcfe3in2ibwm5l32hq
|
||||
riaa.i2p,lfbezn7amkzhswnx7lb4lxihyggl2kuqo5c7vwkcv6bwqmr4cuoa
|
||||
rideronthestorm.i2p,xrdc2qc7quhumhglpbcuiqxr42nuffv4xj4a73jbr4ygepitibqq
|
||||
romster.i2p,eaf2stdqdbepylt53egvixdi34g2usvgi7a4oixsja6atkran43a
|
||||
rootd.i2p,mzbe5wofwn7eaqq4yefrmxizqaxoslwqxrv5qcv2opx5lnhg64dq
|
||||
rospravosudie.i2p,z55khrnlj6bzhs5zielutm6ae6t2bbhfuiujwlrp3teubqyc4w7q
|
||||
rotten.i2p,j4bm3rvezlejnb44elniagi5v2gazh7jaqrzhbod2pbxmgeb2frq
|
||||
rpi.i2p,56p5qxsrvo5ereibevetw2qbj5bronmos7wxunku27g2s4kpbnlq
|
||||
rslight.i2p,bitag46q3465nylvzuikfwjcj7ewi4gjkjtvuxhn73f6vsxffyiq
|
||||
rsync.thetower.i2p,w4brpcdod7wnfqhwqrxyt4sbf2acouqfk5wyosfpq4mxq4s35kqa
|
||||
ru.hiddenanswers.i2p,o6rmndvggfwnuvxwyq54y667fmmurgveerlzufyrhub6w3vkagva
|
||||
ru.i2p,m7fqktjgtmsb3x7bvfrdx4tf7htnhytnz5qi2ujjcnph33u3hnja
|
||||
rufurus.i2p,7msryymfdta3ssyz34qur6gi4jyfkvca5iyfmnceviipwu7g2wca
|
||||
rus.i2p,gh6655arkncnbrzq5tmq4xpn36734d4tdza6flbw5xppye2dt6ga
|
||||
ruslibgen.i2p,kk566cv37hivbjafiij5ryoui2ebxnm7b25gb3troniixopaj6nq
|
||||
rutor.i2p,tro5tvvtd2qg34naxhvqp4236it36jjaipbda5vnjmggp55navdq
|
||||
salt.i2p,6aflphlze6btsbez5cm4x53ydrmwhqrkxsud535d3qjh4wq62rxq
|
||||
sasquotch.i2p,p6535uyfk2y6etc3t47vd3oqxydznqior5jxcvq5bdxe5kw5th6q
|
||||
schwarzwald.i2p,4gokilzy73mmudufy3pohgatm42fcstx7uzg5hjvnfyphxpnphuq
|
||||
sciencebooks.i2p,ypftjpgck75swz3bnsu4nw7rmrlr2vqsn4mwivwt3zcc3rxln5cq
|
||||
scp.duck.i2p,ghbpsolpnveizxu4wbs7jbs2vj3kntnsexfcdleyhpqdhfpxleda
|
||||
search.i2p,nz4qj6xaw5fda3rsmsax6yjthqy4c7uak2j3dzcehtkgyso4q46q
|
||||
secretchat.i2p,cl3j2zxhpw6u6jevny45i557ojhwfxn4g375nnuqhy6lp27mry2q
|
||||
secure.thetinhat.i2p,4q3qyzgz3ub5npbmt3vqqege5lg4zy62rhbgage4lpvnujwfpala
|
||||
seeker.i2p,ipll7sit24oyhnwawpvokz5u7dabq6klveuqpx3sbi6o5qemy2bq
|
||||
seomon.i2p,5mvpsy4h45w4fx7upen7ay3vkrs5klphz5nptmtcqvc3fsajsm4q
|
||||
septu.i2p,5lqvih7yzbqacfi63hwnmih57dxopu5g2o5o4e2aorq7bt4ooyra
|
||||
serien.i2p,3z5k3anbbk32thinvwcy4g5al7dmb75fagcm3zgh4rzrt3maphda
|
||||
ses.i2p,5qfoz6qfgbo7z5sdi26naxstpi2xiltamkcdbhmj6y6q2bo4inja
|
||||
shiftfox.i2p,wpvnuzslu7hjy4gujvnphtyckchdoxccrlhbyomsmjizykczyseq
|
||||
shoieq3.i2p,3fjk4nfk3mccch4hdreghnyijcvovsi3yucjz3qzj5sxngqk5j6q
|
||||
shoronil.i2p,7shqzgmb6tabiwrnwlasruq7pswy2d3emvfhaitehkqgod7i62sa
|
||||
short.i2p,z5mt5rvnanlex6r3x3jnjhzzfqpv36r4ylesynigytegjmebauba
|
||||
sion.i2p,lcbmmw2tvplvqh2dq5lmpxl3vnd5o4j3bdul5moa23deakjrso5q
|
||||
sirup.i2p,aohdp4yajnkitrtw7v2mo3sp7swuqhjfwlsi5xwd7dudzftumsma
|
||||
site.games.i2p,zeuczucfxeev3k7tvqlfcdpfbnqggheiknyyb5r2q4utn3d2auja
|
||||
skank.i2p,qiii4iqrj3fwv4ucaji2oykcvsob75jviycv3ghw7dhzxg2kq53q
|
||||
slack.i2p,gfcsh2yrb2tx7hyvmobriv52skz7qoobn7n7y7n6xaehhh4rpbja
|
||||
slacker.i2p,wq7m2wdguzweleb666ygv3bmfhha63zj74rub76vfesbyhsyk6iq
|
||||
smeghead.i2p,ojf4czveeuekxqkjvkszvv7eiop5dg7x2p6rgfzl4ng4xrjk6lja
|
||||
smtp.mail.i2p,kdn7zx7fgoe4bn5abaaj5cb3e4ql22fklb5veui5yajpj4cxapya
|
||||
smtp.postman.i2p,jj7pt6chsziz6oxxnzpqj7mzhxm2xfhcrbh7dl3tegifb577vx5q
|
||||
socks1.tor.i2p,sifawcdexgdmoc3krv46pvvz74nzd6fkju2vzykjxsx3egqsb6wq
|
||||
sonax.i2p,jmuxdhlok5ggojehesfjlit2e2q3fhzwwfxjndts7vzdshucbjjq
|
||||
sponge.i2p,o5hu7phy7udffuhts6w5wn5mw3sepwe3hyvw6kthti33wa2xn5tq
|
||||
squid.i2p,r4ll5zkbokgxlttqc2lrojvvey5yar4xr5prnndvnmggnqzjaeoq
|
||||
squid2.i2p,hum4wlwizbsckbudcklflei66qxhpxsdkyo4l2rn256smmjleila
|
||||
sqz.i2p,3jvbwc7sy4lnhj25nj7yepx7omli4ulqirnawv3mz6qlhgokjgzq
|
||||
ssh.i2p,xpvdadaouc4qr75pteymyozc7mcsynjfkuqqkkla542lpcsqionq
|
||||
stasher.i2p,6ilgpudnba4kroleunc2weh5txgoxys5yucij5gla6pjyki4oewa
|
||||
stats.i2p,7tbay5p4kzeekxvyvbf6v7eauazemsnnl2aoyqhg5jzpr5eke7tq
|
||||
status.str4d.i2p,ycyyjo3psqbo45nuz243xvgvwnmzlanzqbzxv3kh6gyjztv7425q
|
||||
sto-man.i2p,rg4eilfpe24ws6nctix63qw2dlvd2tqgwdcgdxzji6l5bc4dc7aa
|
||||
str4d.i2p,wrrwzdgsppwl2g2bdohhajz3dh45ui6u3y7yuop5ivvfzxtwnipa
|
||||
stream.i2p,prmbv3xm63ksoetnhbzqg4nzu2lhqdnqytgsydb7u3quxfrg7rna
|
||||
streams.darkrealm.i2p,ud3gcmvysjch4lbjr2khmhqpf7r2x5if4q43xkqdptl4k7lc4muq
|
||||
striker.i2p,4gswsrfpbd44hwjoj33jbqfbwzxfkwpuplb3ydq5zm7nfu2pxvdq
|
||||
subrosa.i2p,g3lnglrnoual7wyabnwwv37uwhadgbxiqz36pf3f5cwfuxsx4mxq
|
||||
subterra.i2p,vdmhe4u26unzgd7ysq6w36ubjncms5wzbhzr2gq576sq4xut5zwq
|
||||
sugadude.i2p,yzjn76iyqard64wgggfrnywkxi7tbfkw7mjhpviqz3p2dguey4yq
|
||||
suicidal.i2p,yfamynllow5xiqbbca7eh5xn733wtnuti5bi4ovc7dwycntqmiuq
|
||||
sungo.i2p,h67s3jw56rwfyoxqxj3fngrluybsgxc2meendngkehzqowxnpj3q
|
||||
surrender.adab.i2p,jgz7xglgfgnjfklrytyn427np2ubipztlm5bxrtbiucayglukrta
|
||||
susi.i2p,qc6g2qfi2ccw7vjwpst6rwuofgzbeoewsb2usv7rubutf4gzqveq
|
||||
syncline.i2p,5kcqmhislu3lmr7llgmdl72yu3efhyriljdc6wp774ftpwlcs5ra
|
||||
syndie-project.i2p,xa63tpfoaqt3zru2ehxjjfbpadwj4ha6qsdvtcqtyr3b7hmt4iaq
|
||||
syndie.echelon.i2p,vwrl2qmcif722fdkn3ldxcgz76df5cq4qypbndzthxwgmykyewta
|
||||
syndie.i2p,7lm3yzpuejhpl4tt4l7o4ndqlu7hgijohofh7oaydx7q7kelenbq
|
||||
syndiemedia.i2p,4lrbbblclodhobn3jadt5bf2yab2pxzoz4ey4a2cvrl44tdv3jma
|
||||
tabak.i2p,y5o2vwb6kart7ivpnbpk4yte3i7kf2dsx7fy3i6w7htqtxhmbzia
|
||||
tahoeserve.i2p,yhs7tsjeznxdenmdho5gjmk755wtredfzipb5t272oi5otipfkoa
|
||||
tc.i2p,qkv2yk6rof3rh7n3eelg5niujae6cmdzcpqbv3wsttedxtqqqj7a
|
||||
telegram.i2p,i6jow7hymogz2s42xq62gqgej2zdm4xtnmpc6vjcwktdxpdoupja
|
||||
templar.i2p,zxeralsujowfpyi2ynyjooxy222pzz4apc2qcwrfx5ikhf64et7q
|
||||
terror.i2p,wsijm6aqz4qtuyn2jedpx6imar5uq4yuhjdgtfqumxbqww47vbnq
|
||||
thebland.i2p,oiviukgwapzxsrwxsoucpqa47s3wt6nfuhfjxvgbqsyrze2mwrda
|
||||
thebreton.i2p,woutbsflcrlgppx4y7ag2kawlqijyenvlwrhbbvbkoaksuhf2hkq
|
||||
thedarkside.i2p,fxt3z33nzkrg5kjrk7bp5vvmu7w2vsn4i6jo6cily3hsm6u664ca
|
||||
theland.i2p,26ppxbseda6xmim37ksarccdb4q5ctdagfmt2u5aba6xjh452zsa
|
||||
thetower.i2p,3xqa5nype64y6fxgqjq6r5w2qpiqftoraj2niebumseat4cj654a
|
||||
thornworld.i2p,vinz4ygmodxarocntyjlfwk2wjpvzndlf4hxss2w2t3fk52oplva
|
||||
tino.i2p,e4bfnhvaofu4s67ztcgiskos2mqyhskid64dvlqexxs2c2bno3iq
|
||||
tinyurl.i2p,mc4oxv3v7dnyzpvok7v5qxkwtgjprgyz6w7x3tag4fipsen6rdwa
|
||||
tome.i2p,qktkxwawgixrm5lzofnj5n24zspbnzxy4pvjm7uvaxvmgwrsuvgq
|
||||
tor-gw.meeh.i2p,ounrqi7cfemnt66yhnhigt2u27fkctbvct527cp2522ozy3btjza
|
||||
tor-www-proxy.i2p,xov45rvjks5fe4ofmpblkj23bnwxgslbypbgvchbr7yul2ujej2q
|
||||
torapa.i2p,eejqjtpko6mdd4opvntbpsuandstrebxpbymfhix7avp5obrw5ta
|
||||
torrentfinder.i2p,mpc73okj7wq2xl6clofl64cn6v7vrvhpmi6d524nrsvbeuvjxalq
|
||||
torrfreedom.i2p,nfrjvknwcw47itotkzmk6mdlxmxfxsxhbhlr5ozhlsuavcogv4hq
|
||||
trac.i2p,kyioa2lgdi2za2fwfwajnb3ljz6zwlx7yzjdpnxnch5uw3iqn6ca
|
||||
trac.i2p2.i2p,i43xzkihpdq34f2jlmtgiyyay5quafg5rebog7tk7xil2c6kbyoa
|
||||
tracker-fr.i2p,qfrvqrfoqkistgzo2oxpfduz4ktkhtqopleozs3emblmm36fepea
|
||||
tracker.awup.i2p,dl47cno335ltvqm6noi5zcij5hpvbj7vjkzuofu262efvu6yp6cq
|
||||
tracker.crypthost.i2p,ri5a27ioqd4vkik72fawbcryglkmwyy4726uu5j3eg6zqh2jswfq
|
||||
tracker.fr.i2p,rzwqr7pfibq5wlcq4a7akm6ohfyhz7hchmy4wz5t55lhd7dwao5q
|
||||
tracker.i2p,lsjcplya2b4hhmezz2jy5gqh6zlk3nskisjkhhwapy3jjly4ds5q
|
||||
tracker.lodikon.i2p,q2a7tqlyddbyhxhtuia4bmtqpohpp266wsnrkm6cgoahdqrjo3ra
|
||||
tracker.mastertracker.i2p,tiwurhqvaaguwpz2shdahqmcfze5ejre52ed2rmoadnjkkilskda
|
||||
tracker.postman.i2p,jfcylf4j3gfmqogkltwy7v5m47wp4h7ffrnfsva6grfdavdn7ueq
|
||||
tracker.psi.i2p,vmow3h54yljn7zvzbqepdddt5fmygijujycod2q6yznpy2rrzuwa
|
||||
tracker.thebland.i2p,s5ikrdyjwbcgxmqetxb3nyheizftms7euacuub2hic7defkh3xhq
|
||||
tracker.welterde.i2p,cfmqlafjfmgkzbt4r3jsfyhgsr5abgxryl6fnz3d3y5a365di5aa
|
||||
tracker2.postman.i2p,ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna
|
||||
traditio.i2p,wkpjjloylf6jopu2itgpktr45t2xvpjijxilxd5tq4i7wkqgwhhq
|
||||
trevorreznik.i2p,wc2z6o5fxm2saqzpfcawr63lejwccvzkysmgtfudkrigqopzfdma
|
||||
true.i2p,pdilhl5vmefyzrrnmak5bnmxqxk2pmw7rpy4f7wbaeppqu2vvugq
|
||||
trwcln.i2p,evml6jiiujhulsgxkdu3wcmkwbokxlv4is6w5qj46tp3ajz3hqzq
|
||||
trypanom.i2p,tgv5acj4khwvr6t44cmryohybd2e5o2kndysnzae6qwcr4hzda3q
|
||||
ts.i2p,nebcjgfx3f7q4wzihqmguwcdeopaf7f6wyk2dojw4bcuku472zxq
|
||||
ttc.i2p,wb4tsfyvfv4idgrultsq6o7inza4fxkc7dijsfpncbx7zko4cdlq
|
||||
ttp.i2p,uuczclxejmetohwf2vqewovx3qcumdfh5zecjb3xkcdmk6e5j72a
|
||||
tumbach.i2p,u6pciacxnpbsq7nwc3tgutywochfd6aysgayijr7jxzoysgxklvq
|
||||
tutorials.i2p,zy37tq6ynucp3ufoyeegswqjaeofmj57cpm5ecd7nbanh2h6f2ja
|
||||
ugha.i2p,z3f3owc72awbywk4p6qb5l2mxgitvs6ejztggbpn2a3ddmymfjda
|
||||
uk.i2p,vydbychnep3mzkzhg43ptewp242issy47whamfbxodc4ma6wc63a
|
||||
underground.i2p,dlnuthb6tpw3kchlb7xoztyspy4ehlggjhl44l64vbcrulrfeica
|
||||
underscore.i2p,3gmezyig6gvsjbpkq2kihoskpuqpkfrajmhhm7hpyrjuvtasgepa
|
||||
unqueued.i2p,3gvn4kwd7z74jxc2sn4ucx52dpvpscxbzjluux3ul4t3eu5g64xq
|
||||
up.i2p,25it5olgdo7pht25z6buzd32sw7jvc65oziqeuocfozfhgua655q
|
||||
update.dg.i2p,iqj6ysfh3wl26m4buvyna73yhduifv523l7bwuexxak4mgldexja
|
||||
update.killyourtv.i2p,gqdfg25jlqtm35qnmt4b7r53d6u2vep4ob23fwd42iyy4j6cvdqq
|
||||
update.postman.i2p,u5rbu6yohfafplp6lgbbmmcuip34s7g3zqdd63cp27dl3nbd7gtq
|
||||
utansans.i2p,u2oyre7ygqv4qs5xjjijfg3x7ddwtod6nqwgbomuuzljzvnq4rda
|
||||
v2mail.i2p,4gg7fykcqe7oaqt4w5fmlarnia7vtmwkv3h45zzgoj6o6crryg5a
|
||||
vadino.i2p,aalttzlt3z25ktokesceweabm5yyhhvml2z3rfotndgpfyh6myra
|
||||
visibility.i2p,pwgma3snbsgkddxgb54mrxxkt3l4jzchrtp52vxmw7rbkjygylxq
|
||||
volatile.i2p,q6rve733tvhgyys57jfw4fymqf3xsnza6dqailcdjcq7w4fa5m3a
|
||||
vpnbest.i2p,ov5f74ndsy5rfkuyps56waf42vxncufqu5rzm3vsnxkdtogccaea
|
||||
vudu.i2p,3zlwci7pvgep2igygzyjej24ue7mjsktlhaff6crpsr75yquak2q
|
||||
w.i2p,j2xorlcb3qxubnthzqu7lt4fvxqn63it4ikwmze55yjkzeeampuq
|
||||
wa11ed.city.i2p,7mxwtmala3ycg2sybjwwfil7s6dqck2fbemeutghhwu73rznmqoa
|
||||
wahoo.i2p,vqe5vkpe5wbda7lwekcd2jaj44ar3rawgv54u5rcolezbg5f5vwa
|
||||
wallet.gostcoin.i2p,reuvum7lgetglafn72chypesvto773oy53zumagrpigkckybrwda
|
||||
wallsgetbombed.i2p,tzhea5d65fllm4263wztghgw4ijdgibsca5xsecp6lk4xlsbdeuq
|
||||
web.telegram.i2p,re6cgwg2yrkgaixlqvt5ufajbb3w42fsldlq7k5brpvnd5gp6x5a
|
||||
wiht.i2p,yojmpj3sh76g3i6ogzgsf7eouipdgdij5o2blcpdgmu5oyjk5xca
|
||||
wiki.fr.i2p,lrqa7hw52uxjb5q3pedmjs6hzos5zrod4y6a4e25hu7vcjhohvxq
|
||||
wiki.ilita.i2p,r233yskmowqe4od4he4b37wydr5fqzvj3z77v5fdei2etp2kg34a
|
||||
wintermute.i2p,4gvlfrdy2rkmem33c342tjntpvqik65wekcvm4275qbkuwotoila
|
||||
wspucktracker.i2p,ubd2txda3kllumx7ftg4unzgqy536cn6dd2ax6mlhodczfas7rgq
|
||||
www.aum.i2p,3xolizygkzkqrldncjqsb734szznw2u36lliceuacqnbs2n65aeq
|
||||
www.baffled.i2p,lqrsfslwu4xnubkk2hofhmuvvr4dia2zevxefinbzdsjurvehtqq
|
||||
www.fr.i2p,rmkgvlfwo3vkb3xrr6epoypxasdzzuilv3sckcqbo6c4os5jo2ea
|
||||
www.i2p,ojxyenivrrqvycgbxbm3phgisu5abspzq4g2us4fjlwz4tx222va
|
||||
www.i2p2.i2p,rjxwbsw4zjhv4zsplma6jmf5nr24e4ymvvbycd3swgiinbvg7oga
|
||||
www.imule.i2p,657xcllunctawyjtar5kgh3wpt6z4l7ba6mmam5rf7hev5w2lsvq
|
||||
www.infoserver.i2p,fq7xhxkdcauhwn4loufcadiiy24zbei25elnup33a3gfrdzrtlyq
|
||||
www.janonymous.i2p,vosqx5qw22hwrzcgsm4ib7hymf5ryovsbtaexqrzmnzshy5bhakq
|
||||
www.mail.i2p,nctas6ioo7aaekfstv3o45yh6ywzwa3vznrdae52ouupzke5pyba
|
||||
www.nntp.i2p,kly3o7zmetuwyz7xonnhttw4lj2244pkbibjz26uflyfte3b3dka
|
||||
www.postman.i2p,rb3srw2gaooyw63q62cp4udrxxa6molr2irbkgrloveylpkkblhq
|
||||
www.syndie.i2p,vojgy5ep4wffmtpjmpnbpa4gq64bgn4yicuw6qmhbm6nqa2ysrva
|
||||
www1.squid.i2p,vbh3bltd2duwbukafgj6f6vfi6aigwso7snucp5zohnf66a2hkpa
|
||||
xc.i2p,mt45a2z3sb2iyy2mwauj4rwa2lwu4peanfy6gx6ybidwnbasusyq
|
||||
xeha.i2p,oartgetziabrdemxctowp7bbeggc7ktmj7tr4qgk5y5jcz4prbtq
|
||||
xilog.i2p,eoc5i5q52hutnmsmq56edvooulutaxfikddgdz27otmgtsxmiloq
|
||||
xmpp.crypthost.i2p,ittkqpjuliwsdewdugkhvgzstejr2jp5tzou7p332lxx4xw7srba
|
||||
xmpp.rpi.i2p,3yv65pfwiwfuv4ciwtx34clqps6o2mc3vtyltcbqdkcki6untbca
|
||||
xn--l2bl5aw.i2p,d2epikjh5crt2l5xjmtceqw2ho44hzp6x3u7hgjrd4mi4wywikwa
|
||||
xolotl.i2p,rwr6rrlmrotxfkxt22mah42cycliy2g5k7hgxyxkpcyyxkd2bgwq
|
||||
xotc.i2p,gqgvzum3xdgtaahkjfw3layb33vjrucmw5btyhrppm463cz3c5oq
|
||||
z-lab.i2p,s6g2pz3mrwzsl4ts65ox3scqawfj7mzvd7hn2ekiiycawopkriba
|
||||
zab.i2p,n4xen5sohufgjhv327ex4qra77f4tpqohlcyoa3atoboknzqazeq
|
||||
zcash.i2p,zcashmliuw3yd2ptfyd5sadatcpyxj4ldiqahtjzg73cgoevxp4q
|
||||
zener.i2p,mcbyglflte3dhwhqyafsfpnqtcapqkv2sepqd62wzd7fo2dzz4ca
|
||||
zerobin.i2p,3564erslxzaoucqasxsjerk4jz2xril7j2cbzd4p7flpb4ut67hq
|
||||
zeroman.i2p,gq77fmto535koofcd53f6yzcc5y57ccrxg3pb6twhcodc7v5dutq
|
||||
zeronet.i2p,fe6pk5sibhkr64veqxkfochdfptehyxrrbs3edwjs5ckjbjn4bna
|
||||
znc.i2p,uw2yt6njjl676fupd72hiezwmd4ouuywowrph6fvhkzhlnvp7jwa
|
||||
znc.str4d.i2p,ufkajv3stxpxlwgwwb2ae6oixdjircnbwog77qxpxv7nt67rpcxq
|
||||
zzz.i2p,ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq
|
||||
|
@@ -0,0 +1,13 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB6jCCAY+gAwIBAgIJAPeWi4iUKLBJMAoGCCqGSM49BAMCMHoxCzAJBgNVBAYT
|
||||
AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNVBAoMFUkyUCBBbm9u
|
||||
eW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYDVQQDDBdnb3N0Y29p
|
||||
bi5mYW1pbHkuaTJwLm5ldDAeFw0xNzA4MDExMzQ4MzdaFw0yNzA3MzAxMzQ4Mzda
|
||||
MHoxCzAJBgNVBAYTAlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNV
|
||||
BAoMFUkyUCBBbm9ueW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYD
|
||||
VQQDDBdnb3N0Y29pbi5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABC+9iIYumUNnsqKbnTluHimV8OdGvo7yeGxuqhfNNB2b3jvbFJ81scgH
|
||||
dsZtMQmUxgKM5nH+NQJMoCxHhSlRy2QwCgYIKoZIzj0EAwIDSQAwRgIhANNh7mOp
|
||||
nBBPRh2a/ipG1VYS0d+mNjSrpz8xWcG3CXPLAiEAjM5MTfv9sOJ74PeZVhFZ02w4
|
||||
vhgyZCeLJ57f123Lm1A=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,13 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAa2gAwIBAgIEfT9YJTAMBggqhkjOPQQDAgUAMHkxCzAJBgNVBAYTAlhY
|
||||
MQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBBbm9ueW1v
|
||||
dXMgTmV0d29yazEPMA0GA1UECxMGZmFtaWx5MR8wHQYDVQQDExZpMnAtZGV2LmZh
|
||||
bWlseS5pMnAubmV0MB4XDTE1MTIwOTIxNDIzM1oXDTI1MTIwODIxNDIzM1oweTEL
|
||||
MAkGA1UEBhMCWFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMV
|
||||
STJQIEFub255bW91cyBOZXR3b3JrMQ8wDQYDVQQLEwZmYW1pbHkxHzAdBgNVBAMT
|
||||
FmkycC1kZXYuZmFtaWx5LmkycC5uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
|
||||
AAR7FPSglYrxeSPzv74A1fTwjajZWV0TljqEMBS/56juZQB/7xOwrsHFHA0eEEF9
|
||||
dTH64wx3lhV/9sh/stwPU2MToyEwHzAdBgNVHQ4EFgQUQh4uRP1aaX8TJX5dljrS
|
||||
CeFNjcAwDAYIKoZIzj0EAwIFAANJADBGAiEAhXlEKGCjJ4urpi2db3OIMl9pB+9t
|
||||
M+oVtAqBamWvVBICIQDBaIqfwLzFameO5ULgGRMysKQkL0O5mH6xo910YQV8jQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,13 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB6TCCAY+gAwIBAgIJAI7G9MXxh7OjMAoGCCqGSM49BAMCMHoxCzAJBgNVBAYT
|
||||
AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNVBAoMFUkyUCBBbm9u
|
||||
eW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYDVQQDDBdpMnBkLWRl
|
||||
di5mYW1pbHkuaTJwLm5ldDAeFw0xNjAyMjAxNDE2MzhaFw0yNjAyMTcxNDE2Mzha
|
||||
MHoxCzAJBgNVBAYTAlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNV
|
||||
BAoMFUkyUCBBbm9ueW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYD
|
||||
VQQDDBdpMnBkLWRldi5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABMlWL3loKVOfsA8Rm91QR53Il69mQiaB7n3rUhfPkJb9MYc1S4198azE
|
||||
iSnNZSXicKDPIifaCgvONmbACzElHc8wCgYIKoZIzj0EAwIDSAAwRQIgYWmSFuai
|
||||
TJvVrlB5RlbiiNFCEootjWP8BFM3t/yFeaQCIQDkg4xcQIRGTHhjrCsxmlz9KcRF
|
||||
G+eIF+ATfI93nPseLw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,12 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBwTCCAWigAwIBAgIJAOZBC10+/38EMAkGByqGSM49BAEwZzELMAkGA1UEBhMC
|
||||
QVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdp
|
||||
dHMgUHR5IEx0ZDEgMB4GA1UEAwwXbWNhMi1pMnAuZmFtaWx5LmkycC5uZXQwHhcN
|
||||
MTYwMzI4MjIwMjMxWhcNMjYwMzI2MjIwMjMxWjBnMQswCQYDVQQGEwJBVTETMBEG
|
||||
A1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkg
|
||||
THRkMSAwHgYDVQQDDBdtY2EyLWkycC5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49
|
||||
AgEGCCqGSM49AwEHA0IABNNyfzJr/rMSUeWliVBbJHRF2+qMypOlHEZ9m1nNATVX
|
||||
64OhuyuVCmbF9R3oDkcZZJQQK1ovXd/EsbAIWDI8K/gwCQYHKoZIzj0EAQNIADBF
|
||||
AiEApmv2tvMwzlvPjHJG1/5aXOSjYWw2s4ETeGt4abWPQkACIBbF3RuCHuzg+KN8
|
||||
N0n9hAJztAqhRCdG3hilxF4fbVLp
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,12 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxDCCAWmgAwIBAgIJAJnJIdKHYwWcMAoGCCqGSM49BAMCMGcxCzAJBgNVBAYT
|
||||
AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn
|
||||
aXRzIFB0eSBMdGQxIDAeBgNVBAMMF3ZvbGF0aWxlLmZhbWlseS5pMnAubmV0MB4X
|
||||
DTE2MDQyNjE1MjAyNloXDTI2MDQyNDE1MjAyNlowZzELMAkGA1UEBhMCQVUxEzAR
|
||||
BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
|
||||
IEx0ZDEgMB4GA1UEAwwXdm9sYXRpbGUuZmFtaWx5LmkycC5uZXQwWTATBgcqhkjO
|
||||
PQIBBggqhkjOPQMBBwNCAARf6LBfbbfL6HInvC/4wAGaN3rj0eeLE/OdBpA93R3L
|
||||
s8EUp0YTEJHWPo9APiKMmAwQSsMJfjhNrbp+UWEnnx2LMAoGCCqGSM49BAMCA0kA
|
||||
MEYCIQDpQu2KPV5G1JOFLoZvdj+rcvEnjxM/FxkaqikwkVx8FAIhANP7DkUal+GT
|
||||
SuiCtcqM4QyIBsfsCJBWEMzovft164Bo
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFfTCCA2WgAwIBAgIEOprmhjANBgkqhkiG9w0BAQ0FADBvMQswCQYDVQQGEwJY
|
||||
WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt
|
||||
b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEYMBYGA1UEAwwPYmFja3VwQG1haWwu
|
||||
aTJwMB4XDTEzMTAxMzEzNDQ1NVoXDTIzMTAxMzEzNDQ1NVowbzELMAkGA1UEBhMC
|
||||
WFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMVSTJQIEFub255
|
||||
bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxGDAWBgNVBAMMD2JhY2t1cEBtYWls
|
||||
LmkycDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIoAkobXwk/Enf1d
|
||||
roHyqCyvcJfZJVTwb/LgYWAvCBMCr+RGqlSgtk3g69Y3I0xU08fD2kGt3r5Pwsbr
|
||||
omXIbJAcccyLqmQ5QX6QgL+X9VpMDp9C4h2RogCrqLBAWw4cuZ4RS9VCpP1Yis7H
|
||||
uejYqENP86p7BsRnuW/4cYnfunAdMpss4LpRGQXt1nTX+kfgCYgnKFbFqwAHt7yV
|
||||
Ds+Pe6FuBHPlp+sc1amKRcUnSvhXLsv43VicnT7xYL/kUsN83wrtHA3B4aGDx3aA
|
||||
3/EzuRmIXQB0BlTZILMEyYwG/nc4OsW82QYrvEZ9BIg9A4lF/wS/KZCICPxLF2zo
|
||||
dGjnmlgkiA4s8eO+va/ElHyELjckVXqmG1eXHhSkEsDvOQJy01IUuwLinvq7cUbJ
|
||||
HfJBZJllEg+sLDCv3FkEqN+XjBNFfQN4oNew4w6IPY6YH1INVB9LL0Cmdu4DudLv
|
||||
TY8OcI8eSfez3hmm+pYQ23PJRYYnvRDnRECyIWBegkckWRh8U/WvZUYUvETK6EDl
|
||||
/0KpTtfzX6MqHA5D6bTAB8Y3ijGMLrZ/B5vj5yCoZbLiGme9X2moR2k1LEhdhtzV
|
||||
exsqezCpg6dn48FTX7mHjvR5/r4kz2jqBGmdPUWIIxnjFUzDUK3llVQiHihleHpe
|
||||
jL4LqnhBGKWFRTaVwaIkBG4zAfIzAgMBAAGjITAfMB0GA1UdDgQWBBQNkfW7bSMl
|
||||
1/4KDbgwrkf9x1Zu/TANBgkqhkiG9w0BAQ0FAAOCAgEAGg3a3rTf0EznQocmio0T
|
||||
5gCoL0n8h6yKW/PyPAIELrd9wiYjhJFcWvMTcJJJnVqmAL5vpvhaAFVtAfx70MGa
|
||||
0DZ7FvytK5hEfF4IqOFDyEEVGJR5rIpVK4MeI1nmwEsxdbW+FhODjtRzgYO8XBME
|
||||
Xj4aY1FWg9vxc3reUj6PSFsZtsB0aLiRgL9JDovJIiRw0Uqr1v2wXBte5yVCxDge
|
||||
vTREZtpK4cKetoOa68pwSXI32JwKE18j6bfdKVBCcYQKlKP/3gHGduaDrQv3w32S
|
||||
DRym5s6MREeTUOtAw4wq46KpdOX8yyAqJPrCfMwS6ORd3t+egqOw0PUnsqb97w4O
|
||||
lUtrRYvb2cOj60SmRx4vJvItyuHbKqIK7o2e1RcUZPXYoAVx2ww4XB2Wk4D7LSAs
|
||||
cS7nLj8yAqzJ2qqtBzxu+zILJtkVa12dKF0xmS0BxBp4sCYiBtmAVE8AWQqEuSHA
|
||||
FrMWqoXcjcfdvvyX487FFWWUE7ZBIn0hee2sK9J9+SPtqczJaN7TF3K3nzo65WJG
|
||||
1epltmq2Ugjb67Gz7v4y7H23DJ/qhm8yLtCHTj69HTta5I08j6Kut924WLZaiMO/
|
||||
4YoEL5AE63X0sxYibKFQiq7FW5nUJA280GRlY3xSMFzlB2ggazrUV3YAWVDhfdnI
|
||||
flpzWXkFM2D36OUaubfe9YY=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
wpBgPyAFAwouPy1whmnx
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,35 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Hz8KWVkHZg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
JNJOWTH/Vas1W6XlwGcOOAARTQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,33 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
+g==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
o3eNsanvTU+TIFBh2Q==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,32 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
gfvIm7v+cELj8a53EQY0LafzZqNC5kQAp916coU=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Q5DD3jExbpwG5n35HEcHYw==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
fpeOSDoGBYJGbIpzDreBDhxaZrwGq36k
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
# 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)
|
||||
if [ -z $screenfind ]; then
|
||||
echo "Can't find 'screen' installed. That script needs it!";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
screen -Adm -S i2pd ./i2pd-osx --datadir=.
|
||||
@@ -0,0 +1,49 @@
|
||||
## Configuration file for a typical i2pd user
|
||||
## See https://i2pd.readthedocs.org/en/latest/configuration.html
|
||||
## for more options you can use in this file.
|
||||
|
||||
#log = file
|
||||
#logfile = ./i2pd.log
|
||||
|
||||
ipv4 = true
|
||||
ipv6 = false
|
||||
|
||||
bandwidth = O
|
||||
|
||||
[precomputation]
|
||||
elgamal = true
|
||||
|
||||
[upnp]
|
||||
enabled = true
|
||||
name = I2Pd
|
||||
|
||||
[reseed]
|
||||
verify = true
|
||||
|
||||
[addressbook]
|
||||
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
|
||||
address = 127.0.0.1
|
||||
port = 7070
|
||||
|
||||
[httpproxy]
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 4444
|
||||
|
||||
[socksproxy]
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 4447
|
||||
|
||||
[sam]
|
||||
enabled = true
|
||||
address = 127.0.0.1
|
||||
port = 7656
|
||||
|
||||
[ntcp2]
|
||||
enabled = true
|
||||
published = true
|
||||
#port =
|
||||
@@ -0,0 +1,33 @@
|
||||
#[IRC]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 6668
|
||||
#destination = irc.postman.i2p
|
||||
#destinationport = 6667
|
||||
#keys = irc-keys.dat
|
||||
|
||||
#[SMTP]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 7659
|
||||
#destination = smtp.postman.i2p
|
||||
#destinationport = 25
|
||||
#keys = smtp-keys.dat
|
||||
|
||||
#[POP3]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 7660
|
||||
#destination = pop.postman.i2p
|
||||
#destinationport = 110
|
||||
#keys = pop3-keys.dat
|
||||
|
||||
#[MTN]
|
||||
#type = client
|
||||
#address = 127.0.0.1
|
||||
#port = 8998
|
||||
#destination = mtn.i2p-projekt.i2p
|
||||
#destinationport = 4691
|
||||
#keys = mtn-keys.dat
|
||||
|
||||
# see more examples in /usr/share/doc/i2pd/configuration.md.gz
|
||||
@@ -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-----
|
||||
@@ -0,0 +1,2 @@
|
||||
pref("general.config.filename", "i2pdbrowser.cfg");
|
||||
pref("general.config.obscure_value", 0);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user