diff options
author | Anders Nordby <anders@FreeBSD.org> | 2009-01-19 01:17:14 +0000 |
---|---|---|
committer | Anders Nordby <anders@FreeBSD.org> | 2009-01-19 01:17:14 +0000 |
commit | 1ef00cf0dd1cca633503b37a80488f91288f0c3f (patch) | |
tree | a3fbca8919e5d3cd68703d87f6944e05a3a0fffc /mail/imap-uw/files/patch-ai | |
parent | - Update to 0.10.0 (diff) |
Update to 2007e.
Remove FORBIDDEN, as the security issues should be OK now.
PR: 130617
Submitted by: Martin Matuska <mm@FreeBSD.org>
Notes
Notes:
svn path=/head/; revision=226408
Diffstat (limited to '')
-rw-r--r-- | mail/imap-uw/files/patch-ai | 192 |
1 files changed, 89 insertions, 103 deletions
diff --git a/mail/imap-uw/files/patch-ai b/mail/imap-uw/files/patch-ai index cc5e0a3df96f..a1dc32829b12 100644 --- a/mail/imap-uw/files/patch-ai +++ b/mail/imap-uw/files/patch-ai @@ -1,103 +1,89 @@ -*** src/imapd/imapd.c.orig Wed Jul 11 22:08:16 2007 ---- src/imapd/imapd.c Mon Jul 23 17:48:56 2007 -*************** -*** 38,43 **** ---- 38,48 ---- - #include "newsrc.h" - #include <sys/stat.h> - -+ #ifdef DRAC_AUTH -+ #include <netinet/in.h> -+ #include <arpa/inet.h> -+ #include <stdlib.h> -+ #endif /* DRAC_AUTH */ - - #define CRLF PSOUT ("\015\012") /* primary output terpri */ - -*************** -*** 203,208 **** ---- 208,219 ---- - - /* 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 = "389"; /* edit number of this server */ - char *logout = "Logout"; /* syslogreason for logout */ - char *goodbye = NIL; /* bye reason */ -*************** -*** 277,283 **** - msg_string_next, /* get next byte in string structure */ - msg_string_setpos /* set position in string structure */ - }; -! - /* Main program */ - - int main (int argc,char *argv[]) ---- 288,337 ---- - msg_string_next, /* get next byte in string structure */ - msg_string_setpos /* set position in string structure */ - }; -! -! #ifdef DRAC_AUTH -! /* DRAC Authorization -! */ -! void 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 %s/dracd.host config file",ETC_DIR); -! 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 */ -! - /* Main program */ - - int main (int argc,char *argv[]) -*************** -*** 1501,1506 **** ---- 1555,1563 ---- - lasterror ()); - return; - } -+ #ifdef DRAC_AUTH -+ drac_auth(); -+ #endif /* DRAC_AUTH */ - /* change in number of messages? */ - if (existsquelled || (nmsgs != stream->nmsgs)) { - PSOUT ("* "); +--- src/imapd/imapd.c.orig 2008-11-18 19:46:59.000000000 +0100 ++++ src/imapd/imapd.c 2009-01-16 10:23:02.000000000 +0100 +@@ -37,6 +37,11 @@ + #include "newsrc.h" + #include <sys/stat.h> + ++#ifdef DRAC_AUTH ++#include <netinet/in.h> ++#include <arpa/inet.h> ++#include <stdlib.h> ++#endif /* DRAC_AUTH */ + + #define CRLF PSOUT ("\015\012") /* primary output terpri */ + +@@ -207,6 +212,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 = "404"; /* edit number of this server */ + char *logout = "Logout"; /* syslogreason for logout */ + char *goodbye = NIL; /* bye reason */ +@@ -283,7 +294,50 @@ + msg_string_next, /* get next byte in string structure */ + msg_string_setpos /* set position in string structure */ + }; +- ++ ++#ifdef DRAC_AUTH ++/* DRAC Authorization ++ */ ++void 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 %s/dracd.host config file",ETC_DIR); ++ 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 */ ++ + /* Main program */ + + int main (int argc,char *argv[]) +@@ -1525,6 +1579,9 @@ + lasterror ()); + return; + } ++ #ifdef DRAC_AUTH ++ drac_auth(); ++ #endif /* DRAC_AUTH */ + /* change in number of messages? */ + if (existsquelled || (nmsgs != stream->nmsgs)) { + PSOUT ("* "); |