Handle hostnames with upper-case letters
[webmin.git] / sendmail / useradmin_update.pl
1
2 do 'sendmail-lib.pl';
3 do 'aliases-lib.pl';
4
5 %mail_sync = map { $_, 1 } split(/,/, $config{'mail_sync'});
6
7 # useradmin_create_user(&details)
8 sub useradmin_create_user
9 {
10 local $dir = $config{'mail_dir'};
11 if ($dir && -d $dir && $mail_sync{'create'}) {
12         local $mf = "$dir/$_[0]->{'user'}";
13         if (!-e $mf) {
14                 open(TOUCH, ">$mf");
15                 close(TOUCH);
16                 chown($_[0]->{'uid'}, $_[0]->{'gid'}, $mf);
17                 }
18         }
19 }
20
21 # useradmin_delete_user(&details)
22 # Delete this user's mail file and remove from any aliases
23 sub useradmin_delete_user
24 {
25 local $dir = $config{'mail_dir'};
26 if ($dir && -d $dir && $mail_sync{'delete'}) {
27         unlink("$dir/$_[0]->{'user'}");
28         unlink("$dir/.$_[0]->{'user'}.pop");
29         }
30 local $conf = &get_sendmailcf();
31 local $afile = &aliases_file($conf);
32 local @aliases = &list_aliases($afile);
33 foreach $a (@aliases) {
34         return if ($a->{'name'} eq $_[0]->{'user'});
35         }
36 foreach $a (@aliases) {
37         local @nv = grep { $_ ne $_[0]->{'user'} } @{$a->{'values'}};
38         if (scalar(@nv) != scalar(@{$a->{'values'}})) {
39                 $a->{'values'} = \@nv;
40                 &modify_alias($a, $a);
41                 }
42         }
43 }
44
45 # useradmin_modify_user(&details)
46 sub useradmin_modify_user
47 {
48 local $dir = $config{'mail_dir'};
49 if ($dir && -d $dir && $mail_sync{'modify'}) {
50         local $mfile = "$dir/$_[0]->{'olduser'}";
51         local @st = stat($mfile);
52         if ($st[4] != $_[0]->{'uid'}) {
53                 chown($_[0]->{'uid'}, $st[5], $mfile);
54                 }
55         if ($_[0]->{'olduser'} ne $_[0]->{'user'} && -r $mfile) {
56                 &rename_logged($mfile, "$dir/$_[0]->{'user'}");
57                 }
58         }
59 }
60
61 1;
62