diff --git a/scratchpad-scripts/arkenfox-clear-removed.js b/scratchpad-scripts/arkenfox-clear-removed.js index 9a89288..20e7305 100644 --- a/scratchpad-scripts/arkenfox-clear-removed.js +++ b/scratchpad-scripts/arkenfox-clear-removed.js @@ -1,7 +1,7 @@ /*** This will reset the preferences that have been removed completely from the arkenfox user.js. - Last updated: 27-Feb-2021 + Last updated: 04-Mar-2021 For instructions see: https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts] @@ -9,7 +9,7 @@ (function() { let ops = [ - /* removed in arkenfox user.js v52-57 */ + /* removed in arkenfox user.js */ /* 52-alpha */ 'browser.search.reset.enabled', 'browser.search.reset.whitelist', @@ -26,7 +26,6 @@ '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 diff --git a/updater.sh b/updater.sh index 5f37ebc..e265445 100755 --- a/updater.sh +++ b/updater.sh @@ -2,7 +2,7 @@ ## arkenfox user.js updater for macOS and Linux -## version: 2.9 +## version: 3.0 ## Author: Pat Johnson (@overdodactyl) ## Additional contributors: @earthlng, @ema-pe, @claustromaniac @@ -103,7 +103,6 @@ Optional Arguments: # File Handling # ######################### -# Download files download_file () { # expects URL as argument ($1) declare -r tf=$(mktemp) @@ -122,36 +121,33 @@ open_file () { # expects one argument: file_path readIniFile () { # expects one argument: absolute path of profiles.ini declare -r inifile="$1" - declare -r tfile=$(mktemp) - if [ $(grep '^\[Profile' "$inifile" | wc -l) == "1" ]; then ### only 1 profile found - grep '^\[Profile' -A 4 "$inifile" | grep -v '^\[Profile' > $tfile + # tempIni will contain: [ProfileX], Name=, IsRelative= and Path= (and Default= if present) of the only (if) or the selected (else) profile + if [ $(grep -c '^\[Profile' "${inifile}") -eq "1" ]; then ### only 1 profile found + tempIni="$(grep '^\[Profile' -A 4 "${inifile}")" else - grep -E -v '^\[General\]|^StartWithLastProfile=|^IsRelative=' "$inifile" - echo '' + echo -e "Profiles found:\n––––––––––––––––––––––––––––––" + ## 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 echo -e "\n" if [[ $REPLY =~ ^(0|[1-9][0-9]*)$ ]]; then - grep '^\[Profile'${REPLY} -A 4 "$inifile" | grep -v '^\[Profile'${REPLY} > $tfile - if [[ "$?" != "0" ]]; then - echo "Profile${REPLY} does not exist!" && exit 1 - fi + tempIni="$(grep "^\[Profile${REPLY}" -A 4 "${inifile}")" || { + echo -e "${RED}Profile${REPLY} does not exist!${NC}" && exit 1 + } else - echo "Invalid selection!" && exit 1 + echo -e "${RED}Invalid selection!${NC}" && exit 1 fi fi - declare -r profpath=$(grep '^Path=' $tfile) - declare -r pathisrel=$(grep '^IsRelative=' $tfile) + # extracting 0 or 1 from the "IsRelative=" line + declare -r pathisrel=$(sed -n 's/^IsRelative=\([01]\)$/\1/p' <<< "${tempIni}") - rm "$tfile" - - # update global variable - if [[ ${pathisrel#*=} == "1" ]]; then - PROFILE_PATH="$(dirname "$inifile")/${profpath#*=}" - else - PROFILE_PATH="${profpath#*=}" - fi + # extracting only the path itself, excluding "Path=" + PROFILE_PATH=$(sed -n 's/^Path=\(.*\)$/\1/p' <<< "${tempIni}") + # update global variable if path is relative + [[ ${pathisrel} == "1" ]] && PROFILE_PATH="$(dirname "${inifile}")/${PROFILE_PATH}" } getProfilePath () { @@ -161,16 +157,14 @@ getProfilePath () { if [ "$PROFILE_PATH" = false ]; then PROFILE_PATH="$SCRIPT_DIR" elif [ "$PROFILE_PATH" = 'list' ]; then - local ini='' if [[ -f "$f1" ]]; then - ini="$f1" + readIniFile "$f1" # updates PROFILE_PATH or exits on error elif [[ -f "$f2" ]]; then - ini="$f2" + readIniFile "$f2" else echo -e "${RED}Error: Sorry, -l is not supported for your OS${NC}" exit 1 fi - readIniFile "$ini" # updates PROFILE_PATH or exits on error #else # PROFILE_PATH already set by user with -p fi @@ -191,9 +185,7 @@ get_updater_version () { # -d: New version will not be looked for and update will not occur # -u: Check for update, if available, execute without asking update_updater () { - if [ $UPDATE = 'no' ]; then - return 0 # User signified not to check for updates - fi + [ $UPDATE = 'no' ] && return 0 # User signified not to check for updates 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 @@ -214,7 +206,6 @@ update_updater () { exit 0 } - ######################### # Update user.js # ######################### diff --git a/user.js b/user.js index 4ba99ef..2eee2e0 100644 --- a/user.js +++ b/user.js @@ -1025,8 +1025,8 @@ user_pref("_user.js.parrot", "2400 syntax error: the parrot's kicked the bucket! /* 2402: disable website access to clipboard events/content [SETUP-HARDEN] * [NOTE] This will break some sites' functionality e.g. Outlook, Twitter, Facebook, Wordpress * This applies to onCut/onCopy/onPaste events - i.e. it requires interaction with the website - * [WARNING] In FF87 or lower, if both 'middlemouse.paste' and 'general.autoScroll' - * are true (at least one is default false) then clipboard events can leak [1] + * [WARNING] If both 'middlemouse.paste' and 'general.autoScroll' are true (at least one + * is default false) then enabling this pref can leak clipboard content [1] * [1] https://bugzilla.mozilla.org/1528289 ***/ // user_pref("dom.event.clipboardevents.enabled", false); /* 2404: disable clipboard commands (cut/copy) from "non-privileged" content [FF41+]