1#!/bin/sh
2
3port=3007
4realm="TEST.APPLE.COM"
5
6service="test"
7user="local"
8pass="local"
9server="localhost"
10
11loc="/usr/local/libexec/heimdal/bin"
12
13tmp="/private/tmp/krb5_testing_$$"
14kt_file="${tmp}/server.keytab"
15cc_file="${tmp}/krb5ccache"
16pw_file="${tmp}/password-file"
17export  KRB5CCNAME="FILE:${cc_file}"
18export KRB5_KTNAME="FILE:${kt_file}"
19export KRB5_CONFIG="${tmp}/kdc.conf"
20
21kinit="kinit -c ${KRB5CCNAME}"
22kdestroy="kdestory -c ${KRB5CCNAME}"
23klist="klist -c ${KRB5CCNAME}"
24kadmin="kadmin -l -r ${realm}"
25
26echo "##### Starting #####"
27echo "--------------------"
28echo "hostname: ${server}"
29echo "realm   : ${realm}"
30echo "port    : ${port}"
31echo "tmpdir  : ${tmpdir}"
32echo ""
33
34mkdir -p "${tmp}"
35
36echo "${pass}" > "${pw_file}"
37
38cat "${loc}/krb5.conf.in" |
39	sed \
40		-e "s,[@]realm[@],${realm},g" \
41		-e "s,[@]objdir[@],${tmp},g" \
42		-e "s,[@]port[@],${port},g" \
43	> "${KRB5_CONFIG}"
44
45echo "##### KRB5 CONFIG #####"
46cat "${KRB5_CONFIG}"
47echo "##########"
48echo ""
49
50echo "##### Configuring KDC #####"
51${kadmin} init \
52	--realm-max-ticket-life=1day \
53	--realm-max-renewable-life=1month \
54	"${realm}" || exit 1
55
56${kadmin} add -p "${pass}" --use-defaults "${user}@${realm}" || exit 1
57${kadmin} add -r --use-defaults "host/${server}@${realm}" || exit 1
58${kadmin} add -r --use-defaults "${service}/${server}@${realm}" || exit 1
59
60${kadmin} ext_keytab "${user}@${realm}" || exit 1
61${kadmin} ext_keytab "host/${server}@${realm}" || exit 1
62${kadmin} ext_keytab "${service}/${server}@${realm}" || exit 1
63
64echo "##### Start the kdc #####"
65"/System/Library/PrivateFrameworks/Heimdal.framework/Helpers/kdc" \
66	--config-file="${KRB5_CONFIG}" \
67	--addresses="localhost" \
68	--ports="${port}" \
69	--no-sandbox &
70ret=$!
71echo "Sleeping to let kdc start..."
72sleep 1
73
74trap "kill -9 ${ret}; echo signal killing ${ret}; exit 0;" EXIT
75
76echo "##### Get tkt for ${user}@${realm} #####"
77${kinit} --password-file="${pw_file}" "${user}@${realm}"
78
79echo "##### Starting server/client for test one #####"
80"${loc}/test-gss-server" --port ${port} --sname "${service}" &
81"${loc}/test-gss-client" --server "${server}" --port ${port} \
82		--sprinc "${service}/${server}@${realm}" \
83		--cprinc "${user}@${realm}" || exit 100
84
85echo "##### Removing ccache #####"
86kdestroy -cache="${cc_file}"
87
88echo "##### Removing setup #####"
89${kadmin} del "${service}/${server}@${realm}"
90${kadmin} del "host/${server}@${realm}"
91${kadmin} del "${user}@${realm}"
92
93rm -rf "${tmp}"
94
95echo "##### DONE #####"
96exit 0
97