aboutsummaryrefslogtreecommitdiff
path: root/contrib/osx/TorPostflight
blob: 26e0de001060883877dd4466adaa1c2c95426b9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/sh

# TorPostflight gets invoked after any install or upgrade.

ADDSYSUSER=$RECEIPT_PATH/addsysuser
if [ ! -x "$ADDSYSUSER" ]; then
  echo "Could not find addsysuser script."
  exit 1
fi

TORUSER=_tor
TORGROUP=daemon
TARGET=$2/Library/Tor
TORDIR=$TARGET/var/lib/tor
LOGDIR=$TARGET/var/log/tor

# Check defaults for TARGET
if [ "$TARGET" == "//Library/Tor" ]; then
	TARGET=/Library/Tor
fi

## Determine OSX Version
# map version to name
if [ -x /usr/bin/sw_vers ]; then
# This is poor, yet functional.  We don't care about the 3rd number in
# the OS version
  OSVER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2`
  case "$OSVER" in
 	"10.5") OS="leopard";;
	"10.4") OS="tiger";;
	"10.3") OS="panther";;
	"10.2") OS="jaguar";;
	"10.1") OS="puma";;
	"10.0") OS="cheetah";;
	*) OS="unknown";;
  esac
else
  OS="unknown"
fi

# Create user $TORUSER in group daemon.  If it's already there, great.
$ADDSYSUSER $TORUSER "Tor System user" $TORDIR

# Create the tor directory, if it doesn't exist.
if [ ! -d $TORDIR ]; then
  mkdir -p $TORDIR
fi
if [ ! -d $LOGDIR ]; then
  mkdir -p $LOGDIR
fi
# Check its permissions.
chown $TORUSER $TORDIR
chgrp daemon $TORDIR
chmod 700 $TORDIR
chown $TORUSER $LOGDIR
chgrp daemon $LOGDIR
chmod 700 $LOGDIR

# Create the configuration file only if there wan't one already.
if [ ! -f $TARGET/torrc ]; then
  cp $TARGET/torrc.sample $TARGET/torrc
fi

# Ensure symbolic links
cd /usr/bin
if [ -e /usr/bin/tor -a ! -L /usr/bin/tor ]; then
  mv tor tor_old
fi
if [ -e /usr/bin/tor-resolve -a ! -L /usr/bin/tor-resolve ]; then
  mv tor-resolve tor-resolve_old
fi
ln -sf $TARGET/tor .
ln -sf $TARGET/tor-resolve .

cd /usr/share/man/man1
MAN1=$TARGET/man/man1
ln -sf $MAN1/*.1 .

if [ ! -e /var/log/tor -o -L /var/log/tor ]; then
  cd /var/log
  rm -f tor
  ln -sf $LOGDIR tor
fi

if [ -d /Library/StartupItems/Tor ]; then
  rm -f /Library/StartupItems/Tor/Tor.loc
  echo "$TARGET" > /Library/StartupItems/Tor/Tor.loc
fi

if [ -d /Library/StartupItems/Privoxy ]; then
  find /Library/StartupItems/Privoxy -print0 | xargs -0 chown root:wheel
fi

# Copy Documentation
if [ -d $PACKAGE_PATH/Contents/Resources/documents ];then
   cp -r $PACKAGE_PATH/Contents/Resources/documents $TARGET/documents
fi

# Copy Uninstaller
if [ -f $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.applescript ]; then 
   cp $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.applescript $TARGET/Tor_Uninstaller.applescript
   chmod 755 $TARGET/Tor_Uninstaller.applescript
fi

if [ -f $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.app.tar.gz ]; then 
   cp $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.app.tar.gz $TARGET/Tor_Uninstaller.app.tar.gz
   cd $TARGET && tar zxf Tor_Uninstaller.app.tar.gz 
   chmod -R 755 $TARGET/Tor_Uninstaller.app
   chown -R _tor:_tor Tor_Uninstaller.app
   rm $TARGET/Tor_Uninstaller.app.tar.gz
fi

if [ -f $PACKAGE_PATH/Contents/Resources/uninstall_tor_bundle.sh ]; then
   cp $PACKAGE_PATH/Contents/Resources/uninstall_tor_bundle.sh $TARGET/uninstall_tor_bundle.sh
   chmod 755 $TARGET/uninstall_tor_bundle.sh
fi

if [ -f $PACKAGE_PATH/Contents/Resources/package_list.txt ]; then
   cp $PACKAGE_PATH/Contents/Resources/package_list.txt $TARGET/package_list.txt
fi

if [ $OS = "tiger" ]; then
  if [ -f $PACKAGE_PATH/Contents/Resources/net.freehaven.tor.plist ]; then
     cp $PACKAGE_PATH/Contents/Resources/net.freehaven.tor.plist /System/Library/LaunchDaemons/net.freehaven.tor.plist
     chmod 644 /System/Library/LaunchDaemons/net.freehaven.tor.plist
  fi
else
  if [ -d /Library/StartupItems/Tor ]; then
    rm -f /Library/StartupItems/Tor/Tor.loc
    echo "$TARGET" > /Library/StartupItems/Tor/Tor.loc
  fi
fi