diff options
author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2003-07-17 16:57:52 +0000 |
---|---|---|
committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2003-07-17 16:57:52 +0000 |
commit | 32b3cf1b92428e7fad9e7b808f15cb77bf623e70 (patch) | |
tree | 281ce991ef5cb49e37a4b26d10213a01b4b67b77 /mail/cyrus-imapd23/files/drac_auth.patch | |
parent | Fix build with Perl 5.005_03. (diff) |
Update to 2.2.1-BETA.
Since there are some issue to upgrading from 2.2.0-ALPHA,
you should read /usr/local/share/doc/cyrus-imapd22/install-upgrade.html
before upgrading your server.
Notes
Notes:
svn path=/head/; revision=85060
Diffstat (limited to 'mail/cyrus-imapd23/files/drac_auth.patch')
-rw-r--r-- | mail/cyrus-imapd23/files/drac_auth.patch | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/mail/cyrus-imapd23/files/drac_auth.patch b/mail/cyrus-imapd23/files/drac_auth.patch deleted file mode 100644 index ec1ef5e99696..000000000000 --- a/mail/cyrus-imapd23/files/drac_auth.patch +++ /dev/null @@ -1,308 +0,0 @@ -Index: acconfig.h -diff -u acconfig.h.orig acconfig.h ---- acconfig.h.orig Fri Feb 14 05:32:50 2003 -+++ acconfig.h Fri Mar 21 20:13:20 2003 -@@ -98,6 +98,9 @@ - /* do we have SASL support for APOP? */ - #undef HAVE_APOP - -+/* the Dynamic Relay Authorization Control package */ -+#undef DRAC_AUTH -+ - /* do we have OpenSSL? */ - #undef HAVE_SSL - -Index: configure.in -diff -u configure.in.orig configure.in ---- configure.in.orig Wed Mar 19 04:15:14 2003 -+++ configure.in Fri Mar 21 20:20:54 2003 -@@ -981,6 +981,19 @@ - SNMP_SUBDIRS="" - AC_SUBST(SNMP_SUBDIRS) - -+dnl -+dnl Test for DRAC -+dnl -+DRACLIBS= -+AC_ARG_WITH(drac, [ --with-drac=DIR use DRAC library in <DIR> [no] ], -+ if test -d "$withval"; then -+ LDFLAGS="$LDFLAGS -L${withval}" -+ AC_CHECK_LIB(drac, dracauth, -+ AC_DEFINE(DRAC_AUTH) -+ DRACLIBS="-ldrac") -+ fi) -+AC_SUBST(DRACLIBS) -+ - CMU_LIBWRAP - CMU_UCDSNMP - -Index: imap/Makefile.in -diff -u imap/Makefile.in.orig imap/Makefile.in ---- imap/Makefile.in.orig Fri Feb 28 03:10:28 2003 -+++ imap/Makefile.in Fri Mar 21 20:23:02 2003 -@@ -67,6 +67,7 @@ - SIEVE_LIBS = @SIEVE_LIBS@ - IMAP_COM_ERR_LIBS = @IMAP_COM_ERR_LIBS@ - LIB_WRAP = @LIB_WRAP@ -+DRAC_LIBS = @DRACLIBS@ - LIBS = $(IMAP_LIBS) $(IMAP_COM_ERR_LIBS) - DEPLIBS = ../lib/libcyrus.a ../lib/libcyrus_min.a @DEPLIBS@ - -@@ -206,17 +207,17 @@ - imapd: xversion $(IMAPDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) - $(CC) $(LDFLAGS) -o imapd \ - $(SERVICE) $(IMAPDOBJS) mutex_fake.o \ -- libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) -+ libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(DRAC_LIBS) - - imapd.pure: $(IMAPDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) - $(PURIFY) $(PUREOPT) $(CC) $(LDFLAGS) -o imapd.pure \ - $(SERVICE) $(IMAPDOBJS) mutex_fake.o libimap.a \ -- $(DEPLIBS) $(LIBS) $(LIB_WRAP) -+ $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(DRAC_LIBS) - - imapd.quant: $(IMAPDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) - $(QUANTIFY) $(QUANTOPT) $(CC) $(LDFLAGS) -o imapd.quant \ - $(SERVICE) $(IMAPDOBJS) mutex_fake.o libimap.a \ -- $(DEPLIBS) $(LIBS) $(LIB_WRAP) -+ $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(DRAC_LIBS) $(DRAC_LIBS) - - proxyd: $(PROXYDOBJS) mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) - $(CC) $(LDFLAGS) -o proxyd \ -@@ -242,7 +243,7 @@ - - pop3d: pop3d.o backend.o tls.o mutex_fake.o libimap.a $(DEPLIBS) $(SERVICE) - $(CC) $(LDFLAGS) -o pop3d pop3d.o backend.o tls.o $(SERVICE) \ -- mutex_fake.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) -+ mutex_fake.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(DRAC_LIBS) - - nntpd: nntpd.o backend.o index.o spool.o netnews.o wildmat.o tls.o \ - mutex_fake.o nntp_err.o libimap.a $(DEPLIBS) $(SERVICE) -Index: imap/imapd.c -diff -u imap/imapd.c.orig imap/imapd.c ---- imap/imapd.c.orig Thu Mar 6 03:32:05 2003 -+++ imap/imapd.c Fri Mar 21 23:25:27 2003 -@@ -126,6 +126,18 @@ - 1, 1, &imapd_authstate, &imapd_userisadmin, &imapd_userisproxyadmin - }; - -+#ifdef DRAC_AUTH -+static struct { -+ int interval; /* dracd "ping" interval; 0 = disabled */ -+ unsigned long clientaddr; -+ struct prot_waitevent *event; -+} drac; -+ -+extern int dracconn(char *server, char **errmsg); -+extern int dracsend(unsigned long userip, char **errmsg); -+extern int dracdisc(char **errmsg); -+#endif /* DRAC_AUTH */ -+ - /* current sub-user state */ - static struct mailbox mboxstruct; - static struct mailbox *imapd_mailbox; -@@ -447,6 +459,23 @@ - /* setup for sending IMAP IDLE notifications */ - idle_enabled(); - -+#ifdef DRAC_AUTH -+ /* setup for sending DRAC "pings" */ -+ drac.event = NULL; -+ drac.interval = config_getint(IMAPOPT_DRACINTERVAL); -+ if (drac.interval < 0) drac.interval = 0; -+ if (drac.interval) { -+ char *err; -+ -+ if (dracconn((char*) config_getstring(IMAPOPT_DRACHOST), &err) != 0) { -+ /* disable DRAC */ -+ drac.interval = 0; -+ syslog(LOG_ERR, "dracconn: %s", err); -+ syslog(LOG_ERR, "DRAC notifications disabled"); -+ } -+ } -+#endif /* DRAC_AUTH */ -+ - /* create connection to the SNMP listener, if available. */ - snmp_connect(); /* ignore return code */ - snmp_set_str(SERVER_NAME_VERSION,CYRUS_VERSION); -@@ -533,6 +562,15 @@ - imapd_haveaddr = 1; - } - } -+ -+#ifdef DRAC_AUTH -+ if (((struct sockaddr *)&imapd_remoteaddr)->sa_family == AF_INET) -+ drac.clientaddr = ((struct sockaddr_in *)&imapd_remoteaddr)->sin_addr.s_addr; -+ else -+ drac.clientaddr = 0; -+ } else { -+ drac.clientaddr = 0; -+#endif /* DRAC_AUTH */ - } - - /* create the SASL connection */ -@@ -575,6 +613,11 @@ - prot_flush(imapd_out); - snmp_increment(ACTIVE_CONNECTIONS, -1); - -+#ifdef DRAC_AUTH -+ if (drac.event) prot_removewaitevent(imapd_in, drac.event); -+ drac.event = NULL; -+#endif /* DRAC_AUTH */ -+ - /* cleanup */ - imapd_reset(); - -@@ -645,6 +688,10 @@ - - cyrus_done(); - -+#ifdef DRAC_AUTH -+ if (drac.interval) (void) dracdisc((char **)NULL); -+#endif /* DRAC_AUTH */ -+ - exit(code); - } - -@@ -667,6 +714,35 @@ - shut_down(code); - } - -+#ifdef DRAC_AUTH -+/* -+ * Ping dracd every 'drac.interval' minutes -+ * to let it know that we are still connected -+ */ -+struct prot_waitevent *drac_ping(struct protstream *s, -+ struct prot_waitevent *ev, void *rock) -+{ -+ char *err; -+ static int nfailure = 0; -+ -+ if (dracsend(drac.clientaddr, &err) != 0) { -+ syslog(LOG_ERR, "dracsend: %s", err); -+ if (++nfailure >= 3) { -+ /* can't contact dracd for 3 consecutive tries - disable DRAC */ -+ prot_removewaitevent(s, ev); -+ drac.event = NULL; -+ syslog(LOG_ERR, "DRAC notifications disabled"); -+ return NULL; -+ } -+ } -+ else -+ nfailure = 0; -+ -+ ev->mark = time(NULL) + (drac.interval * 60); -+ return ev; -+} -+#endif /* DRAC_AUTH */ -+ - /* - * Top-level command loop parsing - */ -@@ -1664,6 +1740,11 @@ - - prot_printf(imapd_out, "%s OK %s\r\n", tag, reply); - -+#ifdef DRAC_AUTH -+ if (drac.interval && drac.clientaddr) -+ drac.event = prot_addwaitevent(imapd_in, 0 /* now */, drac_ping, NULL); -+#endif /* DRAC_AUTH */ -+ - /* Create telemetry log */ - imapd_logfd = telemetry_log(imapd_userid, imapd_in, imapd_out); - -@@ -1786,6 +1867,11 @@ - - prot_setsasl(imapd_in, imapd_saslconn); - prot_setsasl(imapd_out, imapd_saslconn); -+ -+#ifdef DRAC_AUTH -+ if (drac.interval && drac.clientaddr) -+ drac.event = prot_addwaitevent(imapd_in, 0 /* now */, drac_ping, NULL); -+#endif /* DRAC_AUTH */ - - /* Create telemetry log */ - imapd_logfd = telemetry_log(imapd_userid, imapd_in, imapd_out); -Index: imap/pop3d.c -diff -u imap/pop3d.c.orig imap/pop3d.c ---- imap/pop3d.c.orig Thu Mar 13 01:38:16 2003 -+++ imap/pop3d.c Fri Mar 21 23:37:11 2003 -@@ -101,6 +101,10 @@ - extern int opterr; - - -+#ifdef DRAC_AUTH -+static int drac_enabled; -+extern int dracauth(char *server, unsigned long userip, char **errmsg); -+#endif /* DRAC_AUTH */ - - #ifdef HAVE_SSL - static SSL *tls_conn; -@@ -395,6 +399,10 @@ - prot_settimeout(popd_in, timeout*60); - prot_setflushonread(popd_in, popd_out); - -+#ifdef DRAC_AUTH -+ drac_enabled = (config_getint(IMAPOPT_DRACINTERVAL) > 0); -+#endif /* DRAC_AUTH */ -+ - if (kflag) kpop(); - - /* we were connected on pop3s port so we should do -@@ -1422,6 +1430,21 @@ - popd_mailbox = &mboxstruct; - proc_register("pop3d", popd_clienthost, popd_userid, - popd_mailbox->name); -+ -+#ifdef DRAC_AUTH -+ if (drac_enabled && -+ ((struct sockaddr *)&popd_remoteaddr)->sa_family == AF_INET) { -+ char *err; -+ -+ if (dracauth((char*) config_getstring(IMAPOPT_DRACHOST), -+ ((struct sockaddr_in *)&popd_remoteaddr)->sin_addr.s_addr, &err) != 0) { -+ /* disable DRAC */ -+ drac_enabled = 0; -+ syslog(LOG_ERR, "dracauth: %s", err); -+ syslog(LOG_ERR, "DRAC notifications disabled"); -+ } -+ } -+#endif /* DRAC_AUTH */ - } - else { - /* remote mailbox */ -Index: imap/version.c -diff -u imap/version.c.orig imap/version.c ---- imap/version.c.orig Fri Feb 14 05:33:02 2003 -+++ imap/version.c Fri Mar 21 20:13:21 2003 -@@ -143,6 +143,10 @@ - snprintf(env_buf + strlen(env_buf), MAXIDVALUELEN - strlen(env_buf), - "; %s", SIEVE_VERSION); - #endif -+#ifdef DRAC_AUTH -+ snprintf(env_buf + strlen(env_buf), MAXIDVALUELEN - strlen(env_buf), -+ "; DRAC"); -+#endif - #ifdef HAVE_LIBWRAP - snprintf(env_buf + strlen(env_buf), MAXIDVALUELEN - strlen(env_buf), - "; TCP Wrappers"); -Index: lib/imapoptions -diff -u lib/imapoptions.orig lib/imapoptions ---- lib/imapoptions.orig Thu Mar 20 04:00:39 2003 -+++ lib/imapoptions Fri Mar 21 20:32:15 2003 -@@ -154,6 +154,14 @@ - { "deleteright", "c", STRING } - /* The right that a user needs to delete a mailbox. */ - -+{ "dracinterval", 5, INT } -+/* If nonzero, enables the use of DRAC (Dynamic Relay Authorization -+ Control) by the pop3d and imapd daemons. Also sets the interval -+ (in minutes) between re-authorization requests made by imapd. */ -+ -+{ "drachost", "localhost", STRING } -+/* Hostname of the RPC dracd server. */ -+ - { "duplicatesuppression", 1, SWITCH } - /* If enabled, lmtpd will suppress delivery of a message to a mailbox if - a message with the same message-id (or resent-message-id) is recorded |