mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 09:28:31 +02:00
Compare commits
114 Commits
v81.0-beta
...
88.0
Author | SHA1 | Date | |
---|---|---|---|
da9f912862 | |||
9930cfbc07 | |||
7738e320d5 | |||
9b8735a87a | |||
6c10e03ce5 | |||
7ad3bb9e61 | |||
5dcf639d33 | |||
2da3b0192f | |||
ada8158caf | |||
2071939c5e | |||
f082278217 | |||
abe37add6e | |||
bc07ca94c0 | |||
728c962684 | |||
ca99add006 | |||
f771027138 | |||
8f1c0044b9 | |||
87cd828b5b | |||
46ccd9f654 | |||
b1927f9de1 | |||
b592e0e592 | |||
3b6cd93749 | |||
3a24c01f03 | |||
b7c80841a9 | |||
95645f59a3 | |||
9138e342fd | |||
692ed70ea9 | |||
3430507ae4 | |||
844f3ce9c8 | |||
03ffb90186 | |||
5f9bb59b95 | |||
7163efdd1e | |||
65fb24ff1b | |||
612cfbf313 | |||
4596d721e6 | |||
911206eed5 | |||
cb5cdca99d | |||
e54ae46537 | |||
7c978d4e70 | |||
d905b4387d | |||
c31c825a74 | |||
6505a9fefd | |||
de74f812ee | |||
82bb3f987d | |||
a35a616de7 | |||
ecf99bf9e7 | |||
cfaf354fe3 | |||
0b51e98d91 | |||
fa51251235 | |||
21fcd0bd35 | |||
96d558dd0c | |||
b6e8dcab81 | |||
fa78c53114 | |||
2f6b14ab6e | |||
2dd455ef83 | |||
306610da8e | |||
59ac1727f7 | |||
c974b3252d | |||
480933484f | |||
0cbd8a13a3 | |||
ae6c76fe54 | |||
1f098f2eaf | |||
11977e7017 | |||
27dd6aa62d | |||
c570e4fdbd | |||
da58f84fa6 | |||
755a45505f | |||
9d74cb9526 | |||
8c9d0bbe72 | |||
0152b38b8b | |||
e6cf90146a | |||
63d1258f2e | |||
46bab27f94 | |||
2cfbba1472 | |||
c980bda695 | |||
feaa1c3e99 | |||
aa1c2145bb | |||
335ee84540 | |||
5c37d50f4e | |||
77abf35761 | |||
fa85c9da5b | |||
cf53982086 | |||
91cbc1e09a | |||
a7e4268d8b | |||
699eacf1fd | |||
0189438e46 | |||
94712f59a3 | |||
ef93a754ce | |||
c6ddda1aa3 | |||
ccbca41e2d | |||
5b0d173078 | |||
d6186819f4 | |||
ea0eb85404 | |||
8dc43cfdc2 | |||
f7bee988de | |||
f2fe7f02b0 | |||
accef19af4 | |||
910d7004c6 | |||
07cccd5386 | |||
ac52886ea8 | |||
c45780d79b | |||
e14732aad3 | |||
26d4768447 | |||
9f99885272 | |||
0adfddd1e2 | |||
f591a8adf8 | |||
0e10a820d9 | |||
c90341dded | |||
d5ccf4693b | |||
e89f9a5d89 | |||
a56ba85936 | |||
421f1e361c | |||
2391874e04 | |||
4779ea7850 |
@ -15,9 +15,9 @@ Before you proceed...
|
|||||||
- Note: We do not support forks
|
- Note: We do not support forks
|
||||||
|
|
||||||
See also:
|
See also:
|
||||||
|
- Override Recipes [issue 1080](https://github.com/arkenfox/user.js/issues/1080)
|
||||||
- Extension breakage due to prefs [issue 391](https://github.com/arkenfox/user.js/issues/391)
|
- Extension breakage due to prefs [issue 391](https://github.com/arkenfox/user.js/issues/391)
|
||||||
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/arkenfox/user.js/issues/350)
|
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/arkenfox/user.js/issues/350)
|
||||||
- The extension CSP header modification game [issue 664](https://github.com/arkenfox/user.js/issues/664)
|
|
||||||
|
|
||||||
If you still need help, help us help you by providing relevant information:
|
If you still need help, help us help you by providing relevant information:
|
||||||
- browser version
|
- browser version
|
||||||
|
@ -22,7 +22,6 @@ Also be aware that the `arkenfox user.js` is made specifically for desktop Firef
|
|||||||
- [diffs](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Adiffs)
|
- [diffs](https://github.com/arkenfox/user.js/issues?q=is%3Aissue+label%3Adiffs)
|
||||||
|
|
||||||
### 🟥 acknowledgments
|
### 🟥 acknowledgments
|
||||||
Literally thousands of sources, references and suggestions. Special mention to:
|
Literally thousands of sources, references and suggestions. Many thanks, and much appreciated.
|
||||||
|
|
||||||
* This [12bytes article](https://12bytes.org/articles/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs) which uses the `arkenfox user.js` and supplements it with an additional JS hosted at [Codeberg](https://codeberg.org/12bytes.org/Firefox-user.js-supplement)
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ TITLE prefs.js cleaner
|
|||||||
|
|
||||||
REM ### prefs.js cleaner for Windows
|
REM ### prefs.js cleaner for Windows
|
||||||
REM ## author: @claustromaniac
|
REM ## author: @claustromaniac
|
||||||
REM ## version: 2.3
|
REM ## version: 2.4
|
||||||
|
|
||||||
CD /D "%~dp0"
|
CD /D "%~dp0"
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ ECHO:
|
|||||||
ECHO ########################################
|
ECHO ########################################
|
||||||
ECHO #### prefs.js cleaner for Windows ####
|
ECHO #### prefs.js cleaner for Windows ####
|
||||||
ECHO #### by claustromaniac ####
|
ECHO #### by claustromaniac ####
|
||||||
ECHO #### v2.3 ####
|
ECHO #### v2.4 ####
|
||||||
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."
|
||||||
@ -28,6 +28,7 @@ IF ERRORLEVEL 3 (EXIT /B)
|
|||||||
IF ERRORLEVEL 2 (GOTO :showhelp)
|
IF ERRORLEVEL 2 (GOTO :showhelp)
|
||||||
IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory." 30)
|
IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory." 30)
|
||||||
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 :strlenCheck
|
||||||
CALL :FFcheck
|
CALL :FFcheck
|
||||||
CALL :message "Backing up prefs.js..."
|
CALL :message "Backing up prefs.js..."
|
||||||
SET "_time=%time: =0%"
|
SET "_time=%time: =0%"
|
||||||
@ -50,6 +51,21 @@ ECHO:
|
|||||||
ECHO: %~1
|
ECHO: %~1
|
||||||
ECHO:
|
ECHO:
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
REM ### string length Check Function ####
|
||||||
|
:strlenCheck
|
||||||
|
SET /a cnt=0
|
||||||
|
setlocal ENABLEDELAYEDEXPANSION
|
||||||
|
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" prefs.js') DO (
|
||||||
|
ECHO:%%H >nul
|
||||||
|
SET /a cnt += 1
|
||||||
|
IF /I "%%G" NEQ "!cnt!" (
|
||||||
|
ECHO:
|
||||||
|
CALL :message "ERROR: line !cnt! in prefs.js is too long."
|
||||||
|
(CALL :abort "Aborting ..." 30)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
endlocal
|
||||||
|
GOTO :EOF
|
||||||
REM ####### Firefox Check Function ######
|
REM ####### Firefox Check Function ######
|
||||||
:FFcheck
|
:FFcheck
|
||||||
TASKLIST /FI "IMAGENAME eq firefox.exe" 2>NUL | FIND /I /N "firefox.exe">NUL
|
TASKLIST /FI "IMAGENAME eq firefox.exe" 2>NUL | FIND /I /N "firefox.exe">NUL
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/***
|
/***
|
||||||
This will reset the preferences that have been removed completely from the arkenfox user.js.
|
This will reset the preferences that have been removed completely from the arkenfox user.js.
|
||||||
|
|
||||||
Last updated: 14-Sept-2020
|
Last updated: 07-Apr-2021
|
||||||
|
|
||||||
For instructions see:
|
For instructions see:
|
||||||
https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
let ops = [
|
let ops = [
|
||||||
/* removed in arkenfox user.js v52-57 */
|
/* removed in arkenfox user.js */
|
||||||
/* 52-alpha */
|
/* 52-alpha */
|
||||||
'browser.search.reset.enabled',
|
'browser.search.reset.enabled',
|
||||||
'browser.search.reset.whitelist',
|
'browser.search.reset.whitelist',
|
||||||
@ -26,7 +26,6 @@
|
|||||||
'extensions.pocket.api', // covered by extensions.pocket.enabled
|
'extensions.pocket.api', // covered by extensions.pocket.enabled
|
||||||
'extensions.pocket.oAuthConsumerKey', // ditto
|
'extensions.pocket.oAuthConsumerKey', // ditto
|
||||||
'extensions.pocket.site', // ditto
|
'extensions.pocket.site', // ditto
|
||||||
/* 56-alpha: none */
|
|
||||||
/* 57-alpha */
|
/* 57-alpha */
|
||||||
'geo.wifi.xhr.timeout', // covered by geo.enabled
|
'geo.wifi.xhr.timeout', // covered by geo.enabled
|
||||||
'browser.search.geoip.timeout', // ditto
|
'browser.search.geoip.timeout', // ditto
|
||||||
@ -223,6 +222,22 @@
|
|||||||
'browser.search.region',
|
'browser.search.region',
|
||||||
/* 79-beta */
|
/* 79-beta */
|
||||||
'browser.urlbar.usepreloadedtopurls.enabled',
|
'browser.urlbar.usepreloadedtopurls.enabled',
|
||||||
|
/* 82-beta */
|
||||||
|
'dom.IntersectionObserver.enabled',
|
||||||
|
'extensions.screenshots.upload-disabled',
|
||||||
|
'privacy.partition.network_state',
|
||||||
|
'security.ssl3.dhe_rsa_aes_128_sha',
|
||||||
|
'security.ssl3.dhe_rsa_aes_256_sha',
|
||||||
|
/* 84-beta */
|
||||||
|
'browser.newtabpage.activity-stream.asrouter.providers.snippets',
|
||||||
|
/* 85-beta */
|
||||||
|
'network.http.redirection-limit',
|
||||||
|
/* 86-beta */
|
||||||
|
'media.gmp-widevinecdm.visible',
|
||||||
|
/* 87-beta */
|
||||||
|
'browser.send_pings.require_same_host',
|
||||||
|
/* 88-beta */
|
||||||
|
'webgl.min_capability_mode',
|
||||||
/* 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,5 +1,5 @@
|
|||||||
|
|
||||||
/*** arkenfox user.js troubleshooter.js v1.6.1 ***/
|
/*** arkenfox user.js troubleshooter.js v1.6.3 ***/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
@ -17,9 +17,7 @@
|
|||||||
|
|
||||||
/* Storage + Cache */
|
/* Storage + Cache */
|
||||||
'browser.cache.offline.enable',
|
'browser.cache.offline.enable',
|
||||||
'dom.indexedDB.enabled',
|
|
||||||
'dom.storage.enabled',
|
'dom.storage.enabled',
|
||||||
'browser.storageManager.enabled',
|
|
||||||
'dom.storageManager.enabled',
|
'dom.storageManager.enabled',
|
||||||
|
|
||||||
/* Workers, Web + Push Notifications */
|
/* Workers, Web + Push Notifications */
|
||||||
@ -34,7 +32,6 @@
|
|||||||
/* Fonts */
|
/* Fonts */
|
||||||
'browser.display.use_document_fonts',
|
'browser.display.use_document_fonts',
|
||||||
'font.blacklist.underline_offset',
|
'font.blacklist.underline_offset',
|
||||||
'gfx.downloadable_fonts.woff2.enabled',
|
|
||||||
'gfx.font_rendering.graphite.enabled',
|
'gfx.font_rendering.graphite.enabled',
|
||||||
'gfx.font_rendering.opentype_svg.enabled',
|
'gfx.font_rendering.opentype_svg.enabled',
|
||||||
'layout.css.font-loading-api.enabled',
|
'layout.css.font-loading-api.enabled',
|
||||||
@ -47,12 +44,10 @@
|
|||||||
'dom.IntersectionObserver.enabled',
|
'dom.IntersectionObserver.enabled',
|
||||||
'dom.popup_allowed_events',
|
'dom.popup_allowed_events',
|
||||||
'full-screen-api.enabled',
|
'full-screen-api.enabled',
|
||||||
'geo.wifi.uri',
|
|
||||||
'intl.accept_languages',
|
'intl.accept_languages',
|
||||||
'javascript.options.asmjs',
|
'javascript.options.asmjs',
|
||||||
'javascript.options.wasm',
|
'javascript.options.wasm',
|
||||||
'permissions.default.shortcuts',
|
'permissions.default.shortcuts',
|
||||||
'security.csp.experimentalEnabled',
|
|
||||||
|
|
||||||
/* Hardware */
|
/* Hardware */
|
||||||
'dom.vr.enabled',
|
'dom.vr.enabled',
|
||||||
@ -60,8 +55,8 @@
|
|||||||
|
|
||||||
/* Audio + Video */
|
/* Audio + Video */
|
||||||
'dom.webaudio.enabled',
|
'dom.webaudio.enabled',
|
||||||
'media.autoplay.enabled',
|
|
||||||
'media.autoplay.default', // FF63+
|
'media.autoplay.default', // FF63+
|
||||||
|
'media.autoplay.blocking_policy', // FF78+
|
||||||
|
|
||||||
/* Forms */
|
/* Forms */
|
||||||
'browser.formfill.enable',
|
'browser.formfill.enable',
|
||||||
@ -88,13 +83,11 @@
|
|||||||
|
|
||||||
/* Plugins + Flash */
|
/* Plugins + Flash */
|
||||||
'plugin.default.state',
|
'plugin.default.state',
|
||||||
'plugin.defaultXpi.state',
|
|
||||||
'plugin.sessionPermissionNow.intervalInMinutes',
|
|
||||||
'plugin.state.flash',
|
'plugin.state.flash',
|
||||||
|
|
||||||
/* unlikely to cause problems */
|
/* unlikely to cause problems */
|
||||||
'browser.tabs.remote.allowLinkedWebInFileUriProcess',
|
|
||||||
'dom.popup_maximum',
|
'dom.popup_maximum',
|
||||||
|
'geo.provider.network.url',
|
||||||
'layout.css.visited_links_enabled',
|
'layout.css.visited_links_enabled',
|
||||||
'mathml.disabled',
|
'mathml.disabled',
|
||||||
'network.auth.subresource-http-auth-allow',
|
'network.auth.subresource-http-auth-allow',
|
||||||
@ -102,6 +95,7 @@
|
|||||||
'network.protocol-handler.external.ms-windows-store',
|
'network.protocol-handler.external.ms-windows-store',
|
||||||
'privacy.trackingprotection.enabled',
|
'privacy.trackingprotection.enabled',
|
||||||
'security.data_uri.block_toplevel_data_uri_navigations',
|
'security.data_uri.block_toplevel_data_uri_navigations',
|
||||||
|
'privacy.window.name.update.enabled', // FF82+
|
||||||
|
|
||||||
'last.one.without.comma'
|
'last.one.without.comma'
|
||||||
]
|
]
|
||||||
@ -167,8 +161,8 @@
|
|||||||
reapply(aALL);
|
reapply(aALL);
|
||||||
myreset(aTmp.slice(0, _h(aTmp)));
|
myreset(aTmp.slice(0, _h(aTmp)));
|
||||||
while (aTmp.length) {
|
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.')) {
|
||||||
aTmp = aTmp.slice(_h(aTmp));
|
aTmp = aTmp.slice(_h(aTmp));
|
||||||
} else {
|
} else {
|
||||||
aTmp = aTmp.slice(0, _h(aTmp));
|
aTmp = aTmp.slice(0, _h(aTmp));
|
||||||
@ -182,16 +176,16 @@
|
|||||||
|
|
||||||
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
||||||
if (aDbg.length == aALL.length) {
|
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";
|
const 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";
|
"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?";
|
"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]);
|
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?")) {
|
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
|
||||||
return _main(aDbg.reverse());
|
return _main(aDbg.reverse());
|
||||||
}
|
}
|
||||||
|
|
||||||
alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
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:");
|
console.log('The problem is caused by 2 or more of these prefs:');
|
||||||
for (const oPref of aDbg) console.log(oPref.name);
|
for (const oPref of aDbg) console.log(oPref.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,14 +194,18 @@
|
|||||||
|
|
||||||
const aBAK = getMyList(aPREFS);
|
const aBAK = getMyList(aPREFS);
|
||||||
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
||||||
|
|
||||||
|
const sMsg = "all detected prefs reset.\n\n" +
|
||||||
|
"!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\n" +
|
||||||
|
"IF the problem still exists, this script can't help you - click Cancel to re-apply your values and exit.\n\n" +
|
||||||
|
"Click OK if your problem is fixed.";
|
||||||
|
|
||||||
focus();
|
focus();
|
||||||
myreset(aBAK);
|
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.")) {
|
if (!confirm(sMsg)) {
|
||||||
reapply(aBAK);
|
reapply(aBAK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_main(aBAK);
|
_main(aBAK);
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
28
updater.bat
28
updater.bat
@ -3,10 +3,10 @@ TITLE arkenfox user.js updater
|
|||||||
|
|
||||||
REM ## arkenfox user.js updater for Windows
|
REM ## arkenfox user.js updater for Windows
|
||||||
REM ## author: @claustromaniac
|
REM ## author: @claustromaniac
|
||||||
REM ## version: 4.12
|
REM ## version: 4.14
|
||||||
REM ## instructions: https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts
|
REM ## instructions: https://github.com/arkenfox/user.js/wiki/3.3-Updater-Scripts
|
||||||
|
|
||||||
SET v=4.12
|
SET v=4.14
|
||||||
|
|
||||||
VERIFY ON
|
VERIFY ON
|
||||||
CD /D "%~dp0"
|
CD /D "%~dp0"
|
||||||
@ -28,6 +28,15 @@ SHIFT
|
|||||||
GOTO parse
|
GOTO parse
|
||||||
:endparse
|
:endparse
|
||||||
|
|
||||||
|
FOR /F %%i IN ('PowerShell -Command "[Enum]::GetNames([Net.SecurityProtocolType]) -contains 'Tls12'"') DO (
|
||||||
|
IF "%%i" == "False" (
|
||||||
|
CALL :message "Your PowerShell version doesn't support TLS1.2 ^!"
|
||||||
|
ECHO: Instructions to update PowerShell are on the arkenfox wiki
|
||||||
|
PAUSE
|
||||||
|
EXIT
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
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]" (
|
||||||
@ -51,9 +60,7 @@ IF DEFINED _updateb (
|
|||||||
CALL :message "Updating script..."
|
CALL :message "Updating script..."
|
||||||
REM Uncomment the next line and comment out the PowerShell call for testing.
|
REM Uncomment the next line and comment out the PowerShell call for testing.
|
||||||
REM COPY /B /Y "!_myname!.bat" "[updated]!_myname!.bat" >nul
|
REM COPY /B /Y "!_myname!.bat" "[updated]!_myname!.bat" >nul
|
||||||
(
|
CALL :psdownload https://raw.githubusercontent.com/arkenfox/user.js/master/updater.bat "[updated]!_myname!.bat"
|
||||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/arkenfox/user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
|
||||||
) >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!
|
||||||
) ELSE (
|
) ELSE (
|
||||||
@ -132,9 +139,7 @@ IF DEFINED _log (
|
|||||||
)
|
)
|
||||||
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..."
|
||||||
(
|
CALL :psdownload https://raw.githubusercontent.com/arkenfox/user.js/master/user.js "user.js.new"
|
||||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/arkenfox/user.js/master/user.js', 'user.js.new')"
|
|
||||||
) >nul 2>&1
|
|
||||||
IF EXIST user.js.new (
|
IF EXIST user.js.new (
|
||||||
IF DEFINED _rfpalts (
|
IF DEFINED _rfpalts (
|
||||||
CALL :message "Activating RFP Alternatives section..."
|
CALL :message "Activating RFP Alternatives section..."
|
||||||
@ -218,6 +223,13 @@ IF NOT "2"=="%_log%" (ECHO:)
|
|||||||
ENDLOCAL
|
ENDLOCAL
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
|
::::::::::::::: Download :::::::::::::::
|
||||||
|
:psdownload
|
||||||
|
(
|
||||||
|
PowerShell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; (New-Object Net.WebClient).DownloadFile('%~1', '%~2')"
|
||||||
|
) >nul 2>&1
|
||||||
|
GOTO :EOF
|
||||||
|
|
||||||
::::::::::::::: Activate Section :::::::::::::::
|
::::::::::::::: Activate Section :::::::::::::::
|
||||||
:activate
|
:activate
|
||||||
:: arg1 = file
|
:: arg1 = file
|
||||||
|
65
updater.sh
65
updater.sh
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## arkenfox user.js updater for macOS and Linux
|
## arkenfox user.js updater for macOS and Linux
|
||||||
|
|
||||||
## version: 2.8
|
## version: 3.0
|
||||||
## Author: Pat Johnson (@overdodactyl)
|
## Author: Pat Johnson (@overdodactyl)
|
||||||
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
|
## Additional contributors: @earthlng, @ema-pe, @claustromaniac
|
||||||
|
|
||||||
@ -10,9 +10,9 @@
|
|||||||
|
|
||||||
readonly CURRDIR=$(pwd)
|
readonly CURRDIR=$(pwd)
|
||||||
|
|
||||||
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||||
[ -z "$sfp" ] && sfp=${BASH_SOURCE[0]}
|
[ -z "$SCRIPT_FILE" ] && SCRIPT_FILE=${BASH_SOURCE[0]}
|
||||||
readonly SCRIPT_DIR=$(dirname "${sfp}")
|
readonly SCRIPT_DIR=$(dirname "${SCRIPT_FILE}")
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
@ -103,7 +103,6 @@ Optional Arguments:
|
|||||||
# File Handling #
|
# File Handling #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
# Download files
|
|
||||||
download_file () { # expects URL as argument ($1)
|
download_file () { # expects URL as argument ($1)
|
||||||
declare -r tf=$(mktemp)
|
declare -r tf=$(mktemp)
|
||||||
|
|
||||||
@ -122,36 +121,33 @@ open_file () { # expects one argument: file_path
|
|||||||
|
|
||||||
readIniFile () { # expects one argument: absolute path of profiles.ini
|
readIniFile () { # expects one argument: absolute path of profiles.ini
|
||||||
declare -r inifile="$1"
|
declare -r inifile="$1"
|
||||||
declare -r tfile=$(mktemp)
|
|
||||||
|
|
||||||
if [ $(grep '^\[Profile' "$inifile" | wc -l) == "1" ]; then ### only 1 profile found
|
# tempIni will contain: [ProfileX], Name=, IsRelative= and Path= (and Default= if present) of the only (if) or the selected (else) profile
|
||||||
grep '^\[Profile' -A 4 "$inifile" | grep -v '^\[Profile' > $tfile
|
if [ $(grep -c '^\[Profile' "${inifile}") -eq "1" ]; then ### only 1 profile found
|
||||||
|
tempIni="$(grep '^\[Profile' -A 4 "${inifile}")"
|
||||||
else
|
else
|
||||||
grep -E -v '^\[General\]|^StartWithLastProfile=|^IsRelative=' "$inifile"
|
echo -e "Profiles found:\n––––––––––––––––––––––––––––––"
|
||||||
echo ''
|
## cmd-substitution to strip trailing newlines and in quotes to keep internal ones:
|
||||||
|
echo "$(grep --color=never -E 'Default=[^1]|\[Profile[0-9]*\]|Name=|Path=|^$' "${inifile}")"
|
||||||
|
echo '––––––––––––––––––––––––––––––'
|
||||||
read -p 'Select the profile number ( 0 for Profile0, 1 for Profile1, etc ) : ' -r
|
read -p 'Select the profile number ( 0 for Profile0, 1 for Profile1, etc ) : ' -r
|
||||||
echo -e "\n"
|
echo -e "\n"
|
||||||
if [[ $REPLY =~ ^(0|[1-9][0-9]*)$ ]]; then
|
if [[ $REPLY =~ ^(0|[1-9][0-9]*)$ ]]; then
|
||||||
grep '^\[Profile'${REPLY} -A 4 "$inifile" | grep -v '^\[Profile'${REPLY} > $tfile
|
tempIni="$(grep "^\[Profile${REPLY}" -A 4 "${inifile}")" || {
|
||||||
if [[ "$?" != "0" ]]; then
|
echo -e "${RED}Profile${REPLY} does not exist!${NC}" && exit 1
|
||||||
echo "Profile${REPLY} does not exist!" && exit 1
|
}
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "Invalid selection!" && exit 1
|
echo -e "${RED}Invalid selection!${NC}" && exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
declare -r profpath=$(grep '^Path=' $tfile)
|
# extracting 0 or 1 from the "IsRelative=" line
|
||||||
declare -r pathisrel=$(grep '^IsRelative=' $tfile)
|
declare -r pathisrel=$(sed -n 's/^IsRelative=\([01]\)$/\1/p' <<< "${tempIni}")
|
||||||
|
|
||||||
rm "$tfile"
|
# extracting only the path itself, excluding "Path="
|
||||||
|
PROFILE_PATH=$(sed -n 's/^Path=\(.*\)$/\1/p' <<< "${tempIni}")
|
||||||
# update global variable
|
# update global variable if path is relative
|
||||||
if [[ ${pathisrel#*=} == "1" ]]; then
|
[[ ${pathisrel} == "1" ]] && PROFILE_PATH="$(dirname "${inifile}")/${PROFILE_PATH}"
|
||||||
PROFILE_PATH="$(dirname "$inifile")/${profpath#*=}"
|
|
||||||
else
|
|
||||||
PROFILE_PATH="${profpath#*=}"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getProfilePath () {
|
getProfilePath () {
|
||||||
@ -161,16 +157,14 @@ getProfilePath () {
|
|||||||
if [ "$PROFILE_PATH" = false ]; then
|
if [ "$PROFILE_PATH" = false ]; then
|
||||||
PROFILE_PATH="$SCRIPT_DIR"
|
PROFILE_PATH="$SCRIPT_DIR"
|
||||||
elif [ "$PROFILE_PATH" = 'list' ]; then
|
elif [ "$PROFILE_PATH" = 'list' ]; then
|
||||||
local ini=''
|
|
||||||
if [[ -f "$f1" ]]; then
|
if [[ -f "$f1" ]]; then
|
||||||
ini="$f1"
|
readIniFile "$f1" # updates PROFILE_PATH or exits on error
|
||||||
elif [[ -f "$f2" ]]; then
|
elif [[ -f "$f2" ]]; then
|
||||||
ini="$f2"
|
readIniFile "$f2"
|
||||||
else
|
else
|
||||||
echo -e "${RED}Error: Sorry, -l is not supported for your OS${NC}"
|
echo -e "${RED}Error: Sorry, -l is not supported for your OS${NC}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
readIniFile "$ini" # updates PROFILE_PATH or exits on error
|
|
||||||
#else
|
#else
|
||||||
# PROFILE_PATH already set by user with -p
|
# PROFILE_PATH already set by user with -p
|
||||||
fi
|
fi
|
||||||
@ -191,14 +185,12 @@ get_updater_version () {
|
|||||||
# -d: 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
|
||||||
# -u: 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
|
[ $UPDATE = 'no' ] && return 0 # User signified not to check for updates
|
||||||
return 0 # User signified not to check for updates
|
|
||||||
fi
|
|
||||||
|
|
||||||
declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/updater.sh')"
|
declare -r tmpfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/updater.sh')"
|
||||||
[ -z "${tmpfile}" ] && echo -e "${RED}Error! Could not download updater.sh${NC}" && return 1 # check if download failed
|
[ -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_FILE") < $(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
|
||||||
@ -208,13 +200,12 @@ update_updater () {
|
|||||||
else
|
else
|
||||||
return 0 # No update available
|
return 0 # No update available
|
||||||
fi
|
fi
|
||||||
mv "${tmpfile}" "${SCRIPT_DIR}/updater.sh"
|
mv "${tmpfile}" "$SCRIPT_FILE"
|
||||||
chmod u+x "${SCRIPT_DIR}/updater.sh"
|
chmod u+x "$SCRIPT_FILE"
|
||||||
"${SCRIPT_DIR}/updater.sh" "$@" -d
|
"$SCRIPT_FILE" "$@" -d
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# Update user.js #
|
# Update user.js #
|
||||||
#########################
|
#########################
|
||||||
|
BIN
wikipiki/parseError.png
Normal file
BIN
wikipiki/parseError.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
Reference in New Issue
Block a user