chiark / gitweb /
site: Make transport_record_peers cope with multiple addresses
[secnet.git] / setup.mac
1 #!/bin/bash
2 #
3 # Richard Kettlewell 2011-06-18
4 #
5 set -e
6
7 group=${group:-secnet}
8 user=${user:-secnet}
9
10 # pick ID1 ID2 ... IDn
11 # Echoes an ID matching none of ID1..IDn
12 pick() {
13   local n
14   n=250                         # better not choose 0!
15   while :; do
16     ok=true
17     for k in "$@"; do
18       if [ $n = $k ]; then
19         ok=false
20         break
21       fi
22     done
23     if $ok; then
24       echo $n
25       return
26     fi
27     n=$((1+$n))
28   done
29 }
30
31 if dscl . -read /Groups/$group >/dev/null 2>&1; then
32   :
33 else
34   gids=$(dscl . -list /Groups PrimaryGroupID|awk '{print $2}')
35   gid=$(pick $gids)
36   dscl . -create /Groups/$group
37   dscl . -create /Groups/$group PrimaryGroupID $gid
38   dscl . -create /Groups/$group Password \*
39 fi
40
41 if dscl . -read /Users/$user >/dev/null 2>&1; then
42   :
43 else
44   uids=$(dscl . -list /Users UniqueID|awk '{print $2}')
45   uid=$(pick $uids)
46   gid=$(dscl . -read /Groups/$group PrimaryGroupID | awk '{print $2}')
47   dscl . -create /Users/$user
48   dscl . -create /Users/$user UniqueID $uid
49   dscl . -create /Users/$user UserShell /usr/bin/false
50   dscl . -create /Users/$user RealName 'secnet'
51   dscl . -create /Users/$user NFSHomeDirectory /var/empty
52   dscl . -create /Users/$user PrimaryGroupID $gid
53   dscl . -create /Users/$user Password \*
54 fi
55
56 cp uk.org.greenend.secnet.plist /Library/LaunchDaemons/.
57 launchctl load /Library/LaunchDaemons
58 echo "To start secnet:"
59 echo "  sudo launchctl start uk.org.greenend.secnet"
60 echo
61 echo "To stop secnet:"
62 echo "  sudo launchctl stop uk.org.greenend.secnet"
63 echo
64 echo "To uninstall:"
65 echo "  sudo launchctl unload /Library/LaunchDaemons/uk.org.greenend.secnet.plist"
66 echo "  sudo rm -f /Library/LaunchDaemons/uk.org.greenend.secnet.plist"