#!/afs/athena/contrib/perl/p -w

##
# Database file cleanup routines
# Wilfredo Sanchez Jr.
##
# Copyright 1995 Wilfredo Sanchez Jr. | tritan@mit.edu
# Written for the MIT SIPB webmasters | webmaster@mit.edu
# Joy, Joy, Oh, Joy
##

##
# Version Info
##

die <<OBSOLETE;
Hi, this script has been deprecated because it will delete all user
accounts that don't have hesiod data, thus nuking all the alums that we
want to keep links for.  If you REALLY think you want to run this script
make sure you know EXACTLY what you're doing and comment this message
out.  Consult Angie (sly\@mit.edu) or Grant (gemery\@mit.edu) for more
information.  (1/1/2001)
OBSOLETE

#$version_id   = "1.1";
#$version_date = "9 Dec 95";

$0 =~ m|/([^/]*)$|; $0 = $1 if $1;

unshift(@INC, '/afs/sipb.mit.edu/project/www/src/db');

require 'dbparse.pl';

##
# Deal with the command line
##

$dbfile = shift(@ARGV);
$dbfile = $DB'default_home unless $dbfile;

&usage if ($dbfile eq "--" || $dbfile =~ /^-h/);

# Read in the file
&DB'ParseHome($dbfile);

&puntDeactivatedAccounts;

exit;

sub usage {
    print "$0: usage: $0 [dbfile]\n";
    exit -1;
}

##
# Do The Right Thing
##

sub puntDeactivatedAccounts {
    ##
    # Function takes no arguments: &DB::puntDeactivatedAccounts;
    ##

    local($count) = 0;
    local($total) = 0;
    foreach $user (sort keys(%DB'index)) {
	local($link) = $DB'link{$user};
	if ($link && $link =~ m|^/afs/athena[^/]*/user/|) {

	    $link =~ m|^/afs/athena[^/]*/user/\w/\w/([^/]*)|;
	    local($afsuser) = $1;

	    unless ($afsuser) {
		$link =~ m|^/afs/athena[^/]*/user/other/([^/]*)|;
		$afsuser = $1;
	    }

	    unless ($afsuser) {
		warn "ACK!!! I messed up: $user ($link)\n";
		next;
	    }

	    local($hesinfo) = `hesinfo $afsuser passwd 2> /dev/null`;
	    unless ($hesinfo) {
		warn "NOTE: User \'$user\' and AFS locker \'$afsuser\' are different.\n"
		    if ($afsuser ne $user);
		print "No hesiod info for user: $afsuser";
		print " (for user $user) " if ($afsuser ne $user);
		print "; deleting\n";
		&DB'DelUser($user);
		$count++;
	    }
	}
	$total++;
    }
    print "\n";
    print "** All done **\n";
    print "\n";
    print "$count of $total users have been deleted.\n";
    &DB'SpewHome($dbfile.".new");
}

# Shut up, -w!!!
%DB'index        = %DB'index;
$DB'default_home = $DB'default_home;
$DB'link         = $DB'link;
