lib/vdomain/set.cc
changeset 2 b3afb9f1e801
parent 0 6f7a81934006
equal deleted inserted replaced
1:30113bfbe723 2:b3afb9f1e801
    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 }