*** imapd.c.orig Sat Nov 6 11:12:53 1999 --- imapd.c Sat Nov 6 11:07:08 1999 *************** *** 33,38 **** --- 33,43 ---- * */ + #ifdef DRAC_AUTH + #include + #include + #endif /* DRAC_AUTH */ + /* Primary I/O calls */ #define PBIN getchar /* primary byte input */ *************** *** 174,179 **** --- 179,189 ---- /* Global storage */ + #ifdef DRAC_AUTH + #define DRACTIMEOUT 10*60 /* check every 10 minutes */ + time_t lastdrac = 0; /* time of last drac check */ + #endif /* DRAC_AUTH */ + char *version = "12.250"; /* version number of this server */ time_t alerttime = 0; /* time of last alert */ time_t sysalerttime = 0; /* time of last system alert */ *************** *** 1111,1116 **** --- 1121,1151 ---- lasterror ()); return; } + + #ifdef DRAC_AUTH + if (time (0) > lastdrac + DRACTIMEOUT) + { + char *host; + char *err; + unsigned long ip; + + if( host = getenv( "DRACHOST" ) ) + { + struct sockaddr_in sin; + int sinlen = sizeof (struct sockaddr_in); + char *client = getpeername (0,(struct sockaddr *) &sin,(void *) &sinlen) ? + "UNKNOWN" : inet_ntoa (sin.sin_addr); + + lastdrac = time(0); + + ip = inet_addr(client); + if (dracauth(host, ip, &err) != 0) + syslog (LOG_INFO, err); + else + syslog (LOG_INFO, "dracd: authorized ip %s", client); + } + } + #endif /* DRAC_AUTH */ /* change in number of messages? */ if (existsquelled || (nmsgs != stream->nmsgs)) { PSOUT ("* ");