mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 17:38:30 +02:00
Compare commits
369 Commits
66.0
...
v80.0-beta
Author | SHA1 | Date | |
---|---|---|---|
5fd7f6de7e | |||
592b959c24 | |||
c6f53c8768 | |||
38d772e4c8 | |||
cfce521919 | |||
a5ab3e23d6 | |||
b3eee6c9fd | |||
8d6d17d46b | |||
9a37e1340c | |||
f1e0203ef4 | |||
726d5bde30 | |||
f9f0fffd27 | |||
93840ca181 | |||
99aa5af356 | |||
0358fdac8b | |||
815c3026b5 | |||
5ed3047b7a | |||
e16ede1cdf | |||
6905187b3e | |||
172118e61b | |||
8452edb94b | |||
0f6957bbd4 | |||
8c2bcc0352 | |||
bc832575d8 | |||
c4b7e07691 | |||
58fb1db838 | |||
2809854802 | |||
091a71aade | |||
117ab133b1 | |||
c4a06c4689 | |||
0d27689c64 | |||
771e57480a | |||
f8fd03482d | |||
10cc1224d0 | |||
52926cca7a | |||
be64819ce7 | |||
24c228df92 | |||
892b3d9d69 | |||
df21798b81 | |||
46d03279d3 | |||
fe0af3bb34 | |||
84997386c1 | |||
1a389c0214 | |||
d0060fed3c | |||
3d18af19e3 | |||
b5b04454e0 | |||
618f7bed3f | |||
488a825626 | |||
aaf6cb33d7 | |||
77ecef8be3 | |||
4be0a80720 | |||
f573200aa8 | |||
48f258ff53 | |||
b9100488cb | |||
9d78e050ee | |||
b07cf1f03d | |||
683ef63b37 | |||
05580f5e99 | |||
ecc62554e5 | |||
f6e6de8444 | |||
f69d92e6dd | |||
3edc48da56 | |||
868882ae33 | |||
ff9bf76e52 | |||
4bc5b89cfe | |||
bb1e5bfd54 | |||
27d72eda9e | |||
07117c65c1 | |||
919d4bfe96 | |||
e38e253c25 | |||
14aaec71fb | |||
c0780df24d | |||
0ea1605642 | |||
bd384622db | |||
3366e0aa16 | |||
dff5bb478a | |||
d455c500a6 | |||
b90e72370c | |||
dd162d9f48 | |||
d7c276b3fe | |||
394b691599 | |||
ba83c555cc | |||
b695468c7e | |||
deae6e14f9 | |||
97c5378e52 | |||
d2dd0c2ab4 | |||
8c7149c6a5 | |||
d2da48c215 | |||
7e71b6663c | |||
94c83519f2 | |||
e7d20867cb | |||
55ae994972 | |||
f0945743b7 | |||
ee35d7c70d | |||
fe1b03bd2a | |||
187692af66 | |||
b6e2a3f64f | |||
6f7e09ad43 | |||
4ddf60cf32 | |||
24777c9ac2 | |||
615ebeda2f | |||
4139630635 | |||
a542701ba5 | |||
e67a0c868d | |||
1afd52de6e | |||
64f34f1471 | |||
5f3e3b2691 | |||
1ce1f74494 | |||
03f558b09c | |||
cd9fc110b0 | |||
7619e312de | |||
5d2c5de11c | |||
e1022c2e72 | |||
e431b324c8 | |||
18ad40a5c6 | |||
315de066ec | |||
85273d0f19 | |||
ef293b57a7 | |||
79d316fd22 | |||
ed60588473 | |||
07c128a190 | |||
5b1d56933b | |||
34cfcedc1b | |||
f9146fdf24 | |||
a1cdbc8324 | |||
cd07641a9d | |||
9c02949e04 | |||
1ef62a1036 | |||
5672bc8cc8 | |||
df1732745d | |||
30daf8640c | |||
4074a37e1d | |||
97043b0ce1 | |||
42ea484017 | |||
3f6340b69c | |||
884e84a4cb | |||
560acfc94f | |||
fb263f5624 | |||
19b392b83d | |||
2db76c95c3 | |||
b6fbf77dde | |||
a4ba22e912 | |||
163e18ce6d | |||
a13027905e | |||
8f76d9439f | |||
f0980b5cb8 | |||
450c9a9e0f | |||
6acfdaccbd | |||
a0e0a2a6c9 | |||
f67e729197 | |||
19526b573c | |||
b0221ec838 | |||
a3611b7cf8 | |||
bff1e84afa | |||
1d31da40ec | |||
0d57cfc44a | |||
0cfb2fb06d | |||
d5f297ed42 | |||
c13dbdf40d | |||
6173104a9e | |||
0c79b8b45b | |||
895f8d01d5 | |||
65dfad5c76 | |||
fdaf22780f | |||
16756646bb | |||
e4f80225d8 | |||
67eec9c85c | |||
539750d2f2 | |||
d91226ed55 | |||
301fcd059d | |||
1cc9a08a18 | |||
5d1857ddd8 | |||
226af6f679 | |||
7f2c92f654 | |||
5b82afd5bd | |||
d7b1877a1f | |||
1b6239eab8 | |||
ad0187122d | |||
624e50faac | |||
a9e9392172 | |||
201210111e | |||
53f8578749 | |||
dc4d9e4dae | |||
e1b0eae740 | |||
be0ccf6460 | |||
7c0a327b06 | |||
a35cba3914 | |||
e16425310f | |||
d503d96db0 | |||
335299a0cf | |||
7311cfdf84 | |||
3a9440aeea | |||
3210ab0ca8 | |||
2c734612f6 | |||
a12dd83b1f | |||
44d9ceaf05 | |||
be9d9ac9ca | |||
66cdb72927 | |||
953b96431e | |||
4d72ad90b0 | |||
cccb5b10b4 | |||
810045eb39 | |||
b47982bb9a | |||
0691b8babe | |||
8d1c95c650 | |||
19484e1a56 | |||
755ebf88fb | |||
d26ea4f39e | |||
a0f3da208f | |||
5166811bd5 | |||
86bfdd1470 | |||
90ef9e63eb | |||
f2200fd442 | |||
aff595b6ea | |||
6618bf5f76 | |||
9aa8e27ef4 | |||
9c782fbf57 | |||
931462b30b | |||
217553b367 | |||
469bbc1ab3 | |||
11dcc54b61 | |||
d40d7dbabd | |||
b80c515e88 | |||
ed735f875c | |||
55b720faec | |||
31567c7938 | |||
8f939c91fe | |||
27bd07d496 | |||
42281a9e52 | |||
8f40c97fd1 | |||
9642452c48 | |||
8f1c3018ca | |||
f85eb9d0c2 | |||
408a992893 | |||
23c884a5f8 | |||
51089fbad9 | |||
83b4ada670 | |||
7df6c676be | |||
e338186953 | |||
fa61a7c25b | |||
dafd0894e6 | |||
06cf53d63e | |||
fc545b4d27 | |||
3c5f58b812 | |||
7d7f580bfc | |||
ca5d6b3317 | |||
9e7f9de56f | |||
8a204b5db0 | |||
690a93b71d | |||
0da3835a49 | |||
a92c4086bb | |||
9b7771fe76 | |||
2265b73521 | |||
01aae1b346 | |||
c2dbdcd4ec | |||
f53b996cfa | |||
a633622d11 | |||
caaf76e3fb | |||
8811a28c56 | |||
fdc9db9a08 | |||
c079c3c632 | |||
6f76a9bfd2 | |||
dfab1516ef | |||
57339d09b1 | |||
ed23a88c08 | |||
dae1087082 | |||
7a103b0c23 | |||
5d5a9acaa4 | |||
76c476ee3c | |||
b3c6561ba8 | |||
a4c2bb80aa | |||
a173d30d4e | |||
fc801db06a | |||
61ce537f20 | |||
7a766cd2a7 | |||
842a78692e | |||
540f5ce868 | |||
be7c50c198 | |||
473e88c784 | |||
da4cfce10f | |||
2a30436905 | |||
7f6d7c6a52 | |||
720253eca3 | |||
7394f2f553 | |||
ccec62f66b | |||
329719fe25 | |||
57f4bd46e9 | |||
59a85bcdda | |||
dab27cd143 | |||
1ff14e31c0 | |||
c55ecbd8b2 | |||
99eb835e7a | |||
1e0b3d74f9 | |||
7bb0bfefe1 | |||
f1d28f3878 | |||
57618a31dc | |||
600f9677e9 | |||
0d40613268 | |||
11f40f8a84 | |||
c3a74a7c6e | |||
4dd40bddcc | |||
9da3cf4be8 | |||
50869a734f | |||
bb788682c9 | |||
50afeb1861 | |||
0eb107abf3 | |||
675577fb8d | |||
b28677a594 | |||
48f3dfec84 | |||
59930d4697 | |||
579aa3aa9c | |||
ed687fc7ca | |||
ce3d5a8cbe | |||
8ffbd81813 | |||
4119be3a86 | |||
8d874401fa | |||
b4a4856223 | |||
8a86097997 | |||
7a9763d129 | |||
a39516ff0e | |||
3e5e1bfdd2 | |||
7b667db766 | |||
8f1a489e36 | |||
6f8d0263df | |||
25b8b404fb | |||
528d0de6b4 | |||
c9c1671e4a | |||
8765231de0 | |||
e6017af4bd | |||
053808ba97 | |||
2d0182ce6e | |||
98f65da430 | |||
6a0c44d0a4 | |||
882d25f725 | |||
c3210d1be9 | |||
d4f7590c83 | |||
d6ccf7ba64 | |||
0922215670 | |||
f849e1c602 | |||
986c900193 | |||
b8367959da | |||
b05cfc32de | |||
358ddfdfce | |||
8a68fc48c5 | |||
87959d621c | |||
8b07fd57d0 | |||
4989928c1e | |||
c2775a3441 | |||
50d31a7aa2 | |||
9fbe3080c5 | |||
8a98cd1890 | |||
2d62b9f729 | |||
bb7f8df647 | |||
373602f0f0 | |||
e56665ecd1 | |||
59d056de27 | |||
d41372a7f0 | |||
f62f781645 | |||
408d1d0e26 | |||
d491cf1e89 | |||
ca0f2a5a88 | |||
fd10c35049 | |||
6ed3581cb0 | |||
c2034617f0 | |||
6231d6ebed | |||
411805b05c | |||
8c12f4bb14 | |||
e3349d0f07 | |||
92082621d6 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -13,3 +13,4 @@
|
|||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
*.yml export-ignore
|
*.yml export-ignore
|
||||||
/wikipiki export-ignore
|
/wikipiki export-ignore
|
||||||
|
/.github export-ignore
|
||||||
|
18
.github/ISSUE_TEMPLATE/tools.md
vendored
Normal file
18
.github/ISSUE_TEMPLATE/tools.md
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Tools
|
||||||
|
about: Report issues with the updaters, the troubleshooter, or any other tools.
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please specify:
|
||||||
|
- the name of the file (i.e. updater.bat, updater.sh)
|
||||||
|
- steps to reproduce the issue
|
||||||
|
- actual result
|
||||||
|
- expected result
|
||||||
|
|
||||||
|
Blank out this field before typing, or start typing after the next line.
|
||||||
|
-->
|
29
.github/ISSUE_TEMPLATE/troubleshooting-help.md
vendored
Normal file
29
.github/ISSUE_TEMPLATE/troubleshooting-help.md
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
name: Troubleshooting help
|
||||||
|
about: Ask for help to solve problems with user.js
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Before you proceed...
|
||||||
|
- Issues will be closed as invalid if you do not [troubleshoot](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.4-Troubleshooting), including
|
||||||
|
- confirming the problem is caused by the `user.js`
|
||||||
|
- searching the `[Setup` tags in the `user.js`
|
||||||
|
- Search the GitHub repository. The information you need is most likely here already.
|
||||||
|
- Note: We do not support forks
|
||||||
|
|
||||||
|
See also:
|
||||||
|
- Extension breakage due to prefs [issue 391](https://github.com/ghacksuserjs/ghacks-user.js/issues/391)
|
||||||
|
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/ghacksuserjs/ghacks-user.js/issues/350)
|
||||||
|
- The extension CSP header modification game [issue 664](https://github.com/ghacksuserjs/ghacks-user.js/issues/664)
|
||||||
|
|
||||||
|
If you still need help, help us help you by providing relevant information:
|
||||||
|
- browser version
|
||||||
|
- Steps to Reproduce (STR)
|
||||||
|
- actual result
|
||||||
|
- expected result
|
||||||
|
- anything else you deem worth mentioning
|
||||||
|
|
||||||
|
Clear all of this when you're ready to type.
|
15
.github/ISSUE_TEMPLATE/user-js.md
vendored
Normal file
15
.github/ISSUE_TEMPLATE/user-js.md
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
name: user.js
|
||||||
|
about: Suggest changes to user.js
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
We value feedback in general, but we value feedback from informed users more. There is no need for you to be an expert to participate (most of us aren't), but we hope that you at least understand our decisions before questioning them. We discuss all changes openly, and we do not make changes lightly. So, if you don't understand why we decided to add/remove/change a certain pref, search the repo. The answer is most certainly here.
|
||||||
|
|
||||||
|
If some change we made took you by surprise (in the wrong way), remember that keeping track of changes is your responsibility. Watch the repo, read the [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=✓&q=is%3Aissue+label%3Achangelog), compare [releases](https://github.com/ghacksuserjs/ghacks-user.js/releases) as you update your copy of user.js, or use any other method you prefer.
|
||||||
|
|
||||||
|
Clear all of this when you're ready to type.
|
||||||
|
|
16
README.md
16
README.md
@ -1,26 +1,22 @@
|
|||||||
### ![][b] user.js
|
### ![][b] user.js
|
||||||
A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.1-Overview) wiki page.
|
A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.1-Overview) wiki page.
|
||||||
|
|
||||||
### ![][b] ghacks user.js
|
### ![][b] This user.js
|
||||||
The `ghacks user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
This `user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
||||||
|
|
||||||
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `ghacks user.js` settings.
|
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `user.js` settings.
|
||||||
|
|
||||||
Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services.
|
Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services.
|
||||||
|
|
||||||
Also be aware that this `user.js` is made specifically for Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser.
|
Also be aware that this `user.js` is made specifically for desktop Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser.
|
||||||
|
|
||||||
Sitemap: [Releases](https://github.com/ghacksuserjs/ghacks-user.js/releases), [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog), [Wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki), [stickies](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22). [diffs](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+label%3Adiffs)
|
Sitemap: [Releases](https://github.com/ghacksuserjs/ghacks-user.js/releases), [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog), [Wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki), [stickies](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22). [diffs](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+label%3Adiffs)
|
||||||
|
|
||||||
### ![][b] acknowledgments
|
### ![][b] acknowledgments
|
||||||
Literally thousands of sources, references and suggestions. That said...
|
Literally thousands of sources, references and suggestions. Special mention to:
|
||||||
|
|
||||||
* Martin Brinkmann at [ghacks](https://www.ghacks.net/) <sup>1</sup>
|
|
||||||
* The ghacks community and commentators
|
|
||||||
* [12bytes](https://12bytes.org/articles/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
|
* [12bytes](https://12bytes.org/articles/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
|
||||||
* The 12bytes article now uses this user.js and supplements it with an additional JS hosted at [GitLab](https://gitlab.com/labwrat/Firefox-user.js/tree/master)
|
* The 12bytes article now uses this user.js and supplements it with an additional JS hosted at [Codeberg](https://codeberg.org/12bytes.org/Firefox-user.js-supplement)
|
||||||
|
|
||||||
<sup>1</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. With Martin Brinkmann's blessing, it will keep the ghacks name.
|
|
||||||
|
|
||||||
### ![][b] [](https://opensource.org/licenses/MIT)
|
### ![][b] [](https://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## prefs.js cleaner for Linux/Mac
|
## prefs.js cleaner for Linux/Mac
|
||||||
## author: @claustromaniac
|
## author: @claustromaniac
|
||||||
## version: 1.1
|
## version: 1.2
|
||||||
|
|
||||||
## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh
|
## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ fQuit() {
|
|||||||
fFF_check() {
|
fFF_check() {
|
||||||
# there are many ways to see if firefox is running or not, some more reliable than others
|
# there are many ways to see if firefox is running or not, some more reliable than others
|
||||||
# this isn't elegant and might not be future-proof but should at least be compatible with any environment
|
# this isn't elegant and might not be future-proof but should at least be compatible with any environment
|
||||||
while [ -e webappsstore.sqlite-shm ]; do
|
while [ -e lock ]; do
|
||||||
echo -e "\nThis Firefox profile seems to be in use. Close Firefox and try again.\n"
|
echo -e "\nThis Firefox profile seems to be in use. Close Firefox and try again.\n"
|
||||||
read -p "Press any key to continue."
|
read -p "Press any key to continue."
|
||||||
done
|
done
|
||||||
@ -58,7 +58,7 @@ echo -e "\n\n"
|
|||||||
echo " ╔══════════════════════════╗"
|
echo " ╔══════════════════════════╗"
|
||||||
echo " ║ prefs.js cleaner ║"
|
echo " ║ prefs.js cleaner ║"
|
||||||
echo " ║ by claustromaniac ║"
|
echo " ║ by claustromaniac ║"
|
||||||
echo " ║ v1.1 ║"
|
echo " ║ v1.2 ║"
|
||||||
echo " ╚══════════════════════════╝"
|
echo " ╚══════════════════════════╝"
|
||||||
echo -e "\nThis script should be run from your Firefox profile directory.\n"
|
echo -e "\nThis script should be run from your Firefox profile directory.\n"
|
||||||
echo "It will remove any entries from prefs.js that also exist in user.js."
|
echo "It will remove any entries from prefs.js that also exist in user.js."
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
/***
|
/***
|
||||||
This will reset the preferences that are under sections 4600 & 4700 in the ghacks user.js
|
Version: up to and including FF/ESR78
|
||||||
up to and including release 60-beta. These are the prefs that are no longer necessary,
|
|
||||||
or they conflict with, privacy.resistFingerprinting if you have that enabled.
|
This will reset the preferences that are under sections 4600 & 4700 in the
|
||||||
|
ghacks user.js. These are the prefs that are no longer necessary, or they
|
||||||
|
conflict with, privacy.resistFingerprinting if you have that enabled.
|
||||||
|
|
||||||
For instructions see:
|
For instructions see:
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||||
@ -22,6 +24,10 @@
|
|||||||
'dom.w3c_touch_events.enabled',
|
'dom.w3c_touch_events.enabled',
|
||||||
'media.ondevicechange.enabled',
|
'media.ondevicechange.enabled',
|
||||||
'webgl.enable-debug-renderer-info',
|
'webgl.enable-debug-renderer-info',
|
||||||
|
'dom.w3c_pointer_events.enabled',
|
||||||
|
'ui.use_standins_for_native_colors',
|
||||||
|
'ui.systemUsesDarkTheme',
|
||||||
|
'ui.prefersReducedMotion',
|
||||||
/* section 4700 */
|
/* section 4700 */
|
||||||
'general.useragent.override',
|
'general.useragent.override',
|
||||||
'general.buildID.override',
|
'general.buildID.override',
|
@ -1,6 +1,8 @@
|
|||||||
/***
|
/***
|
||||||
|
Version: up to and including FF/ESR78
|
||||||
|
|
||||||
This will reset the preferences that have been deprecated by Mozilla
|
This will reset the preferences that have been deprecated by Mozilla
|
||||||
and used in the ghacks user.js up to and including release 60-beta
|
and used in the ghacks user.js
|
||||||
|
|
||||||
It is in reverse order, so feel free to remove sections that do not apply
|
It is in reverse order, so feel free to remove sections that do not apply
|
||||||
|
|
||||||
@ -12,8 +14,68 @@
|
|||||||
let ops = [
|
let ops = [
|
||||||
/* deprecated */
|
/* deprecated */
|
||||||
|
|
||||||
/* ESR52.x users can remove sections 53-60 but it is not
|
/* 78 */
|
||||||
crucial as your user.js will reinstate them */
|
'media.autoplay.enabled.user-gestures-needed',
|
||||||
|
'toolkit.cosmeticAnimations.enabled',
|
||||||
|
/* 77 */
|
||||||
|
'browser.urlbar.oneOffSearches',
|
||||||
|
'browser.tabs.remote.allowLinkedWebInFileUriProcess',
|
||||||
|
/* 76 */
|
||||||
|
'extensions.blocklist.url',
|
||||||
|
/* 74 */
|
||||||
|
'geo.wifi.uri',
|
||||||
|
'geo.wifi.logging.enabled',
|
||||||
|
'privacy.userContext.longPressBehavior',
|
||||||
|
'webgl.disable-extensions',
|
||||||
|
/* 72 */
|
||||||
|
'browser.newtabpage.activity-stream.telemetry.ping.endpoint',
|
||||||
|
'toolkit.telemetry.hybridContent.enabled',
|
||||||
|
'dom.indexedDB.enabled',
|
||||||
|
/* 71 */
|
||||||
|
'devtools.webide.enabled',
|
||||||
|
'devtools.webide.autoinstallADBExtension',
|
||||||
|
'offline-apps.allow_by_default',
|
||||||
|
/* 69 */
|
||||||
|
'gfx.downloadable_fonts.woff2.enabled',
|
||||||
|
'plugins.click_to_play',
|
||||||
|
'media.autoplay.allow-muted',
|
||||||
|
/* 68 */
|
||||||
|
'browser.newtabpage.activity-stream.disableSnippets',
|
||||||
|
'browser.aboutHomeSnippets.updateUrl',
|
||||||
|
'lightweightThemes.update.enabled',
|
||||||
|
'security.csp.experimentalEnabled',
|
||||||
|
/* F67 */
|
||||||
|
'dom.event.highrestimestamp.enabled',
|
||||||
|
'browser.newtabpage.activity-stream.asrouter.userprefs.cfr',
|
||||||
|
/* 66 */
|
||||||
|
'browser.chrome.errorReporter.enabled',
|
||||||
|
'browser.chrome.errorReporter.submitUrl',
|
||||||
|
'network.allow-experiments',
|
||||||
|
/* 65 */
|
||||||
|
'browser.urlbar.autocomplete.enabled',
|
||||||
|
'browser.fixup.hide_user_pass',
|
||||||
|
/* 64 */
|
||||||
|
'browser.onboarding.enabled',
|
||||||
|
'devtools.webide.autoinstallADBHelper',
|
||||||
|
'devtools.webide.adbAddonURL',
|
||||||
|
'security.csp.enable_violation_events',
|
||||||
|
/* 63 */
|
||||||
|
'browser.search.countryCode',
|
||||||
|
'app.update.enabled',
|
||||||
|
'shield.savant.enabled',
|
||||||
|
'browser.chrome.favicons',
|
||||||
|
'media.autoplay.enabled',
|
||||||
|
'network.cookie.lifetime.days',
|
||||||
|
'browser.ctrlTab.previews',
|
||||||
|
/* 62 */
|
||||||
|
'plugin.state.java',
|
||||||
|
/* 61 */
|
||||||
|
'experiments.enabled',
|
||||||
|
'experiments.manifest.uri',
|
||||||
|
'experiments.supported',
|
||||||
|
'experiments.activeExperiment',
|
||||||
|
'network.jar.block-remote-files',
|
||||||
|
'network.jar.open-unsafe-types',
|
||||||
/* 60 */
|
/* 60 */
|
||||||
'browser.newtabpage.directory.source',
|
'browser.newtabpage.directory.source',
|
||||||
'browser.newtabpage.enhanced',
|
'browser.newtabpage.enhanced',
|
||||||
@ -22,7 +84,6 @@
|
|||||||
'extensions.shield-recipe-client.api_url',
|
'extensions.shield-recipe-client.api_url',
|
||||||
'browser.newtabpage.activity-stream.enabled',
|
'browser.newtabpage.activity-stream.enabled',
|
||||||
'dom.workers.enabled',
|
'dom.workers.enabled',
|
||||||
'view_source.tab',
|
|
||||||
/* 59 */
|
/* 59 */
|
||||||
'intl.locale.matchOS',
|
'intl.locale.matchOS',
|
||||||
'general.useragent.locale',
|
'general.useragent.locale',
|
||||||
@ -76,8 +137,6 @@
|
|||||||
'plugin.scan.WindowsMediaPlayer',
|
'plugin.scan.WindowsMediaPlayer',
|
||||||
'media.getusermedia.screensharing.allow_on_old_platforms',
|
'media.getusermedia.screensharing.allow_on_old_platforms',
|
||||||
'dom.beforeAfterKeyboardEvent.enabled',
|
'dom.beforeAfterKeyboardEvent.enabled',
|
||||||
/* End of ESR52.x section */
|
|
||||||
|
|
||||||
/* 52 */
|
/* 52 */
|
||||||
'network.http.sendSecureXSiteReferrer',
|
'network.http.sendSecureXSiteReferrer',
|
||||||
'media.gmp-eme-adobe.enabled',
|
'media.gmp-eme-adobe.enabled',
|
@ -1,7 +1,7 @@
|
|||||||
/***
|
/***
|
||||||
This will reset the preferences that have been removed completely from the ghacks user.js.
|
This will reset the preferences that have been removed completely from the ghacks user.js.
|
||||||
|
|
||||||
Last updated: 30-Jan-2019
|
Last updated: 28-July-2020
|
||||||
|
|
||||||
For instructions see:
|
For instructions see:
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||||
@ -120,6 +120,109 @@
|
|||||||
/* 65-beta */
|
/* 65-beta */
|
||||||
'browser.contentblocking.enabled',
|
'browser.contentblocking.enabled',
|
||||||
'browser.urlbar.maxHistoricalSearchSuggestions',
|
'browser.urlbar.maxHistoricalSearchSuggestions',
|
||||||
|
/* 67-beta */
|
||||||
|
'app.update.service.enabled',
|
||||||
|
'app.update.silent',
|
||||||
|
'app.update.staging.enabled',
|
||||||
|
'browser.cache.disk.capacity',
|
||||||
|
'browser.cache.disk.smart_size.enabled',
|
||||||
|
'browser.cache.disk.smart_size.first_run',
|
||||||
|
'browser.cache.offline.insecure.enable',
|
||||||
|
'browser.safebrowsing.downloads.remote.url',
|
||||||
|
'browser.safebrowsing.provider.google.reportMalwareMistakeURL',
|
||||||
|
'browser.safebrowsing.provider.google.reportPhishMistakeURL',
|
||||||
|
'browser.safebrowsing.provider.google.reportURL',
|
||||||
|
'browser.safebrowsing.provider.google4.dataSharing.enabled',
|
||||||
|
'browser.safebrowsing.provider.google4.dataSharingURL',
|
||||||
|
'browser.safebrowsing.provider.google4.reportMalwareMistakeURL',
|
||||||
|
'browser.safebrowsing.provider.google4.reportPhishMistakeURL',
|
||||||
|
'browser.safebrowsing.provider.google4.reportURL',
|
||||||
|
'browser.safebrowsing.reportPhishURL',
|
||||||
|
'browser.sessionhistory.max_total_viewers',
|
||||||
|
'browser.urlbar.filter.javascript',
|
||||||
|
'canvas.capturestream.enabled',
|
||||||
|
'dom.imagecapture.enabled',
|
||||||
|
'dom.popup_maximum',
|
||||||
|
'gfx.offscreencanvas.enabled',
|
||||||
|
'javascript.options.shared_memory',
|
||||||
|
'media.gmp-gmpopenh264.autoupdate',
|
||||||
|
'media.gmp-gmpopenh264.enabled',
|
||||||
|
'media.gmp-manager.updateEnabled',
|
||||||
|
'media.gmp-manager.url',
|
||||||
|
'media.gmp-manager.url.override',
|
||||||
|
'media.gmp.trial-create.enabled',
|
||||||
|
'media.gmp-widevinecdm.autoupdate',
|
||||||
|
'network.cookie.leave-secure-alone',
|
||||||
|
'network.cookie.same-site.enabled',
|
||||||
|
'network.dnsCacheEntries',
|
||||||
|
'network.dnsCacheExpiration',
|
||||||
|
'network.proxy.autoconfig_url.include_path',
|
||||||
|
'pdfjs.enableWebGL',
|
||||||
|
'plugin.default.state',
|
||||||
|
'plugin.defaultXpi.state',
|
||||||
|
'plugin.scan.plid.all',
|
||||||
|
'security.data_uri.block_toplevel_data_uri_navigations',
|
||||||
|
'security.insecure_field_warning.contextual.enabled',
|
||||||
|
'security.insecure_password.ui.enabled',
|
||||||
|
'signon.autofillForms.http',
|
||||||
|
'signon.storeWhenAutocompleteOff',
|
||||||
|
'xpinstall.whitelist.required',
|
||||||
|
/* 67-beta: Blocklist, SB & TP cleanup: these were all inactive */
|
||||||
|
'browser.safebrowsing.downloads.remote.block_dangerous',
|
||||||
|
'browser.safebrowsing.downloads.remote.block_dangerous_host',
|
||||||
|
'browser.safebrowsing.blockedURIs.enabled',
|
||||||
|
'browser.safebrowsing.provider.google.gethashURL',
|
||||||
|
'browser.safebrowsing.provider.google.updateURL',
|
||||||
|
'browser.safebrowsing.provider.google4.gethashURL',
|
||||||
|
'browser.safebrowsing.provider.google4.updateURL',
|
||||||
|
'browser.safebrowsing.provider.mozilla.gethashURL',
|
||||||
|
'browser.safebrowsing.provider.mozilla.updateURL',
|
||||||
|
'browser.urlbar.userMadeSearchSuggestionsChoice',
|
||||||
|
'privacy.trackingprotection.annotate_channels',
|
||||||
|
'privacy.trackingprotection.enabled',
|
||||||
|
'privacy.trackingprotection.lower_network_priority',
|
||||||
|
'privacy.trackingprotection.pbmode.enabled',
|
||||||
|
'services.blocklist.addons.collection',
|
||||||
|
'services.blocklist.gfx.collection',
|
||||||
|
'services.blocklist.onecrl.collection',
|
||||||
|
'services.blocklist.plugins.collection',
|
||||||
|
'services.blocklist.update_enabled',
|
||||||
|
'urlclassifier.trackingTable',
|
||||||
|
/* 68-beta */
|
||||||
|
'dom.forms.datetime',
|
||||||
|
'font.blacklist.underline_offset',
|
||||||
|
'font.name.monospace.x-unicode',
|
||||||
|
'font.name.monospace.x-western',
|
||||||
|
'font.name.sans-serif.x-unicode',
|
||||||
|
'font.name.sans-serif.x-western',
|
||||||
|
'font.name.serif.x-unicode',
|
||||||
|
'font.name.serif.x-western',
|
||||||
|
'layout.css.font-loading-api.enabled',
|
||||||
|
'toolkit.telemetry.cachedClientID',
|
||||||
|
/* 69-beta */
|
||||||
|
'plugin.sessionPermissionNow.intervalInMinutes',
|
||||||
|
/* 70-beta */
|
||||||
|
'browser.cache.disk_cache_ssl',
|
||||||
|
'browser.sessionhistory.max_entries',
|
||||||
|
'dom.push.connection.enabled',
|
||||||
|
'dom.push.serverURL',
|
||||||
|
'extensions.getAddons.discovery.api_url',
|
||||||
|
'extensions.htmlaboutaddons.discover.enabled',
|
||||||
|
'extensions.webservice.discoverURL',
|
||||||
|
'intl.locale.requested',
|
||||||
|
'intl.regional_prefs.use_os_locales',
|
||||||
|
'privacy.usercontext.about_newtab_segregation.enabled',
|
||||||
|
'security.insecure_connection_icon.pbmode.enabled',
|
||||||
|
'security.insecure_connection_text.pbmode.enabled',
|
||||||
|
'webgl.dxgl.enabled',
|
||||||
|
/* 71-beta */
|
||||||
|
'media.block-autoplay-until-in-foreground',
|
||||||
|
'middlemouse.paste',
|
||||||
|
/* 75-beta */
|
||||||
|
'browser.search.geoip.url',
|
||||||
|
'browser.search.region',
|
||||||
|
/* 79-beta */
|
||||||
|
'browser.urlbar.usepreloadedtopurls.enabled',
|
||||||
/* reset parrot: check your open about:config after running the script */
|
/* reset parrot: check your open about:config after running the script */
|
||||||
'_user.js.parrot'
|
'_user.js.parrot'
|
||||||
]
|
]
|
@ -1,65 +1,11 @@
|
|||||||
|
|
||||||
/*** ghacks-user.js troubleshooter.js v1.5.2 ***/
|
/*** ghacks-user.js troubleshooter.js v1.6.1 ***/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
if("undefined" === typeof(Services)) {
|
if ("undefined" === typeof(Services)) return alert('about:config needs to be the active tab!');
|
||||||
alert("about:config needs to be the active tab!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMyList(arr) {
|
const aPREFS = [
|
||||||
let aRet = [];
|
|
||||||
let dummy = 0;
|
|
||||||
for (let i = 0, len = arr.length; i < len; i++) {
|
|
||||||
if (Services.prefs.prefHasUserValue(arr[i])) {
|
|
||||||
dummy = Services.prefs.getPrefType(arr[i]);
|
|
||||||
switch (dummy) {
|
|
||||||
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
|
|
||||||
dummy = Services.prefs.getCharPref(arr[i]);
|
|
||||||
aRet.push({'name':arr[i],'value': dummy,'type':32});
|
|
||||||
break;
|
|
||||||
case 64: // int
|
|
||||||
dummy = Services.prefs.getIntPref(arr[i]);
|
|
||||||
aRet.push({'name':arr[i],'value': dummy,'type':64});
|
|
||||||
break;
|
|
||||||
case 128: // boolean
|
|
||||||
dummy = Services.prefs.getBoolPref(arr[i]);
|
|
||||||
aRet.push({'name':arr[i],'value': dummy,'type':128});
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log("error detecting pref-type for '"+arr[i]+"' !");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return aRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
function reapply(arr) {
|
|
||||||
for (let i = 0, len = arr.length; i < len; i++) {
|
|
||||||
switch (arr[i].type) {
|
|
||||||
case 32: // string
|
|
||||||
Services.prefs.setCharPref(arr[i].name, arr[i].value);
|
|
||||||
break;
|
|
||||||
case 64: // int
|
|
||||||
Services.prefs.setIntPref(arr[i].name, arr[i].value);
|
|
||||||
break;
|
|
||||||
case 128: // boolean
|
|
||||||
Services.prefs.setBoolPref(arr[i].name, arr[i].value);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log("error re-appyling value for '"+arr[i].name+"' !"); // should never happen
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function myreset(arr) {
|
|
||||||
for (let i = 0, len = arr.length; i < len; i++) {
|
|
||||||
Services.prefs.clearUserPref(arr[i].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let ops = [
|
|
||||||
|
|
||||||
/* known culprits */
|
/* known culprits */
|
||||||
'network.cookie.cookieBehavior',
|
'network.cookie.cookieBehavior',
|
||||||
@ -160,56 +106,108 @@
|
|||||||
'last.one.without.comma'
|
'last.one.without.comma'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// any runtime-set pref that everyone will have and that can be safely reset
|
||||||
|
const oFILLER = { type: 64, name: 'app.update.lastUpdateTime.browser-cleanup-thumbnails', value: 1580000000 };
|
||||||
|
|
||||||
// reset prefs that set the same value as FFs default value
|
function getMyList(arr) {
|
||||||
let aTEMP = getMyList(ops);
|
const aRet = [];
|
||||||
myreset(aTEMP);
|
for (const sPname of arr) {
|
||||||
reapply(aTEMP);
|
if (Services.prefs.prefHasUserValue(sPname)) {
|
||||||
|
const ptype = Services.prefs.getPrefType(sPname);
|
||||||
|
switch (ptype) {
|
||||||
|
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getCharPref(sPname)});
|
||||||
|
break;
|
||||||
|
case 64: // int
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getIntPref(sPname)});
|
||||||
|
break;
|
||||||
|
case 128: // boolean
|
||||||
|
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getBoolPref(sPname)});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("error detecting pref-type for '"+sPname+"' !");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aRet;
|
||||||
|
}
|
||||||
|
|
||||||
const aBACKUP = getMyList(ops);
|
function reapply(arr) {
|
||||||
//console.log(aBACKUP.length, "user-set prefs from our list detected and their values stored.");
|
for (const oPref of arr) {
|
||||||
|
switch (oPref.type) {
|
||||||
|
case 32: // string
|
||||||
|
Services.prefs.setCharPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
case 64: // int
|
||||||
|
Services.prefs.setIntPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
case 128: // boolean
|
||||||
|
Services.prefs.setBoolPref(oPref.name, oPref.value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("error re-appyling value for '"+oPref.name+"' !"); // should never happen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let myArr = aBACKUP;
|
function myreset(arr) {
|
||||||
let found = false;
|
for (const oPref of arr) Services.prefs.clearUserPref(oPref.name);
|
||||||
let aDbg = [];
|
}
|
||||||
focus();
|
|
||||||
myreset(aBACKUP); // reset all detected prefs
|
function resetAllMatchingDefault(arr) {
|
||||||
if (confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")) {
|
const aTmp = getMyList(arr);
|
||||||
aDbg = myArr;
|
myreset(aTmp);
|
||||||
reapply(aBACKUP);
|
reapply(aTmp);
|
||||||
myreset(myArr.slice(0, parseInt(myArr.length/2)));
|
}
|
||||||
while (myArr.length >= 2) {
|
|
||||||
|
function _main(aALL) {
|
||||||
|
const _h = (arr) => Math.ceil(arr.length/2);
|
||||||
|
|
||||||
|
let aTmp = aALL, aDbg = aALL;
|
||||||
|
reapply(aALL);
|
||||||
|
myreset(aTmp.slice(0, _h(aTmp)));
|
||||||
|
while (aTmp.length) {
|
||||||
alert("NOW TEST AGAIN !");
|
alert("NOW TEST AGAIN !");
|
||||||
if (confirm("if the problem still exists click OK, otherwise click cancel.")) {
|
if (confirm("if the problem still exists click OK, otherwise click cancel.")) {
|
||||||
myArr = myArr.slice(parseInt(myArr.length/2));
|
aTmp = aTmp.slice(_h(aTmp));
|
||||||
if (myArr.length == 1) {
|
|
||||||
alert("The problem is caused by more than 1 pref !\n\nNarrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
myArr = myArr.slice(0, parseInt(myArr.length/2));
|
aTmp = aTmp.slice(0, _h(aTmp));
|
||||||
aDbg = myArr;
|
aDbg = aTmp; // update narrowed down list
|
||||||
if (myArr.length == 1) { found = true; break; }
|
if (aDbg.length == 1) break;
|
||||||
}
|
}
|
||||||
reapply(aBACKUP);
|
reapply(aALL);
|
||||||
myreset(myArr.slice(0, parseInt(myArr.length/2))); // reset half of the remaining prefs
|
myreset(aTmp.slice(0, _h(aTmp))); // reset half of the remaining prefs
|
||||||
}
|
}
|
||||||
reapply(aBACKUP);
|
reapply(aALL);
|
||||||
|
|
||||||
|
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
||||||
|
if (aDbg.length == aALL.length) {
|
||||||
|
let msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n";
|
||||||
|
msg += "Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n";
|
||||||
|
msg += "In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
|
||||||
|
if (confirm(msg)) return _main([...aALL, oFILLER]);
|
||||||
|
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
|
||||||
|
return _main(aDbg.reverse());
|
||||||
|
}
|
||||||
|
|
||||||
|
alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
||||||
|
console.log("The problem is caused by 2 or more of these prefs:");
|
||||||
|
for (const oPref of aDbg) console.log(oPref.name);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
reapply(aBACKUP);
|
|
||||||
|
resetAllMatchingDefault(aPREFS); // reset user-set prefs matching FFs default value
|
||||||
|
|
||||||
|
const aBAK = getMyList(aPREFS);
|
||||||
|
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
||||||
|
|
||||||
|
focus();
|
||||||
|
myreset(aBAK);
|
||||||
|
if (!confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")) {
|
||||||
|
reapply(aBAK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found) {
|
_main(aBAK);
|
||||||
alert("narrowed it down to:\n\n"+myArr[0].name+"\n");
|
|
||||||
myreset(myArr); // reset the culprit
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log("the problem is caused by a combination of the following prefs:");
|
|
||||||
for (let i = 0, len = aDbg.length; i < len; i++) {
|
|
||||||
console.log(aDbg[i].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
51
updater.bat
51
updater.bat
@ -3,10 +3,10 @@ TITLE ghacks user.js updater
|
|||||||
|
|
||||||
REM ## ghacks-user.js updater for Windows
|
REM ## ghacks-user.js updater for Windows
|
||||||
REM ## author: @claustromaniac
|
REM ## author: @claustromaniac
|
||||||
REM ## version: 4.6
|
REM ## version: 4.10
|
||||||
REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts
|
REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts
|
||||||
|
|
||||||
SET v=4.7
|
SET v=4.10
|
||||||
|
|
||||||
VERIFY ON
|
VERIFY ON
|
||||||
CD /D "%~dp0"
|
CD /D "%~dp0"
|
||||||
@ -22,6 +22,8 @@ IF /I "%~1"=="-multioverrides" (SET _multi=1)
|
|||||||
IF /I "%~1"=="-merge" (SET _merge=1)
|
IF /I "%~1"=="-merge" (SET _merge=1)
|
||||||
IF /I "%~1"=="-updatebatch" (SET _updateb=1)
|
IF /I "%~1"=="-updatebatch" (SET _updateb=1)
|
||||||
IF /I "%~1"=="-singlebackup" (SET _singlebackup=1)
|
IF /I "%~1"=="-singlebackup" (SET _singlebackup=1)
|
||||||
|
IF /I "%~1"=="-esr" (SET _esr=1)
|
||||||
|
IF /I "%~1"=="-rfpalts" (SET _rfpalts=1)
|
||||||
SHIFT
|
SHIFT
|
||||||
GOTO parse
|
GOTO parse
|
||||||
:endparse
|
:endparse
|
||||||
@ -82,7 +84,7 @@ ECHO:
|
|||||||
ECHO: ########################################
|
ECHO: ########################################
|
||||||
ECHO: #### user.js Updater for Windows ####
|
ECHO: #### user.js Updater for Windows ####
|
||||||
ECHO: #### by claustromaniac ####
|
ECHO: #### by claustromaniac ####
|
||||||
ECHO: #### v!v! ####
|
ECHO: #### v!v! ####
|
||||||
ECHO: ########################################
|
ECHO: ########################################
|
||||||
ECHO:
|
ECHO:
|
||||||
SET /A "_line=0"
|
SET /A "_line=0"
|
||||||
@ -131,6 +133,14 @@ CALL :message "Retrieving latest user.js file from github repository..."
|
|||||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')"
|
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')"
|
||||||
) >nul 2>&1
|
) >nul 2>&1
|
||||||
IF EXIST user.js.new (
|
IF EXIST user.js.new (
|
||||||
|
IF DEFINED _rfpalts (
|
||||||
|
CALL :message "Activating RFP Alternatives section..."
|
||||||
|
CALL :activate user.js.new "[SETUP-non-RFP]"
|
||||||
|
)
|
||||||
|
IF DEFINED _esr (
|
||||||
|
CALL :message "Activating ESR section..."
|
||||||
|
CALL :activate user.js.new ".x still uses all the following prefs"
|
||||||
|
)
|
||||||
IF DEFINED _multi (
|
IF DEFINED _multi (
|
||||||
FORFILES /P user.js-overrides /M *.js >nul 2>&1
|
FORFILES /P user.js-overrides /M *.js >nul 2>&1
|
||||||
IF NOT ERRORLEVEL 1 (
|
IF NOT ERRORLEVEL 1 (
|
||||||
@ -196,7 +206,7 @@ IF NOT DEFINED _log (
|
|||||||
)
|
)
|
||||||
EXIT /B
|
EXIT /B
|
||||||
|
|
||||||
REM ########### Message Function ###########
|
::::::::::::::: Message :::::::::::::::
|
||||||
:message
|
:message
|
||||||
SETLOCAL DisableDelayedExpansion
|
SETLOCAL DisableDelayedExpansion
|
||||||
IF NOT "2"=="%_log%" (ECHO:)
|
IF NOT "2"=="%_log%" (ECHO:)
|
||||||
@ -205,7 +215,28 @@ IF NOT "2"=="%_log%" (ECHO:)
|
|||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
REM ############ Merge function ############
|
::::::::::::::: Activate Section :::::::::::::::
|
||||||
|
:activate
|
||||||
|
:: arg1 = file
|
||||||
|
:: arg2 = line substring
|
||||||
|
SETLOCAL DisableDelayedExpansion
|
||||||
|
(
|
||||||
|
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" "%~1"') DO (
|
||||||
|
SET "_temp=%%H"
|
||||||
|
SETLOCAL EnableDelayedExpansion
|
||||||
|
IF "!_temp:%~2=!"=="!_temp!" (
|
||||||
|
ENDLOCAL & ECHO:%%H
|
||||||
|
) ELSE (
|
||||||
|
ECHO://!_temp:~2!
|
||||||
|
ENDLOCAL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)>updatertempfile
|
||||||
|
MOVE /Y updatertempfile "%~1" >nul
|
||||||
|
ENDLOCAL
|
||||||
|
GOTO :EOF
|
||||||
|
|
||||||
|
::::::::::::::: Merge :::::::::::::::
|
||||||
:merge
|
:merge
|
||||||
SETLOCAL DisableDelayedExpansion
|
SETLOCAL DisableDelayedExpansion
|
||||||
FOR /F tokens^=2^,^*^ delims^=^'^" %%G IN ('FINDSTR /R /C:"^user_pref[ ]*\([ ]*[\"'].*[\"'][ ]*,.*\)[ ]*;" "%~1"') DO (SET "[%%G]=%%H")
|
FOR /F tokens^=2^,^*^ delims^=^'^" %%G IN ('FINDSTR /R /C:"^user_pref[ ]*\([ ]*[\"'].*[\"'][ ]*,.*\)[ ]*;" "%~1"') DO (SET "[%%G]=%%H")
|
||||||
@ -244,11 +275,13 @@ MOVE /Y updatertempfile "%~1" >nul
|
|||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
REM ############### Help ##################
|
::::::::::::::: Help :::::::::::::::
|
||||||
:showhelp
|
:showhelp
|
||||||
MODE 80,46
|
MODE 80,54
|
||||||
CLS
|
CLS
|
||||||
CALL :message "Available arguments (case-insensitive):"
|
CALL :message "Available arguments (case-insensitive):"
|
||||||
|
CALL :message " -esr"
|
||||||
|
ECHO: Activate ESR related preferences
|
||||||
CALL :message " -log"
|
CALL :message " -log"
|
||||||
ECHO: Write the console output to a logfile (user.js-update-log.txt)
|
ECHO: Write the console output to a logfile (user.js-update-log.txt)
|
||||||
CALL :message " -logP"
|
CALL :message " -logP"
|
||||||
@ -272,7 +305,9 @@ ECHO: Run without user input.
|
|||||||
CALL :message " -singleBackup"
|
CALL :message " -singleBackup"
|
||||||
ECHO: Use a single backup file and overwrite it on new updates, instead of
|
ECHO: Use a single backup file and overwrite it on new updates, instead of
|
||||||
ECHO: cumulative backups. This was the default behaviour before v4.3.
|
ECHO: cumulative backups. This was the default behaviour before v4.3.
|
||||||
CALL :message " -updatebatch"
|
CALL :message " -rfpAlts"
|
||||||
|
ECHO: Activate RFP Alternatives section
|
||||||
|
CALL :message " -updateBatch"
|
||||||
ECHO: Update the script itself on execution, before the normal routine.
|
ECHO: Update the script itself on execution, before the normal routine.
|
||||||
CALL :message ""
|
CALL :message ""
|
||||||
PAUSE
|
PAUSE
|
||||||
|
156
updater.sh
156
updater.sh
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## ghacks-user.js updater for macOS and Linux
|
## ghacks-user.js updater for macOS and Linux
|
||||||
|
|
||||||
## version: 2.5
|
## version: 2.7
|
||||||
## Author: Pat Johnson (@overdodactyl)
|
## Author: Pat Johnson (@overdodactyl)
|
||||||
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
|
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
readonly CURRDIR=$(pwd)
|
readonly CURRDIR=$(pwd)
|
||||||
|
|
||||||
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||||
if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi
|
[ -z "$sfp" ] && sfp=${BASH_SOURCE[0]}
|
||||||
readonly SCRIPT_DIR=$(dirname "${sfp}")
|
readonly SCRIPT_DIR=$(dirname "${sfp}")
|
||||||
|
|
||||||
|
|
||||||
@ -42,9 +42,9 @@ ESR=false
|
|||||||
# Download method priority: curl -> wget
|
# Download method priority: curl -> wget
|
||||||
DOWNLOAD_METHOD=''
|
DOWNLOAD_METHOD=''
|
||||||
if [[ $(command -v 'curl') ]]; then
|
if [[ $(command -v 'curl') ]]; then
|
||||||
DOWNLOAD_METHOD='curl'
|
DOWNLOAD_METHOD='curl --max-redirs 3 -so'
|
||||||
elif [[ $(command -v 'wget') ]]; then
|
elif [[ $(command -v 'wget') ]]; then
|
||||||
DOWNLOAD_METHOD='wget'
|
DOWNLOAD_METHOD='wget --max-redirect 3 --quiet -O'
|
||||||
else
|
else
|
||||||
echo -e "${RED}This script requires curl or wget.\nProcess aborted${NC}"
|
echo -e "${RED}This script requires curl or wget.\nProcess aborted${NC}"
|
||||||
exit 0
|
exit 0
|
||||||
@ -52,15 +52,15 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
show_banner () {
|
show_banner () {
|
||||||
echo -e "${BBLUE}\n"
|
echo -e "${BBLUE}
|
||||||
echo ' ############################################################################'
|
############################################################################
|
||||||
echo ' #### ####'
|
#### ####
|
||||||
echo ' #### ghacks user.js ####'
|
#### ghacks user.js ####
|
||||||
echo ' #### Hardening the Privacy and Security Settings of Firefox ####'
|
#### Hardening the Privacy and Security Settings of Firefox ####
|
||||||
echo ' #### Maintained by @Thorin-Oakenpants and @earthlng ####'
|
#### Maintained by @Thorin-Oakenpants and @earthlng ####
|
||||||
echo ' #### Updater for macOS and Linux by @overdodactyl ####'
|
#### Updater for macOS and Linux by @overdodactyl ####
|
||||||
echo ' #### ####'
|
#### ####
|
||||||
echo ' ############################################################################'
|
############################################################################"
|
||||||
echo -e "${NC}\n"
|
echo -e "${NC}\n"
|
||||||
echo -e "Documentation for this script is available here: ${CYAN}https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts${NC}\n"
|
echo -e "Documentation for this script is available here: ${CYAN}https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts${NC}\n"
|
||||||
}
|
}
|
||||||
@ -70,66 +70,50 @@ show_banner () {
|
|||||||
#########################
|
#########################
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo -e "${BLUE}\nUsage: $0 [-h] [-p PROFILE] [-u] [-d] [-s] [-n] [-b] [-c] [-v] [-r] [-e] [-o OVERRIDE]\n${NC}" 1>&2 # Echo usage string to standard error
|
echo
|
||||||
echo 'Optional Arguments:'
|
echo -e "${BLUE}Usage: $0 [-bcdehlnrsuv] [-p PROFILE] [-o OVERRIDE]${NC}" 1>&2 # Echo usage string to standard error
|
||||||
echo -e "\t-h,\t\t Show this help message and exit."
|
echo -e "
|
||||||
echo -e "\t-p PROFILE,\t Path to your Firefox profile (if different than the dir of this script)"
|
Optional Arguments:
|
||||||
echo -e "\t\t\t IMPORTANT: if the path include spaces, wrap the entire argument in quotes."
|
-h Show this help message and exit.
|
||||||
echo -e "\t-l, \t\t Choose your Firefox profile from a list"
|
-p PROFILE Path to your Firefox profile (if different than the dir of this script)
|
||||||
echo -e "\t-u,\t\t Update updater.sh and execute silently. Do not seek confirmation."
|
IMPORTANT: if the path includes spaces, wrap the entire argument in quotes.
|
||||||
echo -e "\t-d,\t\t Do not look for updates to updater.sh."
|
-l Choose your Firefox profile from a list
|
||||||
echo -e "\t-s,\t\t Silently update user.js. Do not seek confirmation."
|
-u Update updater.sh and execute silently. Do not seek confirmation.
|
||||||
echo -e "\t-b,\t\t Only keep one backup of each file."
|
-d Do not look for updates to updater.sh.
|
||||||
echo -e "\t-c,\t\t Create a diff file comparing old and new user.js within userjs_diffs. "
|
-s Silently update user.js. Do not seek confirmation.
|
||||||
echo -e "\t-o OVERRIDE,\t Filename or path to overrides file (if different than user-overrides.js)."
|
-b Only keep one backup of each file.
|
||||||
echo -e "\t\t\t If used with -p, paths should be relative to PROFILE or absolute paths"
|
-c Create a diff file comparing old and new user.js within userjs_diffs.
|
||||||
echo -e "\t\t\t If given a directory, all files inside will be appended recursively."
|
-o OVERRIDE Filename or path to overrides file (if different than user-overrides.js).
|
||||||
echo -e "\t\t\t You can pass multiple files or directories by passing a comma separated list."
|
If used with -p, paths should be relative to PROFILE or absolute paths
|
||||||
echo -e "\t\t\t\t Note: If a directory is given, only files inside ending in the extension .js are appended"
|
If given a directory, all files inside will be appended recursively.
|
||||||
echo -e "\t\t\t\t IMPORTANT: do not add spaces between files/paths. Ex: -o file1.js,file2.js,dir1"
|
You can pass multiple files or directories by passing a comma separated list.
|
||||||
echo -e "\t\t\t\t IMPORTANT: if any files/paths include spaces, wrap the entire argument in quotes."
|
Note: If a directory is given, only files inside ending in the extension .js are appended
|
||||||
echo -e "\t\t\t\t\t Ex: -o \"override folder\" "
|
IMPORTANT: do not add spaces between files/paths. Ex: -o file1.js,file2.js,dir1
|
||||||
echo -e "\t-n,\t\t Do not append any overrides, even if user-overrides.js exists."
|
IMPORTANT: if any files/paths include spaces, wrap the entire argument in quotes.
|
||||||
echo -e "\t-v,\t\t Open the resulting user.js file."
|
Ex: -o \"override folder\"
|
||||||
echo -e "\t-r,\t\t Only download user.js to a temporary file and open it."
|
-n Do not append any overrides, even if user-overrides.js exists.
|
||||||
echo -e "\t-e,\t\t Activate ESR related preferences."
|
-v Open the resulting user.js file.
|
||||||
echo -e
|
-r Only download user.js to a temporary file and open it.
|
||||||
echo 'Deprecated Arguments (they still work for now):'
|
-e Activate ESR related preferences."
|
||||||
echo -e "\t-donotupdate,\t Use instead -d"
|
echo
|
||||||
echo -e "\t-update,\t Use instead -u"
|
|
||||||
echo -e
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
legacy_argument () {
|
|
||||||
echo -e "${ORANGE}\nWarning: command line arguments have changed."
|
|
||||||
echo -e "$1 has been deprecated and may not work in the future.\n"
|
|
||||||
echo -e "Please view the new options using the -h argument.${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# File Handling #
|
# File Handling #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
# Download files
|
# Download files
|
||||||
download_file () {
|
download_file () { # expects URL as argument ($1)
|
||||||
declare -r url=$1
|
|
||||||
declare -r tf=$(mktemp)
|
declare -r tf=$(mktemp)
|
||||||
local dlcmd=''
|
|
||||||
|
|
||||||
if [ $DOWNLOAD_METHOD = 'curl' ]; then
|
$DOWNLOAD_METHOD "${tf}" "$1" && echo "$tf" || echo '' # return the temp-filename or empty string on error
|
||||||
dlcmd="curl -o $tf"
|
|
||||||
else
|
|
||||||
dlcmd="wget -O $tf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
$dlcmd "${url}" &>/dev/null && echo "$tf" || echo '' # return the temp-filename (or empty string on error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open_file () { #expects one argument: file_path
|
open_file () { #expects one argument: file_path
|
||||||
if [ "$(uname)" == 'Darwin' ]; then
|
if [ "$(uname)" == 'Darwin' ]; then
|
||||||
open "$1"
|
open "$1"
|
||||||
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
elif [ "$(uname -s | cut -c -5)" == "Linux" ]; then
|
||||||
xdg-open "$1"
|
xdg-open "$1"
|
||||||
else
|
else
|
||||||
echo -e "${RED}Error: Sorry, opening files is not supported for your OS.${NC}"
|
echo -e "${RED}Error: Sorry, opening files is not supported for your OS.${NC}"
|
||||||
@ -204,23 +188,22 @@ get_updater_version () {
|
|||||||
# Update updater.sh
|
# Update updater.sh
|
||||||
# Default: Check for update, if available, ask user if they want to execute it
|
# Default: Check for update, if available, ask user if they want to execute it
|
||||||
# Args:
|
# Args:
|
||||||
# -donotupdate: New version will not be looked for and update will not occur
|
# -d: New version will not be looked for and update will not occur
|
||||||
# -update: Check for update, if available, execute without asking
|
# -u: Check for update, if available, execute without asking
|
||||||
update_updater () {
|
update_updater () {
|
||||||
if [ $UPDATE = 'no' ]; then
|
if [ $UPDATE = 'no' ]; then
|
||||||
return 0 # User signified not to check for updates
|
return 0 # User signified not to check for updates
|
||||||
fi
|
fi
|
||||||
|
|
||||||
declare -r tmpfile=$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.sh')
|
declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.sh')"
|
||||||
|
[ -z "${tmpfile}" ] && echo -e "${RED}Error! Could not download updater.sh${NC}" && return 1 # check if download failed
|
||||||
|
|
||||||
if [[ $(get_updater_version "${SCRIPT_DIR}/updater.sh") < $(get_updater_version "${tmpfile}") ]]; then
|
if [[ $(get_updater_version "${SCRIPT_DIR}/updater.sh") < $(get_updater_version "${tmpfile}") ]]; then
|
||||||
if [ $UPDATE = 'check' ]; then
|
if [ $UPDATE = 'check' ]; then
|
||||||
echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}"
|
echo -e "There is a newer version of updater.sh available. ${RED}Update and execute Y/N?${NC}"
|
||||||
read -p "" -n 1 -r
|
read -p "" -n 1 -r
|
||||||
echo -e "\n\n"
|
echo -e "\n\n"
|
||||||
if [[ $REPLY =~ ^[Nn]$ ]]; then
|
[[ $REPLY =~ ^[Nn]$ ]] && return 0 # Update available, but user chooses not to update
|
||||||
return 0 # Update available, but user chooses not to update
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
return 0 # No update available
|
return 0 # No update available
|
||||||
@ -238,11 +221,7 @@ update_updater () {
|
|||||||
|
|
||||||
# Returns version number of a user.js file
|
# Returns version number of a user.js file
|
||||||
get_userjs_version () {
|
get_userjs_version () {
|
||||||
if [ -e $1 ]; then
|
[ -e $1 ] && echo "$(sed -n '4p' "$1")" || echo "Not detected."
|
||||||
echo "$(sed -n '4p' "$1")"
|
|
||||||
else
|
|
||||||
echo "Not detected."
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add_override () {
|
add_override () {
|
||||||
@ -252,7 +231,7 @@ add_override () {
|
|||||||
cat "$input" >> user.js
|
cat "$input" >> user.js
|
||||||
echo -e "Status: ${GREEN}Override file appended:${NC} ${input}"
|
echo -e "Status: ${GREEN}Override file appended:${NC} ${input}"
|
||||||
elif [ -d "$input" ]; then
|
elif [ -d "$input" ]; then
|
||||||
FSAVEIFS=$IFS
|
SAVEIFS=$IFS
|
||||||
IFS=$'\n\b' # Set IFS
|
IFS=$'\n\b' # Set IFS
|
||||||
FILES="${input}"/*.js
|
FILES="${input}"/*.js
|
||||||
for f in $FILES
|
for f in $FILES
|
||||||
@ -271,12 +250,13 @@ remove_comments () { # expects 2 arguments: from-file and to-file
|
|||||||
|
|
||||||
# Applies latest version of user.js and any custom overrides
|
# Applies latest version of user.js and any custom overrides
|
||||||
update_userjs () {
|
update_userjs () {
|
||||||
declare -r newfile=$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js')
|
declare -r newfile="$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js')"
|
||||||
|
[ -z "${newfile}" ] && echo -e "${RED}Error! Could not download user.js${NC}" && return 1 # check if download failed
|
||||||
|
|
||||||
echo 'Please observe the following information:'
|
echo -e "Please observe the following information:
|
||||||
echo -e "\tFirefox profile: ${ORANGE}$(pwd)${NC}"
|
Firefox profile: ${ORANGE}$(pwd)${NC}
|
||||||
echo -e "\tAvailable online: ${ORANGE}$(get_userjs_version $newfile)${NC}"
|
Available online: ${ORANGE}$(get_userjs_version $newfile)${NC}
|
||||||
echo -e "\tCurrently using: ${ORANGE}$(get_userjs_version user.js)\n${NC}\n"
|
Currently using: ${ORANGE}$(get_userjs_version user.js)${NC}\n\n"
|
||||||
|
|
||||||
if [ $CONFIRM = 'yes' ]; then
|
if [ $CONFIRM = 'yes' ]; then
|
||||||
echo -e "This script will update to the latest user.js file and append any custom configurations from user-overrides.js. ${RED}Continue Y/N? ${NC}"
|
echo -e "This script will update to the latest user.js file and append any custom configurations from user-overrides.js. ${RED}Continue Y/N? ${NC}"
|
||||||
@ -298,9 +278,7 @@ update_userjs () {
|
|||||||
# backup user.js
|
# backup user.js
|
||||||
mkdir -p userjs_backups
|
mkdir -p userjs_backups
|
||||||
local bakname="userjs_backups/user.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
local bakname="userjs_backups/user.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||||
if [ $BACKUP = 'single' ]; then
|
[ $BACKUP = 'single' ] && bakname='userjs_backups/user.js.backup'
|
||||||
bakname='userjs_backups/user.js.backup'
|
|
||||||
fi
|
|
||||||
cp user.js "$bakname" &>/dev/null
|
cp user.js "$bakname" &>/dev/null
|
||||||
|
|
||||||
mv "${newfile}" user.js
|
mv "${newfile}" user.js
|
||||||
@ -313,8 +291,10 @@ update_userjs () {
|
|||||||
|
|
||||||
# apply overrides
|
# apply overrides
|
||||||
if [ "$SKIPOVERRIDE" = false ]; then
|
if [ "$SKIPOVERRIDE" = false ]; then
|
||||||
while IFS=',' read -ra FILE; do
|
while IFS=',' read -ra FILES; do
|
||||||
add_override "$FILE"
|
for FILE in "${FILES[@]}"; do
|
||||||
|
add_override "$FILE"
|
||||||
|
done
|
||||||
done <<< "$OVERRIDE"
|
done <<< "$OVERRIDE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -334,14 +314,12 @@ update_userjs () {
|
|||||||
echo -e "Status: ${GREEN}A diff file was created:${NC} ${PWD}/${diffname}"
|
echo -e "Status: ${GREEN}A diff file was created:${NC} ${PWD}/${diffname}"
|
||||||
else
|
else
|
||||||
echo -e "Warning: ${ORANGE}Your new user.js file appears to be identical. No diff file was created.${NC}"
|
echo -e "Warning: ${ORANGE}Your new user.js file appears to be identical. No diff file was created.${NC}"
|
||||||
if [ $BACKUP = 'multiple' ]; then
|
[ $BACKUP = 'multiple' ] && rm $bakname &>/dev/null
|
||||||
rm $bakname &>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
rm $past_nocomments $current_nocomments $pastuserjs &>/dev/null
|
rm $past_nocomments $current_nocomments $pastuserjs &>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VIEW" = true ]; then open_file "${PWD}/user.js"; fi
|
[ "$VIEW" = true ] && open_file "${PWD}/user.js"
|
||||||
}
|
}
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
@ -349,16 +327,9 @@ update_userjs () {
|
|||||||
#########################
|
#########################
|
||||||
|
|
||||||
if [ $# != 0 ]; then
|
if [ $# != 0 ]; then
|
||||||
readonly legacy_lc=$(echo $1 | tr '[A-Z]' '[a-z]')
|
|
||||||
# Display usage if first argument is -help or --help
|
# Display usage if first argument is -help or --help
|
||||||
if [ $1 = '--help' ] || [ $1 = '-help' ]; then
|
if [ $1 = '--help' ] || [ $1 = '-help' ]; then
|
||||||
usage
|
usage
|
||||||
elif [ $legacy_lc = '-donotupdate' ]; then
|
|
||||||
UPDATE='no'
|
|
||||||
legacy_argument $1
|
|
||||||
elif [ $legacy_lc = '-update' ]; then
|
|
||||||
UPDATE='yes'
|
|
||||||
legacy_argument $1
|
|
||||||
else
|
else
|
||||||
while getopts ":hp:ludsno:bcvre" opt; do
|
while getopts ":hp:ludsno:bcvre" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
@ -399,7 +370,8 @@ if [ $# != 0 ]; then
|
|||||||
ESR=true
|
ESR=true
|
||||||
;;
|
;;
|
||||||
r)
|
r)
|
||||||
tfile=$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js')
|
tfile="$(download_file 'https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js')"
|
||||||
|
[ -z "${tfile}" ] && echo -e "${RED}Error! Could not download user.js${NC}" && exit 1 # check if download failed
|
||||||
mv $tfile "${tfile}.js"
|
mv $tfile "${tfile}.js"
|
||||||
echo -e "${ORANGE}Warning: user.js was saved to temporary file ${tfile}.js${NC}"
|
echo -e "${ORANGE}Warning: user.js was saved to temporary file ${tfile}.js${NC}"
|
||||||
open_file "${tfile}.js"
|
open_file "${tfile}.js"
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 46 KiB |
Binary file not shown.
Before Width: | Height: | Size: 85 KiB |
Binary file not shown.
Before Width: | Height: | Size: 95 KiB |
Reference in New Issue
Block a user