add and fix
[buildscripts] / tor-browser
index f9a6e45bbf2c7faac604fc72810ce0e6d6d9a1a5..b7f7de9902c5d3562eba1d888c51b94c5fb340f2 100755 (executable)
@@ -25,29 +25,45 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?"' ERR
 # we exclude verions with letters, as that seems to
 # be a relatively reliable indication of alpha/beta releases.
 
-ver=$(curl -s https://dist.torproject.org/torbrowser/ \
+vers=($(curl -s https://dist.torproject.org/torbrowser/ \
           | sed -rn 's#.*href="([0-9]+\.[0-9]+[.0-9]*)/.*#\1#p' \
-          | sort -Vr | head -n 1)
+          | sort -Vr))
+
 
 
 # by default it has perms for just 1 non-root user, which is ok for now.
 
 cd /a/opt
 
-f=tor-browser-linux64-${ver}_en-US.tar.xz
-timestamp=$(stat -c %Y $f) ||:
-wget -N https://www.torproject.org/dist/torbrowser/$ver/$f
-new_timestamp=$(stat -c %Y $f) ||:
+ver=${vers[0]}
+dl() {
+  f=tor-browser-linux64-${ver}_en-US.tar.xz
+  if [[ -e $f ]]; then
+    timestamp=$(stat -c %Y $f)
+  else
+    timestamp=0
+  fi
+  echo wget -N https://www.torproject.org/dist/torbrowser/$ver/$f
+  wget -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]}
+  dl
+fi
+
+new_timestamp=$(stat -c %Y $f)
 if [[ $timestamp != $new_timestamp || ! -e /a/opt/tor-browser_en-US/Browser/start-tor-browser ]]; then
-   # not already installed
-    rm -rf tor-browser_en-US
-    ex $f
+  # not already installed
+  rm -rf tor-browser_en-US
+  ex $f
 fi
 
 for x in tor-*.tar.xz; do
-    # cleanup old tarballs
-    [[ -e $x ]] || break
-    [[ $x != $f ]] || continue
-    command rm -f $x
+  # cleanup old tarballs
+  [[ -e $x ]] || break
+  [[ $x != $f ]] || continue
+  command rm -f $x
 done
 s lnf /a/opt/tor-browser_en-US/Browser/start-tor-browser /usr/local/bin