this enforces the disable_* vlimits:
e.g: if vlimits.disable_imap=1 it is the same as if every user has the NO_IMAP 
gid flag set.
i'm going to post (a very similar one) tomorrow for .qmail-limits files.
is there vlimit support being added for postgres/sybase/oracle ?


--- vpopmail-orig-5.3.19/vmysql.c       2003-03-05 18:09:47.000000000 +0100
+++ vpopmail-new-5.3.19/vmysql.c        2003-03-25 16:22:13.000000000 +0100
@@ -327,6 +327,10 @@
  uid_t myuid;
  uid_t uid;
  gid_t gid;
+#ifdef ENABLE_MYSQL_LIMITS
+ struct vlimits limits;
+#endif
+

     vget_assign(domain,NULL,156,&uid,&gid);
     myuid = geteuid();
@@ -406,6 +410,35 @@
         return(NULL);
     }
     mysql_free_result(res_read);
+#ifdef ENABLE_MYSQL_LIMITS
+    if (vget_limits (in_domain,&limits) == 0) {
+      int mask = 0;
+      if (limits.disable_pop) {
+        mask += NO_POP;
+      }
+      if (limits.disable_smtp) {
+        mask += NO_SMTP;
+      }
+      if (limits.disable_imap) {
+        mask += NO_IMAP;
+      }
+      if (limits.disable_passwordchanging) {
+        mask += NO_PASSWD_CHNG;
+      }
+      if (limits.disable_relay) {
+        mask += NO_RELAY;
+      }
+      if (limits.disable_webmail) {
+        mask += NO_WEBMAIL;
+      }
+      if (limits.disable_dialup) {
+        mask += NO_DIALUP;
+      }
+
+      vpw.pw_gid = vpw.pw_gid | mask;
+    }
+#endif
+
     return(&vpw);
 }


Reply via email to