Someone on the list had requested the ability to set the username that appears at the 
login screen after I created my last patch.  The new patch is included - it keeps the 
old behavior, displaying posmaster unless overridden.  I modified the getting of the 
post/get variables, so this actually decreases the size of qmailadmin.c slightly.

Usage is: http://host/cgi-bin/qmailadmin?username=someuser&domain=somedomain

For security reasons, I'm not allowing you to set the password.  It only takes a 
simple change to the source if you want that.

Enjoy,
Hampton
*** qmailadmin.c.old    Wed Jan 10 12:46:26 2001
--- qmailadmin.c        Wed Mar 21 15:43:20 2001
***************
*** 99,119 ****
        pi=getenv("PATH_INFO");
        if ( pi )  pi = strdup(pi);
  
        if (pi && strncmp(pi, "/com/", 5) == 0) {
          struct passwd *pw;
  
                memset(TmpBuf2,0,MAX_BUFF);
                for(j=0,i=5;pi[i]!=0&&j<99;++i,++j) 
                        TmpBuf2[j] = pi[i];
-               rm = getenv("REQUEST_METHOD");
-               rm = strdup(rm);
- 
-               if ( strncmp(rm , "POST", 4) == 0 ) {
-                       get_cgi();
-               } else {
-                       TmpCGI = (char *)getenv("QUERY_STRING");
-                       TmpCGI = strdup(TmpCGI);
-               }
  
                GetValue(TmpCGI,Username, "user=",MAX_BUFF);
                GetValue(TmpCGI,Domain, "dom=",MAX_BUFF);
--- 99,120 ----
        pi=getenv("PATH_INFO");
        if ( pi )  pi = strdup(pi);
  
+     rm = getenv("REQUEST_METHOD");
+     rm = strdup(rm);
+ 
+     if ( strncmp(rm, "POST", 4) == 0 ) {
+               get_cgi();
+       } else {
+               TmpCGI = (char *)getenv("QUERY_STRING");
+               TmpCGI = strdup(TmpCGI);
+       }
+ 
        if (pi && strncmp(pi, "/com/", 5) == 0) {
          struct passwd *pw;
  
                memset(TmpBuf2,0,MAX_BUFF);
                for(j=0,i=5;pi[i]!=0&&j<99;++i,++j) 
                        TmpBuf2[j] = pi[i];
  
                GetValue(TmpCGI,Username, "user=",MAX_BUFF);
                GetValue(TmpCGI,Domain, "dom=",MAX_BUFF);
***************
*** 146,160 ****
                memset(TmpBuf2,0,MAX_BUFF);
                for(j=0,i=6;pi[i]!=0&&j<99;++i,++j) 
                        TmpBuf2[j] = pi[i];
-               rm = getenv("REQUEST_METHOD");
-               rm = strdup(rm);
- 
-               if ( strncmp(rm , "POST", 4) == 0 ) {
-                       get_cgi();
-               } else {
-                       TmpCGI = (char *)getenv("QUERY_STRING");
-                       TmpCGI = strdup(TmpCGI);
-               }
  
                GetValue(TmpCGI,Username, "user=",MAX_BUFF);
                GetValue(TmpCGI,Domain, "dom=",MAX_BUFF);
--- 147,152 ----
***************
*** 176,192 ****
        
  
        } else {
-         char *rm;
          struct passwd *pw;
          FILE *fs;
  
-               rm = getenv("REQUEST_METHOD");
-               if ( rm ) rm = strdup(rm);
- 
                if ( rm && strncmp(rm, "POST", 4) == 0 ) {
  
-                       get_cgi();
- 
                        GetValue(TmpCGI,Username, "username=",MAX_BUFF);
                        GetValue(TmpCGI,Domain, "domain=",MAX_BUFF);
                        GetValue(TmpCGI,Password, "password=",MAX_BUFF);
--- 168,178 ----
***************
*** 233,238 ****
--- 219,229 ----
                        }
                }
        }
+ 
+       if ( GetValue(TmpCGI,Username, "username=",MAX_BUFF) ) {
+         strcpy(Username, "postmaster"); /* default for old behavior */
+     }
+       GetValue(TmpCGI,Domain, "domain=",MAX_BUFF);
        show_login();
  }
  
*** show_login.html.old Wed Mar 21 15:48:28 2001
--- show_login.html     Wed Mar 21 15:38:24 2001
***************
*** 43,50 ****
          <!--Content-->
           <form method=post name=logon action=##C>
              <table>
!                  <tr><td>##X112</td><td><input type=text size=14 name=username 
maxlength=128></td></tr>
!                  <tr><td>##X113</td><td><input type=text size=14 name=domain 
maxlength=128></td></tr>
                   <tr><td>##X057</td><td><input type=password size=14 name=password 
maxlength=128></td></tr>
                   <tr><td><input type=submit value="##X114" name="##X114"></td>
              </table>
--- 43,50 ----
          <!--Content-->
           <form method=post name=logon action=##C>
              <table>
!                  <tr><td>##X112</td><td><input type=text size=14 name=username 
value="##U" maxlength=128></td></tr>
!                  <tr><td>##X113</td><td><input type=text size=14 name=domain 
value="##D" maxlength=128></td></tr>
                   <tr><td>##X057</td><td><input type=password size=14 name=password 
maxlength=128></td></tr>
                   <tr><td><input type=submit value="##X114" name="##X114"></td>
              </table>

Reply via email to