Hi Ken, > If anyone can put together a patch for the quota > changes against 1.0.6, I can include that one too.
check if this still works... :-) Best regards, -- Dorneles Trem�a Caxias do Sul - RS - Brasil +55 54 9114 9312 - UIN: 2413568 X3ng Web Technology <http://www.x3ng.com.br> -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GCS/IT d- s:->: a23 C+++ UBL++++$ P--- L++ E-- W+++ N++ o? K? w+ O M+ V-- PS+ PE- Y-- PGP++ t+ 5 X++ R+ tv+ b(++) DI+ D++ G+>+++ e++>++++ h---- r+++ y+++** ------END GEEK CODE BLOCK------
diff -ruN qmailadmin-1.0.6-original/html/add_user.html
qmailadmin-1.0.6/html/add_user.html
--- qmailadmin-1.0.6-original/html/add_user.html 2002-10-24 15:58:18.000000000
-0300
+++ qmailadmin-1.0.6/html/add_user.html 2002-10-24 17:18:04.000000000 -0300
@@ -28,6 +28,10 @@
<td><b>##X002 </b></td>
<td align="left"><input type="text" size="16" name="newu"
maxlength="128">@##D</td>
</tr>
+
+ <tr>
+
+ <td><b>##X249 </b></td>
+
+ <td align="left"><input type="text" size="16" name="quota"
+maxlength="128"> ##X252</td>
+
+ </tr>
<tr>
<td><b>##X057 </b></td>
<td align="left"><input type="password" size="16" name="password1"
maxlength="128"></td>
diff -ruN qmailadmin-1.0.6-original/html/en qmailadmin-1.0.6/html/en
--- qmailadmin-1.0.6-original/html/en 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/html/en 2002-10-24 21:01:16.000000000 -0300
@@ -247,3 +247,10 @@
246 Digest Subscriber<br>Address
247 List Digest Subscribers
248 List of digest email addresses on mailing list
+249 Quota (MB)
+250 Used
+251 (Enter NOQUOTA for unlimited quota)
+252 (Leave empty for unlimited quota)
+253 Limit:
+254 Used:
+
diff -ruN qmailadmin-1.0.6-original/html/mod_user_new.html
qmailadmin-1.0.6/html/mod_user_new.html
--- qmailadmin-1.0.6-original/html/mod_user_new.html 1969-12-31 21:00:00.000000000
-0300
+++ qmailadmin-1.0.6/html/mod_user_new.html 2002-10-24 17:18:04.000000000 -0300
@@ -0,0 +1,110 @@
+ </head>
+ <body bgcolor="#ffffff">
+ <center>
+ <h2>##S</h2>
+ <!-- Black frame 2 pixels wide -->
+ <table cellpadding="2" cellspacing="0" border="0"
+align="center" valign="top" width="600" bgcolor="#000000"><tr><td>
+ <!-- Frame content -->
+ <table cellpadding="0" cellspacing="0" border="0"
+align="center" valign="top" width="100%" bgcolor="#ffffff">
+ <!-- Form title -->
+ <tr>
+ <td bgcolor="#000000" align="center">
+ <font color="#ffffff" size="3">
+ <b>##X109: ##A@##D</b>
+ </font>
+ </td>
+ </tr>
+ <!-- End of form title -->
+ <!-- Form content -->
+ <tr>
+ <td>
+ <table cellpadding="5"
+cellspacing="1" border="0" width="100%">
+ <!-- Form fields -->
+ <tr>
+ <td>
+ <form
+method="post" name="logon" action="##C/com/modusernow">
+
+ <table cellpadding="0" cellspacing="0" border="0">
+
+ <tr>
+
+ <td align="left">##X110 </td>
+
+ <td align="left"><input type="password" name="password1"
+maxlength="128" size="16"></td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X091 </td>
+ <td align="left"><input
+type="password" name="password2" maxlength="128" size="16"></td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X249 </td>
+
+ <td align="left"><input type="text" name="quota" maxlength="128"
+size="16"> ##X251</td>
+
+ </tr>
+
+
+ <tr>
+
+ <td align="left">##X092 </td>
+
+ <td align="left"><input type="text" name="gecos" maxlength="128"
+size="32" value="##i7"></td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X205 </td>
+
+ <td align="left"><input type="radio" name="cforward" value="disable"
+##i0></td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X209 </td>
+
+ <td align="left"><input type="radio" name="cforward" value="forward"
+##i1></td>
+
+ </tr>
+
+ <tr>
+
+ <td colspan="2">
+
+ <table id="AutoNumber1" cellspacing="0" cellpadding="0"
+border="0">
+
+ <tr>
+
+ <td align="left">##X211 </td>
+
+ <td align="left"><input type="text"
+size="50" name="nforward" value="##i2"></td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X210 </td>
+
+ <td align="left"><input type="checkbox"
+name="fsaved" ##i3></td>
+
+ </tr>
+
+ </table>
+
+ </td>
+
+ </tr>
+
+ <tr>
+
+ <td align="left">##X212 </td>
+
+ <td align="left"><input type="radio" name="cforward"
+value="vacation" ##i4></td>
+
+ </tr>
+
+ <tr>
+
+ <td colspan="2">
+
+ <table id="AutoNumber2" cellspacing="0" cellpadding="0"
+border="0">
+
+ <tr>
+
+ <td align="left">##X213 </td>
+
+ <td align="left"><input type="text"
+name="vsubject" size="50" value="##i5"></td>
+
+ </td>
+
+ <tr>
+
+ <td align="left">##X214 </td>
+
+ <td align="left"><textarea name="vmessage"
+rows="10" cols="50">##i6</textarea></td>
+
+ </tr>
+
+ </table>
+
+ </td>
+
+ </tr>
+
+ </table>
+
+ <input type="hidden" name="modu" value="##A">
+
+ <input type="hidden" name="do.login" value="ChangePassword">
+
+ <input type="hidden" name="user" value="##U">
+
+ <input type="hidden" name="dom" value="##D">
+
+ <input type="hidden" name="time" value="##T">
+
+ <input type="submit" name="##X111" value="##X111">
+ </form>
+ <div
+align="right">
+
+ <hr>
+
+ <font size="2"><b>
+
+ [
+
+ <a href="##C/com/showmenu?user=##U&dom=##D&time=##T&">##X001</a>
+
+ ]
+
+ </b></font>
+ </div>
+ </td>
+ </tr>
+ <!-- End of form
+fields -->
+ </table>
+ </td>
+ </tr>
+ </table>
+ <!-- End of frame content -->
+ </td></tr></table>
+ <!-- End of black frame -->
+ </center>
diff -ruN qmailadmin-1.0.6-original/html/pt-BR qmailadmin-1.0.6/html/pt-BR
--- qmailadmin-1.0.6-original/html/pt-BR 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/html/pt-BR 2002-10-24 21:01:24.000000000 -0300
@@ -228,7 +228,29 @@
227 Resumo
228 Total:
229 ilimitado
-230 Total de assinantes:
-231 No Mailing Lists to Display
-232 No Aliases/Forwards to Display
-233 No Mail Robots to Display
+230 Total de Assinantes:
+231 Nenhum lista de distribui��o para exibir
+232 Nenhum Apelido/Redirecionamento para exibir
+233 Nenhum Rob� para exibir
+234 Por favor digite a senha
+235 Definir a conta pega-tudo como exclu�r
+236 A��o padr�o da conta pega-tudo: excluir
+237 Cadastrar<br>Assinante Digest
+238 Excluir<br>Assinante Digest
+239 Exibir<br>Assinante Digest
+240 Endere�o de Email adicionado como assinante digest na lista de distribui��o
+241 Cadastrar Assinante Digest na lista de distribui��o
+242 exclu�do da lista de distribui��o
+243 Excluir assinante digest da lista de distribui��o
+244 Total de Assinantes Digest:
+245 Excluir<br>Assinante Digest
+246 Assinante Digest<br>Endere�o
+247 Listar Assinantes Digest
+248 Lista de endere�os dos assinantes digest na lista de distribui��o
+249 Quota (MB)
+250 Usado
+251 (Digite NOQUOTA para quota ilimitada)
+252 (Deixe em branco para quota ilimitada)
+253 Limite:
+254 Utilizado:
+
diff -ruN qmailadmin-1.0.6-original/html/show_users.html
qmailadmin-1.0.6/html/show_users.html
--- qmailadmin-1.0.6-original/html/show_users.html 2002-10-24 15:58:18.000000000
-0300
+++ qmailadmin-1.0.6/html/show_users.html 2002-10-24 17:18:04.000000000 -0300
@@ -31,6 +31,8 @@
<tr bgcolor="#cccccc">
<th align="left"><font size="2">##X002</font></th>
<th align="left"><font size="2">##X063</font></th>
+
+ <th align="right"><font size="2">##X250 / </font></th>
+
+ <th align="left"><font size="2">##X249</font> </th>
<th><font size="2">##X064</font></th>
<th><font size="2">##X065</font></th>
<th><font size="2">##X066</font></th>
diff -ruN qmailadmin-1.0.6-original/qmailadmin.c qmailadmin-1.0.6/qmailadmin.c
--- qmailadmin-1.0.6-original/qmailadmin.c 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/qmailadmin.c 2002-10-24 17:18:04.000000000 -0300
@@ -33,6 +33,7 @@
char Domain[MAX_BUFF];
char Password[MAX_BUFF];
char Gecos[MAX_BUFF];
+char Quota[MAX_BUFF];
char Time[MAX_BUFF];
char ActionUser[MAX_BUFF];
char Newu[MAX_BUFF];
@@ -276,6 +277,7 @@
memset(Username,0, MAX_BUFF);
memset(Domain,0, MAX_BUFF);
memset(Password,0, MAX_BUFF);
+ memset(Quota,0, MAX_BUFF);
memset(Time,0, MAX_BUFF);
memset(ActionUser,0, MAX_BUFF);
memset(Newu,0, MAX_BUFF);
diff -ruN qmailadmin-1.0.6-original/qmailadmin.h qmailadmin-1.0.6/qmailadmin.h
--- qmailadmin-1.0.6-original/qmailadmin.h 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/qmailadmin.h 2002-10-24 17:18:04.000000000 -0300
@@ -47,3 +47,8 @@
char *get_html_text( char *index );
int open_lang( char *lang);
+
+char *get_quota_used(char*); //jhopper prototype
+int quota_to_bytes(char[], char*); //jhopper prototype
+int quota_to_megabytes(char[], char*); //jhopper prototype
+double get_du(char*); //jhopper prototype
diff -ruN qmailadmin-1.0.6-original/qmailadminx.h qmailadmin-1.0.6/qmailadminx.h
--- qmailadmin-1.0.6-original/qmailadminx.h 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/qmailadminx.h 2002-10-24 17:18:04.000000000 -0300
@@ -20,6 +20,7 @@
extern char Domain[MAX_BUFF];
extern char Password[MAX_BUFF];
extern char Gecos[MAX_BUFF];
+extern char Quota[MAX_BUFF];
extern char Time[MAX_BUFF];
extern char ActionUser[MAX_BUFF];
extern char Newu[MAX_BUFF];
diff -ruN qmailadmin-1.0.6-original/quotafix-patch.diff
qmailadmin-1.0.6/quotafix-patch.diff
--- qmailadmin-1.0.6-original/quotafix-patch.diff 1969-12-31 21:00:00.000000000
-0300
+++ qmailadmin-1.0.6/quotafix-patch.diff 2002-10-24 17:18:04.000000000 -0300
@@ -0,0 +1,193 @@
+diff -urN ../qmailadmin-1.0.4/html/add_user.html ./html/add_user.html
+--- ../qmailadmin-1.0.4/html/add_user.html Thu Feb 28 18:32:58 2002
++++ ./html/add_user.html Mon May 6 23:10:22 2002
+@@ -28,6 +28,10 @@
+
+ <td><b>##X002 </b></td>
+
+ <td align="left"><input type="text" size="16" name="newu"
+maxlength="128">@##D</td>
+
+ </tr>
++
+ <tr>
++
+ <td><b>##X249 </b></td>
++
+ <td align="left"><input type="text" size="16" name="quota"
+maxlength="128"> ##X252</td>
++
+ </tr>
+
+ <tr>
+
+ <td><b>##X057 </b></td>
+
+ <td align="left"><input type="password" size="16" name="password1"
+maxlength="128"></td>
+diff -urN ../qmailadmin-1.0.4/html/en ./html/en
+--- ../qmailadmin-1.0.4/html/en Fri Mar 15 08:26:14 2002
++++ ./html/en Mon May 6 23:10:01 2002
+@@ -247,3 +247,7 @@
+ 246 Digest Subscriber<br>Address
+ 247 List Digest Subscribers
+ 248 List of digest email addresses on mailing list
++249 Quota (MB)
++250 Used
++251 (Enter NOQUOTA for unlimited quota)
++252 (Leave empty for unlimited quota)
+diff -urN ../qmailadmin-1.0.4/html/mod_user_new.html ./html/mod_user_new.html
+--- ../qmailadmin-1.0.4/html/mod_user_new.html Wed Dec 31 16:00:00 1969
++++ ./html/mod_user_new.html Mon May 6 23:07:34 2002
+@@ -0,0 +1,110 @@
++ </head>
++ <body bgcolor="#ffffff">
++ <center>
++ <h2>##S</h2>
++ <!-- Black frame 2 pixels wide -->
++ <table cellpadding="2" cellspacing="0" border="0"
+align="center" valign="top" width="600" bgcolor="#000000"><tr><td>
++ <!-- Frame content -->
++ <table cellpadding="0" cellspacing="0" border="0"
+align="center" valign="top" width="100%" bgcolor="#ffffff">
++ <!-- Form title -->
++ <tr>
++ <td bgcolor="#000000" align="center">
++ <font color="#ffffff" size="3">
++ <b>##X109: ##A@##D</b>
++ </font>
++ </td>
++ </tr>
++ <!-- End of form title -->
++ <!-- Form content -->
++ <tr>
++ <td>
++ <table cellpadding="5"
+cellspacing="1" border="0" width="100%">
++ <!-- Form fields -->
++ <tr>
++ <td>
++ <form
+method="post" name="logon" action="##C/com/modusernow">
++
+ <table cellpadding="0" cellspacing="0" border="0">
++
+ <tr>
++
+ <td align="left">##X110 </td>
++
+ <td align="left"><input type="password" name="password1"
+maxlength="128" size="16"></td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X091 </td>
++ <td align="left"><input
+type="password" name="password2" maxlength="128" size="16"></td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X249 </td>
++
+ <td align="left"><input type="text" name="quota" maxlength="128"
+size="16"> ##X251</td>
++
+ </tr>
++
++
+ <tr>
++
+ <td align="left">##X092 </td>
++
+ <td align="left"><input type="text" name="gecos" maxlength="128"
+size="32" value="##i7"></td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X205 </td>
++
+ <td align="left"><input type="radio" name="cforward" value="disable"
+##i0></td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X209 </td>
++
+ <td align="left"><input type="radio" name="cforward" value="forward"
+##i1></td>
++
+ </tr>
++
+ <tr>
++
+ <td colspan="2">
++
+ <table id="AutoNumber1" cellspacing="0" cellpadding="0"
+border="0">
++
+ <tr>
++
+ <td align="left">##X211 </td>
++
+ <td align="left"><input type="text"
+size="50" name="nforward" value="##i2"></td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X210 </td>
++
+ <td align="left"><input type="checkbox"
+name="fsaved" ##i3></td>
++
+ </tr>
++
+ </table>
++
+ </td>
++
+ </tr>
++
+ <tr>
++
+ <td align="left">##X212 </td>
++
+ <td align="left"><input type="radio" name="cforward"
+value="vacation" ##i4></td>
++
+ </tr>
++
+ <tr>
++
+ <td colspan="2">
++
+ <table id="AutoNumber2" cellspacing="0" cellpadding="0"
+border="0">
++
+ <tr>
++
+ <td align="left">##X213 </td>
++
+ <td align="left"><input type="text"
+name="vsubject" size="50" value="##i5"></td>
++
+ </td>
++
+ <tr>
++
+ <td align="left">##X214 </td>
++
+ <td align="left"><textarea name="vmessage"
+rows="10" cols="50">##i6</textarea></td>
++
+ </tr>
++
+ </table>
++
+ </td>
++
+ </tr>
++
+ </table>
++
+ <input type="hidden" name="modu" value="##A">
++
+ <input type="hidden" name="do.login" value="ChangePassword">
++
+ <input type="hidden" name="user" value="##U">
++
+ <input type="hidden" name="dom" value="##D">
++
+ <input type="hidden" name="time" value="##T">
++
+ <input type="submit" name="##X111" value="##X111">
++ </form>
++ <div
+align="right">
++
+ <hr>
++
+ <font size="2"><b>
++
+ [
++
+ <a href="##C/com/showmenu?user=##U&dom=##D&time=##T&">##X001</a>
++
+ ]
++
+ </b></font>
++ </div>
++ </td>
++ </tr>
++ <!-- End of form
+fields -->
++ </table>
++ </td>
++ </tr>
++ </table>
++ <!-- End of frame content -->
++ </td></tr></table>
++ <!-- End of black frame -->
++ </center>
+diff -urN ../qmailadmin-1.0.4/html/show_users.html ./html/show_users.html
+--- ../qmailadmin-1.0.4/html/show_users.html Thu Feb 28 18:32:58 2002
++++ ./html/show_users.html Mon May 6 22:51:19 2002
+@@ -31,6 +31,8 @@
+
+ <tr bgcolor="#cccccc">
+
+ <th align="left"><font size="2">##X002</font></th>
+
+ <th align="left"><font size="2">##X063</font></th>
++
+ <th align="right"><font size="2">##X250 / </font></th>
++
+ <th align="left"><font size="2">##X249</font> </th>
+
+ <th><font size="2">##X064</font></th>
+
+ <th><font size="2">##X065</font></th>
+
+ <th><font size="2">##X066</font></th>
+diff -urN ../qmailadmin-1.0.4/qmailadmin.c ./qmailadmin.c
+--- ../qmailadmin-1.0.4/qmailadmin.c Wed Mar 27 13:56:28 2002
++++ ./qmailadmin.c Mon May 6 21:44:15 2002
+@@ -33,6 +33,7 @@
+ char Domain[MAX_BUFF];
+ char Password[MAX_BUFF];
+ char Gecos[MAX_BUFF];
++char Quota[MAX_BUFF];
+ char Time[MAX_BUFF];
+ char ActionUser[MAX_BUFF];
+ char Newu[MAX_BUFF];
+@@ -276,6 +277,7 @@
+ memset(Username,0, MAX_BUFF);
+ memset(Domain,0, MAX_BUFF);
+ memset(Password,0, MAX_BUFF);
++ memset(Quota,0, MAX_BUFF);
+ memset(Time,0, MAX_BUFF);
+ memset(ActionUser,0, MAX_BUFF);
+ memset(Newu,0, MAX_BUFF);
+diff -urN ../qmailadmin-1.0.4/qmailadmin.h ./qmailadmin.h
+--- ../qmailadmin-1.0.4/qmailadmin.h Wed Mar 27 13:55:55 2002
++++ ./qmailadmin.h Thu May 9 10:34:53 2002
+@@ -47,3 +47,8 @@
+
+ char *get_html_text( char *index );
+ int open_lang( char *lang);
++
++char *get_quota_used(char*); //jhopper prototype
++int quota_to_bytes(char[], char*); //jhopper prototype
++int quota_to_megabytes(char[], char*); //jhopper prototype
++double get_du(char*); //jhopper prototype
+diff -urN ../qmailadmin-1.0.4/qmailadminx.h ./qmailadminx.h
+--- ../qmailadmin-1.0.4/qmailadminx.h Wed Mar 27 13:55:51 2002
++++ ./qmailadminx.h Mon May 6 22:56:26 2002
+@@ -20,6 +20,7 @@
+ extern char Domain[MAX_BUFF];
+ extern char Password[MAX_BUFF];
+ extern char Gecos[MAX_BUFF];
++extern char Quota[MAX_BUFF];
+ extern char Time[MAX_BUFF];
+ extern char ActionUser[MAX_BUFF];
+ extern char Newu[MAX_BUFF];
diff -ruN qmailadmin-1.0.6-original/template.c qmailadmin-1.0.6/template.c
--- qmailadmin-1.0.6-original/template.c 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/template.c 2002-10-24 21:22:11.000000000 -0300
@@ -57,7 +57,9 @@
int testint;
char *tmpstr;
struct stat mystat;
-
+ char *quotaptr;
+ char qconvert[11];
+ char *qnote = " MB";
if (strstr(filename, "/")!= NULL||strstr(filename,"..")!=NULL) {
printf("warning: invalid file name %s\n", filename );
@@ -195,14 +197,25 @@
get_html_text("080"));
}
} else {
+ // Code added by jhopper
+ struct vqpasswd *vpw;
+ vpw = vauth_getpw(Username, Domain);
+
fprintf(actout,
"<a href=\"%s/com/moduser?user=%s&time=%i&dom=%s&moduser=%s\">",
CGIPATH,Username,Mytime,Domain,Username);
fprintf(actout,
"<font size=\"2\" color=\"#000000\"><b>%s %s</b></font></a><br><br>",
get_html_text("111"), Username);
- }
+ // Code added by jhopper
+ if (strncmp(vpw->pw_shell, "NOQUOTA", 2) != 0) {
+quota_to_megabytes(qconvert, vpw->pw_shell); }
+ else { sprintf(qconvert, "unlimited"); qnote = ""; }
+ fprintf(actout, "<font size=\"2\" color=\"#000000\"><b>Quota:</b><br>%s
+%s %s", get_html_text("253"), qconvert, qnote);
+ fprintf(actout, "<br>%s ", get_html_text("254"));
+ quotaptr = get_quota_used(vpw->pw_dir);
+ fprintf(actout, "%s MB</font><br>", quotaptr);
+ }
if (AdminType == DOMAIN_ADMIN) {
fprintf(actout, "<br>");
fprintf(actout,
diff -ruN qmailadmin-1.0.6-original/user.c qmailadmin-1.0.6/user.c
--- qmailadmin-1.0.6-original/user.c 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/user.c 2002-10-24 17:18:04.000000000 -0300
@@ -65,13 +65,15 @@
struct vqpasswd *pw;
int totalpages;
int bounced;
+ int colspan = 7;
+ char qconvert[11];
if (MaxPopAccounts == 0) return 0;
/* Get the default catchall box name */
if ((fs=fopen(".qmail-default","r")) == NULL) {
- fprintf(actout,"<tr><td colspan=\"5\">%s .qmail-default</tr></td>",
- get_html_text("144"));
+ fprintf(actout,"<tr><td colspan=\"%i\">%s .qmail-default</tr></td>",
+ colspan, get_html_text("144"));
vclose();
exit(0);
}
@@ -133,8 +135,8 @@
}
if (pw == NULL) {
- fprintf(actout, "<tr><td colspan=\"5\" bgcolor=%s>%s</td></tr>\n",
- get_color_text("000"), get_html_text("131"));
+ fprintf(actout, "<tr><td colspan=\"%i\" bgcolor=%s>%s</td></tr>\n",
+ colspan, get_color_text("000"), get_html_text("131"));
moreusers = 0;
} else {
while ((pw != NULL) && ((k < MAXUSERSPERPAGE + startnumber) ||
@@ -146,6 +148,17 @@
fprintf(actout, "<tr bgcolor=%s>", get_color_text("000"));
fprintf(actout, "<td align=\"left\">%s</td>", pw->pw_name);
fprintf(actout, "<td align=\"left\">%s</td>", pw->pw_gecos);
+
+ // Code added by jhopper
+ fprintf(actout, "<td align=\"right\">%s / </td>",
+get_quota_used(pw->pw_dir));
+ if (strncmp(pw->pw_shell, "NOQUOTA", 2) != 0) {
+ if(quota_to_megabytes(qconvert, pw->pw_shell)) {
+ fprintf(actout, "<td align=\"left\">(BAD)</td>");
+ }
+ else { fprintf(actout, "<td align=\"left\">%s</td>", qconvert); }
+ }
+ else { fprintf(actout, "<td align=\"left\">unlimited</td>"); }
+
fprintf(actout, "<td align=\"center\">");
fprintf(actout, "<a
href=\"%s/com/moduser?user=%s&dom=%s&time=%d&moduser=%s\">",
CGIPATH,user,dom,mytime,pw->pw_name);
@@ -220,7 +233,7 @@
if (AdminType == DOMAIN_ADMIN) {
#ifdef USER_INDEX
fprintf(actout, "<tr bgcolor=%s>", get_color_text("000"));
- fprintf(actout, "<td colspan=\"5\" align=\"center\">");
+ fprintf(actout, "<td colspan=\"%i\" align=\"center\">", colspan);
fprintf(actout, "<hr>");
fprintf(actout, "<b>%s</b>", get_html_text("133"));
fprintf(actout, "<br>");
@@ -237,7 +250,7 @@
fprintf(actout, "</tr>\n");
fprintf(actout, "<tr bgcolor=%s>", get_color_text("000"));
- fprintf(actout, "<td colspan=\"5\">");
+ fprintf(actout, "<td colspan=\"%i\">", colspan);
fprintf(actout, "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\"
width=\"100%\"><tr><td align=\"center\"><br>");
fprintf(actout, "<form method=\"get\" action=\"%s/com/showusers\">",
CGIPATH);
@@ -257,7 +270,7 @@
#endif
fprintf(actout, "<tr bgcolor=%s>", get_color_text("000"));
- fprintf(actout, "<td colspan=\"5\" align=\"right\">");
+ fprintf(actout, "<td colspan=\"%i\" align=\"right\">", colspan);
#ifdef USER_INDEX
fprintf(actout, "<font size=\"2\"><b>");
fprintf(actout, "[ ");
@@ -328,7 +341,8 @@
vclose();
exit(0);
}
- send_template( "mod_user.html" );
+ if (AdminType == DOMAIN_ADMIN) { send_template( "mod_user_new.html" ); }
+ else { send_template( "mod_user.html" ); }
}
addusernow()
@@ -340,8 +354,11 @@
char *tmp;
char *email;
char **arguments;
+ char tmpstr[MAX_BUFF];
+ char qconvert[11];
int pid;
int i;
+ int tmpint;
int error;
struct vqpasswd *mypw;
@@ -383,6 +400,9 @@
vclose();
exit(0);
}
+ // Coded added by jhopper
+ GetValue(TmpCGI, Quota, "quota=", MAX_BUFF);
+
GetValue(TmpCGI,Password1, "password1=", MAX_BUFF);
GetValue(TmpCGI,Password2, "password2=", MAX_BUFF);
if ( strncmp( Password1, Password2, MAX_BUFF ) != 0 ) {
@@ -459,6 +479,10 @@
if( DisableRelay > 0 ) mypw->pw_gid |= NO_RELAY;
if( DefaultQuota[0]!= 0 ) mypw->pw_shell = DefaultQuota;
+ // Code added by jhopper
+ if(quota_to_bytes(qconvert, Quota)) { sprintf(StatusMessage, "Bad quota
+supplied"); }
+ else { vsetuserquota( Newu, Domain, qconvert ); }
+
/* update the user information */
if ( vauth_setpw( mypw, Domain ) != VA_SUCCESS ) {
@@ -751,6 +775,8 @@
struct vqpasswd *vpw=NULL;
static char box[50];
static char NewBuf[156];
+ char *quotaptr;
+ char qconvert[11];
int count;
FILE *fs;
@@ -777,6 +803,29 @@
}
}
+ // Code added by jhopper
+ if (AdminType == DOMAIN_ADMIN) {
+ GetValue(TmpCGI, Quota, "quota=", MAX_BUFF);
+ if (strlen(Quota) == 0) { } // Do nothing
+ else if ((strncmp(Quota, "NOQUOTA", 2)) == 0) {
+ if (vsetuserquota( ActionUser, Domain, Quota )) {
+ sprintf(StatusMessage, "Invalid quota");
+ }
+ else { sprintf(StatusMessage, "Quota set to %s", Quota); }
+ }
+ else if (atoi(Quota)) {
+ quotaptr = Quota;
+ if (quota_to_bytes(qconvert, quotaptr)) { sprintf(StatusMessage, "Invalid
+quota"); }
+ else {
+ if(vsetuserquota( ActionUser, Domain, qconvert )) {
+ sprintf(StatusMessage, "Invalid quota");
+ }
+ else { sprintf(StatusMessage, "Quota set to %s bytes", qconvert); }
+ }
+ }
+ else { sprintf(StatusMessage, "Invalid quota"); }
+ }
+
GetValue(TmpCGI,Gecos, "gecos=", MAX_BUFF);
if ( strlen( Gecos ) != 0 ) {
vpw = vauth_getpw(ActionUser, Domain);
diff -ruN qmailadmin-1.0.6-original/util.c qmailadmin-1.0.6/util.c
--- qmailadmin-1.0.6-original/util.c 2002-10-24 15:58:18.000000000 -0300
+++ qmailadmin-1.0.6/util.c 2002-10-24 17:18:04.000000000 -0300
@@ -24,6 +24,7 @@
#include <unistd.h>
#include <pwd.h>
#include <dirent.h>
+#include <fts.h>
#include "config.h"
#include "qmailadmin.h"
#include "qmailadminx.h"
@@ -252,3 +253,59 @@
}
return("");
}
+char *get_quota_used(char *dir) {
+ char *tmpstr;
+ char tmpbuff[MAX_BUFF];
+ double size;
+
+ size = get_du(dir);
+ if (size != 0) {
+ size = size / 1048576; // Convert to MBs.
+ }
+ sprintf(tmpbuff, "%-2.2f", size);
+ tmpstr = tmpbuff;
+ return tmpstr;
+}
+int quota_to_bytes(char returnval[], char *quota) {
+ char *tmpstr;
+ unsigned long tmpint;
+
+ if (quota == NULL) { return 1; }
+ if (tmpint = atoi(quota)) { tmpint = tmpint * 1048576; }
+ else { return 1; }
+ sprintf(returnval, "%i", tmpint);
+ return 0;
+}
+int quota_to_megabytes(char returnval[], char *quota) {
+ char *tmpstr;
+ unsigned long tmpint;
+
+ if (quota == NULL) { return 1; }
+ if (tmpint = atoi(quota)) {
+ if (tmpint != 0) { tmpint = tmpint / 1048576; }
+ }
+ else { return 0; }
+ sprintf(returnval, "%i", tmpint);
+ return 0;
+}
+double get_du(char *path) {
+ FTS *fileheir;
+ FTSENT *fsentry;
+ char **dirnames;
+ ssize_t size = 0;
+
+ dirnames = malloc(2 * sizeof(char*));
+ dirnames[0] = path;
+ dirnames[1] = NULL;
+
+ fileheir = fts_open(dirnames, FTS_PHYSICAL, NULL);
+ while ((fsentry = fts_read(fileheir)) != NULL) {
+ if (fsentry->fts_number == 0) {
+ size = size + fsentry->fts_statp->st_size;
+ fsentry->fts_number = 1;
+ }
+ }
+ fts_close(fileheir);
+ free(dirnames);
+ return size;
+}
msg03104/pgp00000.pgp
Description: PGP signature
