udp, util: Break out send_nak function
[secnet] / 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"