blob: 0cbed462d1adbcb5d17a97136c607f22c7ef944b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
#!/bin/sh
DUMMY=${TESTDIR=$TOP/testing}
DUMMY=${STESTDIR=$STOP/testing}
DUMMY=${INITDB=$STESTDIR/scripts/init_db}
DUMMY=${SRVTCL=$TESTDIR/util/kadm5_srv_tcl}; export SRVTCL
DUMMY=${LOCAL_MAKE_KEYTAB=$TESTDIR/scripts/make-host-keytab.pl}
DUMMY=${STOP_SERVERS_LOCAL=$STESTDIR/scripts/stop_servers_local}
DUMMY=${KRB5RCACHEDIR=$TESTDIR} ; export KRB5RCACHEDIR
if [ -d /usr/tmp ]; then
usrtmp=/usr/tmp
else
usrtmp=/var/tmp
fi
$STOP_SERVERS_LOCAL -start_servers
if $VERBOSE; then
REDIRECT=
else
REDIRECT='>/dev/null'
fi
while :; do
case $1 in
-keysalt)
shift
if [ $# -gt 0 ]; then
keysalts="$keysalts $1"
else
break
fi
;;
-kdcport)
shift
if [ $# -gt 0 ]; then
kdcport=$1
else
break
fi
;;
*)
break
;;
esac
shift
done
if [ $# -gt 1 ]; then
echo "Usage: $0 [-kdcport port] [-keysalts tuple] ... [top]" 1>&2
exit 1
elif [ $# = 1 ]; then
TOP=$1
export TOP
fi
# create a fresh db
$INITDB "$keysalts" || exit 1
# Post-process the config files based on our arguments
if [ "$keysalts" != "" ]; then
sedcmd="s/\([ ]*supported_enctypes =\).*/\1 $keysalts/"
sed -e "$sedcmd" < $K5ROOT/kdc.conf > $K5ROOT/kdc.conf.new
mv $K5ROOT/kdc.conf.new $K5ROOT/kdc.conf
fi
if [ "$kdcport" != "" ] ; then
sedcmd="s/\(kdc_ports = .*\)[ ]*/\1, $kdcport/"
sed -e "$sedcmd" < $K5ROOT/kdc.conf > $K5ROOT/kdc.conf.new
mv $K5ROOT/kdc.conf.new $K5ROOT/kdc.conf
fi
# allow admin to krlogin as root (for cleanup)
DUMMY=${REALM=SECURE-TEST.OV.COM}; export REALM
hostname=`hostname`
QUALNAME=`$TOP/testing/scripts/qualname.pl $hostname`; export QUALNAME
cat - > /tmp/start_servers_local$$ <<\EOF
if { [catch {
source $env(STOP)/testing/tcl/util.t
set r $env(REALM)
set q $env(QUALNAME)
puts stdout [kadm5_init $env(SRVTCL) mrroot null \
[config_params {KADM5_CONFIG_REALM} $r] \
$KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 server_handle]
puts stdout [kadm5_create_principal $server_handle \
[simple_principal host/$q@$r] {KADM5_PRINCIPAL} notathena]
puts stdout [kadm5_destroy $server_handle]
} err]} {
puts stderr "initialization error: $err"
exit 1
}
exit 0
EOF
eval "$SRVTCL < /tmp/start_servers_local$$ $REDIRECT"
x=$?
rm /tmp/start_servers_local$$
if test $x != 0 ; then exit 1 ; fi
# rm -f /etc/v5srvtab
# eval $LOCAL_MAKE_KEYTAB -princ host/xCANONHOSTx /etc/v5srvtab $REDIRECT
# run the servers (from the build tree)
adm_start_file=/tmp/adm_server_start.$$
kdc_start_file=/tmp/kdc_server_start.$$
rm -f $kdc_start_file
if test "x$USER" = x ; then
USER=$LOGNAME ; export USER
fi
kdc_args="-R dfl:kdc_rcache.$USER"
(trap "" 2; cd $TOP/../kdc; ./krb5kdc $kdc_args; touch $kdc_start_file) \
< /dev/null > $usrtmp/kdc-log.$USER 2>&1 &
s=1
max_s=60
sofar_s=0
timewait_s=300
ovadm_args=-W
rm -f $adm_start_file
(sleep 1; cd $TOP/server; ./kadmind $ovadm_args; \
touch $adm_start_file) < /dev/null > $usrtmp/kadm-log.$USER 2>&1 &
# wait until they start
while [ $sofar_s -le $max_s ]; do
if $VERBOSE; then
echo "Sleeping for $s seconds to allow servers" \
"to start..."
fi
sofar_s=`expr $sofar_s + $s`
sleep $s
if [ -f $adm_start_file -a -f $kdc_start_file ]; then
break
fi
done
if [ $sofar_s -gt $max_s ]; then
echo "Admin server or KDC failed to start after $sofar_s" \
"seconds." 1>&2
if [ ! -f $adm_start_file ]; then
echo " No admin server start file $adm_start_file." 1>&2
fi
if [ ! -f $kdc_start_file ]; then
echo " No KDC start file $adm_start_file." 1>&2
fi
exit 1
fi
rm -f $kdc_start_file $adm_start_file
|