lib/vdomain/vdomain.h
changeset 0 6f7a81934006
child 2 b3afb9f1e801
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/vdomain/vdomain.h	Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,56 @@
+#ifndef VMAILMGR__VDOMAIN__H__
+#define VMAILMGR__VDOMAIN__H__
+
+#include "mystring/mystring.h"
+#include "config/configrc.h"
+#include "misc/pwentry.h"
+#include "vpwtable/vpwtable.h"
+#include "misc/response.h"
+
+class vdomain
+{
+public:
+  const mystring subdir;
+  const mystring prefix;
+  const configuration config;
+private:
+  vpwtable* ptable;
+
+  // Helper functions for chattr
+  response chpass(vpwentry*, mystring);
+  response chdest(vpwentry*, mystring);
+public:
+  vdomain(const pwentry&);
+  vdomain(const pwentry&, mystring, mystring, const configuration&);
+  ~vdomain();
+
+  vpwtable* table();
+  
+  mystring userdir(mystring username) const;
+
+  // Virtual user manipulation functions
+  vpwentry* lookup(mystring name, bool nodefault);
+  bool exists(mystring name);
+  
+  response set(const vpwentry*, bool onlyadd, mystring maildir = "");
+  response chattr(mystring user, unsigned attr, mystring newval);
+  response chattr(const vpwentry*, unsigned attr, mystring newval);
+  response deluser(mystring name, bool del_mailbox);
+
+  // Virtual user validation functions
+  response validate_forward(mystring);
+  bool validate_username(mystring) const;
+  bool validate_password(mystring) const;
+
+  static const unsigned ATTR_PASS = 1;
+  static const unsigned ATTR_DEST = 2;
+  static const unsigned ATTR_HARDQUOTA = 3;
+  static const unsigned ATTR_SOFTQUOTA = 4;
+  static const unsigned ATTR_MSGSIZE = 5;
+  static const unsigned ATTR_MSGCOUNT = 6;
+  static const unsigned ATTR_EXPIRY = 7;
+  static const unsigned ATTR_MAILBOX_ENABLED = 8;
+  static const unsigned ATTR_PERSONAL = 9;
+};
+
+#endif // VMAILMGR__VDOMAIN__H__