udp: Insist on only one successful default socket setup
[secnet] / setup.mac
CommitLineData
19a171f1
RK
1#!/bin/bash
2#
3# Richard Kettlewell 2011-06-18
4#
5set -e
6
7group=${group:-secnet}
8user=${user:-secnet}
9
10# pick ID1 ID2 ... IDn
11# Echoes an ID matching none of ID1..IDn
12pick() {
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
31if dscl . -read /Groups/$group >/dev/null 2>&1; then
32 :
33else
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 \*
39fi
40
41if dscl . -read /Users/$user >/dev/null 2>&1; then
42 :
43else
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'
e247763d 51 dscl . -create /Users/$user NFSHomeDirectory /var/empty
19a171f1
RK
52 dscl . -create /Users/$user PrimaryGroupID $gid
53 dscl . -create /Users/$user Password \*
54fi
55
56cp uk.org.greenend.secnet.plist /Library/LaunchDaemons/.
57launchctl load /Library/LaunchDaemons
58echo "To start secnet:"
59echo " sudo launchctl start uk.org.greenend.secnet"
60echo
61echo "To stop secnet:"
62echo " sudo launchctl stop uk.org.greenend.secnet"
63echo
64echo "To uninstall:"
b953af83 65echo " sudo launchctl unload /Library/LaunchDaemons/uk.org.greenend.secnet.plist"
19a171f1 66echo " sudo rm -f /Library/LaunchDaemons/uk.org.greenend.secnet.plist"