mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 17:38:30 +02:00
Compare commits
216 Commits
58.0
...
v62.0-beta
Author | SHA1 | Date | |
---|---|---|---|
6717bc0674 | |||
11a94c7e32 | |||
b7c0e816a0 | |||
8b5547a973 | |||
f0c29cf8a6 | |||
e7a71143a8 | |||
9e342deaf2 | |||
109d4cf916 | |||
c805dd8b3b | |||
a89e8fc1e0 | |||
f2065a463c | |||
299489c701 | |||
50a578c32a | |||
7d417da5fd | |||
e6a13e5a93 | |||
9a46fafb53 | |||
6fb2f25e65 | |||
9e67f982ab | |||
5b6ed92da4 | |||
2969c6660f | |||
776e32c27f | |||
9e1c368cd9 | |||
572d16d5a5 | |||
29e2461cd1 | |||
f39112f914 | |||
0145ccfec3 | |||
c2c8e6227c | |||
ab404680df | |||
cfa2da8fea | |||
b3b3ae4660 | |||
c4d131aaf9 | |||
9c975b318a | |||
a1638868ea | |||
3806ccc68c | |||
06b69bb95a | |||
d8bfdaa058 | |||
03efb99754 | |||
b390d9787b | |||
2e908f38d2 | |||
f973422581 | |||
5bcbe56f4b | |||
833f816b99 | |||
5ccea3262f | |||
9611eac1cf | |||
43119694fb | |||
cbea3adc7e | |||
4813aa549b | |||
96706cf11e | |||
a81d013e45 | |||
857cbd8c24 | |||
c9543519c7 | |||
d34894e965 | |||
70abeda9d4 | |||
dceef9d1db | |||
9386fb5581 | |||
56acb4cff5 | |||
1eac4185d2 | |||
05021ac62e | |||
a2b5e1e7cf | |||
d9a1c83300 | |||
a4a9b9a675 | |||
c61e633236 | |||
8783ae9ce8 | |||
3264fbd9c3 | |||
b8b3a4f7ed | |||
7f1f9e124b | |||
9b1cf28e89 | |||
acc5a1c2df | |||
9a4032f4cd | |||
f113cf84c3 | |||
c92ece7960 | |||
3e5667fb34 | |||
2bf238f384 | |||
3edf7af85e | |||
4b8b2d81a0 | |||
fde8035332 | |||
01bd2a4f6d | |||
6d4b49d061 | |||
8e60f412e4 | |||
f60a87f97f | |||
449e32a8ca | |||
35a9d3d1e1 | |||
c66d1b08e7 | |||
0a63b6545d | |||
a8051b88e4 | |||
87ce12925d | |||
d6a7531c67 | |||
3a77e18ae8 | |||
a635ae5dfb | |||
02bac31e6a | |||
e5d23f6b40 | |||
5fc48a1027 | |||
de7a8650f7 | |||
9c7170fc26 | |||
9406f32194 | |||
33759ab604 | |||
f97c9a05a9 | |||
94abd71787 | |||
45f1dfa912 | |||
d6280d2d7a | |||
67360332ab | |||
b880c9da61 | |||
1b0c9f66d9 | |||
7eda26a1d0 | |||
b89e247263 | |||
35fd4e343c | |||
47cf0e1640 | |||
5e7258ba2d | |||
6e6a993494 | |||
772fa4e06e | |||
78dc31f6d6 | |||
459396ed5b | |||
88b08c79cd | |||
cf269c982b | |||
36c11cb5d4 | |||
517b8665c0 | |||
149aab6b1e | |||
c5a1a038d2 | |||
cd322f39a4 | |||
8f2b674910 | |||
7d65d8c173 | |||
8b6eec2b46 | |||
13164a2d0d | |||
c4a1583e99 | |||
d10c8598f7 | |||
40db113d07 | |||
041e14a4d5 | |||
e67fdc2ce4 | |||
75534b4e6c | |||
94c0665343 | |||
71adc43d17 | |||
94f86465e6 | |||
bb4bf835b0 | |||
b4f1b4dbbf | |||
f90c17f748 | |||
fdac8fba6a | |||
d055560f6f | |||
27f87240ec | |||
17d83c1a1a | |||
8fa3a9db6b | |||
b0fb59f735 | |||
64d08dd6bc | |||
824dec4f9e | |||
3d2b0703be | |||
e25137ce94 | |||
6ee25c2bf5 | |||
6309822d33 | |||
d04ff8457e | |||
c6e3c013e0 | |||
e373a0f6e1 | |||
acce871308 | |||
61e706641e | |||
1e5e2ca418 | |||
c62bff5c70 | |||
3bae3ed5ba | |||
aa91ea1680 | |||
d244198438 | |||
871e7ed87b | |||
48901d156a | |||
8b4e6c95aa | |||
fd1aa74ff3 | |||
b3e92ab7cc | |||
30fbaba4df | |||
72e1858926 | |||
3ad6ed465e | |||
3fcad90996 | |||
383b8ca943 | |||
6a98aa7ba0 | |||
2037449fbd | |||
e18bd0f32c | |||
715fff06cf | |||
3675a68009 | |||
062dd6c023 | |||
bc17b4e450 | |||
682e12fe57 | |||
6cb27ca78c | |||
c38ae56232 | |||
04f1449003 | |||
53a69ff5bc | |||
e8c02278eb | |||
457611f079 | |||
09aca71822 | |||
f90193ab76 | |||
ffced9b4c0 | |||
0b3395b520 | |||
d4a20165ef | |||
089f0826cf | |||
b83d53e681 | |||
14456b5a29 | |||
517e40703f | |||
7f7282a975 | |||
6fd415eab2 | |||
d4083e6a3e | |||
3192027f52 | |||
2a402310cc | |||
1469e13df8 | |||
92585ecd93 | |||
205d64ab29 | |||
3812aed9e9 | |||
a83f5a0f5f | |||
19c40eeb18 | |||
61d2b46a02 | |||
b93c7e026c | |||
ec687cad75 | |||
6b691ae7e3 | |||
40da3653d3 | |||
77a5894fa0 | |||
11bcf46063 | |||
2dd2f5febe | |||
2de13258ff | |||
40391a26a2 | |||
50186412e4 | |||
9892c3cbb7 | |||
887e93a4f2 | |||
7f1a82365c | |||
8996071cd0 |
17
.gitattributes
vendored
17
.gitattributes
vendored
@ -1,14 +1,15 @@
|
|||||||
## * text=auto
|
* text=auto
|
||||||
|
|
||||||
*.js text=auto
|
*.js text
|
||||||
*.md text=auto
|
*.md text
|
||||||
*.yml text=auto
|
*.yml text
|
||||||
*.txt text=auto
|
*.txt text
|
||||||
*.sh text=auto
|
*.sh text
|
||||||
*.bat eol=crlf
|
## *.bat text eol=crlf
|
||||||
|
*.bat -text
|
||||||
|
|
||||||
*.png binary
|
*.png binary
|
||||||
|
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
*.yml export-ignore
|
*.yml export-ignore
|
||||||
wikipiki export-ignore
|
/wikipiki export-ignore
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF & SETLOCAL DisableDelayedExpansion
|
||||||
TITLE prefs.js cleaner
|
TITLE prefs.js cleaner
|
||||||
|
|
||||||
REM ### prefs.js cleaner for Windows
|
REM ### prefs.js cleaner for Windows
|
||||||
REM ## author: @claustromaniac
|
REM ## author: @claustromaniac
|
||||||
REM ## version: 1.2
|
REM ## version: 2.2
|
||||||
|
|
||||||
|
CD /D "%~dp0"
|
||||||
|
|
||||||
SETLOCAL EnableDelayedExpansion
|
|
||||||
:begin
|
:begin
|
||||||
ECHO:
|
ECHO:
|
||||||
ECHO:
|
ECHO:
|
||||||
ECHO ########################################
|
ECHO ########################################
|
||||||
ECHO #### prefs.js cleaner for Windows ####
|
ECHO #### prefs.js cleaner for Windows ####
|
||||||
ECHO #### by claustromaniac ####
|
ECHO #### by claustromaniac ####
|
||||||
ECHO #### v1.2 ####
|
ECHO #### v2.2 ####
|
||||||
ECHO ########################################
|
ECHO ########################################
|
||||||
ECHO:
|
ECHO:
|
||||||
CALL :message "This script should be run from your Firefox profile directory."
|
CALL :message "This script should be run from your Firefox profile directory."
|
||||||
@ -29,12 +30,13 @@ IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory.
|
|||||||
IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30)
|
IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30)
|
||||||
CALL :FFcheck
|
CALL :FFcheck
|
||||||
CALL :message "Backing up prefs.js..."
|
CALL :message "Backing up prefs.js..."
|
||||||
COPY /B /V /Y prefs.js "prefs-backup-!date:/=-!_!time::=.!.js"
|
SET "_time=%time: =0%"
|
||||||
|
COPY /B /V /Y prefs.js "prefs-backup-%date:/=-%_%_time::=.%.js"
|
||||||
CALL :message "Cleaning prefs.js..."
|
CALL :message "Cleaning prefs.js..."
|
||||||
CALL :cleanup
|
CALL :cleanup
|
||||||
CLS
|
CALL :message "All done!"
|
||||||
CALL :message "All done^!"
|
|
||||||
TIMEOUT 5 >nul
|
TIMEOUT 5 >nul
|
||||||
|
ENDLOCAL
|
||||||
EXIT /B
|
EXIT /B
|
||||||
|
|
||||||
REM ########## Abort Function ###########
|
REM ########## Abort Function ###########
|
||||||
@ -44,11 +46,9 @@ TIMEOUT %~2 >nul
|
|||||||
EXIT
|
EXIT
|
||||||
REM ########## Message Function #########
|
REM ########## Message Function #########
|
||||||
:message
|
:message
|
||||||
SETLOCAL DisableDelayedExpansion
|
|
||||||
ECHO:
|
ECHO:
|
||||||
ECHO: %~1
|
ECHO: %~1
|
||||||
ECHO:
|
ECHO:
|
||||||
ENDLOCAL
|
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
REM ####### Firefox Check Function ######
|
REM ####### Firefox Check Function ######
|
||||||
:FFcheck
|
:FFcheck
|
||||||
@ -57,7 +57,7 @@ IF NOT ERRORLEVEL 1 (
|
|||||||
CLS
|
CLS
|
||||||
CALL :message "Firefox is still running."
|
CALL :message "Firefox is still running."
|
||||||
ECHO If you're not currently using this profile you can continue, otherwise
|
ECHO If you're not currently using this profile you can continue, otherwise
|
||||||
CALL :message "close Firefox first^!"
|
CALL :message "close Firefox first!"
|
||||||
ECHO:
|
ECHO:
|
||||||
PAUSE
|
PAUSE
|
||||||
CLS
|
CLS
|
||||||
@ -67,23 +67,20 @@ IF NOT ERRORLEVEL 1 (
|
|||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
REM ######### Cleanup Function ##########
|
REM ######### Cleanup Function ##########
|
||||||
:cleanup
|
:cleanup
|
||||||
SETLOCAL DisableDelayedExpansion
|
FOR /F tokens^=2^ delims^=^'^" %%G IN ('FINDSTR /R /C:"^[^\"']*user_pref[ ]*\([ ]*[\"'][^\"']*[\"'][ ]*," user.js') DO (
|
||||||
|
IF NOT ""=="%%G" (SET "[%%G]=1")
|
||||||
|
)
|
||||||
(
|
(
|
||||||
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" prefs.js') DO (
|
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" prefs.js') DO (
|
||||||
SET "_line=%%H"
|
IF ""=="%%H" (
|
||||||
SETLOCAL EnableDelayedExpansion
|
ECHO:
|
||||||
IF /I "user_pref"=="!_line:~0,9!" (
|
|
||||||
FOR /F tokens^=2^ delims^=^" %%I IN ("!_line:.=\.!") DO (
|
|
||||||
FINDSTR /R /C:"user_pref[ ]*\([ ]*[\"']%%I[\"'][ ]*," user.js >nul
|
|
||||||
IF ERRORLEVEL 1 (ECHO:!_line!)
|
|
||||||
)
|
|
||||||
) ELSE (
|
) ELSE (
|
||||||
ECHO:!_line!
|
FOR /F tokens^=1^,2^ delims^=^"^' %%I IN ("%%H") DO (
|
||||||
|
IF NOT DEFINED [%%J] (ECHO:%%H)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
ENDLOCAL
|
|
||||||
)
|
)
|
||||||
)>tempcleanedprefs
|
)>tempcleanedprefs
|
||||||
ENDLOCAL
|
|
||||||
MOVE /Y tempcleanedprefs prefs.js
|
MOVE /Y tempcleanedprefs prefs.js
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
REM ############### Help ##################
|
REM ############### Help ##################
|
||||||
|
99
prefsCleaner.sh
Normal file
99
prefsCleaner.sh
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## prefs.js cleaner for Linux/Mac
|
||||||
|
## author: @claustromaniac
|
||||||
|
## version: 1.1
|
||||||
|
|
||||||
|
## special thanks to @overdodactyl and @earthlng for a few snippets that I stol..*cough* borrowed from the updater.sh
|
||||||
|
|
||||||
|
currdir=$(pwd)
|
||||||
|
|
||||||
|
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
|
||||||
|
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||||
|
|
||||||
|
## fallback for Macs without coreutils
|
||||||
|
if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi
|
||||||
|
|
||||||
|
## change directory to the Firefox profile directory
|
||||||
|
cd "$(dirname "${sfp}")"
|
||||||
|
|
||||||
|
fQuit() {
|
||||||
|
## change directory back to the original working directory
|
||||||
|
cd "${currdir}"
|
||||||
|
echo -e "\n$2"
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
fFF_check() {
|
||||||
|
# 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
|
||||||
|
while [ -e webappsstore.sqlite-shm ]; do
|
||||||
|
echo -e "\nThis Firefox profile seems to be in use. Close Firefox and try again.\n"
|
||||||
|
read -p "Press any key to continue."
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
fClean() {
|
||||||
|
# the magic happens here
|
||||||
|
prefs="@@"
|
||||||
|
prefexp="user_pref[ ]*\([ ]*[\"']([^\"']+)[\"'][ ]*,"
|
||||||
|
while read -r line; do
|
||||||
|
if [[ "$line" =~ $prefexp && $prefs != *"@@${BASH_REMATCH[1]}@@"* ]]; then
|
||||||
|
prefs="${prefs}${BASH_REMATCH[1]}@@"
|
||||||
|
fi
|
||||||
|
done <<< "`grep -E \"$prefexp\" user.js`"
|
||||||
|
|
||||||
|
while IFS='' read -r line || [[ -n "$line" ]]; do
|
||||||
|
if [[ "$line" =~ ^$prefexp ]]; then
|
||||||
|
if [[ $prefs != *"@@${BASH_REMATCH[1]}@@"* ]]; then
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
done < "$1" > prefs.js
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "\n\n"
|
||||||
|
echo " ╔══════════════════════════╗"
|
||||||
|
echo " ║ prefs.js cleaner ║"
|
||||||
|
echo " ║ by claustromaniac ║"
|
||||||
|
echo " ║ v1.1 ║"
|
||||||
|
echo " ╚══════════════════════════╝"
|
||||||
|
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 "This will allow inactive preferences to be reset to their default values."
|
||||||
|
echo -e "\nThis Firefox profile shouldn't be in use during the process.\n"
|
||||||
|
select option in Start Help Exit; do
|
||||||
|
case $option in
|
||||||
|
Start)
|
||||||
|
if [ ! -e user.js ]; then
|
||||||
|
fQuit 1 "user.js not found in the current directory."
|
||||||
|
elif [ ! -e prefs.js ]; then
|
||||||
|
fQuit 1 "prefs.js not found in the current directory."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fFF_check
|
||||||
|
bakfile="prefs.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||||
|
mv prefs.js "${bakfile}" || fQuit 1 "Operation aborted.\nReason: Could not create backup file $bakfile"
|
||||||
|
echo -e "\nprefs.js backed up: $bakfile"
|
||||||
|
echo "Cleaning prefs.js..."
|
||||||
|
fClean "$bakfile"
|
||||||
|
fQuit 0 "All done!"
|
||||||
|
;;
|
||||||
|
Help)
|
||||||
|
echo -e "\nThis script creates a backup of your prefs.js file before doing anything."
|
||||||
|
echo -e "It should be safe, but you can follow these steps if something goes wrong:\n"
|
||||||
|
echo "1. Make sure Firefox is closed."
|
||||||
|
echo "2. Delete prefs.js in your profile folder."
|
||||||
|
echo "3. Delete Invalidprefs.js if you have one in the same folder."
|
||||||
|
echo "4. Rename or copy your latest backup to prefs.js."
|
||||||
|
echo "5. Run Firefox and see if you notice anything wrong with it."
|
||||||
|
echo "6. If you do notice something wrong, especially with your extensions, and/or with the UI, go to about:support, and restart Firefox with add-ons disabled. Then, restart it again normally, and see if the problems were solved."
|
||||||
|
echo -e "If you are able to identify the cause of your issues, please bring it up on ghacks-user.js GitHub repository.\n"
|
||||||
|
;;
|
||||||
|
Exit)
|
||||||
|
fQuit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
@ -1,61 +0,0 @@
|
|||||||
/***
|
|
||||||
|
|
||||||
For instructions see:
|
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
|
||||||
|
|
||||||
***/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
let ops = [
|
|
||||||
/* --- 57-alpha --- */
|
|
||||||
/* commented out */
|
|
||||||
'browser.storageManager.enabled',
|
|
||||||
'dom.storageManager.enabled',
|
|
||||||
/* removed from the user.js */
|
|
||||||
'browser.search.geoip.timeout',
|
|
||||||
'geo.wifi.xhr.timeout',
|
|
||||||
'gfx.layerscope.enabled',
|
|
||||||
'media.webspeech.recognition.enable',
|
|
||||||
/* moved to RFP ALTERNATIVES */
|
|
||||||
'dom.w3c_touch_events.enabled',
|
|
||||||
'media.video_stats.enabled',
|
|
||||||
/* moved to DEPRECATED/REMOVED */
|
|
||||||
'browser.bookmarks.showRecentlyBookmarked',
|
|
||||||
'browser.casting.enabled',
|
|
||||||
'devtools.webide.autoinstallFxdtAdapters',
|
|
||||||
'media.eme.chromium-api.enabled',
|
|
||||||
'social.directories',
|
|
||||||
'social.enabled',
|
|
||||||
'social.remote-install.enabled',
|
|
||||||
'social.share.activationPanelEnabled',
|
|
||||||
'social.shareDirectory',
|
|
||||||
'social.toast-notifications.enabled',
|
|
||||||
'social.whitelist',
|
|
||||||
/* reset parrot: check your open about:config after running the script */
|
|
||||||
'_user.js.parrot'
|
|
||||||
]
|
|
||||||
|
|
||||||
if("undefined" === typeof(Services)) {
|
|
||||||
alert("about:config needs to be the active tab!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let c = 0;
|
|
||||||
for (let i = 0, len = ops.length; i < len; i++) {
|
|
||||||
if (Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
Services.prefs.clearUserPref(ops[i]);
|
|
||||||
if (!Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
console.log("reset", ops[i]);
|
|
||||||
c++;
|
|
||||||
} else { console.log("failed to reset", ops[i]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
focus();
|
|
||||||
|
|
||||||
let d = (c==1) ? " pref" : " prefs";
|
|
||||||
if (c > 0) {
|
|
||||||
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
|
|
||||||
} else { alert("nothing to reset"); }
|
|
||||||
|
|
||||||
})();
|
|
@ -1,12 +1,10 @@
|
|||||||
/***
|
/***
|
||||||
|
|
||||||
This will reset the preferences that are under sections 4600 & 4700 in the ghacks user.js
|
This will reset the preferences that are under sections 4600 & 4700 in the ghacks user.js
|
||||||
up to and including release 57-alpha. These are the prefs that are no longer necessary,
|
up to and including release 60-beta. These are the prefs that are no longer necessary,
|
||||||
or they conlfict with, privacy.resistFingerprinting if you have that enabled.
|
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]
|
||||||
|
|
||||||
***/
|
***/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
@ -20,9 +18,10 @@
|
|||||||
'dom.gamepad.enabled',
|
'dom.gamepad.enabled',
|
||||||
'dom.netinfo.enabled',
|
'dom.netinfo.enabled',
|
||||||
'media.webspeech.synth.enabled',
|
'media.webspeech.synth.enabled',
|
||||||
'geo.enabled',
|
|
||||||
'media.video_stats.enabled',
|
'media.video_stats.enabled',
|
||||||
'dom.w3c_touch_events.enabled',
|
'dom.w3c_touch_events.enabled',
|
||||||
|
'media.ondevicechange.enabled',
|
||||||
|
'webgl.enable-debug-renderer-info',
|
||||||
/* section 4700 */
|
/* section 4700 */
|
||||||
'general.useragent.override',
|
'general.useragent.override',
|
||||||
'general.buildID.override',
|
'general.buildID.override',
|
@ -1,21 +1,42 @@
|
|||||||
/***
|
/***
|
||||||
|
|
||||||
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 57-alpha
|
and used in the ghacks user.js up to and including release 60-beta
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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]
|
||||||
|
|
||||||
***/
|
***/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
let ops = [
|
let ops = [
|
||||||
/* deprecated */
|
/* deprecated */
|
||||||
|
|
||||||
/* ESR52.x users can remove sections 53-57 but it is not
|
/* ESR52.x users can remove sections 53-60 but it is not
|
||||||
crucial as your user.js will reinstate them */
|
crucial as your user.js will reinstate them */
|
||||||
|
/* 60 */
|
||||||
|
'browser.newtabpage.directory.source',
|
||||||
|
'browser.newtabpage.enhanced',
|
||||||
|
'browser.newtabpage.introShown',
|
||||||
|
'extensions.shield-recipe-client.enabled',
|
||||||
|
'extensions.shield-recipe-client.api_url',
|
||||||
|
'browser.newtabpage.activity-stream.enabled',
|
||||||
|
'dom.workers.enabled',
|
||||||
|
'view_source.tab',
|
||||||
|
/* 59 */
|
||||||
|
'intl.locale.matchOS',
|
||||||
|
'general.useragent.locale',
|
||||||
|
'datareporting.healthreport.about.reportUrl',
|
||||||
|
'dom.flyweb.enabled',
|
||||||
|
'security.mixed_content.use_hsts',
|
||||||
|
'security.mixed_content.send_hsts_priming',
|
||||||
|
'network.http.referer.userControlPolicy',
|
||||||
|
'security.xpconnect.plugin.unrestricted',
|
||||||
|
'media.getusermedia.screensharing.allowed_domains',
|
||||||
|
'camera.control.face_detection.enabled',
|
||||||
|
'dom.disable_window_status_change',
|
||||||
|
'dom.idle-observers-api.enabled',
|
||||||
|
/* 58 : nothing */
|
||||||
/* 57 */
|
/* 57 */
|
||||||
'social.whitelist',
|
'social.whitelist',
|
||||||
'social.toast-notifications.enabled',
|
'social.toast-notifications.enabled',
|
132
scratchpad-scripts/ghacks-clear-[removed].js
Normal file
132
scratchpad-scripts/ghacks-clear-[removed].js
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
/***
|
||||||
|
This will reset the preferences that have been removed completely from the ghacks user.js.
|
||||||
|
|
||||||
|
Last updated: 08-Sept-2018
|
||||||
|
|
||||||
|
For instructions see:
|
||||||
|
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||||
|
***/
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
let ops = [
|
||||||
|
/* removed in ghacks user.js v52-57 */
|
||||||
|
/* 52-alpha */
|
||||||
|
'browser.search.reset.enabled',
|
||||||
|
'browser.search.reset.whitelist',
|
||||||
|
/* 54-alpha */
|
||||||
|
'browser.migrate.automigrate.enabled',
|
||||||
|
'services.sync.enabled',
|
||||||
|
'webextensions.storage.sync.enabled',
|
||||||
|
'webextensions.storage.sync.serverURL',
|
||||||
|
/* 55-alpha */
|
||||||
|
'dom.keyboardevent.dispatch_during_composition', // default is false anyway
|
||||||
|
'dom.vr.oculus.enabled', // covered by dom.vr.enabled
|
||||||
|
'dom.vr.openvr.enabled', // ditto
|
||||||
|
'dom.vr.osvr.enabled', // ditto
|
||||||
|
'extensions.pocket.api', // covered by extensions.pocket.enabled
|
||||||
|
'extensions.pocket.oAuthConsumerKey', // ditto
|
||||||
|
'extensions.pocket.site', // ditto
|
||||||
|
/* 56-alpha: none */
|
||||||
|
/* 57-alpha */
|
||||||
|
'geo.wifi.xhr.timeout', // covered by geo.enabled
|
||||||
|
'browser.search.geoip.timeout', // ditto
|
||||||
|
'media.webspeech.recognition.enable', // default is false anyway
|
||||||
|
'gfx.layerscope.enabled', // default is false anyway
|
||||||
|
/* 58-alpha */
|
||||||
|
// excluding these e10 settings
|
||||||
|
// 'browser.tabs.remote.autostart',
|
||||||
|
// 'browser.tabs.remote.autostart.2',
|
||||||
|
// 'browser.tabs.remote.force-enable',
|
||||||
|
// 'browser.tabs.remote.separateFileUriProcess',
|
||||||
|
// 'extensions.e10sBlocksEnabling',
|
||||||
|
// 'extensions.webextensions.remote',
|
||||||
|
// 'dom.ipc.processCount',
|
||||||
|
// 'dom.ipc.shims.enabledWarnings',
|
||||||
|
// 'dom.ipc.processCount.extension',
|
||||||
|
// 'dom.ipc.processCount.file',
|
||||||
|
// 'security.sandbox.content.level',
|
||||||
|
// 'dom.ipc.plugins.sandbox-level.default',
|
||||||
|
// 'dom.ipc.plugins.sandbox-level.flash',
|
||||||
|
// 'security.sandbox.logging.enabled',
|
||||||
|
'dom.presentation.controller.enabled',
|
||||||
|
'dom.presentation.discoverable',
|
||||||
|
'dom.presentation.discovery.enabled',
|
||||||
|
'dom.presentation.enabled',
|
||||||
|
'dom.presentation.receiver.enabled',
|
||||||
|
'dom.presentation.session_transport.data_channel.enable',
|
||||||
|
/* 59-alpha */
|
||||||
|
'browser.stopReloadAnimation.enabled',
|
||||||
|
'browser.tabs.insertRelatedAfterCurrent',
|
||||||
|
'browser.tabs.loadDivertedInBackground',
|
||||||
|
'browser.tabs.loadInBackground',
|
||||||
|
'browser.tabs.selectOwnerOnClose',
|
||||||
|
'browser.urlbar.clickSelectsAll',
|
||||||
|
'browser.urlbar.doubleClickSelectsAll',
|
||||||
|
'media.flac.enabled',
|
||||||
|
'media.mediasource.enabled',
|
||||||
|
'media.mediasource.mp4.enabled',
|
||||||
|
'media.mediasource.webm.audio.enabled',
|
||||||
|
'media.mediasource.webm.enabled',
|
||||||
|
'media.mp4.enabled',
|
||||||
|
'media.ogg.enabled',
|
||||||
|
'media.ogg.flac.enabled',
|
||||||
|
'media.opus.enabled',
|
||||||
|
'media.raw.enabled',
|
||||||
|
'media.wave.enabled',
|
||||||
|
'media.webm.enabled',
|
||||||
|
'media.wmf.amd.vp9.enabled',
|
||||||
|
'media.wmf.enabled',
|
||||||
|
'media.wmf.vp9.enabled',
|
||||||
|
'ui.submenuDelay',
|
||||||
|
/* 60-beta - these were all at default anyway */
|
||||||
|
'device.storage.enabled',
|
||||||
|
'general.useragent.compatMode.firefox',
|
||||||
|
'network.dns.blockDotOnion',
|
||||||
|
'network.stricttransportsecurity.preloadlist',
|
||||||
|
'security.block_script_with_wrong_mime',
|
||||||
|
'security.fileuri.strict_origin_policy',
|
||||||
|
'security.sri.enable',
|
||||||
|
/* 61-beta */
|
||||||
|
'browser.laterrun.enabled',
|
||||||
|
'browser.offline-apps.notify',
|
||||||
|
'browser.rights.3.shown',
|
||||||
|
'browser.slowStartup.maxSamples',
|
||||||
|
'browser.slowStartup.notificationDisabled',
|
||||||
|
'browser.slowStartup.samples',
|
||||||
|
'browser.storageManager.enabled',
|
||||||
|
'dom.allow_scripts_to_close_windows',
|
||||||
|
'dom.disable_window_flip',
|
||||||
|
'network.http.fast-fallback-to-IPv4',
|
||||||
|
'offline-apps.quota.warn',
|
||||||
|
'services.blocklist.signing.enforced',
|
||||||
|
/* 62-beta */
|
||||||
|
'browser.urlbar.autoFill.typed',
|
||||||
|
'security.tls.version.fallback-limit',
|
||||||
|
/* reset parrot: check your open about:config after running the script */
|
||||||
|
'_user.js.parrot'
|
||||||
|
]
|
||||||
|
|
||||||
|
if("undefined" === typeof(Services)) {
|
||||||
|
alert("about:config needs to be the active tab!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let c = 0;
|
||||||
|
for (let i = 0, len = ops.length; i < len; i++) {
|
||||||
|
if (Services.prefs.prefHasUserValue(ops[i])) {
|
||||||
|
Services.prefs.clearUserPref(ops[i]);
|
||||||
|
if (!Services.prefs.prefHasUserValue(ops[i])) {
|
||||||
|
console.log("reset", ops[i]);
|
||||||
|
c++;
|
||||||
|
} else { console.log("failed to reset", ops[i]); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
focus();
|
||||||
|
|
||||||
|
let d = (c==1) ? " pref" : " prefs";
|
||||||
|
if (c > 0) {
|
||||||
|
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
|
||||||
|
} else { alert("nothing to reset"); }
|
||||||
|
|
||||||
|
})();
|
@ -1,63 +0,0 @@
|
|||||||
/***
|
|
||||||
|
|
||||||
This will reset the preferences that have been removed completely
|
|
||||||
from the ghacks user.js up to and including release 57-alpha
|
|
||||||
|
|
||||||
For instructions see:
|
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
|
||||||
|
|
||||||
***/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
let ops = [
|
|
||||||
/* removed in ghacks user.js v52-57 */
|
|
||||||
/* 52-alpha */
|
|
||||||
'browser.search.reset.enabled',
|
|
||||||
'browser.search.reset.whitelist',
|
|
||||||
/* 54-alpha */
|
|
||||||
'browser.migrate.automigrate.enabled',
|
|
||||||
'services.sync.enabled',
|
|
||||||
'webextensions.storage.sync.enabled',
|
|
||||||
'webextensions.storage.sync.serverURL',
|
|
||||||
/* 55-alpha */
|
|
||||||
'dom.keyboardevent.dispatch_during_composition', // default is false anyway
|
|
||||||
'dom.vr.oculus.enabled', // covered by dom.vr.enabled
|
|
||||||
'dom.vr.openvr.enabled', // ditto
|
|
||||||
'dom.vr.osvr.enabled', // ditto
|
|
||||||
'extensions.pocket.api', // covered by extensions.pocket.enabled
|
|
||||||
'extensions.pocket.oAuthConsumerKey', // ditto
|
|
||||||
'extensions.pocket.site', // ditto
|
|
||||||
/* 56-alpha: none */
|
|
||||||
/* 57-alpha */
|
|
||||||
'geo.wifi.xhr.timeout', // covered by geo.enabled
|
|
||||||
'browser.search.geoip.timeout', // ditto
|
|
||||||
'media.webspeech.recognition.enable', // default is false anyway
|
|
||||||
'gfx.layerscope.enabled', // default is false anyway
|
|
||||||
/* reset parrot: check your open about:config after running the script */
|
|
||||||
'_user.js.parrot'
|
|
||||||
]
|
|
||||||
|
|
||||||
if("undefined" === typeof(Services)) {
|
|
||||||
alert("about:config needs to be the active tab!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let c = 0;
|
|
||||||
for (let i = 0, len = ops.length; i < len; i++) {
|
|
||||||
if (Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
Services.prefs.clearUserPref(ops[i]);
|
|
||||||
if (!Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
console.log("reset", ops[i]);
|
|
||||||
c++;
|
|
||||||
} else { console.log("failed to reset", ops[i]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
focus();
|
|
||||||
|
|
||||||
let d = (c==1) ? " pref" : " prefs";
|
|
||||||
if (c > 0) {
|
|
||||||
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
|
|
||||||
} else { alert("nothing to reset"); }
|
|
||||||
|
|
||||||
})();
|
|
@ -1,409 +0,0 @@
|
|||||||
/***
|
|
||||||
|
|
||||||
This will reset EVERYTHING that is ACTIVE in the ghacks user.js
|
|
||||||
release 57-alpha master, but excludes the following:
|
|
||||||
- prefs removed since publishing on github
|
|
||||||
- e10s section 1100
|
|
||||||
- privacy.resistFingerprinting alternatives sections 4600 & 4700
|
|
||||||
- deprecated section 9999
|
|
||||||
|
|
||||||
It does not matter if you clear everything, as a restart will reapply your user.js
|
|
||||||
Total 477 prefs from 57-alpha master: 118 inactive, 359 active
|
|
||||||
These have been broken into two scripts for convenience
|
|
||||||
|
|
||||||
For instructions see:
|
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
|
||||||
|
|
||||||
***/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
let ops = [
|
|
||||||
/* 359 ACTIVE prefs in 57-alpha master */
|
|
||||||
'accessibility.force_disabled',
|
|
||||||
'alerts.showFavicons',
|
|
||||||
'app.update.auto',
|
|
||||||
'app.update.service.enabled',
|
|
||||||
'app.update.silent',
|
|
||||||
'app.update.staging.enabled',
|
|
||||||
'beacon.enabled',
|
|
||||||
'breakpad.reportURL',
|
|
||||||
'browser.aboutHomeSnippets.updateUrl',
|
|
||||||
'browser.backspace_action',
|
|
||||||
'browser.bookmarks.max_backups',
|
|
||||||
'browser.cache.disk.capacity',
|
|
||||||
'browser.cache.disk.enable',
|
|
||||||
'browser.cache.disk.smart_size.enabled',
|
|
||||||
'browser.cache.disk.smart_size.first_run',
|
|
||||||
'browser.cache.disk_cache_ssl',
|
|
||||||
'browser.cache.frecency_experiment',
|
|
||||||
'browser.cache.offline.enable',
|
|
||||||
'browser.crashReports.unsubmittedCheck.autoSubmit',
|
|
||||||
'browser.crashReports.unsubmittedCheck.enabled',
|
|
||||||
'browser.ctrlTab.previews',
|
|
||||||
'browser.display.use_document_fonts',
|
|
||||||
'browser.download.folderList',
|
|
||||||
'browser.download.forbid_open_with',
|
|
||||||
'browser.download.hide_plugins_without_extensions',
|
|
||||||
'browser.download.manager.addToRecentDocs',
|
|
||||||
'browser.download.useDownloadDir',
|
|
||||||
'browser.eme.ui.enabled',
|
|
||||||
'browser.fixup.alternate.enabled',
|
|
||||||
'browser.fixup.hide_user_pass',
|
|
||||||
'browser.formfill.enable',
|
|
||||||
'browser.helperApps.deleteTempFileOnExit',
|
|
||||||
'browser.laterrun.enabled',
|
|
||||||
'browser.library.activity-stream.enabled',
|
|
||||||
'browser.link.open_newwindow',
|
|
||||||
'browser.link.open_newwindow.restriction',
|
|
||||||
'browser.newtab.preload',
|
|
||||||
'browser.newtabpage.activity-stream.enabled',
|
|
||||||
'browser.newtabpage.directory.source',
|
|
||||||
'browser.newtabpage.enabled',
|
|
||||||
'browser.newtabpage.enhanced',
|
|
||||||
'browser.newtabpage.introShown',
|
|
||||||
'browser.offline-apps.notify',
|
|
||||||
'browser.onboarding.enabled',
|
|
||||||
'browser.pagethumbnails.capturing_disabled',
|
|
||||||
'browser.ping-centre.telemetry',
|
|
||||||
'browser.rights.3.shown',
|
|
||||||
'browser.safebrowsing.downloads.remote.enabled',
|
|
||||||
'browser.safebrowsing.downloads.remote.url',
|
|
||||||
'browser.safebrowsing.provider.google.reportMalwareMistakeURL',
|
|
||||||
'browser.safebrowsing.provider.google.reportPhishMistakeURL',
|
|
||||||
'browser.safebrowsing.provider.google.reportURL',
|
|
||||||
'browser.safebrowsing.provider.google4.reportMalwareMistakeURL',
|
|
||||||
'browser.safebrowsing.provider.google4.reportPhishMistakeURL',
|
|
||||||
'browser.safebrowsing.provider.google4.reportURL',
|
|
||||||
'browser.safebrowsing.reportPhishURL',
|
|
||||||
'browser.search.countryCode',
|
|
||||||
'browser.search.geoip.url',
|
|
||||||
'browser.search.geoSpecificDefaults',
|
|
||||||
'browser.search.geoSpecificDefaults.url',
|
|
||||||
'browser.search.region',
|
|
||||||
'browser.search.suggest.enabled',
|
|
||||||
'browser.search.update',
|
|
||||||
'browser.send_pings',
|
|
||||||
'browser.send_pings.require_same_host',
|
|
||||||
'browser.sessionhistory.max_entries',
|
|
||||||
'browser.sessionstore.interval',
|
|
||||||
'browser.sessionstore.max_tabs_undo',
|
|
||||||
'browser.sessionstore.max_windows_undo',
|
|
||||||
'browser.sessionstore.privacy_level',
|
|
||||||
'browser.sessionstore.resume_from_crash',
|
|
||||||
'browser.shell.checkDefaultBrowser',
|
|
||||||
'browser.shell.shortcutFavicons',
|
|
||||||
'browser.slowStartup.maxSamples',
|
|
||||||
'browser.slowStartup.notificationDisabled',
|
|
||||||
'browser.slowStartup.samples',
|
|
||||||
'browser.ssl_override_behavior',
|
|
||||||
'browser.startup.homepage_override.mstone',
|
|
||||||
'browser.tabs.closeWindowWithLastTab',
|
|
||||||
'browser.tabs.crashReporting.sendReport',
|
|
||||||
'browser.tabs.insertRelatedAfterCurrent',
|
|
||||||
'browser.tabs.loadDivertedInBackground',
|
|
||||||
'browser.tabs.loadInBackground',
|
|
||||||
'browser.tabs.selectOwnerOnClose',
|
|
||||||
'browser.tabs.warnOnClose',
|
|
||||||
'browser.tabs.warnOnCloseOtherTabs',
|
|
||||||
'browser.tabs.warnOnOpen',
|
|
||||||
'browser.taskbar.lists.enabled',
|
|
||||||
'browser.taskbar.lists.frequent.enabled',
|
|
||||||
'browser.taskbar.lists.recent.enabled',
|
|
||||||
'browser.taskbar.lists.tasks.enabled',
|
|
||||||
'browser.taskbar.previews.enable',
|
|
||||||
'browser.uitour.enabled',
|
|
||||||
'browser.uitour.url',
|
|
||||||
'browser.urlbar.autoFill',
|
|
||||||
'browser.urlbar.autoFill.typed',
|
|
||||||
'browser.urlbar.clickSelectsAll',
|
|
||||||
'browser.urlbar.decodeURLsOnCopy',
|
|
||||||
'browser.urlbar.doubleClickSelectsAll',
|
|
||||||
'browser.urlbar.filter.javascript',
|
|
||||||
'browser.urlbar.maxHistoricalSearchSuggestions',
|
|
||||||
'browser.urlbar.oneOffSearches',
|
|
||||||
'browser.urlbar.speculativeConnect.enabled',
|
|
||||||
// 'browser.urlbar.suggest.bookmark', // this may not get reset by your user.js - see issue #308
|
|
||||||
// 'browser.urlbar.suggest.history', // ditto
|
|
||||||
// 'browser.urlbar.suggest.openpage', // ditto
|
|
||||||
'browser.urlbar.suggest.searches',
|
|
||||||
'browser.urlbar.trimURLs',
|
|
||||||
'browser.urlbar.usepreloadedtopurls.enabled',
|
|
||||||
'browser.urlbar.userMadeSearchSuggestionsChoice',
|
|
||||||
'browser.xul.error_pages.expert_bad_cert',
|
|
||||||
'camera.control.face_detection.enabled',
|
|
||||||
'canvas.capturestream.enabled',
|
|
||||||
'captivedetect.canonicalURL',
|
|
||||||
'datareporting.healthreport.about.reportUrl',
|
|
||||||
'datareporting.healthreport.uploadEnabled',
|
|
||||||
'datareporting.policy.dataSubmissionEnabled',
|
|
||||||
'device.storage.enabled',
|
|
||||||
'devtools.chrome.enabled',
|
|
||||||
'devtools.debugger.remote-enabled',
|
|
||||||
'devtools.webide.autoinstallADBHelper',
|
|
||||||
'devtools.webide.enabled',
|
|
||||||
'dom.allow_cut_copy',
|
|
||||||
'dom.allow_scripts_to_close_windows',
|
|
||||||
'dom.caches.enabled',
|
|
||||||
'dom.disable_beforeunload',
|
|
||||||
'dom.disable_window_flip',
|
|
||||||
'dom.disable_window_move_resize',
|
|
||||||
'dom.disable_window_open_feature.close',
|
|
||||||
'dom.disable_window_open_feature.location',
|
|
||||||
'dom.disable_window_open_feature.menubar',
|
|
||||||
'dom.disable_window_open_feature.minimizable',
|
|
||||||
'dom.disable_window_open_feature.personalbar',
|
|
||||||
'dom.disable_window_open_feature.resizable',
|
|
||||||
'dom.disable_window_open_feature.status',
|
|
||||||
'dom.disable_window_open_feature.titlebar',
|
|
||||||
'dom.disable_window_open_feature.toolbar',
|
|
||||||
'dom.disable_window_status_change',
|
|
||||||
'dom.event.clipboardevents.enabled',
|
|
||||||
'dom.flyweb.enabled',
|
|
||||||
'dom.idle-observers-api.enabled',
|
|
||||||
'dom.imagecapture.enabled',
|
|
||||||
'dom.IntersectionObserver.enabled',
|
|
||||||
'dom.ipc.plugins.flash.subprocess.crashreporter.enabled',
|
|
||||||
'dom.ipc.plugins.reportCrashURL',
|
|
||||||
'dom.popup_allowed_events',
|
|
||||||
'dom.popup_maximum',
|
|
||||||
'dom.push.connection.enabled',
|
|
||||||
'dom.push.enabled',
|
|
||||||
'dom.push.serverURL',
|
|
||||||
'dom.push.userAgentID',
|
|
||||||
'dom.serviceWorkers.enabled',
|
|
||||||
'dom.vibrator.enabled',
|
|
||||||
'dom.webaudio.enabled',
|
|
||||||
'dom.webnotifications.enabled',
|
|
||||||
'dom.webnotifications.serviceworker.enabled',
|
|
||||||
'dom.workers.enabled',
|
|
||||||
'experiments.activeExperiment',
|
|
||||||
'experiments.enabled',
|
|
||||||
'experiments.manifest.uri',
|
|
||||||
'experiments.supported',
|
|
||||||
'extensions.autoDisableScopes',
|
|
||||||
'extensions.blocklist.enabled',
|
|
||||||
'extensions.blocklist.url',
|
|
||||||
'extensions.enabledScopes',
|
|
||||||
'extensions.formautofill.addresses.enabled',
|
|
||||||
'extensions.formautofill.available',
|
|
||||||
'extensions.formautofill.creditCards.enabled',
|
|
||||||
'extensions.formautofill.heuristics.enabled',
|
|
||||||
'extensions.getAddons.cache.enabled',
|
|
||||||
'extensions.getAddons.showPane',
|
|
||||||
'extensions.pocket.enabled',
|
|
||||||
'extensions.shield-recipe-client.api_url',
|
|
||||||
'extensions.shield-recipe-client.enabled',
|
|
||||||
'extensions.update.autoUpdateDefault',
|
|
||||||
'extensions.webcompat-reporter.enabled',
|
|
||||||
'extensions.webextensions.keepStorageOnUninstall',
|
|
||||||
'extensions.webextensions.keepUuidOnUninstall',
|
|
||||||
'extensions.webservice.discoverURL',
|
|
||||||
'font.blacklist.underline_offset',
|
|
||||||
'full-screen-api.enabled',
|
|
||||||
'general.useragent.compatMode.firefox',
|
|
||||||
'general.useragent.locale',
|
|
||||||
'general.warnOnAboutConfig',
|
|
||||||
'geo.wifi.uri',
|
|
||||||
'gfx.downloadable_fonts.enabled',
|
|
||||||
'gfx.downloadable_fonts.woff2.enabled',
|
|
||||||
'gfx.font_rendering.graphite.enabled',
|
|
||||||
'gfx.font_rendering.opentype_svg.enabled',
|
|
||||||
'gfx.offscreencanvas.enabled',
|
|
||||||
'intl.accept_languages',
|
|
||||||
'intl.locale.matchOS',
|
|
||||||
'intl.regional_prefs.use_os_locales',
|
|
||||||
'javascript.options.asmjs',
|
|
||||||
'javascript.options.wasm',
|
|
||||||
'javascript.use_us_english_locale',
|
|
||||||
'keyword.enabled',
|
|
||||||
'layers.acceleration.disabled',
|
|
||||||
'layout.css.font-loading-api.enabled',
|
|
||||||
'layout.css.visited_links_enabled',
|
|
||||||
'layout.spellcheckDefault',
|
|
||||||
'lightweightThemes.update.enabled',
|
|
||||||
'mathml.disabled',
|
|
||||||
'media.autoplay.enabled',
|
|
||||||
'media.block-autoplay-until-in-foreground',
|
|
||||||
'media.eme.enabled',
|
|
||||||
'media.getusermedia.audiocapture.enabled',
|
|
||||||
'media.getusermedia.browser.enabled',
|
|
||||||
'media.getusermedia.screensharing.allowed_domains',
|
|
||||||
'media.getusermedia.screensharing.enabled',
|
|
||||||
'media.gmp-gmpopenh264.autoupdate',
|
|
||||||
'media.gmp-gmpopenh264.enabled',
|
|
||||||
'media.gmp-manager.updateEnabled',
|
|
||||||
'media.gmp-manager.url',
|
|
||||||
'media.gmp-manager.url.override',
|
|
||||||
'media.gmp-provider.enabled',
|
|
||||||
'media.gmp-widevinecdm.autoupdate',
|
|
||||||
'media.gmp-widevinecdm.enabled',
|
|
||||||
'media.gmp-widevinecdm.visible',
|
|
||||||
'media.gmp.trial-create.enabled',
|
|
||||||
'media.navigator.enabled',
|
|
||||||
'media.navigator.video.enabled',
|
|
||||||
'media.ondevicechange.enabled',
|
|
||||||
'media.peerconnection.enabled',
|
|
||||||
'media.peerconnection.ice.default_address_only',
|
|
||||||
'media.peerconnection.ice.no_host',
|
|
||||||
'media.peerconnection.ice.tcp',
|
|
||||||
'media.peerconnection.identity.enabled',
|
|
||||||
'media.peerconnection.identity.timeout',
|
|
||||||
'media.peerconnection.turn.disable',
|
|
||||||
'media.peerconnection.use_document_iceservers',
|
|
||||||
'media.peerconnection.video.enabled',
|
|
||||||
'middlemouse.contentLoadURL',
|
|
||||||
'network.allow-experiments',
|
|
||||||
'network.auth.subresource-img-cross-origin-http-auth-allow',
|
|
||||||
'network.captive-portal-service.enabled',
|
|
||||||
'network.cookie.cookieBehavior',
|
|
||||||
'network.cookie.leave-secure-alone',
|
|
||||||
'network.cookie.thirdparty.sessionOnly',
|
|
||||||
'network.dns.blockDotOnion',
|
|
||||||
'network.dns.disablePrefetch',
|
|
||||||
'network.dns.disablePrefetchFromHTTPS',
|
|
||||||
'network.http.altsvc.enabled',
|
|
||||||
'network.http.altsvc.oe',
|
|
||||||
'network.http.redirection-limit',
|
|
||||||
'network.http.referer.hideOnionSource',
|
|
||||||
'network.http.referer.spoofSource',
|
|
||||||
'network.http.referer.trimmingPolicy',
|
|
||||||
'network.http.referer.userControlPolicy',
|
|
||||||
'network.http.referer.XOriginPolicy',
|
|
||||||
'network.http.referer.XOriginTrimmingPolicy',
|
|
||||||
'network.http.sendRefererHeader',
|
|
||||||
'network.http.spdy.enabled',
|
|
||||||
'network.http.spdy.enabled.deps',
|
|
||||||
'network.http.spdy.enabled.http2',
|
|
||||||
'network.http.speculative-parallel-limit',
|
|
||||||
'network.IDN_show_punycode',
|
|
||||||
'network.jar.block-remote-files',
|
|
||||||
'network.jar.open-unsafe-types',
|
|
||||||
'network.manage-offline-status',
|
|
||||||
'network.predictor.enable-prefetch',
|
|
||||||
'network.predictor.enabled',
|
|
||||||
'network.prefetch-next',
|
|
||||||
'network.protocol-handler.external.ms-windows-store',
|
|
||||||
'network.proxy.autoconfig_url.include_path',
|
|
||||||
'network.proxy.socks_remote_dns',
|
|
||||||
'network.stricttransportsecurity.preloadlist',
|
|
||||||
'offline-apps.allow_by_default',
|
|
||||||
'pdfjs.disabled',
|
|
||||||
'pdfjs.enableWebGL',
|
|
||||||
'permissions.manager.defaultsUrl',
|
|
||||||
'plugin.default.state',
|
|
||||||
'plugin.defaultXpi.state',
|
|
||||||
'plugin.scan.plid.all',
|
|
||||||
'plugin.sessionPermissionNow.intervalInMinutes',
|
|
||||||
'plugins.click_to_play',
|
|
||||||
'privacy.clearOnShutdown.cache',
|
|
||||||
'privacy.clearOnShutdown.cookies',
|
|
||||||
'privacy.clearOnShutdown.downloads',
|
|
||||||
'privacy.clearOnShutdown.formdata',
|
|
||||||
'privacy.clearOnShutdown.history',
|
|
||||||
'privacy.clearOnShutdown.offlineApps',
|
|
||||||
'privacy.clearOnShutdown.sessions',
|
|
||||||
'privacy.clearOnShutdown.siteSettings',
|
|
||||||
'privacy.cpd.cache',
|
|
||||||
'privacy.cpd.cookies',
|
|
||||||
'privacy.cpd.formdata',
|
|
||||||
'privacy.cpd.history',
|
|
||||||
'privacy.cpd.offlineApps',
|
|
||||||
'privacy.cpd.passwords',
|
|
||||||
'privacy.cpd.sessions',
|
|
||||||
'privacy.cpd.siteSettings',
|
|
||||||
'privacy.donottrackheader.enabled',
|
|
||||||
'privacy.firstparty.isolate',
|
|
||||||
'privacy.firstparty.isolate.restrict_opener_access',
|
|
||||||
'privacy.resistFingerprinting',
|
|
||||||
'privacy.sanitize.sanitizeOnShutdown',
|
|
||||||
'privacy.sanitize.timeSpan',
|
|
||||||
'privacy.trackingprotection.ui.enabled',
|
|
||||||
'security.ask_for_password',
|
|
||||||
'security.block_script_with_wrong_mime',
|
|
||||||
'security.cert_pinning.enforcement_level',
|
|
||||||
'security.csp.enable',
|
|
||||||
'security.csp.experimentalEnabled',
|
|
||||||
'security.data_uri.block_toplevel_data_uri_navigations',
|
|
||||||
'security.dialog_enable_delay',
|
|
||||||
'security.family_safety.mode',
|
|
||||||
'security.fileuri.strict_origin_policy',
|
|
||||||
'security.insecure_field_warning.contextual.enabled',
|
|
||||||
'security.insecure_password.ui.enabled',
|
|
||||||
'security.mixed_content.block_active_content',
|
|
||||||
'security.mixed_content.send_hsts_priming',
|
|
||||||
'security.mixed_content.use_hsts',
|
|
||||||
'security.OCSP.enabled',
|
|
||||||
'security.OCSP.require',
|
|
||||||
'security.password_lifetime',
|
|
||||||
'security.pki.sha1_enforcement_level',
|
|
||||||
'security.sri.enable',
|
|
||||||
'security.ssl.disable_session_identifiers',
|
|
||||||
'security.ssl.enable_ocsp_stapling',
|
|
||||||
'security.ssl.errorReporting.automatic',
|
|
||||||
'security.ssl.errorReporting.enabled',
|
|
||||||
'security.ssl.errorReporting.url',
|
|
||||||
'security.ssl.treat_unsafe_negotiation_as_broken',
|
|
||||||
'security.tls.enable_0rtt_data',
|
|
||||||
'security.tls.version.fallback-limit',
|
|
||||||
'security.tls.version.max',
|
|
||||||
'security.tls.version.min',
|
|
||||||
'security.xpconnect.plugin.unrestricted',
|
|
||||||
'services.blocklist.signing.enforced',
|
|
||||||
'services.blocklist.update_enabled',
|
|
||||||
'signon.autofillForms',
|
|
||||||
'signon.autofillForms.http',
|
|
||||||
'signon.formlessCapture.enabled',
|
|
||||||
'signon.storeWhenAutocompleteOff',
|
|
||||||
'startup.homepage_override_url',
|
|
||||||
'startup.homepage_welcome_url',
|
|
||||||
'startup.homepage_welcome_url.additional',
|
|
||||||
'toolkit.telemetry.archive.enabled',
|
|
||||||
'toolkit.telemetry.bhrPing.enabled',
|
|
||||||
'toolkit.telemetry.cachedClientID',
|
|
||||||
'toolkit.telemetry.enabled',
|
|
||||||
'toolkit.telemetry.firstShutdownPing.enabled',
|
|
||||||
'toolkit.telemetry.newProfilePing.enabled',
|
|
||||||
'toolkit.telemetry.server',
|
|
||||||
'toolkit.telemetry.shutdownPingSender.enabled',
|
|
||||||
'toolkit.telemetry.unified',
|
|
||||||
'toolkit.telemetry.updatePing.enabled',
|
|
||||||
'ui.submenuDelay',
|
|
||||||
'ui.use_standins_for_native_colors',
|
|
||||||
'view_source.tab',
|
|
||||||
'webchannel.allowObject.urlWhitelist',
|
|
||||||
'webgl.disable-extensions',
|
|
||||||
'webgl.disable-fail-if-major-performance-caveat',
|
|
||||||
'webgl.disabled',
|
|
||||||
'webgl.dxgl.enabled',
|
|
||||||
'webgl.enable-debug-renderer-info',
|
|
||||||
'webgl.enable-webgl2',
|
|
||||||
'webgl.min_capability_mode',
|
|
||||||
|
|
||||||
/* reset parrot: check your open about:config after running the script */
|
|
||||||
'_user.js.parrot'
|
|
||||||
]
|
|
||||||
|
|
||||||
if("undefined" === typeof(Services)) {
|
|
||||||
alert("about:config needs to be the active tab!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let c = 0;
|
|
||||||
for (let i = 0, len = ops.length; i < len; i++) {
|
|
||||||
if (Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
Services.prefs.clearUserPref(ops[i]);
|
|
||||||
if (!Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
console.log("reset", ops[i]);
|
|
||||||
c++;
|
|
||||||
} else { console.log("failed to reset", ops[i]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
focus();
|
|
||||||
|
|
||||||
let d = (c==1) ? " pref" : " prefs";
|
|
||||||
if (c > 0) {
|
|
||||||
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
|
|
||||||
} else { alert("nothing to reset"); }
|
|
||||||
|
|
||||||
})();
|
|
@ -1,167 +0,0 @@
|
|||||||
/***
|
|
||||||
|
|
||||||
This will reset EVERYTHING that is INACTIVE in the ghacks user.js
|
|
||||||
release 57-alpha master, but excludes the following:
|
|
||||||
- prefs removed since publishing on github
|
|
||||||
- e10s section 1100
|
|
||||||
- privacy.resistFingerprinting alternatives sections 4600 & 4700
|
|
||||||
- deprecated section 9999
|
|
||||||
|
|
||||||
It does not matter if you clear everything, as a restart will reapply your user.js
|
|
||||||
Total 477 prefs from 57-alpha master: 118 inactive, 359 active
|
|
||||||
These have been broken into two scripts for convenience
|
|
||||||
|
|
||||||
For instructions see:
|
|
||||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
|
||||||
|
|
||||||
***/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
let ops = [
|
|
||||||
/* 118 INACTIVE prefs in 57-alpha master */
|
|
||||||
'accessibility.typeaheadfind',
|
|
||||||
'app.update.enabled',
|
|
||||||
'browser.cache.memory.capacity',
|
|
||||||
'browser.cache.memory.enable',
|
|
||||||
'browser.chrome.favicons',
|
|
||||||
'browser.chrome.site_icons',
|
|
||||||
'browser.download.autohideButton',
|
|
||||||
'browser.privatebrowsing.autostart',
|
|
||||||
'browser.safebrowsing.allowOverride',
|
|
||||||
'browser.safebrowsing.blockedURIs.enabled',
|
|
||||||
'browser.safebrowsing.downloads.enabled',
|
|
||||||
'browser.safebrowsing.downloads.remote.block_dangerous',
|
|
||||||
'browser.safebrowsing.downloads.remote.block_dangerous_host',
|
|
||||||
'browser.safebrowsing.downloads.remote.block_potentially_unwanted',
|
|
||||||
'browser.safebrowsing.downloads.remote.block_uncommon',
|
|
||||||
'browser.safebrowsing.malware.enabled',
|
|
||||||
'browser.safebrowsing.phishing.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.sessionhistory.max_total_viewers',
|
|
||||||
'browser.startup.page',
|
|
||||||
'browser.stopReloadAnimation.enabled',
|
|
||||||
'browser.storageManager.enabled',
|
|
||||||
'browser.tabs.loadBookmarksInTabs',
|
|
||||||
'browser.urlbar.autocomplete.enabled',
|
|
||||||
'browser.urlbar.maxRichResults',
|
|
||||||
'clipboard.autocopy',
|
|
||||||
'dom.event.contextmenu.enabled',
|
|
||||||
'dom.indexedDB.enabled',
|
|
||||||
'dom.presentation.controller.enabled',
|
|
||||||
'dom.presentation.discoverable',
|
|
||||||
'dom.presentation.discovery.enabled',
|
|
||||||
'dom.presentation.enabled',
|
|
||||||
'dom.presentation.receiver.enabled',
|
|
||||||
'dom.presentation.session_transport.data_channel.enable',
|
|
||||||
'dom.storage.enabled',
|
|
||||||
'dom.storageManager.enabled',
|
|
||||||
'dom.vr.enabled',
|
|
||||||
'extensions.screenshots.disabled',
|
|
||||||
'extensions.systemAddon.update.url',
|
|
||||||
'extensions.update.enabled',
|
|
||||||
'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',
|
|
||||||
'font.system.whitelist',
|
|
||||||
'full-screen-api.warning.delay',
|
|
||||||
'full-screen-api.warning.timeout',
|
|
||||||
'general.autoScroll',
|
|
||||||
'geo.wifi.logging.enabled',
|
|
||||||
'gfx.direct2d.disabled',
|
|
||||||
'javascript.options.baselinejit',
|
|
||||||
'javascript.options.ion',
|
|
||||||
'media.flac.enabled',
|
|
||||||
'media.mediasource.enabled',
|
|
||||||
'media.mediasource.mp4.enabled',
|
|
||||||
'media.mediasource.webm.audio.enabled',
|
|
||||||
'media.mediasource.webm.enabled',
|
|
||||||
'media.mp4.enabled',
|
|
||||||
'media.ogg.enabled',
|
|
||||||
'media.ogg.flac.enabled',
|
|
||||||
'media.opus.enabled',
|
|
||||||
'media.raw.enabled',
|
|
||||||
'media.wave.enabled',
|
|
||||||
'media.webm.enabled',
|
|
||||||
'media.wmf.amd.vp9.enabled',
|
|
||||||
'media.wmf.enabled',
|
|
||||||
'media.wmf.vp9.enabled',
|
|
||||||
'network.cookie.lifetime.days',
|
|
||||||
'network.cookie.lifetimePolicy',
|
|
||||||
'network.dns.disableIPv6',
|
|
||||||
'network.dnsCacheEntries',
|
|
||||||
'network.dnsCacheExpiration',
|
|
||||||
'network.http.fast-fallback-to-IPv4',
|
|
||||||
'offline-apps.quota.warn',
|
|
||||||
'permissions.memory_only',
|
|
||||||
'places.history.enabled',
|
|
||||||
'plugin.state.flash',
|
|
||||||
'privacy.clearOnShutdown.openWindows',
|
|
||||||
'privacy.cpd.downloads',
|
|
||||||
'privacy.cpd.openWindows',
|
|
||||||
'privacy.resistFingerprinting.block_mozAddonManager',
|
|
||||||
'privacy.trackingprotection.annotate_channels',
|
|
||||||
'privacy.trackingprotection.enabled',
|
|
||||||
'privacy.trackingprotection.lower_network_priority',
|
|
||||||
'privacy.trackingprotection.pbmode.enabled',
|
|
||||||
'privacy.usercontext.about_newtab_segregation.enabled',
|
|
||||||
'privacy.userContext.enabled',
|
|
||||||
'privacy.userContext.longPressBehavior',
|
|
||||||
'privacy.userContext.ui.enabled',
|
|
||||||
'privacy.window.maxInnerHeight',
|
|
||||||
'privacy.window.maxInnerWidth',
|
|
||||||
'reader.parse-on-load.enabled',
|
|
||||||
'security.mixed_content.block_display_content',
|
|
||||||
'security.nocertdb',
|
|
||||||
'security.ssl.require_safe_negotiation',
|
|
||||||
'security.ssl3.dhe_rsa_aes_128_sha',
|
|
||||||
'security.ssl3.dhe_rsa_aes_256_sha',
|
|
||||||
'security.ssl3.ecdhe_ecdsa_aes_128_sha',
|
|
||||||
'security.ssl3.ecdhe_rsa_aes_128_sha',
|
|
||||||
'security.ssl3.rsa_aes_128_sha',
|
|
||||||
'security.ssl3.rsa_aes_256_sha',
|
|
||||||
'security.ssl3.rsa_des_ede3_sha',
|
|
||||||
'services.blocklist.addons.collection',
|
|
||||||
'services.blocklist.gfx.collection',
|
|
||||||
'services.blocklist.onecrl.collection',
|
|
||||||
'services.blocklist.plugins.collection',
|
|
||||||
'signon.rememberSignons',
|
|
||||||
'svg.disabled',
|
|
||||||
'toolkit.cosmeticAnimations.enabled',
|
|
||||||
'urlclassifier.trackingTable',
|
|
||||||
'xpinstall.signatures.required',
|
|
||||||
/* reset parrot: check your open about:config after running the script */
|
|
||||||
'_user.js.parrot'
|
|
||||||
]
|
|
||||||
|
|
||||||
if("undefined" === typeof(Services)) {
|
|
||||||
alert("about:config needs to be the active tab!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let c = 0;
|
|
||||||
for (let i = 0, len = ops.length; i < len; i++) {
|
|
||||||
if (Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
Services.prefs.clearUserPref(ops[i]);
|
|
||||||
if (!Services.prefs.prefHasUserValue(ops[i])) {
|
|
||||||
console.log("reset", ops[i]);
|
|
||||||
c++;
|
|
||||||
} else { console.log("failed to reset", ops[i]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
focus();
|
|
||||||
|
|
||||||
let d = (c==1) ? " pref" : " prefs";
|
|
||||||
if (c > 0) {
|
|
||||||
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
|
|
||||||
} else { alert("nothing to reset"); }
|
|
||||||
|
|
||||||
})();
|
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*** ghacks-user.js troubleshooter.js v1.4 ***/
|
/*** ghacks-user.js troubleshooter.js v1.5 ***/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
@ -116,14 +116,6 @@
|
|||||||
/* Audio + Video */
|
/* Audio + Video */
|
||||||
'dom.webaudio.enabled',
|
'dom.webaudio.enabled',
|
||||||
'media.autoplay.enabled',
|
'media.autoplay.enabled',
|
||||||
'media.flac.enabled',
|
|
||||||
'media.mp4.enabled',
|
|
||||||
'media.ogg.enabled',
|
|
||||||
'media.opus.enabled',
|
|
||||||
'media.raw.enabled',
|
|
||||||
'media.wave.enabled',
|
|
||||||
'media.webm.enabled',
|
|
||||||
'media.wmf.enabled',
|
|
||||||
|
|
||||||
/* Forms */
|
/* Forms */
|
||||||
'browser.formfill.enable',
|
'browser.formfill.enable',
|
||||||
@ -166,14 +158,6 @@
|
|||||||
'privacy.trackingprotection.enabled',
|
'privacy.trackingprotection.enabled',
|
||||||
'security.data_uri.block_toplevel_data_uri_navigations',
|
'security.data_uri.block_toplevel_data_uri_navigations',
|
||||||
|
|
||||||
/* FF User-Interface */
|
|
||||||
'browser.search.suggest.enabled',
|
|
||||||
'browser.urlbar.autoFill',
|
|
||||||
'browser.urlbar.autoFill.typed',
|
|
||||||
'browser.urlbar.oneOffSearches',
|
|
||||||
'browser.urlbar.suggest.searches',
|
|
||||||
'keyword.enabled',
|
|
||||||
|
|
||||||
'last.one.without.comma'
|
'last.one.without.comma'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
88
updater.bat
88
updater.bat
@ -3,11 +3,16 @@ 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.4
|
REM ## version: 4.6
|
||||||
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
|
||||||
|
|
||||||
|
VERIFY ON
|
||||||
|
CD /D "%~dp0"
|
||||||
SET _myname=%~n0
|
SET _myname=%~n0
|
||||||
SET _myparams=%*
|
SET _myparams=%*
|
||||||
|
|
||||||
:parse
|
:parse
|
||||||
IF "%~1"=="" (GOTO endparse)
|
IF "%~1"=="" (GOTO endparse)
|
||||||
IF /I "%~1"=="-unattended" (SET _ua=1)
|
IF /I "%~1"=="-unattended" (SET _ua=1)
|
||||||
@ -20,18 +25,21 @@ IF /I "%~1"=="-singlebackup" (SET _singlebackup=1)
|
|||||||
SHIFT
|
SHIFT
|
||||||
GOTO parse
|
GOTO parse
|
||||||
:endparse
|
:endparse
|
||||||
|
|
||||||
IF DEFINED _updateb (
|
IF DEFINED _updateb (
|
||||||
REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
|
REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
|
||||||
IF NOT "!_myname:~0,9!"=="[updated]" (
|
IF NOT "!_myname:~0,9!"=="[updated]" (
|
||||||
IF EXIST "[updated]!_myname!.bat" (
|
IF EXIST "[updated]!_myname!.bat" (
|
||||||
REM ## Phase 3 ##: The new script, with the original name, will:
|
REM ## Phase 3 ##: The new script, with the original name, will:
|
||||||
REM * Delete the [updated]*.bat script
|
REM * Delete the [updated]*.bat and *.bat.old scripts
|
||||||
REM * Begin the normal routine
|
REM * Begin the normal routine
|
||||||
REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old"
|
FC "[updated]!_myname!.bat" "!_myname!.bat.old" >nul
|
||||||
DEL /F "[updated]!_myname!.bat.old"
|
IF NOT "!errorlevel!"=="0" (
|
||||||
CALL :message "Script updated^!"
|
CALL :message "Script updated to version !v!"
|
||||||
TIMEOUT 3 >nul
|
TIMEOUT 3 >nul
|
||||||
CLS
|
)
|
||||||
|
REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old"
|
||||||
|
DEL /F "!_myname!.bat.old" "[updated]!_myname!.bat.old"
|
||||||
GOTO begin
|
GOTO begin
|
||||||
)
|
)
|
||||||
REM ## Phase 1 ##
|
REM ## Phase 1 ##
|
||||||
@ -39,18 +47,16 @@ IF DEFINED _updateb (
|
|||||||
REM * Start that script in a new CMD window
|
REM * Start that script in a new CMD window
|
||||||
REM * Exit
|
REM * Exit
|
||||||
CALL :message "Updating script..."
|
CALL :message "Updating script..."
|
||||||
REM Uncomment the next line and comment the powershell call for testing.
|
REM Uncomment the next line and comment out the PowerShell call for testing.
|
||||||
REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
|
REM COPY /B /Y "!_myname!.bat" "[updated]!_myname!.bat" >nul
|
||||||
(
|
(
|
||||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
||||||
) >nul 2>&1
|
) >nul 2>&1
|
||||||
IF EXIST "[updated]!_myname!.bat" (
|
IF EXIST "[updated]!_myname!.bat" (
|
||||||
START /min CMD /C "[updated]!_myname!.bat" !_myparams!
|
START /min CMD /C "[updated]!_myname!.bat" !_myparams!
|
||||||
EXIT /B
|
|
||||||
) ELSE (
|
) ELSE (
|
||||||
CALL :message "Failed. Make sure PowerShell is allowed internet access."
|
CALL :message "Failed. Make sure PowerShell is allowed internet access."
|
||||||
TIMEOUT 120 >nul
|
TIMEOUT 120 >nul
|
||||||
EXIT /B
|
|
||||||
)
|
)
|
||||||
) ELSE (
|
) ELSE (
|
||||||
IF "!_myname!"=="[updated]" (
|
IF "!_myname!"=="[updated]" (
|
||||||
@ -58,26 +64,25 @@ IF DEFINED _updateb (
|
|||||||
TIMEOUT 300 >nul
|
TIMEOUT 300 >nul
|
||||||
) ELSE (
|
) ELSE (
|
||||||
REM ## Phase 2 ##: The [updated]*.bat script will:
|
REM ## Phase 2 ##: The [updated]*.bat script will:
|
||||||
REM * Copy itself overwriting the original batch
|
REM * Rename the old script and make a copy of itself with the original name.
|
||||||
REM * Start that script in a new CMD instance
|
REM * Run that copy in a new CMD instance
|
||||||
REM * Exit
|
REM * Exit
|
||||||
IF EXIST "!_myname:~9!.bat" (
|
IF EXIST "!_myname:~9!.bat" ( REN "!_myname:~9!.bat" "!_myname:~9!.bat.old" )
|
||||||
REN "!_myname:~9!.bat" "!_myname:~9!.bat.old"
|
COPY /B /Y "!_myname!.bat" "!_myname:~9!.bat"
|
||||||
DEL /F "!_myname:~9!.bat.old"
|
|
||||||
)
|
|
||||||
COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat"
|
|
||||||
START CMD /C "!_myname:~9!.bat" !_myparams!
|
START CMD /C "!_myname:~9!.bat" !_myparams!
|
||||||
)
|
)
|
||||||
|
)
|
||||||
EXIT /B
|
EXIT /B
|
||||||
)
|
)
|
||||||
)
|
|
||||||
:begin
|
:begin
|
||||||
|
CLS
|
||||||
ECHO:
|
ECHO:
|
||||||
ECHO:
|
ECHO:
|
||||||
ECHO: ########################################
|
ECHO: ########################################
|
||||||
ECHO: #### user.js Updater for Windows ####
|
ECHO: #### user.js Updater for Windows ####
|
||||||
ECHO: #### by claustromaniac ####
|
ECHO: #### by claustromaniac ####
|
||||||
ECHO: #### v4.4 ####
|
ECHO: #### v!v! ####
|
||||||
ECHO: ########################################
|
ECHO: ########################################
|
||||||
ECHO:
|
ECHO:
|
||||||
SET /A "_line=0"
|
SET /A "_line=0"
|
||||||
@ -118,12 +123,12 @@ IF DEFINED _log (
|
|||||||
:log
|
:log
|
||||||
SET _log=2
|
SET _log=2
|
||||||
ECHO:##################################################################
|
ECHO:##################################################################
|
||||||
CALL :message "%date%, %time%"
|
ECHO: %date%, %time%
|
||||||
)
|
)
|
||||||
IF EXIST user.js.new (DEL /F "user.js.new")
|
IF EXIST user.js.new (DEL /F "user.js.new")
|
||||||
CALL :message "Retrieving latest user.js file from github repository..."
|
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 _multi (
|
IF DEFINED _multi (
|
||||||
@ -131,18 +136,18 @@ IF EXIST user.js.new (
|
|||||||
IF NOT ERRORLEVEL 1 (
|
IF NOT ERRORLEVEL 1 (
|
||||||
IF DEFINED _merge (
|
IF DEFINED _merge (
|
||||||
CALL :message "Merging..."
|
CALL :message "Merging..."
|
||||||
COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js
|
COPY /B /Y user.js-overrides\*.js user-overrides-merged.js
|
||||||
CALL :merge user-overrides-merged.js
|
CALL :merge user-overrides-merged.js
|
||||||
COPY /B /V /Y user.js.new+user-overrides-merged.js user.js.new
|
COPY /B /Y user.js.new+user-overrides-merged.js user.js.new
|
||||||
CALL :merge user.js.new
|
CALL :merge user.js.new
|
||||||
) ELSE (
|
) ELSE (
|
||||||
CALL :message "Appending..."
|
CALL :message "Appending..."
|
||||||
COPY /B /V /Y user.js.new+"user.js-overrides\*.js" user.js.new
|
COPY /B /Y user.js.new+"user.js-overrides\*.js" user.js.new
|
||||||
)
|
)
|
||||||
) ELSE (CALL :message "No override files found.")
|
) ELSE (CALL :message "No override files found.")
|
||||||
) ELSE (
|
) ELSE (
|
||||||
IF EXIST "user-overrides.js" (
|
IF EXIST "user-overrides.js" (
|
||||||
COPY /B /V /Y user.js.new+"user-overrides.js" "user.js.new"
|
COPY /B /Y user.js.new+"user-overrides.js" "user.js.new"
|
||||||
IF DEFINED _merge (
|
IF DEFINED _merge (
|
||||||
CALL :message "Merging user-overrides.js..."
|
CALL :message "Merging user-overrides.js..."
|
||||||
CALL :merge user.js.new
|
CALL :merge user.js.new
|
||||||
@ -159,7 +164,8 @@ IF EXIST user.js.new (
|
|||||||
IF DEFINED _singlebackup (
|
IF DEFINED _singlebackup (
|
||||||
MOVE /Y user.js user.js.bak >nul
|
MOVE /Y user.js user.js.bak >nul
|
||||||
) ELSE (
|
) ELSE (
|
||||||
MOVE /Y user.js "user-backup-!date:/=-!_!time::=.!.js" >nul
|
SET "_time=!time: =0!"
|
||||||
|
MOVE /Y user.js "user-backup-!date:/=-!_!_time::=.!.js" >nul
|
||||||
)
|
)
|
||||||
REN user.js.new user.js
|
REN user.js.new user.js
|
||||||
CALL :message "Update complete."
|
CALL :message "Update complete."
|
||||||
@ -170,6 +176,7 @@ IF EXIST user.js.new (
|
|||||||
) ELSE (
|
) ELSE (
|
||||||
REN user.js.new user.js
|
REN user.js.new user.js
|
||||||
CALL :message "Update complete."
|
CALL :message "Update complete."
|
||||||
|
SET "_changed=true"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
) ELSE (
|
) ELSE (
|
||||||
@ -177,7 +184,15 @@ IF EXIST user.js.new (
|
|||||||
ECHO: No changes were made.
|
ECHO: No changes were made.
|
||||||
)
|
)
|
||||||
IF NOT DEFINED _log (
|
IF NOT DEFINED _log (
|
||||||
IF NOT DEFINED _ua (PAUSE)
|
IF NOT DEFINED _ua (
|
||||||
|
IF EXIST prefsCleaner.bat (
|
||||||
|
IF "!_changed!"=="true" (
|
||||||
|
CALL :message "Would you like to run the prefsCleaner now?"
|
||||||
|
CHOICE /C YN /N /M "(Y/N) "
|
||||||
|
IF "1"=="!errorlevel!" ( START "" cmd.exe /C "prefsCleaner.bat" )
|
||||||
|
) ELSE (PAUSE)
|
||||||
|
) ELSE (PAUSE)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
EXIT /B
|
EXIT /B
|
||||||
|
|
||||||
@ -189,11 +204,13 @@ ECHO: %~1
|
|||||||
IF NOT "2"=="%_log%" (ECHO:)
|
IF NOT "2"=="%_log%" (ECHO:)
|
||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
REM ############ Merge function ############
|
REM ############ Merge function ############
|
||||||
: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:"^//// --- comment-out --- '[^'][^']*'.*" "%~1"') DO (SET "__unset__%%G=1")
|
||||||
(
|
(
|
||||||
FOR /F tokens^=2^,^*^ delims^=^'^" %%G IN ('FINDSTR /B /R /C:"user_pref.*\)[ ]*;" "%~1"') DO (IF NOT "%%H"=="" (SET "%%G=%%H"))
|
|
||||||
FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO (
|
FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO (
|
||||||
SET "_temp=%%J"
|
SET "_temp=%%J"
|
||||||
SETLOCAL EnableDelayedExpansion
|
SETLOCAL EnableDelayedExpansion
|
||||||
@ -206,11 +223,15 @@ SETLOCAL DisableDelayedExpansion
|
|||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
FOR /F tokens^=2^ delims^=^'^" %%K IN ("%%J") DO (
|
FOR /F tokens^=2^ delims^=^'^" %%K IN ("%%J") DO (
|
||||||
IF NOT "_user.js.parrot"=="%%K" (
|
IF NOT "_user.js.parrot"=="%%K" (
|
||||||
IF DEFINED %%K (
|
IF DEFINED __unset__%%K (
|
||||||
|
ECHO://%%J
|
||||||
|
) ELSE (
|
||||||
|
IF DEFINED [%%K] (
|
||||||
SETLOCAL EnableDelayedExpansion
|
SETLOCAL EnableDelayedExpansion
|
||||||
FOR /F "delims=" %%L IN ("!%%K!") DO (
|
FOR /F "delims=" %%L IN ("![%%K]!") DO (
|
||||||
ENDLOCAL & ECHO:user_pref("%%K"%%L
|
ENDLOCAL & ECHO:user_pref("%%K"%%L
|
||||||
SET "%%K="
|
SET "[%%K]="
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
) ELSE (ECHO:%%J)
|
) ELSE (ECHO:%%J)
|
||||||
@ -222,6 +243,7 @@ SETLOCAL DisableDelayedExpansion
|
|||||||
MOVE /Y updatertempfile "%~1" >nul
|
MOVE /Y updatertempfile "%~1" >nul
|
||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
REM ############### Help ##################
|
REM ############### Help ##################
|
||||||
:showhelp
|
:showhelp
|
||||||
MODE 80,46
|
MODE 80,46
|
||||||
@ -254,7 +276,5 @@ 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
|
||||||
CLS
|
|
||||||
MODE 80,25
|
MODE 80,25
|
||||||
GOTO :begin
|
GOTO :begin
|
||||||
REM #####################################
|
|
||||||
|
87
updater.sh
Normal file → Executable file
87
updater.sh
Normal file → Executable file
@ -1,15 +1,26 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
### ghacks-user.js updater for Mac/Linux
|
### ghacks-user.js updater for Mac/Linux
|
||||||
## author: @overdodactyl
|
## author: @overdodactyl, @ema-pe
|
||||||
## version: 1.2
|
## version: 1.4
|
||||||
|
|
||||||
|
## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in check_for_update() )
|
||||||
|
|
||||||
ghacksjs="https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js"
|
ghacksjs="https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js"
|
||||||
|
updater="https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.sh"
|
||||||
echo -e "\nThis script should be run from your Firefox profile directory.\n"
|
update_pref=${1:--ask}
|
||||||
|
|
||||||
currdir=$(pwd)
|
currdir=$(pwd)
|
||||||
|
|
||||||
|
DOWNLOAD_TO_STDOUT="curl -s"
|
||||||
|
DOWNLOAD_TO_FILE="curl -O"
|
||||||
|
|
||||||
|
# Use wget if curl is not available.
|
||||||
|
if [[ -z $(command -v "curl") ]]; then
|
||||||
|
DOWNLOAD_TO_STDOUT="wget --quiet --output-document=-"
|
||||||
|
DOWNLOAD_TO_FILE="wget"
|
||||||
|
fi
|
||||||
|
|
||||||
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
|
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
|
||||||
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)
|
||||||
|
|
||||||
@ -19,12 +30,46 @@ if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi
|
|||||||
## change directory to the Firefox profile directory
|
## change directory to the Firefox profile directory
|
||||||
cd "$(dirname "${sfp}")"
|
cd "$(dirname "${sfp}")"
|
||||||
|
|
||||||
|
## Used to check if a new version of updater.sh is available
|
||||||
|
update_available="no"
|
||||||
|
check_for_update () {
|
||||||
|
online_version="$($DOWNLOAD_TO_STDOUT ${updater} | sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p')"
|
||||||
|
path_to_script="$(dirname "${sfp}")/updater.sh"
|
||||||
|
current_version="$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$path_to_script")"
|
||||||
|
if [[ "$current_version" < "$online_version" ]]; then
|
||||||
|
update_available="yes"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## Used to backup the current script, and download and execute the latest version of updater.sh
|
||||||
|
update_script () {
|
||||||
|
echo -e "This script will be backed up and the latest version of updater.sh will be executed.\n"
|
||||||
|
mv updater.sh "updater.sh.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||||
|
$DOWNLOAD_TO_FILE ${updater} && echo -e "\nThe latest updater script has been downloaded\n"
|
||||||
|
|
||||||
|
# make new file executable
|
||||||
|
chmod +x updater.sh
|
||||||
|
|
||||||
|
# execute new updater script
|
||||||
|
./updater.sh -donotupdate
|
||||||
|
|
||||||
|
# exit script
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main () {
|
||||||
|
## create backup folder if it doesn't exist
|
||||||
|
mkdir -p userjs_backups;
|
||||||
|
|
||||||
|
echo -e "\nThis script should be run from your Firefox profile directory.\n"
|
||||||
|
|
||||||
echo -e "Updating the user.js for Firefox profile:\n$(pwd)\n"
|
echo -e "Updating the user.js for Firefox profile:\n$(pwd)\n"
|
||||||
|
|
||||||
if [ -e user.js ]; then
|
if [ -e user.js ]; then
|
||||||
echo "Your current user.js file for this profile will be backed up and the latest ghacks version from github will take its place."
|
echo "Your current user.js file for this profile will be backed up and the latest ghacks version from github will take its place."
|
||||||
echo -e "\nIf currently using the ghacks user.js, please compare versions:"
|
echo -e "\nIf currently using the ghacks user.js, please compare versions:"
|
||||||
echo " Available online: $(curl -s ${ghacksjs} | sed -n '4p')"
|
echo " Available online: $($DOWNLOAD_TO_STDOUT ${ghacksjs} | sed -n '4p')"
|
||||||
echo " Currently using: $(sed -n '4p' user.js)"
|
echo " Currently using: $(sed -n '4p' user.js)"
|
||||||
else
|
else
|
||||||
echo "A user.js file does not exist in this profile. If you continue, the latest ghacks version from github will be downloaded."
|
echo "A user.js file does not exist in this profile. If you continue, the latest ghacks version from github will be downloaded."
|
||||||
@ -38,13 +83,13 @@ echo -e "\n\n"
|
|||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
if [ -e user.js ]; then
|
if [ -e user.js ]; then
|
||||||
# backup current user.js
|
# backup current user.js
|
||||||
bakfile="user.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
bakfile="userjs_backups/user.js.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||||
mv user.js "${bakfile}" && echo "Your previous user.js file was backed up: ${bakfile}"
|
mv user.js "${bakfile}" && echo "Your previous user.js file was backed up: ${bakfile}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# download latest ghacks user.js
|
# download latest ghacks user.js
|
||||||
echo "downloading latest ghacks user.js file"
|
echo "downloading latest ghacks user.js file"
|
||||||
curl -O ${ghacksjs} && echo "ghacks user.js has been downloaded"
|
$DOWNLOAD_TO_FILE ${ghacksjs} && echo "ghacks user.js has been downloaded"
|
||||||
|
|
||||||
if [ -e user-overrides.js ]; then
|
if [ -e user-overrides.js ]; then
|
||||||
echo "user-overrides.js file found"
|
echo "user-overrides.js file found"
|
||||||
@ -56,3 +101,29 @@ fi
|
|||||||
|
|
||||||
## change directory back to the original working directory
|
## change directory back to the original working directory
|
||||||
cd "${currdir}"
|
cd "${currdir}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
update_pref="$(echo $update_pref | tr '[A-Z]' '[a-z]')"
|
||||||
|
if [ $update_pref = "-donotupdate" ]; then
|
||||||
|
main
|
||||||
|
else
|
||||||
|
check_for_update
|
||||||
|
if [ $update_available = "no" ]; then
|
||||||
|
main
|
||||||
|
else
|
||||||
|
## there is an update available
|
||||||
|
if [ $update_pref = "-update" ]; then
|
||||||
|
## update without asking
|
||||||
|
update_script
|
||||||
|
else
|
||||||
|
read -p "There is a newer version of updater.sh available. Download and execute? Y/N? " -n 1 -r
|
||||||
|
echo -e "\n\n"
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
update_script
|
||||||
|
else
|
||||||
|
main
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
Reference in New Issue
Block a user