From 9453cec4aa737dc0c049c3d3c184356974e34b23 Mon Sep 17 00:00:00 2001 From: a1346054 <36859588+a1346054@users.noreply.github.com> Date: Tue, 21 Sep 2021 16:00:15 +0000 Subject: [PATCH 1/4] Use direct check for existence of file --- updater.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/updater.sh b/updater.sh index 6f761c9d..f8bc52ca 100755 --- a/updater.sh +++ b/updater.sh @@ -41,9 +41,9 @@ ESR=false # Download method priority: curl -> wget DOWNLOAD_METHOD='' -if [[ $(command -v 'curl') ]]; then +if command -v curl >/dev/null; then DOWNLOAD_METHOD='curl --max-redirs 3 -so' -elif [[ $(command -v 'wget') ]]; then +elif command -v wget >/dev/null; then DOWNLOAD_METHOD='wget --max-redirect 3 --quiet -O' else echo -e "${RED}This script requires curl or wget.\nProcess aborted${NC}" From b6cd975f371064dc1443e8e495a311ee8c7b988d Mon Sep 17 00:00:00 2001 From: a1346054 <36859588+a1346054@users.noreply.github.com> Date: Tue, 21 Sep 2021 16:05:06 +0000 Subject: [PATCH 2/4] Fix shellcheck warnings --- prefsCleaner.sh | 6 +++--- updater.sh | 36 ++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/prefsCleaner.sh b/prefsCleaner.sh index 60cf70ef..497ebde6 100644 --- a/prefsCleaner.sh +++ b/prefsCleaner.sh @@ -20,7 +20,7 @@ cd "$(dirname "${sfp}")" fQuit() { ## change directory back to the original working directory cd "${currdir}" - [ $1 -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2 + [ "$1" -eq 0 ] && echo -e "\n$2" || echo -e "\n$2" >&2 exit $1 } @@ -36,7 +36,7 @@ fFF_check() { # this isn't elegant and might not be future-proof but should at least be compatible with any environment while [ -e lock ]; do echo -e "\nThis Firefox profile seems to be in use. Close Firefox and try again.\n" >&2 - read -p "Press any key to continue." + read -r -p "Press any key to continue." done } @@ -48,7 +48,7 @@ fClean() { if [[ "$line" =~ $prefexp && $prefs != *"@@${BASH_REMATCH[1]}@@"* ]]; then prefs="${prefs}${BASH_REMATCH[1]}@@" fi - done <<< "`grep -E \"$prefexp\" user.js`" + done <<< "$(grep -E \"$prefexp\" user.js)" while IFS='' read -r line || [[ -n "$line" ]]; do if [[ "$line" =~ ^$prefexp ]]; then diff --git a/updater.sh b/updater.sh index f8bc52ca..6fafb08f 100755 --- a/updater.sh +++ b/updater.sh @@ -123,7 +123,7 @@ readIniFile () { # expects one argument: absolute path of profiles.ini declare -r inifile="$1" # 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 + if [ "$(grep -c '^\[Profile' "${inifile}")" -eq "1" ]; then ### only 1 profile found tempIni="$(grep '^\[Profile' -A 4 "${inifile}")" else echo -e "Profiles found:\n––––––––––––––––––––––––––––––" @@ -176,7 +176,7 @@ getProfilePath () { # Returns the version number of a updater.sh file get_updater_version () { - echo $(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1") + echo "$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")" } # Update updater.sh @@ -185,13 +185,13 @@ 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 () { - [ $UPDATE = 'no' ] && return 0 # User signified not to check for updates + [ "$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 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}" read -p "" -n 1 -r echo -e "\n\n" @@ -212,7 +212,7 @@ update_updater () { # Returns version number of a user.js file get_userjs_version () { - [ -e $1 ] && echo "$(sed -n '4p' "$1")" || echo "Not detected." + [ -e "$1" ] && echo "$(sed -n '4p' "$1")" || echo "Not detected." } add_override () { @@ -246,16 +246,16 @@ update_userjs () { echo -e "Please observe the following information: Firefox profile: ${ORANGE}$(pwd)${NC} - Available online: ${ORANGE}$(get_userjs_version $newfile)${NC} + Available online: ${ORANGE}$(get_userjs_version "$newfile")${NC} Currently using: ${ORANGE}$(get_userjs_version user.js)${NC}\n\n" - if [ $CONFIRM = 'yes' ]; then + if [ "$CONFIRM" = 'yes' ]; then echo -e "This script will update to the latest user.js file and append any custom configurations from user-overrides.js. ${RED}Continue Y/N? ${NC}" read -p "" -n 1 -r echo -e "\n" if [[ $REPLY =~ ^[Nn]$ ]]; then echo -e "${RED}Process aborted${NC}" - rm $newfile + rm "$newfile" return 1 fi fi @@ -269,7 +269,7 @@ update_userjs () { # backup user.js mkdir -p userjs_backups local bakname="userjs_backups/user.js.backup.$(date +"%Y-%m-%d_%H%M")" - [ $BACKUP = 'single' ] && bakname='userjs_backups/user.js.backup' + [ "$BACKUP" = 'single' ] && bakname='userjs_backups/user.js.backup' cp user.js "$bakname" &>/dev/null mv "${newfile}" user.js @@ -295,19 +295,19 @@ update_userjs () { past_nocomments='userjs_diffs/past_userjs.txt' current_nocomments='userjs_diffs/current_userjs.txt' - remove_comments $pastuserjs $past_nocomments - remove_comments user.js $current_nocomments + remove_comments "$pastuserjs" "$past_nocomments" + remove_comments user.js "$current_nocomments" diffname="userjs_diffs/diff_$(date +"%Y-%m-%d_%H%M").txt" - diff=$(diff -w -B -U 0 $past_nocomments $current_nocomments) - if [ ! -z "$diff" ]; then + diff=$(diff -w -B -U 0 "$past_nocomments" "$current_nocomments") + if [ -n "$diff" ]; then echo "$diff" > "$diffname" echo -e "Status: ${GREEN}A diff file was created:${NC} ${PWD}/${diffname}" else echo -e "Warning: ${ORANGE}Your new user.js file appears to be identical. No diff file was created.${NC}" - [ $BACKUP = 'multiple' ] && rm $bakname &>/dev/null + [ "$BACKUP" = 'multiple' ] && rm "$bakname" &>/dev/null fi - rm $past_nocomments $current_nocomments $pastuserjs &>/dev/null + rm "$past_nocomments" "$current_nocomments" "$pastuserjs" &>/dev/null fi [ "$VIEW" = true ] && open_file "${PWD}/user.js" @@ -319,7 +319,7 @@ update_userjs () { if [ $# != 0 ]; then # Display usage if first argument is -help or --help - if [ $1 = '--help' ] || [ $1 = '-help' ]; then + if [ "$1" = '--help' ] || [ "$1" = '-help' ]; then usage else while getopts ":hp:ludsno:bcvre" opt; do @@ -363,7 +363,7 @@ if [ $# != 0 ]; then r) tfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/user.js')" [ -z "${tfile}" ] && echo -e "${RED}Error! Could not download user.js${NC}" && exit 1 # check if download failed - mv $tfile "${tfile}.js" + mv "$tfile" "${tfile}.js" echo -e "${ORANGE}Warning: user.js was saved to temporary file ${tfile}.js${NC}" open_file "${tfile}.js" exit 0 @@ -382,7 +382,7 @@ if [ $# != 0 ]; then fi show_banner -update_updater $@ +update_updater "$@" getProfilePath # updates PROFILE_PATH or exits on error cd "$PROFILE_PATH" && update_userjs From 4ae22a0d8ab6355e4515de4ab769d178c04150ea Mon Sep 17 00:00:00 2001 From: a1346054 <36859588+a1346054@users.noreply.github.com> Date: Tue, 21 Sep 2021 16:01:29 +0000 Subject: [PATCH 3/4] Unify codestyle in scripts --- updater.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/updater.sh b/updater.sh index 6fafb08f..a1f70707 100755 --- a/updater.sh +++ b/updater.sh @@ -51,7 +51,7 @@ else fi -show_banner () { +show_banner() { echo -e "${BBLUE} ############################################################################ #### #### @@ -103,13 +103,13 @@ Optional Arguments: # File Handling # ######################### -download_file () { # expects URL as argument ($1) +download_file() { # expects URL as argument ($1) declare -r tf=$(mktemp) $DOWNLOAD_METHOD "${tf}" "$1" && echo "$tf" || echo '' # return the temp-filename or empty string on error } -open_file () { # expects one argument: file_path +open_file() { # expects one argument: file_path if [ "$(uname)" == 'Darwin' ]; then open "$1" elif [ "$(uname -s | cut -c -5)" == "Linux" ]; then @@ -119,7 +119,7 @@ open_file () { # expects one argument: file_path fi } -readIniFile () { # expects one argument: absolute path of profiles.ini +readIniFile() { # expects one argument: absolute path of profiles.ini declare -r inifile="$1" # tempIni will contain: [ProfileX], Name=, IsRelative= and Path= (and Default= if present) of the only (if) or the selected (else) profile @@ -150,7 +150,7 @@ readIniFile () { # expects one argument: absolute path of profiles.ini [[ ${pathisrel} == "1" ]] && PROFILE_PATH="$(dirname "${inifile}")/${PROFILE_PATH}" } -getProfilePath () { +getProfilePath() { declare -r f1=~/Library/Application\ Support/Firefox/profiles.ini declare -r f2=~/.mozilla/firefox/profiles.ini @@ -175,7 +175,7 @@ getProfilePath () { ######################### # Returns the version number of a updater.sh file -get_updater_version () { +get_updater_version() { echo "$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")" } @@ -184,7 +184,7 @@ get_updater_version () { # Args: # -d: New version will not be looked for and update will not occur # -u: Check for update, if available, execute without asking -update_updater () { +update_updater() { [ "$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')" @@ -211,11 +211,11 @@ update_updater () { ######################### # Returns version number of a user.js file -get_userjs_version () { +get_userjs_version() { [ -e "$1" ] && echo "$(sed -n '4p' "$1")" || echo "Not detected." } -add_override () { +add_override() { input=$1 if [ -f "$input" ]; then echo "" >> user.js @@ -235,12 +235,12 @@ add_override () { fi } -remove_comments () { # expects 2 arguments: from-file and to-file +remove_comments() { # expects 2 arguments: from-file and to-file sed -e '/^\/\*.*\*\/[[:space:]]*$/d' -e '/^\/\*/,/\*\//d' -e 's|^[[:space:]]*//.*$||' -e '/^[[:space:]]*$/d' -e 's|);[[:space:]]*//.*|);|' "$1" > "$2" } # Applies latest version of user.js and any custom overrides -update_userjs () { +update_userjs() { declare -r newfile="$(download_file 'https://raw.githubusercontent.com/arkenfox/user.js/master/user.js')" [ -z "${newfile}" ] && echo -e "${RED}Error! Could not download user.js${NC}" && return 1 # check if download failed From 54b0b2a15ec55c321b43a0724ece69c9f02167bf Mon Sep 17 00:00:00 2001 From: a1346054 <36859588+a1346054@users.noreply.github.com> Date: Tue, 21 Sep 2021 15:50:33 +0000 Subject: [PATCH 4/4] Trim excess whitespace --- README.md | 4 +--- scratchpad-scripts/arkenfox-clear-RFP-alternatives.js | 3 +-- scratchpad-scripts/troubleshooter.js | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 39ddaa1b..1522a3ed 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The `arkenfox user.js` is a **template** which aims to provide as much privacy a Everyone, experts included, should at least read the [implementation](https://github.com/arkenfox/user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `user.js` settings. -Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services. +Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services. Also be aware that the `arkenfox user.js` is made specifically for desktop Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser. @@ -23,5 +23,3 @@ Also be aware that the `arkenfox user.js` is made specifically for desktop Firef ### 🟥 acknowledgments Literally thousands of sources, references and suggestions. Many thanks, and much appreciated. - - diff --git a/scratchpad-scripts/arkenfox-clear-RFP-alternatives.js b/scratchpad-scripts/arkenfox-clear-RFP-alternatives.js index 9d251d45..4821fc3d 100644 --- a/scratchpad-scripts/arkenfox-clear-RFP-alternatives.js +++ b/scratchpad-scripts/arkenfox-clear-RFP-alternatives.js @@ -7,7 +7,7 @@ As of v91, section 4600 is no longer recommended, and is all inactive. This now includes the old 4700 section. You can reset them using prefsCleaner. - + For instructions see: https://github.com/arkenfox/user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts] ***/ @@ -69,4 +69,3 @@ return 'all done'; })(); - diff --git a/scratchpad-scripts/troubleshooter.js b/scratchpad-scripts/troubleshooter.js index be64708f..bd867867 100644 --- a/scratchpad-scripts/troubleshooter.js +++ b/scratchpad-scripts/troubleshooter.js @@ -1,4 +1,3 @@ - /*** arkenfox user.js troubleshooter.js v1.6.3 ***/ (function() { @@ -194,7 +193,7 @@ const aBAK = getMyList(aPREFS); //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" +