Re: [PATCH] omail-admin 1.2rc1 updates for vmailmgr 0.97

Dale Woolridge <[email protected]> Mon, 12 Sep 2005 15:33:52 -0400
Newsgroups gmane.mail.vmailmgr
Message-ID <[email protected]>
--ctP54qlpMx3WjD+/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On 11-Sep-2005 23:11 Dale Woolridge wrote:
| The attached patch 

    ... was broken and caused rejected hunks in htmlstuff.php.
    Attached is the correct, cleanly-applying, patch.  Thanks
    to Andrew for pointing it out.
--
-dale

--ctP54qlpMx3WjD+/
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: attachment; filename="omail-admin-1.2rc1-vmailmgr-0.97-dw.patch"
Content-Transfer-Encoding: 8bit

--- omail-admin-1.2rc1/config.php	Sun Feb 15 13:15:44 2004
+++ omail-admin/config.php	Sun Sep 11 22:35:53 2005
@@ -140,8 +140,17 @@
 // to allow display of domain / maildir disk usage information
 // (empty by default, to activate it, replace by directory name)
 
 //$vmailstats_directory = "/var/vmailstats";
 $vmailstats_directory = "";
+
+
+// mailbox(es) size settings
+// -------------------------
+// whether to look into subdirs of dir for mailbox size
+// you can, for example use vmailstats above to keep the
+// deep/recursed mbox size and use non-recursive live
+// mbox size (to reflect INBOX size only)
+$config_mailbox_recursion = 0;	// no recursion
 
 
 /////////////////////////////////////////////////////////////////////////////////////////
--- omail-admin-1.2rc1/func.php	Sun Feb 15 13:05:43 2004
+++ omail-admin/func.php	Sat Sep 10 23:48:02 2005
@@ -249,19 +249,26 @@
 
 function get_accounts_sort_by_name($a, $b) {
 
-	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible)=$a;
-	list($username2, $password2, $mbox2, $alias2, $PersonalInfo2, $HardQuota2, $SoftQuota2, $SizeLimit2, $CountLimit2, $CreationTime2, $ExpiryTime2, $resp2, $Enabled2, $Visible2)=$b;
+	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $MBoxStats, $Enabled, $Visible, $Alias)=$a;
+	list($username2, $password2, $mbox2, $alias2, $PersonalInfo2, $HardQuota2, $SoftQuota2, $SizeLimit2, $CountLimit2, $CreationTime2, $ExpiryTime2, $resp2, $MBoxStats2, $Enabled2, $Visible2, $Alias2)=$b;
 	return (strtolower($username) < strtolower($username2)) ? -1 : 1; 
 }		
 
 
 function get_accounts_sort_by_info($a, $b) {
 
-	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible)=$a;
-	list($username2, $password2, $mbox2, $alias2, $PersonalInfo2, $HardQuota2, $SoftQuota2, $SizeLimit2, $CountLimit2, $CreationTime2, $ExpiryTime2, $resp2, $Enabled2, $Visible2)=$b;
+	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $MBoxStats, $Enabled, $Visible, $Alias)=$a;
+	list($username2, $password2, $mbox2, $alias2, $PersonalInfo2, $HardQuota2, $SoftQuota2, $SizeLimit2, $CountLimit2, $CreationTime2, $ExpiryTime2, $resp2, $MBoxStats, $Enabled2, $Visible2, $Alias2)=$b;
 	return (strtolower($PersonalInfo) < strtolower($PersonalInfo2)) ? -1 : 1; 
 }		
 
