Mon Apr 15 15:41:55 2013 UTC ()
Add SASL PLAIN Support. Patch submitted upstream
http://sourceforge.net/tracker/?func=detail&aid=3610674&group_id=311&atid=300311


(manu)
diff -r1.12 -r1.13 pkgsrc/mail/imapproxy/Makefile
diff -r1.6 -r1.7 pkgsrc/mail/imapproxy/distinfo
diff -r0 -r1.1 pkgsrc/mail/imapproxy/patches/patch-include_imapproxy.h
diff -r0 -r1.1 pkgsrc/mail/imapproxy/patches/patch-src_config.c
diff -r0 -r1.1 pkgsrc/mail/imapproxy/patches/patch-src_imapcommon.c

cvs diff -r1.12 -r1.13 pkgsrc/mail/imapproxy/Makefile (expand / switch to unified diff)

--- pkgsrc/mail/imapproxy/Makefile 2012/10/08 12:19:14 1.12
+++ pkgsrc/mail/imapproxy/Makefile 2013/04/15 15:41:55 1.13
@@ -1,18 +1,19 @@ @@ -1,18 +1,19 @@
1# $NetBSD: Makefile,v 1.12 2012/10/08 12:19:14 asau Exp $ 1# $NetBSD: Makefile,v 1.13 2013/04/15 15:41:55 manu Exp $
2# 2#
3 3
4DISTNAME= up-imapproxy-1.2.7 4DISTNAME= up-imapproxy-1.2.7
5PKGNAME= imapproxy-1.2.7 5PKGNAME= imapproxy-1.2.7
 6PKGREVISION= 2
6CATEGORIES= mail 7CATEGORIES= mail
7MASTER_SITES= http://www.imapproxy.org/downloads/ 8MASTER_SITES= http://www.imapproxy.org/downloads/
8 9
9MAINTAINER= pkgsrc-users@NetBSD.org 10MAINTAINER= pkgsrc-users@NetBSD.org
10HOMEPAGE= http://www.imapproxy.org/ 11HOMEPAGE= http://www.imapproxy.org/
11COMMENT= Simple connection caching IMAP proxy daemon 12COMMENT= Simple connection caching IMAP proxy daemon
12 13
13GNU_CONFIGURE= YES 14GNU_CONFIGURE= YES
14 15
15CONFIGURE_ARGS+=--exec_prefix=${DESTDIR}${PREFIX} 16CONFIGURE_ARGS+=--exec_prefix=${DESTDIR}${PREFIX}
16BUILD_DEFS+= VARBASE 17BUILD_DEFS+= VARBASE
17CFLAGS+= -DDEFAULT_CONFIG_FILE=\"${PREFIX}/etc/imapproxy.conf\" 18CFLAGS+= -DDEFAULT_CONFIG_FILE=\"${PREFIX}/etc/imapproxy.conf\"
18CFLAGS+= -DDEFAULT_PID_FILE=\"${VARBASE}/run/imapproxy.pid\" 19CFLAGS+= -DDEFAULT_PID_FILE=\"${VARBASE}/run/imapproxy.pid\"

cvs diff -r1.6 -r1.7 pkgsrc/mail/imapproxy/distinfo (expand / switch to unified diff)

