TorPostflight 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/sh
  2. # TorPostflight gets invoked after any install or upgrade.
  3. ADDSYSUSER=$RECEIPT_PATH/addsysuser
  4. if [ ! -x "$ADDSYSUSER" ]; then
  5. echo "Could not find addsysuser script."
  6. exit 1
  7. fi
  8. TORUSER=_tor
  9. TORGROUP=daemon
  10. TARGET=$2/Library/Tor
  11. TORDIR=$TARGET/var/lib/tor
  12. LOGDIR=$TARGET/var/log/tor
  13. # Check defaults for TARGET
  14. if [ "$TARGET" == "//Library/Tor" ]; then
  15. TARGET=/Library/Tor
  16. fi
  17. ## Determine OSX Version
  18. # map version to name
  19. if [ -x /usr/bin/sw_vers ]; then
  20. # This is poor, yet functional. We don't care about the 3rd number in
  21. # the OS version
  22. OSVER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2`
  23. case "$OSVER" in
  24. "10.5") OS="leopard";;
  25. "10.4") OS="tiger";;
  26. "10.3") OS="panther";;
  27. "10.2") OS="jaguar";;
  28. "10.1") OS="puma";;
  29. "10.0") OS="cheetah";;
  30. *) OS="unknown";;
  31. esac
  32. else
  33. OS="unknown"
  34. fi
  35. # Create user $TORUSER in group daemon. If it's already there, great.
  36. $ADDSYSUSER $TORUSER "Tor System user" $TORDIR
  37. # Create the tor directory, if it doesn't exist.
  38. if [ ! -d $TORDIR ]; then
  39. mkdir -p $TORDIR
  40. fi
  41. if [ ! -d $LOGDIR ]; then
  42. mkdir -p $LOGDIR
  43. fi
  44. # Check its permissions.
  45. chown $TORUSER $TORDIR
  46. chgrp daemon $TORDIR
  47. chmod 700 $TORDIR
  48. chown $TORUSER $LOGDIR
  49. chgrp daemon $LOGDIR
  50. chmod 700 $LOGDIR
  51. # Create the configuration file only if there wan't one already.
  52. if [ ! -f $TARGET/torrc ]; then
  53. cp $TARGET/torrc.sample $TARGET/torrc
  54. fi
  55. # Ensure symbolic links
  56. cd /usr/bin
  57. if [ -e /usr/bin/tor -a ! -L /usr/bin/tor ]; then
  58. mv tor tor_old
  59. fi
  60. if [ -e /usr/bin/tor-resolve -a ! -L /usr/bin/tor-resolve ]; then
  61. mv tor-resolve tor-resolve_old
  62. fi
  63. ln -sf $TARGET/tor .
  64. ln -sf $TARGET/tor-resolve .
  65. cd /usr/share/man/man1
  66. MAN1=$TARGET/man/man1
  67. ln -sf $MAN1/*.1 .
  68. if [ ! -e /var/log/tor -o -L /var/log/tor ]; then
  69. cd /var/log
  70. rm -f tor
  71. ln -sf $LOGDIR tor
  72. fi
  73. if [ -d /Library/StartupItems/Tor ]; then
  74. rm -f /Library/StartupItems/Tor/Tor.loc
  75. echo "$TARGET" > /Library/StartupItems/Tor/Tor.loc
  76. fi
  77. if [ -d /Library/StartupItems/Privoxy ]; then
  78. find /Library/StartupItems/Privoxy -print0 | xargs -0 chown root:wheel
  79. fi
  80. # Copy Documentation
  81. if [ -d $PACKAGE_PATH/Contents/Resources/documents ];then
  82. cp -r $PACKAGE_PATH/Contents/Resources/documents $TARGET/documents
  83. fi
  84. # Copy Uninstaller
  85. if [ -f $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.applescript ]; then
  86. cp $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.applescript $TARGET/Tor_Uninstaller.applescript
  87. chmod 755 $TARGET/Tor_Uninstaller.applescript
  88. fi
  89. if [ -f $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.app.tar.gz ]; then
  90. cp $PACKAGE_PATH/Contents/Resources/Tor_Uninstaller.app.tar.gz $TARGET/Tor_Uninstaller.app.tar.gz
  91. cd $TARGET && tar zxf Tor_Uninstaller.app.tar.gz
  92. chmod -R 755 $TARGET/Tor_Uninstaller.app
  93. chown -R _tor:_tor Tor_Uninstaller.app
  94. rm $TARGET/Tor_Uninstaller.app.tar.gz
  95. fi
  96. if [ -f $PACKAGE_PATH/Contents/Resources/uninstall_tor_bundle.sh ]; then
  97. cp $PACKAGE_PATH/Contents/Resources/uninstall_tor_bundle.sh $TARGET/uninstall_tor_bundle.sh
  98. chmod 755 $TARGET/uninstall_tor_bundle.sh
  99. fi
  100. if [ -f $PACKAGE_PATH/Contents/Resources/package_list.txt ]; then
  101. cp $PACKAGE_PATH/Contents/Resources/package_list.txt $TARGET/package_list.txt
  102. fi
  103. if [ $OS = "tiger" ]; then
  104. if [ -f $PACKAGE_PATH/Contents/Resources/net.freehaven.tor.plist ]; then
  105. cp $PACKAGE_PATH/Contents/Resources/net.freehaven.tor.plist /System/Library/LaunchDaemons/net.freehaven.tor.plist
  106. chmod 644 /System/Library/LaunchDaemons/net.freehaven.tor.plist
  107. fi
  108. else
  109. if [ -d /Library/StartupItems/Tor ]; then
  110. rm -f /Library/StartupItems/Tor/Tor.loc
  111. echo "$TARGET" > /Library/StartupItems/Tor/Tor.loc
  112. fi
  113. fi