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