--- pkgsrc/mail/imapproxy/distinfo 2010/04/07 15:24:16 1.6
+++ pkgsrc/mail/imapproxy/distinfo 2013/04/15 15:41:55 1.7
@@ -1,9 +1,12 @@ @@ -1,9 +1,12 @@
1$NetBSD: distinfo,v 1.6 2010/04/07 15:24:16 joerg Exp $ 1$NetBSD: distinfo,v 1.7 2013/04/15 15:41:55 manu Exp $
2 2
3SHA1 (up-imapproxy-1.2.7.tar.gz) = 1e09730c19cbde3590093b5b4c4599ab69bfced7 3SHA1 (up-imapproxy-1.2.7.tar.gz) = 1e09730c19cbde3590093b5b4c4599ab69bfced7
4RMD160 (up-imapproxy-1.2.7.tar.gz) = 32eddc89fb35c49334eedc3135ede0fc1241e831 4RMD160 (up-imapproxy-1.2.7.tar.gz) = 32eddc89fb35c49334eedc3135ede0fc1241e831
5Size (up-imapproxy-1.2.7.tar.gz) = 137843 bytes 5Size (up-imapproxy-1.2.7.tar.gz) = 137843 bytes
6SHA1 (patch-aa) = 7818f16b5e9339672eef4fb0ec89303a11a2e72a 6SHA1 (patch-aa) = 7818f16b5e9339672eef4fb0ec89303a11a2e72a
7SHA1 (patch-ba) = 8f3d8adbac5a147cc143d7737d56a83401736a9d 7SHA1 (patch-ba) = 8f3d8adbac5a147cc143d7737d56a83401736a9d
8SHA1 (patch-bb) = 348768062f5f9e314223fb7d385f749646ed04be 8SHA1 (patch-bb) = 348768062f5f9e314223fb7d385f749646ed04be
9SHA1 (patch-bc) = c3daf40715af721a0c4ff1b1071a892c94b59ce5 9SHA1 (patch-bc) = c3daf40715af721a0c4ff1b1071a892c94b59ce5
 10SHA1 (patch-include_imapproxy.h) = 9e2326ece220e48c3baa2949b13d21448405e741
 11SHA1 (patch-src_config.c) = 84ac9bde7cf64add665adb0f4d658ef856a91ae0
 12SHA1 (patch-src_imapcommon.c) = 250b9d6edb9e0b475f673af8ca9bef235ddab796

File Added: pkgsrc/mail/imapproxy/patches/patch-include_imapproxy.h
$NetBSD: patch-include_imapproxy.h,v 1.1 2013/04/15 15:41:55 manu Exp $

SASL PLAIN Support. Patch submitted upstream
http://sourceforge.net/tracker/?func=detail&aid=3610674&group_id=311&atid=300311

--- include/imapproxy.h.orig	2013-04-15 11:57:37.000000000 +0200
+++ include/imapproxy.h	2013-04-15 11:58:33.000000000 +0200
@@ -311,8 +311,9 @@
     unsigned char support_unselect;           /* unselect support flag */
     unsigned char support_starttls;           /* starttls support flag */
     unsigned char login_disabled;             /* login disabled flag */
     char *chroot_directory;                   /* chroot(2) into this dir */
+    char *auth_sasl_mech;                     /* SASL mechanism */
 };
 
 
 /*

File Added: pkgsrc/mail/imapproxy/patches/patch-src_config.c
$NetBSD: patch-src_config.c,v 1.1 2013/04/15 15:41:55 manu Exp $

SASL PLAIN Support. Patch submitted upstream
http://sourceforge.net/tracker/?func=detail&aid=3610674&group_id=311&atid=300311

--- src/config.c.orig	2010-02-20 18:16:58.000000000 +0100
+++ src/config.c	2013-04-15 12:00:50.000000000 +0200
@@ -452,8 +452,11 @@
 		  &PC_Struct.force_tls, index );
 
     ADD_TO_TABLE( "enable_admin_commands", SetBooleanValue,
 		  &PC_Struct.enable_admin_commands, index );
+
+    ADD_TO_TABLE( "auth_sasl_mech", SetStringValue,
+		  &PC_Struct.auth_sasl_mech, index );
     
     ConfigTable[index].Keyword[0] = '\0';
     
     FP = fopen( ConfigFile, "r" );

File Added: pkgsrc/mail/imapproxy/patches/patch-src_imapcommon.c
$NetBSD: patch-src_imapcommon.c,v 1.1 2013/04/15 15:41:55 manu Exp $

SASL PLAIN Support. Patch submitted upstream
http://sourceforge.net/tracker/?func=detail&aid=3610674&group_id=311&atid=300311

--- src/imapcommon.c.orig	2010-02-20 18:16:58.000000000 +0100
+++ src/imapcommon.c	2013-04-15 12:12:45.000000000 +0200
@@ -689,13 +689,96 @@
     }
 #endif /* HAVE_LIBSSL */
 
 
