summaryrefslogtreecommitdiff
path: root/mail/imap-uw/files/patch-ah
diff options
context:
space:
mode:
Diffstat (limited to 'mail/imap-uw/files/patch-ah')
-rw-r--r--mail/imap-uw/files/patch-ah83
1 files changed, 83 insertions, 0 deletions
diff --git a/mail/imap-uw/files/patch-ah b/mail/imap-uw/files/patch-ah
new file mode 100644
index 000000000000..87f47a8dcfa9
--- /dev/null
+++ b/mail/imap-uw/files/patch-ah
@@ -0,0 +1,83 @@
+--- src/ipopd/ipop3d.c.old Wed Oct 25 01:15:46 2000
++++ src/ipopd/ipop3d.c Sun Jan 7 21:40:25 2001
+@@ -35,6 +35,11 @@
+ #include <time.h>
+ #include "c-client.h"
+
++#ifdef DRAC_AUTH
++#include <netinet/in.h>
++#include <arpa/inet.h>
++#include <stdlib.h>
++#endif /* DRAC_AUTH */
+
+ /* Autologout timer */
+ #define KODTIMEOUT 60*5
+@@ -61,6 +66,12 @@
+
+ /* Global storage */
+
++#ifdef DRAC_AUTH
++#define DRACTIMEOUT 10*60 /* check every 10 minutes */
++time_t lastdrac = 0; /* time of last drac check */
++extern char *getenv ();
++#endif /* DRAC_AUTH */
++
+ char *version = "2000.69"; /* server version */
+ short state = AUTHORIZATION; /* server state */
+ short critical = NIL; /* non-zero if in critical code */
+@@ -104,7 +115,7 @@
+ #include "linkage.c"
+ /* initialize server */
+ server_init ((s = strrchr (argv[0],'/')) ? s + 1 : argv[0],
+- "pop3","pop3s","pop",clkint,kodint,hupint,trmint);
++ "pop3","pop3s","pop3",clkint,kodint,hupint,trmint);
+ challenge[0] = '\0'; /* find the CRAM-MD5 authenticator */
+ if (i = mail_lookup_auth_name ("CRAM-MD5",NIL)) {
+ AUTHENTICATOR *a = mail_lookup_auth (i);
+@@ -692,6 +703,46 @@
+ }
+ sprintf (tmp,"+OK Mailbox open, %lu messages\015\012",nmsgs);
+ PSOUT (tmp);
++ {
++ #ifdef DRAC_AUTH
++ if (time (0) > lastdrac + DRACTIMEOUT)
++ {
++ FILE *dracconf;
++ char host[100];
++ char *drachost;
++ char *err;
++ char *p;
++
++ if ( (dracconf = fopen(ETC_DIR "/dracd.host", "r")) == NULL)
++ {
++ syslog (LOG_INFO, "dracd: error opening /etc/mail/dracd.host config file");
++ exit(1);
++ }
++
++ fgets(host, 100, dracconf);
++ p = strchr(host, '\n');
++ if(p != NULL)
++ *p = '\0';
++ fclose(dracconf);
++
++ if( drachost = (host) )
++ {
++ 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);
++
++ if (dracauth(drachost, inet_addr(client), &err) != 0)
++ syslog (LOG_INFO, err);
++ else
++ syslog (LOG_INFO, "dracd: authorized ip %s", client);
++ }
++ }
++ #endif /* DRAC_AUTH */
++ }
++
+ return TRANSACTION;
+ }
+ else sayonara = "-ERR Can't get lock. Mailbox in use\015\012";