16 |
16 |
17 #include <config.h> |
17 #include <config.h> |
18 #include "vdomain.h" |
18 #include "vdomain.h" |
19 #include "misc/maildir.h" |
19 #include "misc/maildir.h" |
20 |
20 |
21 response vdomain::set(const vpwentry* vpw, bool onlyadd, |
21 response vdomain::set(const vpwentry* vpw, bool onlyadd) |
22 mystring maildir) |
|
23 { |
22 { |
24 if(!vpw) |
23 if(!vpw) |
25 RETURN(err, "Internal error: no vpwentry"); |
24 RETURN(err, "Internal error: no vpwentry"); |
26 if(!validate_username(vpw->name)) |
25 if(!validate_username(vpw->name)) |
27 RETURN(bad, "Virtual user or alias name contains invalid characters"); |
26 RETURN(bad, "Virtual user or alias name contains invalid characters"); |
28 if(!validate_password(vpw->pass)) |
27 if(!validate_password(vpw->pass)) |
29 RETURN(bad, "Password field contains invalid characters"); |
28 RETURN(bad, "Password field contains invalid characters"); |
30 if(!!maildir && !make_maildir(maildir.c_str())) |
29 if(mkdirp(vpw->directory, 0700) == -1) |
31 RETURN(err, "Can't create the mail directory '" + maildir + "'"); |
30 RETURN(err, "Can't create the user directory '" + vpw->directory + "'"); |
|
31 if(vpw->has_mailbox && !make_maildir(vpw->directory)) |
|
32 RETURN(err, "Can't create the mail directory '" + vpw->directory + "'"); |
32 if(!table()->put(vpw, onlyadd)) { |
33 if(!table()->put(vpw, onlyadd)) { |
33 if(!!maildir) |
34 delete_directory(vpw->directory); |
34 delete_directory(maildir.c_str()); |
|
35 RETURN(err, "Can't add the user to the password file"); |
35 RETURN(err, "Can't add the user to the password file"); |
36 } |
36 } |
37 RETURN(ok, !maildir |
37 RETURN(ok, "User added successfully"); |
38 ? "Alias added successfully" |
|
39 : "User added successfully"); |
|
40 } |
38 } |