|
@@ -25,7 +25,7 @@
|
|
|
/* This must come before isync.h to avoid our #define S messing up
|
|
|
* blowfish.h on MacOS X. */
|
|
|
#include <config.h>
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
# include <openssl/ssl.h>
|
|
|
# include <openssl/err.h>
|
|
|
# include <openssl/hmac.h>
|
|
@@ -62,7 +62,7 @@ typedef struct imap_server_conf {
|
|
|
int port;
|
|
|
char *user;
|
|
|
char *pass;
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
char *cert_file;
|
|
|
unsigned use_imaps:1;
|
|
|
unsigned require_ssl:1;
|
|
@@ -96,7 +96,7 @@ typedef struct _list {
|
|
|
|
|
|
typedef struct {
|
|
|
int fd;
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
SSL *ssl;
|
|
|
unsigned int use_ssl:1;
|
|
|
#endif
|
|
@@ -124,7 +124,7 @@ typedef struct imap_store {
|
|
|
/* command queue */
|
|
|
int nexttag, num_in_progress, literal_pending;
|
|
|
struct imap_cmd *in_progress, **in_progress_append;
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
SSL_CTX *SSLContext;
|
|
|
#endif
|
|
|
buffer_t buf; /* this is BIG, so put it last */
|
|
@@ -155,7 +155,7 @@ enum CAPABILITY {
|
|
|
UIDPLUS,
|
|
|
LITERALPLUS,
|
|
|
NAMESPACE,
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
CRAM,
|
|
|
STARTTLS,
|
|
|
#endif
|
|
@@ -166,7 +166,7 @@ static const char *cap_list[] = {
|
|
|
"UIDPLUS",
|
|
|
"LITERAL+",
|
|
|
"NAMESPACE",
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
"AUTH=CRAM-MD5",
|
|
|
"STARTTLS",
|
|
|
#endif
|
|
@@ -187,7 +187,7 @@ static const char *Flags[] = {
|
|
|
"Deleted",
|
|
|
};
|
|
|
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
/* Some of this code is inspired by / lifted from mutt. */
|
|
|
|
|
|
static int
|
|
@@ -351,7 +351,7 @@ init_ssl_ctx( imap_store_t *ctx )
|
|
|
static void
|
|
|
socket_perror( const char *func, Socket_t *sock, int ret )
|
|
|
{
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
int err;
|
|
|
|
|
|
if (sock->use_ssl) {
|
|
@@ -388,7 +388,7 @@ socket_read( Socket_t *sock, char *buf, int len )
|
|
|
|
|
|
assert( sock->fd >= 0 );
|
|
|
n =
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
sock->use_ssl ? SSL_read( sock->ssl, buf, len ) :
|
|
|
#endif
|
|
|
read( sock->fd, buf, len );
|
|
@@ -407,7 +407,7 @@ socket_write( Socket_t *sock, char *buf, int len )
|
|
|
|
|
|
assert( sock->fd >= 0 );
|
|
|
n =
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
sock->use_ssl ? SSL_write( sock->ssl, buf, len ) :
|
|
|
#endif
|
|
|
write( sock->fd, buf, len );
|
|
@@ -428,7 +428,7 @@ socket_pending( Socket_t *sock )
|
|
|
return -1;
|
|
|
if (num > 0)
|
|
|
return num;
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (sock->use_ssl)
|
|
|
return SSL_pending( sock->ssl );
|
|
|
#endif
|
|
@@ -1295,7 +1295,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
struct hostent *he;
|
|
|
struct sockaddr_in addr;
|
|
|
int s, a[2], preauth;
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
int use_ssl;
|
|
|
#endif
|
|
|
|
|
@@ -1317,7 +1317,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
ctx->in_progress_append = &ctx->in_progress;
|
|
|
|
|
|
/* open connection to IMAP server */
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
use_ssl = 0;
|
|
|
#endif
|
|
|
|
|
@@ -1379,7 +1379,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
ctx->buf.sock.fd = s;
|
|
|
}
|
|
|
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (srvc->use_imaps) {
|
|
|
if (start_tls( ctx ))
|
|
|
goto ssl_bail;
|
|
@@ -1407,7 +1407,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
goto bail;
|
|
|
|
|
|
if (!preauth) {
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (!srvc->use_imaps && (srvc->use_sslv2 || srvc->use_sslv3 || srvc->use_tlsv1)) {
|
|
|
/* always try to select SSL support if available */
|
|
|
if (CAP(STARTTLS)) {
|
|
@@ -1452,7 +1452,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
*/
|
|
|
srvc->pass = nfstrdup( arg );
|
|
|
}
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (CAP(CRAM)) {
|
|
|
struct imap_cmd *cmd = new_imap_cmd();
|
|
|
|
|
@@ -1470,7 +1470,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
error( "Skipping account %s, server forbids LOGIN\n", srvc->name );
|
|
|
goto bail;
|
|
|
}
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (!use_ssl)
|
|
|
#endif
|
|
|
warn( "*** IMAP Warning *** Password is being sent in the clear\n" );
|
|
@@ -1504,7 +1504,7 @@ imap_open_store( store_conf_t *conf,
|
|
|
cb( &ctx->gen, aux );
|
|
|
return;
|
|
|
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
ssl_bail:
|
|
|
/* This avoids that we try to send LOGOUT to an unusable socket. */
|
|
|
close( ctx->buf.sock.fd );
|
|
@@ -1785,7 +1785,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep, int *err )
|
|
|
} else
|
|
|
return 0;
|
|
|
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
/* this will probably annoy people, but its the best default just in
|
|
|
* case people forget to turn it on
|
|
|
*/
|
|
@@ -1796,7 +1796,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep, int *err )
|
|
|
while (getcline( cfg ) && cfg->cmd) {
|
|
|
if (!strcasecmp( "Host", cfg->cmd )) {
|
|
|
/* The imap[s]: syntax is just a backwards compat hack. */
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
if (!memcmp( "imaps:", cfg->val, 6 )) {
|
|
|
cfg->val += 6;
|
|
|
server->use_imaps = 1;
|
|
@@ -1818,7 +1818,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep, int *err )
|
|
|
server->pass = nfstrdup( cfg->val );
|
|
|
else if (!strcasecmp( "Port", cfg->cmd ))
|
|
|
server->port = parse_int( cfg );
|
|
|
-#if HAVE_LIBSSL
|
|
|
+#ifdef HAVE_LIBSSL
|
|
|
else if (!strcasecmp( "CertificateFile", cfg->cmd )) {
|
|
|
server->cert_file = expand_strdup( cfg->val );
|
|
|
if (access( server->cert_file, R_OK )) {
|