#!/usr/bin/perl
# $Id: cadduser,v 1.1 2001/08/20 19:42:55 jeffb Exp $
# Copyright (c) 1999,2000 Cobalt Networks, Inc. 
# http://www.cobalt.com/
#
use strict;
$0 = "cadduser";

use lib qw(/usr/sausalito/perl);

require ShellCfg;
require Shell;
use Getopt::Std;

my $opts = {};
getopts('n:f:p:r:q:g:w:a:vh', $opts);

if ($opts->{h} || !$opts->{n}) {
	usage();
}
my $userRef = ShellCfg::mapOpts('userAdd', $opts);

unless ($userRef->{fullName}) {
	$userRef->{fullName} = $userRef->{name};
}

# pull out my other refs

# connect to CCE
my $cce = new Shell;
$cce->connectuds();

# strip out the other stuff
my $emailRef = $userRef->{Email} if($userRef->{Email});
my $diskRef = $userRef->{Disk} if ($userRef->{Disk});
my $groupRef = $userRef->{Group} if($userRef->{Group});
$userRef = ShellCfg::stripRef($userRef);

# create the user
$cce->create("User", $userRef);

# if we get here, we must set other data related to the user
my $oid = $cce->oid();

if ($diskRef) {
	$cce->set($oid, "Disk", $diskRef);
} 

if(exists($emailRef->{aliases})) {
	$emailRef->{aliases} = $cce->scalar_to_scalar($emailRef->{aliases});
}
if(exists($emailRef->{forwardEmail})) {
	$emailRef->{forwardEnable} = 'true';
	$emailRef->{forwardEmail} = $cce->array_to_scalar($emailRef->{forwardEmail});
}
if($emailRef) {
	$cce->set($oid, "Email", $emailRef);
}

if($groupRef) {
	foreach my $grp (split(/\s*,\s*/, $groupRef->{groups})) {
		my ($goid) = $cce->find('Workgroup', { name => $grp });
		if($goid) {
			$cce->addMember($goid, $userRef->{name});
		} else { warn "unkown group $grp\n"; }
	}	
}

warn "\nUser ", $userRef->{name}, " has been created.\n";
$cce->bye("my luser is done");
exit 0;

sub usage 
{
print <<EOF;
$0: Copyright (c) 1999,2000,2001 Cobalt Networks, Inc.
usage: $0 [-u username] [-p password] [-f fullname] [-g groups]
	[-q quota] [-w emailaddr] [-a aliases] [-r remarks]

        -n user's username
        -p user's passwd (default: "")
        -f user's full name
        -g list of group names, comma delimited
        -q user's disk quota (in MB)
        -r user's remarks
        -w foward user's email to email addresses, comma delimited
        -e list of email aliases, comma delimited
        -h show this help
EOF
    exit 0;
}