+function get_accounts_sort_by_size($a, $b) {
+
+	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $MBoxStats, $Enabled, $Visible, $Alias)=$a;
+	list($username2, $password2, $mbox2, $alias2, $PersonalInfo2, $HardQuota2, $SoftQuota2, $SizeLimit2, $CountLimit2, $CreationTime2, $ExpiryTime2, $resp2, $MBoxStats2, $Enabled2, $Visible2, $Alias2)=$b;
+	return (($MBoxStats[1]+$MBoxStats[3]+$MBoxStats[5]) > ($MBoxStats2[1]+$MBoxStats2[3]+$MBoxStats2[5])) ? -1 : 1; 
+}
+
 
 function get_accounts($arg_action, $arg_username = "") {
 
@@ -300,13 +307,20 @@
 			// set if visible or not (for catchall or "admin" accounts like postmaster, etc...)
 			if ($username == "+") { $Visible = 0; } else { $Visible = 1; }
 
+			// check if alias
+			if (ord($data11[10]) == 49) { $Alias = 0; } else { $Alias = 1; }
 			// get enabled/disabled status
 			if (ord($data11[8]) == 49) { $Enabled = 1; } else { $Enabled = 0; }
 
-			// findout autoresp status (only lookup for mailboxes)
+			// findout autoresp/stats status (only lookup for mailboxes)
 
-			if ($mbox && $arg_action != 3) { 
+			if ($mbox && !$Alias && $arg_action != 3) { 
 
+				if (!isset($vm_mbox_stats[$username])) {
+				    $MBoxStats = get_mbox_stats($username);
+				} else {
+				    $MBoxStats = $vm_mbox_stats[$username];
+				}
 				if (!isset($vm_resp_status[$username])) {
 					$resp = load_resp_status($username); 
 					$vm_resp_status[$username] = $resp;
@@ -315,11 +329,12 @@
 				}
 
 			}  else { 
+				$MboxStats = array(0,0,0,0,0,0);  // new count/size, unseen count/size, seen count/size
 				$resp = 0; 
 			}
 
                         if (($arg_action == 1) && $mb_letter && !eregi("^[$mb_letter]",$username)) {
-                               if ($mbox) {
+                               if ($mbox && !$Alias) {
                                    if (!(in_array($username, $readonly_accounts_list) || in_array($username, $system_accounts_list))) {
                                            $quota_data["nb_users"]++;
                                    }
@@ -328,7 +343,7 @@
                         }
 
                         if ($arg_action == 2 && $al_letter && !eregi("^[$al_letter]",$username)) {
-                               if (!$mbox) {
+                               if (!$mbox || $Alias) {
                                    if (!(in_array($username, $readonly_accounts_list) || in_array($username, $system_accounts_list))) {
                                            $quota_data["nb_alias"]++;
                                    }
@@ -336,16 +351,16 @@
                                 continue;
                         }
 
-	                $list[$i] = array($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible);
+	                $list[$i] = array($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $MBoxStats, $Enabled, $Visible, $Alias);
 			
-			if ($mbox && ($arg_action == 1 || $arg_action == 3)) { 
+			if ($mbox && !$Alias && ($arg_action == 1 || $arg_action == 3)) { 
 				$new_list[$j++] = $list[$i];  
 				if (!(in_array($username, $readonly_accounts_list) || in_array($username, $system_accounts_list))) { 
 					$quota_data["nb_users"]++; 
 				}
 			}	
 
-			if (!$mbox && ($arg_action == 2 || $arg_action == 3)) { 
+			if ((!$mbox || $Alias) && ($arg_action == 2 || $arg_action == 3)) { 
 				$new_list[$j++] = $list[$i]; 
 				if (!(in_array($username, $readonly_accounts_list) || in_array($username, $system_accounts_list))) { 
 					$quota_data["nb_alias"]++; 
@@ -358,10 +373,17 @@
 
 		// try to sort on username
 
-		if ($sort_order == "info") {
-			usort($new_list, get_accounts_sort_by_info);
-		} else {
-			usort($new_list, get_accounts_sort_by_name);
+		switch ($sort_order) {
+		  case "info":
+		    usort($new_list, get_accounts_sort_by_info);
+		    break;
+		  case "size":
+		    usort($new_list, get_accounts_sort_by_size);
+		    break;
+		  case "username":
+		  default:
+		    usort($new_list, get_accounts_sort_by_name);
+		    break;
 		}
 
 
@@ -373,12 +395,20 @@
 
 		list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $data11)=$lookup_data;
 
+		// check if alias
+		if (ord($data11[10]) == 49) { $Alias = 0; } else { $Alias = 1; }
 		// get enabled/disabled status
 		if (ord($data11[8]) == 49) { $Enabled = 1; } else { $Enabled = 0; }
 	
-		if ($mbox) { $resp = load_resp_status($username); }  else { $resp = 0; } // only lookup for mailboxes
+		if ($mbox && !$Alias) {
+			$MBoxStats = get_mbox_stats($username);
+			$resp = load_resp_status($username);
+		} else {
+			$MboxStats = array(0,0,0,0,0,0);  // new count/size, unseen count/size, seen count/size
+			$resp = 0;
+		} // only lookup for mailboxes
 
-                $new_list[0] = array($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, 1);
+                $new_list[0] = array($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $MBoxStats, $Enabled, 1, $Alias);
 	}
 
 	return $new_list;
@@ -506,6 +536,14 @@
                 else { return "DELETE error : " . $result[1] ; }
 }
 
+function get_mbox_stats($arg_username) {
+	global $type, $domain, $passwd, $config_mailbox_recursion;
+
+	$return_data = vstat($domain, base64_decode($passwd), $arg_username, $config_mailbox_recursion);
+
+	return $return_data;
+}
+
 
 function load_resp_file($arg_username) {
 
@@ -601,7 +639,7 @@
 		
 	    if ($catchallinfo[0] == "+") { 
 
-    	        if (!($catchallinfo[2])) { 
+    	        if (!($catchallinfo[2]) || $catchallinfo[2] == "./users/+") { 
 		    $aliases = $catchallinfo[3];
 		    $nb_fwd = count($aliases);
 
--- omail-admin-1.2rc1/htmlstuff.php	Sun Feb 15 13:05:43 2004
+++ omail-admin/htmlstuff.php	Sun Sep 11 21:35:48 2005
@@ -333,7 +333,7 @@
 	global $quota_on, $quota_data, $session, $script, $lang, $domain, $type;
 	include("strings.php");
 
-	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible)= $userinfo;
+	list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible, $Alias)= $userinfo;
 
 	// template = quotaform.temp - 23sep2k [om]
 
@@ -627,13 +627,15 @@
 			$tmp_user = $mboxlist[0];
 			$listtype = "account";
 			$templdata["title"]=$txt_user_title[$lang];
-			if ($tmp_user[2]) { $mtype = "mbox"; } else { $mtype = "alias"; }
+			if ($tmp_user[2] && !$tmp_user[15]) { $mtype = "mbox"; } else { $mtype = "alias"; }
+
 			break;
 	}
 
 
 	$templdata["txt_email"] = $txt_email[$lang];
 	$templdata["txt_info"] = $txt_info[$lang];
+	$templdata["txt_size"] = $txt_size[$lang];
 
 	if ($vmailstats["active"]) { 
 		$templdata["txt_info"] .= " / " . $txt_mailbox_size[$lang];
@@ -661,6 +663,7 @@
 
 	$templdata["url_email"] = $script . "?A=menu&form_sort=username&" . SID;
 	$templdata["url_info"] = $script . "?A=menu&form_sort=info&" . SID;
+	$templdata["url_size"] = $script . "?A=menu&form_sort=size&" . SID;
 	$templdata["url_show_mb_letter"] = $script . "?A=menu&" . SID . "&new_mb_start=1&show_mb_letter=";
 	$templdata["url_show_al_letter"] = $script . "?A=menu&" . SID . "&new_al_start=1&show_al_letter=";
 
@@ -766,14 +769,14 @@
         
 	for ($i = $loop_start; $i <= $loop_end; $i++) {
 
-		list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible)=$mboxlist[$i];
+		list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $mboxstats, $Enabled, $Visible, $Alias)=$mboxlist[$i];
 
 		// print "$i $username<br>";  //debug
 
 		while ($username && (!$Visible || in_array($username, $system_accounts_list))) {
     		    $hidden++; 
 		    $i++; 
-		    list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $Enabled, $Visible)=$mboxlist[$i];
+		    list($username, $password, $mbox, $alias, $PersonalInfo, $HardQuota, $SoftQuota, $SizeLimit, $CountLimit, $CreationTime, $ExpiryTime, $resp, $mboxstats, $Enabled, $Visible, $Alias)=$mboxlist[$i];
 
 		//	print "   $i $username<br>"; //debug
 
@@ -805,19 +808,25 @@
 		
 		$templdata[obj][$ii]["username"] = $username;
 		$templdata[obj][$ii]["PersonalInfo"] = $PersonalInfo;
+		if ($arg_action != 2 && !$Alias) {
+		    $templdata[obj][$ii]["size_new"] = round($mboxstats[1]/(1024*1024),3);
+		    $templdata[obj][$ii]["size_unseen"] = round($mboxstats[3]/(1024*1024),3);
+		    $templdata[obj][$ii]["size_seen"] = round($mboxstats[5]/(1024*1024),3);
+		    $templdata[obj][$ii]["size_all"] = round(($mboxstats[1]+$mboxstats[3]+$mboxstats[5])/(1024*1024),3);
+		}
 
 		if (in_array($username, $readonly_accounts_list)) {
 		     $templdata[obj][$ii]["PersonalInfo"] = "<I>" . $txt_system_account[$lang] . "</I>"; 
 			$templdata[obj][$ii]["colorUsername"] = "black";
 		}
 
-		if ($vmailstats["active"] && $arg_action != 2) {
-			if ($vmailstats[$username][size]<1024) { 
+		if ($vmailstats["active"] && $arg_action != 2 && !$Alias) {
+			if ($vmailstats[$username][size]<1024) {
 				$templdata[obj][$ii]["PersonalInfo"] .= " (" . $vmailstats[$username][size] . " kB)"; 
 			} else {
 				$templdata[obj][$ii]["PersonalInfo"] .= " (" . round($vmailstats[$username][size]/1024,1) . " MB)"; 
 			}
 		}
 
 		$templdata[obj][$ii]["alias0"] = $alias[0];
 		$templdata[obj][$ii]["alias1"] = $alias[1];
--- omail-admin-1.2rc1/index.php	Sun Feb 15 13:05:43 2004
+++ omail-admin/index.php	Fri Sep  9 23:19:28 2005
@@ -330,6 +330,7 @@
 
 		if ($type == "domain") {
 
+			if ($form_sort == "size") { $sort_order = "size"; } 
 			if ($form_sort == "info") { $sort_order = "info"; } 
 			if ($form_sort == "username") { $sort_order = "username"; }
 
@@ -914,7 +915,7 @@
 
 			if (!$fwd[0] && !$fwd[1] && !$fwd[2] && !$fwd[3] && !$fwd[4] && !$fwd[5]) {
 				$userinfo = get_accounts(0,$U);
-				if (!$userinfo[0][12]) {
+				if (!$userinfo[0][13]) {
 					$results .= "<br><br><b><font color=red>" . $txt_forwarding_off_warning[$lang] . "</font></b><br>";
 				}	
 			} else {
--- omail-admin-1.2rc1/templates/display_account.temp	Sun May  4 17:56:42 2003
+++ omail-admin/templates/display_account.temp	Sat Sep 10 23:31:43 2005
@@ -2,6 +2,7 @@
 <table border=0><TR><TH>N°</TH>
 <TH>%txt_email%</TH>
 <TH>%txt_info%</TH>
+<TH>%txt_size%</TH>
 <TH>%txt_fwd% ?</TH>
 
 %ifdef_txt_responder%
@@ -16,6 +17,7 @@
 <TD><B><FONT COLOR=%colorUsername%> %username%  </FONT></B>&nbsp;</TD> 
 
 <TD>%PersonalInfo%&nbsp;</TD> 
+<TD>%size_all%&nbsp;MB</TD> 
 <TD>%more_alias%&nbsp;</TD>
 
 %ifdef_autoresponder_status%
--- omail-admin-1.2rc1/templates/display_aliases.temp	Sun May  4 17:56:42 2003
+++ omail-admin/templates/display_aliases.temp	Sat Sep 10 23:30:25 2005
@@ -30,6 +30,7 @@
 <table border=0><TR><TH>N°</TH>
 <TH><A HREF="%url_email%">%txt_email%</A></TH>
 <TH><A HREF="%url_info%">%txt_info%</A></TH>
+<TH><A HREF="%url_size%">%txt_size%</A></TH>
 <TH>%txt_fwd%?</TH>
 
 %ifdef_txt_responder%
@@ -50,6 +51,7 @@
 <TD><B><FONT COLOR=%colorUsername%> %username%  </FONT></B>&nbsp;</TD> 
 
 <TD>%PersonalInfo%&nbsp;</TD> 
+<TD>%size_all%&nbsp;MB</TD> 
 <TD>%more_alias%&nbsp;</TD>
 
 %ifdef_autoresponder_status%
--- omail-admin-1.2rc1/templates/display_mailboxes.temp	Sun May  4 17:56:42 2003
+++ omail-admin/templates/display_mailboxes.temp	Sat Sep 10 23:32:03 2005
@@ -30,6 +30,7 @@
 <table border=0><TR><TH>N°</TH>
 <TH><A HREF="%url_email%">%txt_email%</A></TH>
 <TH><A HREF="%url_info%">%txt_info%</A></TH>
+<TH><A HREF="%url_size%">%txt_size%</A></TH>
 <TH>%txt_fwd%?</TH>
 
 %ifdef_txt_responder%
@@ -49,6 +50,7 @@
 <TD><B><FONT COLOR=%colorUsername%> %username%  </FONT></B>&nbsp;</TD> 
 
 <TD>%PersonalInfo%&nbsp;</TD> 
+<TD>%size_all%&nbsp;MB</TD> 
 <TD>%more_alias%&nbsp;</TD>
 
 %ifdef_autoresponder_status%
--- omail-admin-1.2rc1/templates/display_mailboxes_nolimit.temp	Sun May  4 17:56:42 2003
+++ omail-admin/templates/display_mailboxes_nolimit.temp	Sat Sep 10 23:32:09 2005
@@ -30,6 +30,7 @@
 <table border=0><TR><TH>N°</TH>
 <TH><A HREF="%url_email%">%txt_email%</A></TH>
 <TH><A HREF="%url_info%">%txt_info%</A></TH>
+<TH><A HREF="%url_size%">%txt_size%</A></TH>
 <TH>%txt_fwd%?</TH>
 
 %ifdef_txt_responder%
@@ -45,6 +46,7 @@
 <TD><B><FONT COLOR=%colorUsername%> %username%  </FONT></B>&nbsp;</TD> 
 
 <TD>%PersonalInfo%&nbsp;</TD> 
+<TD>%size_all%&nbsp;MB</TD> 
 <TD>%more_alias%&nbsp;</TD>
 
 %ifdef_autoresponder_status%
--- omail-admin-1.2rc1/vmail.inc	Sun May  4 17:56:42 2003
+++ omail-admin/vmail.inc	Sat Sep 10 23:48:10 2005
@@ -189,8 +189,8 @@
 if ($password=="") return array(1, "Empty domain password");
 if ($username=="") return array(1, "Empty username");
 if ($userpass=="") return array(1, "No user password supplied");
-	$command=array("adduser2", $domain, $username, $password,
-	               $userpass, $username);
+	$command=array("adduser3", $domain, $username, $password,
+	               $userpass, $username, "1");
 	for ($x=0; $x < sizeof($forwards); $x++)
 		if ($forwards[$x]!="") $command[]=$forwards[$x];
 $result=vm_daemon_raw($command);
@@ -209,8 +209,8 @@
 if ($domain=="") return array(1, "Empty domain");
 if ($password=="") return array(1, "Empty domain password");
 if ($username=="") return array(1, "Empty username");
-	$command=array("adduser2", $domain, $username, $password,
-	               $userpass, "");
+	$command=array("adduser3", $domain, $username, $password,
+	               $userpass, $username, "");
 	for ($x=0; $x < sizeof($forwards); $x++)
 		if ($forwards[$x]!="")
 			$command[]=$forwards[$x];
@@ -299,6 +299,16 @@
 function vautoresponsestatus($domain, $password, $username){
 	$command = array("autoresponse", $domain, $username, $password, "status");
 return vm_daemon_raw($command);
+}
+
+function vstat($domain, $password, $username, $recurse){
+	if ($recurse) {
+	    $command = array("stat", $domain, $username, $password, "recurse");
+	} else {
+	    $command = array("stat", $domain, $username, $password);
+	}
+	$temp = vm_daemon_raw($command);
+return array_slice(explode(chr(0),$temp[1]),1);
 }
 
 
--- omail-admin-1.2rc1/scripts/vmailstats.pl	Sat Feb 14 18:17:23 2004
+++ omail-admin/scripts/vmailstats.pl	Thu Sep  8 23:10:15 2005
@@ -131,6 +131,7 @@
 			$maildir = lc($maildir);
 			$maildir =~ s/\:/\./g;
 
+			next if (!$account_cur_size && !$account_new_size && !$account_cur_nb && !$account_new_nb && !-d "$target_maildir/cur");
 			print OUT "$maildir\t$account_size\t$account_cur_size\t$account_new_size\t$account_cur_nb\t$account_new_nb\t\n";
 	
 		}


--ctP54qlpMx3WjD+/
Content-Type: text/plain; charset=us-ascii


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
--ctP54qlpMx3WjD+/--