tons of updates, should have checked in sooner
[buildscripts] / tor-browser
1 #!/bin/bash
2 # Copyright (C) 2016 Ian Kelling
3
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi
17
18
19 # stable version is shown on:
20 # https://dist.torproject.org/torbrowser/
21 # except sometimes you get a new stable before it's
22 # officially released, which is ok by me. for example,
23 # right now, it has 6.5.2, but stable is 6.5.1.
24 # we exclude verions with letters, as that seems to
25 # be a relatively reliable indication of alpha/beta releases.
26
27 # Their server has failed a few times on me, so do some retrying.
28 for (( i=0; i <= 6 ; i++ )); do
29 c=$(curl -s https://dist.torproject.org/torbrowser/) && break
30 sleep 15
31 done
32 if [[ ! $c ]]; then
33 echo "$0: error: failed to curl tor directory listing" >&2
34 exit 1
35 fi
36 vers=($(printf "%s\n" "$c" | sed -rn 's#.*href="([0-9]+\.[0-9]+[.0-9]*)/.*#\1#p' | sort -Vr))
37
38 # by default it has perms for just 1 non-root user, which is ok for now.
39
40 cd /a/opt
41
42 ver=${vers[0]}
43 dl() {
44 f=tor-browser-linux64-${ver}_en-US.tar.xz
45 if [[ -e $f ]]; then
46 timestamp=$(stat -c %Y $f)
47 else
48 timestamp=0
49 fi
50 echo wget -nv -N https://www.torproject.org/dist/torbrowser/$ver/$f
51 wget -nv -N https://www.torproject.org/dist/torbrowser/$ver/$f || ret=$?
52 }
53 dl
54 # 8 is return code for 404. for a new release, they might not have released to linux yet.
55 if [[ $ret == 8 ]]; then
56 ver=${vers[1]}
57 dl
58 fi
59
60 new_timestamp=$(stat -c %Y $f)
61 if [[ $timestamp != $new_timestamp || ! -e /a/opt/tor-browser_en-US/Browser/start-tor-browser ]]; then
62 # not already installed
63 rm -rf tor-browser_en-US
64 tar Jxf $f
65
66 ## begin handlers customization
67 dest=/a/opt/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default/handlers.json
68 orig=/p/c/tor-handlers-orig.json
69 src=/p/c/tor-handlers.json
70 if diff -q $src $dest; then
71 echo "Error: handlers file changed. adjust based on upstream"
72 exit 1
73 fi
74 cp $src $dest
75 ## end handlers customization
76
77 cp /p/c/tor-user.js /a/opt/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default/user.js
78
79 fi
80
81 for x in tor-*.tar.xz; do
82 # cleanup old tarballs
83 [[ -e $x ]] || break
84 [[ $x != $f ]] || continue
85 command rm -f $x
86 done