1178825Sdfr#!/bin/sh
2178825Sdfr#
3178825Sdfr# Copyright (c) 2006 - 2007 Kungliga Tekniska H�gskolan
4178825Sdfr# (Royal Institute of Technology, Stockholm, Sweden). 
5178825Sdfr# All rights reserved. 
6178825Sdfr#
7178825Sdfr# Redistribution and use in source and binary forms, with or without 
8178825Sdfr# modification, are permitted provided that the following conditions 
9178825Sdfr# are met: 
10178825Sdfr#
11178825Sdfr# 1. Redistributions of source code must retain the above copyright 
12178825Sdfr#    notice, this list of conditions and the following disclaimer. 
13178825Sdfr#
14178825Sdfr# 2. Redistributions in binary form must reproduce the above copyright 
15178825Sdfr#    notice, this list of conditions and the following disclaimer in the 
16178825Sdfr#    documentation and/or other materials provided with the distribution. 
17178825Sdfr#
18178825Sdfr# 3. Neither the name of the Institute nor the names of its contributors 
19178825Sdfr#    may be used to endorse or promote products derived from this software 
20178825Sdfr#    without specific prior written permission. 
21178825Sdfr#
22178825Sdfr# THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
23178825Sdfr# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
24178825Sdfr# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
25178825Sdfr# ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
26178825Sdfr# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
27178825Sdfr# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
28178825Sdfr# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
29178825Sdfr# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
30178825Sdfr# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
31178825Sdfr# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
32178825Sdfr# SUCH DAMAGE. 
33178825Sdfr#
34178825Sdfr# $Id: check-uu.in 21855 2007-08-08 06:59:09Z lha $
35178825Sdfr#
36178825Sdfr
37178825Sdfrsrcdir="@srcdir@"
38178825Sdfrobjdir="@objdir@"
39178825SdfrEGREP="@EGREP@"
40178825Sdfr
41178825Sdfrtestfailed="echo test failed; cat messages.log; exit 1"
42178825Sdfr
43178825Sdfr# If there is no useful db support compile in, disable test
44178825Sdfr../db/have-db || exit 77
45178825Sdfr
46178825SdfrR=TEST.H5L.SE
47178825Sdfr
48178825Sdfruuspid=
49178825Sdfr
50178825Sdfrport=@port@
51178825Sdfr
52178825Sdfrkadmin="${TESTS_ENVIRONMENT} ../../kadmin/kadmin -l -r $R"
53178825Sdfrkdc="${TESTS_ENVIRONMENT} ../../kdc/kdc --addresses=localhost -P $port"
54178825Sdfr
55178825Sdfrcache1="FILE:${objdir}/cache1.krb5"
56178825Sdfrcache2="FILE:${objdir}/cache2.krb5"
57178825Sdfr
58178825Sdfrkinit1="${TESTS_ENVIRONMENT} ../../kuser/kinit -c $cache1 --no-afslog"
59178825Sdfrkinit2="${TESTS_ENVIRONMENT} ../../kuser/kinit -c $cache2 --no-afslog"
60178825Sdfrkdestroy1="${TESTS_ENVIRONMENT} ../../kuser/kdestroy -c $cache1 --no-unlog"
61178825Sdfrkdestroy2="${TESTS_ENVIRONMENT} ../../kuser/kdestroy -c $cache2 --no-unlog"
62178825Sdfruu_server="${TESTS_ENVIRONMENT} ../../appl/test/uu_server"
63178825Sdfruu_client="${TESTS_ENVIRONMENT} ../../appl/test/uu_client"
64178825Sdfr
65178825Sdfr
66178825SdfrKRB5_CONFIG="${objdir}/krb5.conf"
67178825Sdfrexport KRB5_CONFIG
68178825Sdfr
69178825Sdfrrm -f current-db*
70178825Sdfrrm -f out-*
71178825Sdfrrm -f mkey.file*
72178825Sdfr
73178825Sdfr> messages.log
74178825Sdfr
75178825Sdfrecho Creating database
76178825Sdfr${kadmin} \
77178825Sdfr    init \
78178825Sdfr    --realm-max-ticket-life=1day \
79178825Sdfr    --realm-max-renewable-life=1month \
80178825Sdfr    ${R} || exit 1
81178825Sdfr
82178825Sdfr${kadmin} add -p foo --use-defaults user1@${R} || exit 1
83178825Sdfr${kadmin} add -p foo --use-defaults user2@${R} || exit 1
84178825Sdfr
85178825Sdfrecho "Doing database check"
86178825Sdfr${kadmin} check ${R} || exit 1
87178825Sdfr
88178825Sdfrecho foo > ${objdir}/foopassword
89178825Sdfr
90178825Sdfrecho Starting kdc
91178825Sdfr${kdc} &
92178825Sdfrkdcpid=$!
93178825Sdfr
94178825Sdfrsh ${srcdir}/wait-kdc.sh
95178825Sdfrif [ "$?" != 0 ] ; then
96178825Sdfr    kill ${kdcpid}
97178825Sdfr    exit 1
98178825Sdfrfi
99178825Sdfr
100178825Sdfrtrap "kill ${kdcpid} ${uuspid}; echo signal killing kdc; exit 1;" EXIT
101178825Sdfr
102178825Sdfrec=0
103178825Sdfr
104178825Sdfrecho "Getting client initial tickets user1"; > messages.log
105178825Sdfr${kinit1} --password-file=${objdir}/foopassword user1@$R || \
106178825Sdfr	{ ec=1 ; eval "${testfailed}"; }
107178825Sdfr
108178825Sdfrecho "Getting client initial tickets user2"; > messages.log
109178825Sdfr${kinit2} --password-file=${objdir}/foopassword user2@$R || \
110178825Sdfr	{ ec=1 ; eval "${testfailed}"; }
111178825Sdfr
112178825Sdfr
113178825Sdfrecho "starting uu server (using user1)"
114178825SdfrKRB5CCNAME=$cache1 ${uu_server} > uuserver.log &
115178825Sdfruuspid=$!
116178825Sdfrsleep 5
117178825Sdfr
118178825Sdfrecho "trying to contact server with client (using user2)"
119178825SdfrKRB5CCNAME=$cache2 ${uu_client} localhost > messages.log 2>&1 || \
120178825Sdfr    { ec=1; eval "${testfailed}"; }
121178825Sdfr
122178825Sdfrsleep 5
123178825Sdfr
124178825Sdfrecho "checking if server got the right message"
125178825Sdfrcmp uuserver.log ${srcdir}/uuserver.txt || \
126178825Sdfr    { ec=1; eval "${testfailed}"; }
127178825Sdfr
128178825Sdfruuspid=""
129178825Sdfr
130178825Sdfr${kdestroy1}
131178825Sdfr${kdestroy2}
132178825Sdfr
133178825Sdfrecho "killing kdc uu_server (${kdcpid} ${uuspid})"
134178825Sdfrkill $kdcpid $uuspid || exit 1
135178825Sdfr
136178825Sdfrtrap "" EXIT
137178825Sdfr
138178825Sdfrexit $ec
139