#!/usr/bin/perl
#
# init_accounts -- Create an Mac OS X import file of lab accounts with settings all
# set to initial values.
#
# Copyright (c) 2001 by The Regents of the University of California
# Author: Jose L. Hales-Garcia, UCLA Department of Statistics
#
$default_uid_start = "10000";
$default_uid_end = "11500";
print STDOUT "Enter Start UID (no less than 10000): ";
$start_uid = <STDIN>;
print STDOUT "Enter End UID (no greater than 11500): ";
$end_uid = <STDIN>;
die "Make sure the values are within the required bounds\n(9999 < Start UID <= End UID < 11501)\n" if (($start_uid < 10000) or ($start_uid > $end_uid) or ($end_uid > 11500));
print STDOUT "Enter an initial password: ";
$init_passwd = <STDIN>;
die "Password must be at least 8 characters long.\n" if (length($init_passwd) < 9);
@uids = $start_uid..$end_uid;
$metadata = <<EOMD;
<?XML version="1.0"?>
<!DOCTYPE MacOSXServer100 [
<!ELEMENT uglist ( user | group)* >
<!ELEMENT user ( nameList? pass? homeDir? pluginDataList ) >
<!ATTLIST user
comment CDATA #IMPLIED
uid CDATA #IMPLIED
gid CDATA #IMPLIED
shell CDATA #IMPLIED
loginEnabled ( canLogin | noLogin ) "canLogin"
isAdminUser ( isAdmin | notAdmin ) "notAdmin"
>
<!ELEMENT nameList name* >
<!ELEMENT name EMPTY >
<!ATTLIST name
text CDATA
>
<!ELEMENT pass EMPTY >
<!ATTLIST pass
format ( encrypted | clearText | crypt ) "clearText"
text CDATA
>
<!ELEMENT homeDir EMPTY >
<!ATTLIST homeDir
sharePoint CDATA
path CDATA
>
<!ELEMENT pluginDataList pluginData* >
<!ELEMENT pluginData EMPTY >
<!ATTLIST pluginData
signature CDATA #REQUIRED
data CDATA #REQUIRED
>
<!ELEMENT group memberName* >
<!ATTLIST group
name CDATA #REQUIRED
gid CDATA #IMPLIED
>
<!ELEMENT memberName EMPTY >
<!ATTLIST memberName
name CDATA #REQUIRED
>
]>
EOMD
print "$metadata";
print "<uglist>\n";
foreach $u (@uids) {
$uid = "$u", $shortname = "$u", $longname = "Student $u";
$userdata = <<EOUD;
<user
loginEnabled = "canLogin"
isAdminUser = "notAdmin"
uid = "$uid"
gid = "9999"
shell = "/bin/tcsh"
comment = "Unassigned Account" >
<nameList>
<name
text = "$shortname" />
<name
text = "$longname" />
</nameList>
<pass
format = "clearText"
text = "$init_passwd" />
</user>
EOUD
print "$userdata";
}
print "</uglist>";