1#!/usr/bin/perl
2
3if ($< != 0) {
4   print "This must be run as root\n";
5   exit 1;
6}
7
8my $realm = "/var/db/realm.local";
9
10if (! -f $realm) {
11	system ("/usr/libexec/configureLocalKDC");
12}
13
14open (REALM, '<'. $realm) or die "No realm";
15
16my $realmString = join ('', <REALM>);
17
18chomp ($realmString);
19close REALM;
20
21my $kadmin = '/usr/sbin/kadmin.local';
22
23foreach $service ("afpserver/", "cifs/", "host/", "local") {
24   my $principal;
25   my @password = ();
26   my $ktadd = 0;
27
28   if ($service =~ m|/$|) {
29	$principal = sprintf "%s%s@%s", $service, $realmString, $realmString;
30	@password = ('-randkey');
31	$ktadd = 1;
32   } else {
33	$principal = sprintf "%s@%s", $service, $realmString;
34	@password = ('-pw', $service);
35   }
36
37   print "Running kadmin.local: ank\n\n";
38
39   my @args = ('ank', @password, $principal);
40
41   print "$kadmin -q ". join (' ', @args) ."\n";
42   system $kadmin, '-q', join (' ', @args);
43
44   if ($ktadd) {
45	print "\nRunning kadmin.local: ktadd\n\n";
46
47	my @args = ('ktadd', $principal);
48
49	print "$kadmin -q ". join (' ', @args) ."\n";
50	system $kadmin, '-q', join (' ', @args); 
51   }
52}
53
54