#!/bin/sh## Copyright (C) 2013 Red Hat, Inc.# SPDX-License-Identifier: LGPL-2.1-or-laterset -eufcd $(dirname $0)warning(){echo "mock-kdc: $*" >&2}check_require(){for n in "$@"; doif ! which $n 2> /dev/null; thenwarning "$n not present"exit 18fidone}check_require kadmin.local krb5kdc kdb5_utildir=$(mktemp -d)# Generate the KDC configuration filesed -e "s,[@]dir[@],$dir,g" mock-krb5.conf.in > $dir/krb5.confsed -e "s,[@]dir[@],$dir,g" mock-kdc.conf.in > $dir/kdc.confKRB5_KDC_PROFILE=$dir/kdc.confexport KRB5_KDC_PROFILEKRB5_CONFIG=$dir/krb5.confexport KRB5_CONFIGecho "KRB5_CONFIG=$dir/krb5.conf"echo "KRB5_KTNAME=$dir/localhost.keytab"touch $dir/kadmind.log# Generate the KDC database, undocumented -W argument: no strong randomkdb5_util create -r COCKPIT.MOCK -s -W -P foobar > /dev/null# Generate the ACL fileecho "*/admin@COCKPIT.MOCK *" > $dir/kadm5.acl# Add the userskadmin="kadmin.local -r COCKPIT.MOCK"$kadmin -q "addprinc -pw foobar -clearpolicy root/admin"# > /dev/null$kadmin -q "addprinc -pw marmalade -clearpolicy $USER" > /dev/nullunique_localhosts(){grep '\blocalhost\b' /etc/hosts | while read addr names; dofor name in $names; doecho $namedonedone | sort | uniq}# Add the hostsunique_localhosts | while read name; do$kadmin -q "addprinc -randkey -clearpolicy host/$name@COCKPIT.MOCK" > /dev/null$kadmin -q "ktadd -q -keytab $dir/localhost.keytab host/$name@COCKPIT.MOCK" > /dev/nulldone# Run krb5kdcLC_ALL=C krb5kdc -n -r COCKPIT.MOCK 2>&1rm -rf $dir/