Samba-LDAP
view release on metacpan or search on metacpan
lib/Samba/LDAP/User.pm view on Meta::CPAN
'top', 'person',
'organizationalPerson', 'posixAccount',
'shadowAccount'
],
'cn' => "$userCN",
'sn' => "$userSN",
'uid' => "$username",
'uidNumber' => "$userUidNumber",
'gidNumber' => "$userGidNumber",
'homeDirectory' => "$userHomeDirectory",
'loginShell' => "$self->{userLoginShell}",
'gecos' => "$self->{userGecos}",
'userPassword' => "{crypt}x",
]
);
}
else {
$add = $ldap->add(
"uid=$username,$self->{usersdn}",
attr => [
'objectclass' => [
'top', 'person',
'organizationalPerson', 'inetOrgPerson',
'posixAccount', 'shadowAccount'
],
'cn' => "$userCN",
'sn' => "$userSN",
'givenName' => "$givenName",
'uid' => "$username",
'uidNumber' => "$userUidNumber",
'gidNumber' => "$userGidNumber",
'homeDirectory' => "$userHomeDirectory",
'loginShell' => "$self->{userLoginShell}",
'gecos' => "$self->{userGecos}",
'userPassword' => "{crypt}x",
]
);
}
$add->code && carp "failed to add entry: ", $add->error;
# Add to an LDAP group
if ( $userGidNumber != $self->{defaultUserGid} ) {
$group->add_to_group( $userGidNumber, $username );
}
my $grouplist;
# Adds to supplementary groups
if ( defined( $args{groups} ) ) {
$group->add_to_groups( $args{groups}, $username );
}
# If user was created successfully then we should create his/her home dir
if ( defined( $tmp = $args{homedir} ) ) {
unless ( $username =~ /\$$/ ) {
if ( !( -e $userHomeDirectory ) ) {
system "mkdir $userHomeDirectory 2>/dev/null";
system
"cp -a $self->{skeletonDir}/.[a-z,A-Z]* $self->{skeletonDir}/* $userHomeDirectory 2>/dev/null";
system
"chown -R $userUidNumber:$userGidNumber $userHomeDirectory 2>/dev/null";
if ( defined $self->{userHomeDirectoryMode} ) {
system
"chmod $self->{userHomeDirectoryMode} $userHomeDirectory 2>/dev/null";
}
else {
system "chmod 700 $userHomeDirectory 2>/dev/null";
}
}
}
}
# we start to define mail adresses if option $args{homedir} or $args{mail_to_address} is given in option
my @adds;
if (@userMailLocal) {
my @mail;
foreach my $m (@userMailLocal) {
my $domain = $self->{mailDomain};
if ( $m =~ /^(.+)@/ ) {
push( @mail, $m );
# mailLocalAddress contains only the first part
$m = $1;
}
else {
push( @mail, $m . ( $domain ? '@' . $domain : '' ) );
}
}
push( @adds, 'mailLocalAddress' => [@userMailLocal] );
push( @adds, 'mail' => [@mail] );
}
if (@userMailTo) {
push( @adds, 'mailRoutingAddress' => [@userMailTo] );
}
if ( @userMailLocal || @userMailTo ) {
push( @adds, 'objectClass' => 'inetLocalMailRecipient' );
}
# Add OX User Infos
if ( defined( $args{ox} ) ) {
my $modify = $ldap->modify(
"uid=$username,$self->{usersdn}",
changes => [
add => [ objectclass => ['OXUserObject'] ],
add => [ shadowMin => "-1" ],
add => [ shadowMax => "99999" ],
add => [ shadowWarning => "-1" ],
add => [ shadowExpire => "-1" ],
add => [ shadowInactive => "-1" ],
add => [ mail => "$username\@$self->{mailDomain}" ],
add => [ mailDomain => "$self->{mailDomain}" ],
add => [ preferredLanguage => "EN" ],
add => [ OXAppointmentDays => "5" ],
add => [ OXGroupID => "500" ],
add => [ OXTaskDays => "5" ],
add => [ OXTimeZone => "Europe/London" ],
add => [ o => "Suretec Systems Ltd." ],
add => [ userCountry => "Scotland" ],
add => [ mailEnabled => "OK" ],
add => [ lnetMailAccess => "TRUE" ],
( run in 1.998 second using v1.01-cache-2.11-cpan-5511b514fd6 )