#!/usr/bin/perl -w use strict; use esmith::ConfigDB; use esmith::AccountsDB; use esmith::templates; use esmith::event; use DateTime; use User::pwent; my $a = esmith::AccountsDB->open or die "Could not open AccountsDB\n"; my $event = shift; my $userName = shift; my @users; if (defined $userName){ my $user = $a->get($userName); die "Account $userName is not a user account; can't update the auto-reply message.\n" unless $user && $user->prop('type') eq "user"; @users = ($user); } else{ @users = ( $a->users ); } my $now = DateTime->now; foreach my $user (@users){ my $userName = $user->key; # Remove user from all its groups my @groups = $a->user_group_list($userName); $a->remove_user_from_groups($userName, @groups); event_signal('group-modify', @groups) if (scalar @groups); # Set forward if needed my $fwd = $user->prop('ExpireForwardAfterLock') || ''; if ($fwd ne ''){ $user->set_prop('ForwardAddress', $fwd); $user->set_prop('EmailForward', 'forward'); } # Remove expiration settings now that the account is locked $user->delete_prop('ExpireLockOn'); $user->delete_prop('ExpireLastNotifiedOn'); # Set the expiration date $user->set_prop('ExpireLockedOn', $now->ymd); my $home = getpwnam($userName)->dir; if (!-d $home . '/.lock-auto-reply'){ mkdir $home . '/.lock-auto-reply'; chown getpwnam($userName)->uid, getpwnam($userName)->gid, $home . '/.lock-auto-reply'; chmod 750, $home . '/.lock-auto-reply'; } esmith::templates::processTemplate ({ MORE_DATA => { USERNAME => $userName }, TEMPLATE_PATH => "/.lock-auto-reply/message.txt", TEMPLATE_EXPAND_QUEUE => [ "/etc/e-smith/templates-user-custom", "/etc/e-smith/templates-user", ], OUTPUT_PREFIX => "$home", PERMS => 0644, }); } exit (0);