Hi lists,
I had remodeled for qmailadmin-1.2.9 because it was on business
needs. The account of two or more postmasters can be made for
one domain.
POSTMASTER ACCOUNTS are "postmaster" and starting by
"postmaster-".
For example, if an account "postmaster-hoge" is made, this postmaster-hoge has same authority as "postmaster".
Thanks.
-----------------------------------------------------------
diff -r -u qmailadmin-1.2.9.org/auth.c qmailadmin-1.2.9/auth.c
--- qmailadmin-1.2.9.org/auth.c 2005-01-24 02:35:11.000000000 +0900
+++ qmailadmin-1.2.9/auth.c 2006-01-13 18:33:24.217852035 +0900
@@ -41,9 +41,11 @@
struct vqpasswd *pw;
{
FILE *fs;
+ FILE *fs2;
time_t time1;
time_t time2;
char ip_value[MAX_BUFF];
+ char PLFile[MAX_BUFF];
if( chdir(RealDir) < 0 ){
snprintf (StatusMessage, sizeof(StatusMessage), "%s %s\n", html_text[171], RealDir);
@@ -52,6 +54,19 @@
exit(0);
}
+ if ( (strcmp(Username,"postmaster")==0) ||
+ (strncmp(Username,"postmaster-", 11)==0)) {
+ snprintf(PLFile, sizeof(PLFile), "%s/%s.qw", RealDir, Time);
+ fs2 = fopen(PLFile, "r");
+ if ( fs2 == NULL ) {
+ snprintf (StatusMessage, sizeof(StatusMessage), "%s\n", html_text[172]);
+ show_login();
+ vclose();
+ exit(0);
+ }
+ fclose(fs2);
+ }
+
snprintf(TmpBuf1, sizeof(TmpBuf1), "%s/" MAILDIR "/%s.qw", pw->pw_dir, Time);
fs = fopen(TmpBuf1, "r");
@@ -95,9 +110,11 @@
struct vqpasswd *pw;
{
FILE *fs;
+ FILE *fs2;
time_t time1;
time_t time2;
char ip_value[MAX_BUFF];
+ char PLFile[MAX_BUFF];
if ( chdir(RealDir) < 0 ) {
snprintf (StatusMessage, sizeof(StatusMessage), "%s %s\n", html_text[171], RealDir );
@@ -106,6 +123,19 @@
exit(0);
}
+ if ( (strcmp(Username,"postmaster")==0) ||
+ (strncmp(Username,"postmaster-", 11)==0)) {
+ snprintf(PLFile, sizeof(PLFile), "%s/%s.qw", RealDir, Time);
+ fs2 = fopen(PLFile, "r");
+ if ( fs2 == NULL ) {
+ snprintf (StatusMessage, sizeof(StatusMessage), "%s\n", html_text[172]);
+ show_login();
+ vclose();
+ exit(0);
+ }
+ fclose(fs2);
+ }
+
snprintf(TmpBuf1, sizeof(TmpBuf1), "%s/" MAILDIR "/%s.qw", pw->pw_dir, Time);
fs = fopen(TmpBuf1, "r");
@@ -153,7 +183,8 @@
vpw = vauth_getpw(Username, Domain);
AdminType = NO_ADMIN;
if ( strlen(Domain) > 0 ) {
- if ( strcmp(Username,"postmaster")==0 ) {
+ if ( (strcmp(Username,"postmaster")==0) ||
+ (strncmp(Username,"postmaster-", 11)==0)) {
AdminType = DOMAIN_ADMIN;
#ifdef VQPASSWD_HAS_PW_FLAGS
} else if ( vpw->pw_flags & QA_ADMIN ) {
@@ -166,3 +197,4 @@
}
}
}
+
diff -r -u qmailadmin-1.2.9.org/qmailadmin.c qmailadmin-1.2.9/qmailadmin.c
--- qmailadmin-1.2.9.org/qmailadmin.c 2005-08-11 02:42:49.000000000 +0900
+++ qmailadmin-1.2.9/qmailadmin.c 2006-01-13 18:31:14.235969767 +0900
@@ -283,6 +283,14 @@
/* show the main menu for domain admins, modify user page
for regular users */
if (AdminType == DOMAIN_ADMIN) {
+ char PLFile[MAX_BUFF];
+ snprintf (PLFile, sizeof(PLFile), "%s", RealDir);
+ del_id_files(PLFile);
+
+ snprintf (PLFile, sizeof(PLFile), "%s/%u.qw", RealDir, (unsigned int) Mytime);
+ fs = fopen(PLFile,"w");
+ fputs(PLFile,fs);
+ fclose(fs);
show_menu(Username, Domain, Mytime);
} else {
strcpy (ActionUser, Username);
--
Osamu Katagiri
阅读(1163) | 评论(0) | 转发(0) |