*** ipopd/ipop3d.c	Wed Oct 25 08:15:46 2000
--- ipopd.drac/ipop3d.c	Sat Dec 16 00:16:56 2000
***************
*** 34,39 ****
--- 34,40 ----
  #include <signal.h>
  #include <time.h>
  #include "c-client.h"
+ #include <arpa/inet.h>
  
  
  /* Autologout timer */
***************
*** 92,97 ****
--- 93,99 ----
  int mbxopen (char *mailbox);
  long blat (char *text,long lines,unsigned long size);
  void rset ();
+ void drac();
  
  /* Main program */
  
***************
*** 230,239 ****
  		      tcp_clienthost ());
  	    }
  	    else if ((state = mbxopen ("INBOX")) == TRANSACTION)
! 	      syslog (LOG_INFO,"Auth user=%.80s host=%.80s nmsgs=%ld/%ld",
! 		      user,tcp_clienthost (),nmsgs,stream->nmsgs);
! 	    else syslog (LOG_INFO,"Auth user=%.80s host=%.80s no mailbox",
! 			 user,tcp_clienthost ());
  	  }
  	  else {
  	    AUTHENTICATOR *auth = mail_lookup_auth (1);
--- 232,241 ----
  		      tcp_clienthost ());
  	    }
  	    else if ((state = mbxopen ("INBOX")) == TRANSACTION)
! 	      {syslog (LOG_INFO,"Auth user=%.80s host=%.80s nmsgs=%ld/%ld",
! 		      user,tcp_clienthost (),nmsgs,stream->nmsgs); drac();}
! 	    else {syslog (LOG_INFO,"Auth user=%.80s host=%.80s no mailbox",
! 			 user,tcp_clienthost ()); drac();}
  	  }
  	  else {
  	    AUTHENTICATOR *auth = mail_lookup_auth (1);
***************
*** 265,274 ****
  	    else if (!(user = apop_login (challenge,s,t,argc,argv)))
  	      PSOUT ("-ERR Bad APOP\015\012");
  	    else if ((state = mbxopen ("INBOX")) == TRANSACTION)
! 	      syslog (LOG_INFO,"APOP user=%.80s host=%.80s nmsgs=%ld/%ld",
! 		      user,tcp_clienthost (),nmsgs,stream->nmsgs);
! 	    else syslog (LOG_INFO,"APOP user=%.80s host=%.80s no mailbox",
! 			 user,tcp_clienthost ());
  	  }
  	  else PSOUT ("-ERR Not supported\015\012");
  	}
--- 267,276 ----
  	    else if (!(user = apop_login (challenge,s,t,argc,argv)))
  	      PSOUT ("-ERR Bad APOP\015\012");
  	    else if ((state = mbxopen ("INBOX")) == TRANSACTION)
! 	      {syslog (LOG_INFO,"APOP user=%.80s host=%.80s nmsgs=%ld/%ld",
! 		      user,tcp_clienthost (),nmsgs,stream->nmsgs); drac();}
! 	    else {syslog (LOG_INFO,"APOP user=%.80s host=%.80s no mailbox",
! 			 user,tcp_clienthost ()); drac();}
  	  }
  	  else PSOUT ("-ERR Not supported\015\012");
  	}
***************
*** 578,583 ****
--- 580,586 ----
  		t ? "Admin " : "",user,tcp_clienthost (),nmsgs,stream->nmsgs);
        else syslog (LOG_INFO,"%sLogin user=%.80s host=%.80s no mailbox",
  		   t ? "Admin " : "",user,tcp_clienthost ());
+       drac();
        return ret;
      }
    }
***************
*** 595,600 ****
--- 598,614 ----
  				/* vague error message to confuse crackers */
    PSOUT ("-ERR Bad login\015\012");
    return AUTHORIZATION;
+ }
+ 
+ void drac() {
+   char *err,*ip;
+   struct sockaddr_in sin;
+   int rc,len;
+ 
+   len = sizeof(struct sockaddr_in);
+   ip = getpeername(0,&sin,&len) ? "UNKNOWN" : inet_ntoa(sin.sin_addr);
+   rc = dracauth("localhost",inet_addr(ip),&err);
+   if(rc) syslog(LOG_INFO,"drac_err %s",err);
  }
  
  /* Authentication responder
