Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simple maintenance improvements #1255

Merged
merged 4 commits into from
Sep 27, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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.


6 changes: 3 additions & 3 deletions prefsCleaner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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
}

Expand All @@ -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
Expand Down
3 changes: 1 addition & 2 deletions scratchpad-scripts/arkenfox-clear-RFP-alternatives.js
Original file line number Diff line number Diff line change
Expand Up @@ -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]
***/
Expand Down Expand Up @@ -69,4 +69,3 @@
return 'all done';

})();

3 changes: 1 addition & 2 deletions scratchpad-scripts/troubleshooter.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

/*** arkenfox user.js troubleshooter.js v1.6.3 ***/

(function() {
Expand Down Expand Up @@ -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" +
Expand Down
62 changes: 31 additions & 31 deletions updater.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,17 @@ 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}"
exit 1
fi


show_banner () {
show_banner() {
echo -e "${BBLUE}
############################################################################
#### ####
Expand Down Expand Up @@ -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
Expand All @@ -119,11 +119,11 @@ 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
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––––––––––––––––––––––––––––––"
Expand All @@ -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

Expand All @@ -175,23 +175,23 @@ getProfilePath () {
#########################

# Returns the version number of a updater.sh file
get_updater_version () {
echo $(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")
get_updater_version() {
echo "$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$1")"
}

# Update updater.sh
# Default: Check for update, if available, ask user if they want to execute it
# 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 = 'no' ] && return 0 # User signified not to check for updates
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')"
[ -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"
Expand All @@ -211,11 +211,11 @@ update_updater () {
#########################

# Returns version number of a user.js file
get_userjs_version () {
[ -e $1 ] && echo "$(sed -n '4p' "$1")" || echo "Not detected."
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
Expand All @@ -235,27 +235,27 @@ 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

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
Expand All @@ -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
Expand All @@ -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"
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down