Handle hostnames with upper-case letters
[webmin.git] / mailboxes / useradmin_update.pl
1
2 do 'mailboxes-lib.pl';
3
4 # useradmin_create_user(&details)
5 # Create a new empty mail file
6 sub useradmin_create_user
7 {
8 if ($config{'sync_create'}) {
9         local ($dir, $style, $mailbox, $maildir) = &get_mail_style();
10         if ($dir && -d $dir) {
11                 # Create mail file like /var/mail/USERNAME
12                 local $mf = &mail_file_style($_[0]->{'user'}, $dir, $style);
13                 if (!-e $mf) {
14                         &create_mail_file($_[0], $mf);
15                         }
16                 }
17         if ($mailbox && !-e "$_[0]->{'home'}/$mailbox") {
18                 # Create mail file ~USERNAME/Mailbox
19                 &create_mail_file($_[0], "$_[0]->{'home'}/$mailbox");
20                 }
21         if ($maildir && !-e "$_[0]->{'home'}/$maildir") {
22                 # Create mail directory like ~USERNAME/Maildir
23                 &create_mail_dir($_[0], "$_[0]->{'home'}/$maildir");
24                 }
25         }
26 }
27
28 # create_mail_file(&user, file)
29 sub create_mail_file
30 {
31 open(TOUCH, ">$_[1]");
32 close(TOUCH);
33 if ($config{'sync_perms'}) {
34         system("chmod ".
35                quotemeta($config{'sync_perms'})." ".
36                quotemeta($_[1]));
37         }
38 chown($_[0]->{'uid'}, $_[0]->{'gid'}, $_[1]);
39 }
40
41 # create_mail_dir(&user, dir)
42 sub create_mail_dir
43 {
44 local $d;
45 foreach $d ($_[1], "$_[0]/cur", "$_[1]/tmp", "$_[1]/new") {
46         &make_dir($d, 0700);
47         if ($config{'sync_perms'}) {
48                 system("chmod ".
49                        quotemeta($config{'sync_perms'})." ".
50                        quotemeta($d));
51                 }
52         chown($_[0]->{'uid'}, $_[0]->{'gid'}, $d);
53         }
54 }
55
56
57
58 # useradmin_delete_user(&details)
59 # Delete the user's mail file
60 sub useradmin_delete_user
61 {
62 if ($config{'sync_delete'}) {
63         local ($dir, $style, $mailbox, $maildir) = &get_mail_style();
64         if ($dir && -d $dir) {
65                 local $mf = &mail_file_style($_[0]->{'user'}, $dir, $style);
66                 unlink($mf);
67                 unlink($mf.".pop");
68                 }
69         &delete_user_index_files($_[0]->{'user'});
70         }
71 }
72
73 # useradmin_modify_user(&details, &old)
74 # Rename the user's mail file if necessary, and change it's UID
75 sub useradmin_modify_user
76 {
77 if ($config{'sync_modify'} &&
78     ($_[0]->{'user'} ne $_[1]->{'user'} || $_[0]->{'uid'} != $_[1]->{'uid'})) {
79         local ($dir, $style, $mailbox, $maildir) = &get_mail_style();
80         if ($dir && -d $dir) {
81                 local $omf = &mail_file_style($_[0]->{'olduser'}, $dir, $style);
82                 local $nmf = &mail_file_style($_[0]->{'user'}, $dir, $style);
83                 local @st = stat($omf);
84                 if ($st[4] != $_[0]->{'uid'}) {
85                         chown($_[0]->{'uid'}, $st[5], $omf);
86                         }
87                 if ($omf ne $nmf && -e $omf) {
88                         &rename_logged($omf, $nmf);
89                         }
90                 }
91         }
92 }
93
94 1;
95