#!/usr/local/bin/perl5 -- # -*- perl -*-
###########################################################################
#
# Name
#    deluser - delete user
#
# Usage
#    deluser [-vn] login
#
# Options:
#    -n ... Do _not_ delete user, show commands that would be executed
#    -v ... Turn on verbose output. Can be given twice for more output.
#
# Arguments:
#    login ... any valid login from /etc/passwd
#
# This script creates:
#    1.) Delete entry in passwd (via vipw)
#    2.) Home-dir
#    3.) Mail-folder
#    4.) remove crontab
#
# Date:
#    March   9th, 1994
#    July   11th, 1994: replace vi-usage by ex, crontab-usage POSIXed
#    August 27th, 1994: change vipw's path to /usr/sbin
#    Dec,   27th, 1995: escape some variables in edit_passwd for perl5
#
# Author:
#    Hubert Feyrer, hubert.feyrer@rz.uni-regensburg.de
#    Copyright (c) 1994, 1995 Hubert Feyrer. All rights reserved.
#
###########################################################################


$MAILDIR="/var/mail";
$HOMEBASE="/home/dusk";
$not=0;
$verbose=0;
$v='';

#
# Little sanity-check
#
#die "$0: Only root is allowed to run this!\n" if $>;

#
# Parse options
#
while($ARGV[0]=~/^-/){
    if($ARGV[0]=~/^-n/){
	$not=1;
	$verbose=2;
    }elsif($ARGV[0]=~/^-v/){
	$verbose++;
	$v=':' if $verbose>1;
    }else{
	die "$0: unknown option \'$ARGV[0]\'\n";
    }
    shift;
}

if( $#ARGV != 0 ){
    die "Usage: $0 [-vn] login\n";
}

$login=$ARGV[0];

# Is login there?
if(!getpwnam($login)){
    die "$0: User \"$login\" does not exist. Exiting...\n";
}

&delete_crontab;
&edit_passwd;
&delete_homedir;
&delete_mailfolder;

endpwent;
exit 0;

###########################################################################
sub edit_passwd
{
    print "Removing entry from passwd\n" if $verbose>0;
    if(!$not){
	$rv=system("EDITOR=/usr/bin/ex ; export EDITOR ; ( echo /\^${login}:/ ; echo d ; echo x ) | /usr/sbin/vipw >/dev/null");
	$rv>>=8;
	if($rv){
	    die "$0: Fatal error in vipw!\n";
	}
    }

    print "\n" if $verbose>1;
}

###########################################################################
sub delete_homedir
{
    print "Nuking homedir$v\n" if $verbose>0;

    $cmd="rm -fr $HOMEBASE/$login";
    print "\t$cmd\n" if $verbose>1;
    system "$cmd" if !$not;

    print "\n" if $verbose>1;
}

###########################################################################
sub delete_mailfolder
{
    print "Deleting mailfolder$v\n" if $verbose>0;

    $cmd="rm -f $MAILDIR/$login";
    print "\t$cmd\n" if $verbose>1;
    system "$cmd" if !$not;

    print "\n" if $verbose>1;
}

###########################################################################
sub delete_crontab
{
    print "Deleting crontab$v\n" if $verbose>0;

    $cmd="crontab -u $login -r";
    print "\t$cmd\n" if $verbose>1;
    system  "$cmd" if !$not;

    print "\n" if $verbose>1;
}
