|
Packit |
fd8b60 |
#!/usr/bin/perl
|
|
Packit |
fd8b60 |
#
|
|
Packit |
fd8b60 |
# This program converts the old-style krb.conf and krb.realms files into the
|
|
Packit |
fd8b60 |
# new-format krb5.conf file. It takes two arguments; the first is the krb.conf
|
|
Packit |
fd8b60 |
# file, and the second is the krb.realms file. The krb5.conf file is output
|
|
Packit |
fd8b60 |
# to stdout.
|
|
Packit |
fd8b60 |
#
|
|
Packit |
fd8b60 |
# Written by Theodore Ts'o, 4/25/95
|
|
Packit |
fd8b60 |
#
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
if ($#ARGV >= 0) {
|
|
Packit |
fd8b60 |
$krb_conf_file = $ARGV[0];
|
|
Packit |
fd8b60 |
} else {
|
|
Packit |
fd8b60 |
$krb_conf_file = "/etc/krb.conf";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
if ($#ARGV >= 1) {
|
|
Packit |
fd8b60 |
$krb_realms_file = $ARGV[1];
|
|
Packit |
fd8b60 |
} else {
|
|
Packit |
fd8b60 |
$krb_realms_file = "/etc/krb.realms";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
open(FILE, "<$krb_conf_file") || die "Couldn't open the krb.conf file\n";
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
$_ = <FILE>;
|
|
Packit |
fd8b60 |
strip;
|
|
Packit |
fd8b60 |
$default_realm = $_;
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
while(<FILE>) {
|
|
Packit |
fd8b60 |
strip;
|
|
Packit |
fd8b60 |
($realm, $host, $admin) = split;
|
|
Packit |
fd8b60 |
if (!defined($realmpt{$realm})) {
|
|
Packit |
fd8b60 |
$realmpt{$realm} = 1;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
$realmkdc{$realm . "##" . $realmpt{$realm}} = $host;
|
|
Packit |
fd8b60 |
$realmpt{$realm}++;
|
|
Packit |
fd8b60 |
if ($admin eq "admin") {
|
|
Packit |
fd8b60 |
$realmadmin{$realm} = $host;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
close(FILE);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
open(FILE, "<$krb_realms_file") || die "Couldn't open krb.realms file";
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
while (<FILE>) {
|
|
Packit |
fd8b60 |
strip;
|
|
Packit |
fd8b60 |
($domain, $realm) = split;
|
|
Packit |
fd8b60 |
$domain =~ s/\.$//;
|
|
Packit |
fd8b60 |
$domain =~ tr/[A-Z]/[a-z]/;
|
|
Packit |
fd8b60 |
$dom_realm{$domain} = $realm;
|
|
Packit |
fd8b60 |
if ($domain =~ /^\./) {
|
|
Packit |
fd8b60 |
$domain =~ s/^\.//;
|
|
Packit |
fd8b60 |
$def_realm{$realm} = $domain;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
print "[libdefaults]\n\tdefault_realm = $default_realm\n";
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
print "[realms]\n";
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
foreach $realm (sort(keys(%realmpt))) {
|
|
Packit |
fd8b60 |
print "\t$realm = {\n";
|
|
Packit |
fd8b60 |
for ($i = 1; $i < $realmpt{$realm}; $i++) {
|
|
Packit |
fd8b60 |
printf("\t\tkdc = %s\n", $realmkdc{$realm . "##" . $i});
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
if (defined($realmadmin{$realm})) {
|
|
Packit |
fd8b60 |
print "\t\tadmin_server = $realmadmin{$realm}\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
if (defined($def_realm{$realm})) {
|
|
Packit |
fd8b60 |
print "\t\tdefault_domain = $def_realm{$realm}\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
print "\t}\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
print "\n[domain_realm]\n";
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
foreach $domain (keys(%dom_realm)) {
|
|
Packit |
fd8b60 |
print "\t$domain = $dom_realm{$domain}\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
|