#!/bin/bash
-# Copyright (C) 2016 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# See the License for the specific language governing permissions and
# limitations under the License.
-if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi
+
+if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi
# stable version is shown on:
# we exclude verions with letters, as that seems to
# be a relatively reliable indication of alpha/beta releases.
-vers=($(curl -s https://dist.torproject.org/torbrowser/ \
- | sed -rn 's#.*href="([0-9]+\.[0-9]+[.0-9]*)/.*#\1#p' \
- | sort -Vr))
-
-
+# Their server has failed a few times on me, so do some retrying.
+for (( i=0; i <= 6 ; i++ )); do
+ c=$(curl -s https://dist.torproject.org/torbrowser/) && break
+ sleep 15
+done
+if [[ ! $c ]]; then
+ echo "$0: error: failed to curl tor directory listing" >&2
+ exit 1
+fi
+vers=($(printf "%s\n" "$c" | sed -rn 's#.*href="([0-9]+\.[0-9]+[.0-9]*)/.*#\1#p' | sort -Vr))
# by default it has perms for just 1 non-root user, which is ok for now.
cd /a/opt
-ver=${vers[0]}
dl() {
- f=tor-browser-linux64-${ver}_en-US.tar.xz
+ f=tor-browser-linux64-${ver}_ALL.tar.xz
if [[ -e $f ]]; then
timestamp=$(stat -c %Y $f)
else
timestamp=0
fi
+ ret=0
echo wget -nv -N https://www.torproject.org/dist/torbrowser/$ver/$f
wget -nv -N https://www.torproject.org/dist/torbrowser/$ver/$f || ret=$?
}
-dl
-# 8 is return code for 404. for a new release, they might not have released to linux yet.
-if [[ $ret == 8 ]]; then
- ver=${vers[1]}
+
+# some releases are for specific non-gnu oses
+for ((i=0; i<${#vers[@]}; i++)); do
+ ver=${vers[i]}
dl
-fi
+ # 8 is return code for 404.
+ if [[ $ret != 8 ]]; then
+ break
+ fi
+done
new_timestamp=$(stat -c %Y $f)
-if [[ $timestamp != $new_timestamp || ! -e /a/opt/tor-browser_en-US/Browser/start-tor-browser ]]; then
+if [[ $timestamp != $new_timestamp || ! -e /a/opt/tor-browser/Browser/start-tor-browser ]]; then
# not already installed
- rm -rf tor-browser_en-US
+ rm -rf tor-browser
tar Jxf $f
+
+
+
+ ## begin handlers customization
+ ## the default file doesn't exist anymore. i customized it to open magnet links,
+ ## it might work with removing the default stuff and keeping the magnet link part,
+ ## but I'd have to test and I don't care that much.
+ # dest=/a/opt/tor-browser/Browser/TorBrowser/Data/Browser/profile.default/handlers.json
+ # orig=/p/c/tor-handlers-orig.json
+ # src=/p/c/tor-handlers.json
+ # if ! diff -q $src $dest &>/dev/null; then
+ # echo "Error: handlers file changed. adjust based on upstream"
+ # exit 1
+ # fi
+ # cp $src $dest
+ ## end handlers customization
+
+ cp /p/c/tor-user.js /a/opt/tor-browser/Browser/TorBrowser/Data/Browser/profile.default/user.js
+
fi
for x in tor-*.tar.xz; do
[[ $x != $f ]] || continue
command rm -f $x
done
-sudo ln -sf /a/opt/tor-browser_en-US/Browser/start-tor-browser /usr/local/bin