+     /*
+      * If configured to do so, use SASL PLAIN instead of IMAP LOGIN
+      */
+     if ( PC_Struct.auth_sasl_mech && 
+ 	      !strcmp( PC_Struct.auth_sasl_mech, "plain" ) )
+     {
+ 	/*
+ 	 * Build SASL AUTH PLAIN string:
+ 	 * username\0username\0password
+ 	 */
+ 	char *ptr_username;
+ 	unsigned int username_size;
+ 	char *ptr_password;
+ 	unsigned int password_size;
+ 	unsigned int total_size;
+	unsigned int AuthBufIndex;
+	char AuthBuf[BUFSIZE]; 
+	char EncodedAuthBuf[BUFSIZE]; 
+ 
+ 	/*
+ 	 * Strip quotes From username
+ 	 */
+ 	ptr_username = Username;
+ 	username_size = strlen( Username );
+ 	if ( *ptr_username == '"' && *(ptr_username + username_size - 1) == '"' )
+ 	{
+ 	    ++ptr_username;
+ 	    username_size = username_size - 2;
+ 	}
+ 
+ 	/*
+ 	 * Same with password
+ 	 */
+ 	ptr_password = Password;
+ 	password_size = strlen( Password );
+ 	if ( *ptr_password == '"' && *(ptr_password + password_size - 1) == '"' )
+ 	{
+ 	    ++ptr_password;
+ 	    password_size = password_size - 2;
+ 	}
+ 
+ 	/*
+ 	 * Make sure output buffer is big enough ( +3 for three \0 )
+ 	 */
+ 	total_size = username_size + username_size + password_size + 3;
+ 	if ( total_size > sizeof(AuthBuf) ) {
+ 	    syslog( LOG_INFO,
+ 		    "LOGIN: '%s' (%s:%s) failed: PLAIN AUTH needs %d/%d bytes",
+ 		    Username, ClientAddr, portstr, total_size, sizeof(AuthBuf));
+ 	    goto fail;
+ 	}
+ 
+ 	/*
+ 	 * Prepare the buffer
+ 	 */
+ 	AuthBufIndex = 0;
+ 
+ 	memcpy( AuthBuf + AuthBufIndex, ptr_username, username_size );
+ 	AuthBufIndex += username_size;
+ 	AuthBuf[AuthBufIndex++] = '\0';
+ 
+ 	memcpy( AuthBuf + AuthBufIndex, ptr_username, username_size );
+ 	AuthBufIndex += username_size;
+ 	AuthBuf[AuthBufIndex++] = '\0';
+ 
+ 	memcpy( AuthBuf + AuthBufIndex, ptr_password, password_size );
+ 	AuthBufIndex += password_size;
+ 	AuthBuf[AuthBufIndex++] = '\0';
+ 
+ 	EVP_EncodeBlock( EncodedAuthBuf, AuthBuf, AuthBufIndex );
+ 
+ 	snprintf( SendBuf, BufLen, "A0001 AUTHENTICATE PLAIN %s\r\n", EncodedAuthBuf );
+ 
+ 	/* syslog( LOG_INFO, "sending auth plain '%s'", EncodedAuthBuf ); */
+ 
+ 	if ( IMAP_Write( Server.conn, SendBuf, strlen(SendBuf) ) == -1 )
+ 	{
+ 	    syslog( LOG_INFO,
+ 		    "LOGIN: '%s' (%s:%s) failed: IMAP_Write() failed attempting to send AUTHENTICATE command to IMAP server: %s",
+ 		    Username, ClientAddr, portstr, strerror( errno ) );
+ 	    goto fail;
+ 	}
+     }
     /*
      * Send the login command off to the IMAP server.  Have to treat a literal
      * password different.
      */
-    if ( LiteralPasswd )
+    else if ( LiteralPasswd )
     {
 	snprintf( SendBuf, BufLen, "A0001 LOGIN %s {%d}\r\n", 
 		  Username, strlen( Password ) );
 	if ( IMAP_Write( Server.conn, SendBuf, strlen(SendBuf) ) == -1 )