Hello community,
here is the log from the commit of package imapfilter for openSUSE:Factory checked in at 2016-02-16 09:19:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/imapfilter (Old)
and /work/SRC/openSUSE:Factory/.imapfilter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "imapfilter"
Changes:
--------
--- /work/SRC/openSUSE:Factory/imapfilter/imapfilter.changes 2015-10-17 16:39:10.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.imapfilter.new/imapfilter.changes 2016-02-16 09:19:22.000000000 +0100
@@ -1,0 +2,13 @@
+Sat Feb 6 23:28:53 UTC 2016 - arun@gmx.de
+
+- update to version 2.6.6:
+ * Bug fix; print an error message if "ssl" has been set to "ssl3".
+
+- changes from version 2.6.5:
+ * Possible to build again with OpenSSL when support for SSL 3.0 is
+ disabled.
+
+- changes from version 2.6.4:
+ * Support for OAuth 2.0 and the XOAUTH2 authentication mechanism.
+
+-------------------------------------------------------------------
Old:
----
imapfilter-2.6.3.tar.gz
New:
----
imapfilter-2.6.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ imapfilter.spec ++++++
--- /var/tmp/diff_new_pack.nar3Wi/_old 2016-02-16 09:19:23.000000000 +0100
+++ /var/tmp/diff_new_pack.nar3Wi/_new 2016-02-16 09:19:23.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package imapfilter
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@
License: MIT
Group: Productivity/Networking/Email/Utilities
Url: https://github.com/lefcha/imapfilter
-Version: 2.6.3
+Version: 2.6.6
Release: 0
Source: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ imapfilter-2.6.3.tar.gz -> imapfilter-2.6.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/AUTHORS new/imapfilter-2.6.6/AUTHORS
--- old/imapfilter-2.6.3/AUTHORS 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/AUTHORS 2016-01-23 21:12:28.000000000 +0100
@@ -1 +1 @@
-Lefteris Chatzimparmpas
+Lefteris Chatzimparmpas
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/LICENSE new/imapfilter-2.6.6/LICENSE
--- old/imapfilter-2.6.3/LICENSE 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/LICENSE 2016-01-23 21:12:28.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2001-2015 Eleftherios Chatzimparmpas
+Copyright (c) 2001-2016 Eleftherios Chatzimparmpas
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/NEWS new/imapfilter-2.6.6/NEWS
--- old/imapfilter-2.6.3/NEWS 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/NEWS 2016-01-23 21:12:28.000000000 +0100
@@ -1,3 +1,12 @@
+IMAPFilter 2.6.6 - 23 Jan 2016
+ - Bug fix; print an error message if "ssl" has been set to "ssl3".
+
+IMAPFilter 2.6.5 - 18 Jan 2016
+ - Possible to build again with OpenSSL when support for SSL 3.0 is disabled.
+
+IMAPFilter 2.6.4 - 8 Dec 2015
+ - Support for OAuth 2.0 and the XOAUTH2 authentication mechanism.
+
IMAPFilter 2.6.3 - 30 Sep 2015
- Support for loading a default CA certificates file.
- A new has_unkeyword() method to search messages without a keyword flag set.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/doc/imapfilter_config.5 new/imapfilter-2.6.6/doc/imapfilter_config.5
--- old/imapfilter-2.6.3/doc/imapfilter_config.5 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/doc/imapfilter_config.5 2016-01-23 21:12:28.000000000 +0100
@@ -1,4 +1,4 @@
-.Dd Sep 30, 2015
+.Dd Dec 6, 2015
.Dt IMAPFILTER_CONFIG 5
.Os
.Sh NAME
@@ -13,7 +13,9 @@
.Pp
Although knowledge of Lua is not required to use
.Xr imapfilter 1 ,
-it is nonetheless recommended, especially if one wants to extend it.
+it is nonetheless recommended, especially if one wants to extend it. For more
+information on Lua see
+.Ad http://www.lua.org/docs.html .
.Sh CONVENTIONS
.Pp
A brief description of the Lua values and types mentioned hereafter in the
@@ -263,9 +265,28 @@
.Bl -tag -width Ds
.It Va password
User's secret keyword. If a password wasn't supplied the user will be asked to
-enter one interactively the first time it will be needed. It takes a
+enter one interactively the first time it will be needed (unless
+.Vt oauth2
+has been set). It takes a
.Vt string
as a value.
+.It Va oauth2
+The OAuth2 string to use to authenticate if the server supports the XOAUTH2
+authentication mechanism. If the server does not support it and a
+.Vt password
+has been also set, authentication will be attempted using the
+.Vt password .
+It takes a
+.Vt string
+as a value.
+.Pp
+Note that this requires that an OAuth client ID and client secret have been
+obtained, an OAuth2 token has been generated and authorized, a new access token
+has been generated using the refresh token if the last access token has
+expired, and an OAuth2 string has been generated from the access token. The
+aforementioned OAuth2 string is a Base64 encoded string that should be set
+here. For more information see
+.Ad https://developers.google.com/gmail/xoauth2_protocol .
.It Va port
The port to connect to. It takes a
.Vt number
@@ -856,7 +877,8 @@
that match a specific regular expression pattern. The matching mechanism that
is used to support this is based on the Perl-compatible regular expressions
(PCRE), and more information about the patterns and modifiers that can be used,
-is available in the relevant documentation.
+is available in the relevant documentation at
+.Ad http://pcre.org/original/doc/html/ .
.Pp
This way of searching is not supported by the IMAP protocol, and this means
that what actually happens under the hood, is that the relevant parts of all
@@ -1315,7 +1337,9 @@
type. Note that due to Lua using backslash
.Sq \e
as an escape character for its strings, one has to double backslashes in order
-to insert a single backslash inside a regular expression pattern.
+to insert a single backslash inside a regular expression pattern. For more
+information on PCRE see
+.Ad http://pcre.org/original/doc/html/ .
.El
.Pp
Examples:
@@ -1339,6 +1363,4 @@
User's home directory.
.El
.Sh SEE ALSO
-.Xr imapfilter 1 ,
-.Ad http://www.lua.org/docs.html ,
-.Ad http://pcre.org/original/doc/html/
+.Xr imapfilter 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/samples/extend.lua new/imapfilter-2.6.6/samples/extend.lua
--- old/imapfilter-2.6.3/samples/extend.lua 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/samples/extend.lua 2016-01-23 21:12:28.000000000 +0100
@@ -120,3 +120,42 @@
password = password2
}
+
+-- An alternative way to authenticate to a server is by using a OAuth2 string,
+-- if the server supports the XOAUTH2 authentication mechanism.
+--
+-- In order to generate an OAuth2 string the oauth2.py script and library can
+-- be used, and instructions on how to use it and where to download it are
+-- available at:
+--
+-- https://github.com/google/gmail-oauth2-tools/wiki/OAuth2DotPyRunThrough
+--
+-- The generated OAuth2 string is then supplied to imapfilter in order to
+-- authenticate to the IMAP server using it instead of a login
+-- username/password pair.
+--
+-- Here we assume that imapfilter has the user, the cliend id, the client
+-- secret and the refresh token, and uses them to generate a new access token
+-- (access tokens expire after one hour), and then from the new access token to
+-- generate the OAuth2 string that is used with the IMAP server:
+user = 'xoauth@gmail.com'
+clientid = '364545978226.apps.googleusercontent.com'
+clientsecret = 'zNrNsBzOOnQy8_O-8LkofeTR'
+refreshtoken = '1/q4SaB2JMQB9I-an6F1rxJE9OkOMtfjaz1bPm1tfDpQM'
+
+status, output = pipe_from('oauth2.py --client_id=' .. clientid ..
+ ' --client_secret=' .. clientsecret ..
+ ' --refresh_token=' .. refreshtoken)
+_, _, accesstoken = string.find(output, 'Access Token: ([%w%p]+)\n')
+
+status, output = pipe_from('oauth2.py --generate_oauth2_string' ..
+ ' --access_token=' .. accesstoken ..
+ ' --user=' .. user)
+_, _, oauth2string = string.find(output, 'OAuth2 argument:\n([%w%p]+)\n')
+
+account3 = IMAP {
+ server = 'imap.gmail.com',
+ ssl = 'tls1.2',
+ username = user,
+ oauth2 = oauth2string
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/Makefile new/imapfilter-2.6.6/src/Makefile
--- old/imapfilter-2.6.3/src/Makefile 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/Makefile 2016-01-23 21:12:28.000000000 +0100
@@ -1,5 +1,5 @@
-DESTDIR =
-PREFIX = /usr/local
+DESTDIR ?=
+PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
SHAREDIR = $(PREFIX)/share/imapfilter
MANDIR = $(PREFIX)/man
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/account.lua new/imapfilter-2.6.6/src/account.lua
--- old/imapfilter-2.6.3/src/account.lua 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/account.lua 2016-01-23 21:12:28.000000000 +0100
@@ -12,10 +12,22 @@
setmetatable(_imap, { __mode = "v" })
+_undefined = 0
+function _next_undefined()
+ _undefined = _undefined + 1
+ return 'undefined' .. _undefined
+end
+
+
Account._mt.__call = function (self, arg)
_check_required(arg.server, 'string')
- _check_required(arg.username, 'string')
+ if not arg.oauth2 then
+ _check_required(arg.username, 'string')
+ else
+ _check_optional(arg.username, 'string')
+ end
_check_optional(arg.password, 'string')
+ _check_optional(arg.oauth2, 'string')
_check_optional(arg.port, 'number')
_check_optional(arg.ssl, 'string')
@@ -24,13 +36,14 @@
object._type = 'account'
object._account = {}
object._account.server = arg.server
- object._account.username = arg.username
+ object._account.username = arg.username or _next_undefined()
object._account.password = arg.password
+ object._account.oauth2 = arg.oauth2
object._account.port = tostring(arg.port or arg.ssl and 993 or 143)
- object._account.ssl = arg.ssl or ''
+ object._account.ssl = arg.ssl
object._account.session = nil
object._account.selected = nil
- object._string = arg.username .. '@' .. arg.server
+ object._string = object._account.username .. '@' .. object._account.server
for key, value in pairs(Account) do
if type(value) == 'function' then object[key] = value end
@@ -72,18 +85,18 @@
function Account._login_user(self)
- if self._account.password == nil then
- self._account.password = get_password('Enter password for ' ..
- self._string .. ': ')
+ if self._account.password == nil and self._account.oauth2 == nil then
+ self._account.password = get_password('Enter password for ' ..
+ self._string .. ': ')
end
if self._account.session then return true end
local r, s = ifcore.login(self._account.server, self._account.port,
self._account.ssl, self._account.username,
- self._account.password)
+ self._account.password, self._account.oauth2)
self._check_result(self, 'login', r)
if r == false then
- error('authentication to ' .. self._string .. ' failed.', 0)
+ error('authentication of ' .. self._string .. ' failed.', 0)
end
if not r then return false end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/core.c new/imapfilter-2.6.6/src/core.c
--- old/imapfilter-2.6.3/src/core.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/core.c 2016-01-23 21:12:28.000000000 +0100
@@ -114,18 +114,28 @@
ifcore_login(lua_State *lua)
{
session *s = NULL;
- int r;
+ int t, r;
- if (lua_gettop(lua) != 5)
+ if (lua_gettop(lua) != 6)
luaL_error(lua, "wrong number of arguments");
luaL_checktype(lua, 1, LUA_TSTRING);
luaL_checktype(lua, 2, LUA_TSTRING);
- luaL_checktype(lua, 3, LUA_TSTRING);
- luaL_checktype(lua, 4, LUA_TSTRING);
- luaL_checktype(lua, 5, LUA_TSTRING);
+ t = lua_type(lua, 3);
+ luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 3,
+ "string or nil expected");
+ t = lua_type(lua, 4);
+ luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 4,
+ "string or nil expected");
+ t = lua_type(lua, 5);
+ luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 5,
+ "string or nil expected");
+ t = lua_type(lua, 6);
+ luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 6,
+ "string or nil expected");
r = request_login(&s, lua_tostring(lua, 1), lua_tostring(lua, 2),
- lua_tostring(lua, 3), lua_tostring(lua, 4), lua_tostring(lua, 5));
+ lua_tostring(lua, 3), lua_tostring(lua, 4), lua_tostring(lua, 5),
+ lua_tostring(lua, 6));
lua_pop(lua, 5);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/imapfilter.c new/imapfilter-2.6.6/src/imapfilter.c
--- old/imapfilter-2.6.3/src/imapfilter.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/imapfilter.c 2016-01-23 21:12:28.000000000 +0100
@@ -21,7 +21,10 @@
extern buffer ibuf, obuf, nbuf, cbuf;
extern regexp responses[];
-extern SSL_CTX *ssl3ctx, *ssl23ctx, *tls1ctx;
+extern SSL_CTX *ssl23ctx, *tls1ctx;
+#ifndef OPENSSL_NO_SSL3_METHOD
+extern SSL_CTX *ssl3ctx;
+#endif
#if OPENSSL_VERSION_NUMBER >= 0x01000100fL
extern SSL_CTX *tls11ctx, *tls12ctx;
#endif
@@ -114,7 +117,9 @@
SSL_library_init();
SSL_load_error_strings();
+#ifndef OPENSSL_NO_SSL3_METHOD
ssl3ctx = SSL_CTX_new(SSLv3_client_method());
+#endif
ssl23ctx = SSL_CTX_new(SSLv23_client_method());
tls1ctx = SSL_CTX_new(TLSv1_client_method());
#if OPENSSL_VERSION_NUMBER >= 0x01000100fL
@@ -125,7 +130,9 @@
capath = opts.truststore;
else if (exists_file(opts.truststore))
cafile = opts.truststore;
+#ifndef OPENSSL_NO_SSL3_METHOD
SSL_CTX_load_verify_locations(ssl3ctx, cafile, capath);
+#endif
SSL_CTX_load_verify_locations(ssl23ctx, cafile, capath);
SSL_CTX_load_verify_locations(tls1ctx, cafile, capath);
#if OPENSSL_VERSION_NUMBER >= 0x01000100fL
@@ -150,7 +157,9 @@
#endif
stop_lua();
+#ifndef OPENSSL_NO_SSL3_METHOD
SSL_CTX_free(ssl3ctx);
+#endif
SSL_CTX_free(ssl23ctx);
SSL_CTX_free(tls1ctx);
#if OPENSSL_VERSION_NUMBER >= 0x01000100fL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/imapfilter.h new/imapfilter-2.6.6/src/imapfilter.h
--- old/imapfilter-2.6.3/src/imapfilter.h 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/imapfilter.h 2016-01-23 21:12:28.000000000 +0100
@@ -33,6 +33,7 @@
#define CAPABILITY_STARTTLS 0x04
#define CAPABILITY_CHILDREN 0x08
#define CAPABILITY_IDLE 0x10
+#define CAPABILITY_XOAUTH2 0x20
/* Status responses and response codes. */
#define STATUS_NONE 0
@@ -141,7 +142,7 @@
/* request.c */
int request_noop(session *ssn);
int request_login(session **ssn, const char *server, const char *port, const
- char *protocol, const char *user, const char *pass);
+ char *protocol, const char *user, const char *pass, const char *oauth2);
int request_logout(session *ssn);
int request_status(session *ssn, const char *mbox, unsigned int *exist,
unsigned int *recent, unsigned int *unseen, unsigned int *uidnext);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/request.c new/imapfilter-2.6.6/src/request.c
--- old/imapfilter-2.6.3/src/request.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/request.c 2016-01-23 21:12:28.000000000 +0100
@@ -34,14 +34,15 @@
case -1: \
if ((!strcasecmp(get_option_string("recover"), "all") || \
!strcasecmp(get_option_string("recover"), "errors")) && \
- request_login(&ssn, NULL, NULL, NULL, NULL, NULL) != -1) \
+ request_login(&ssn, NULL, NULL, NULL, NULL, NULL, \
+ NULL) != -1) \
return STATUS_NONE; \
return -1; \
case STATUS_BYE: \
close_connection(ssn); \
if (!strcasecmp(get_option_string("recover"), "all")) { \
if (request_login(&ssn, NULL, NULL, NULL, NULL, \
- NULL) != -1) \
+ NULL, NULL) != -1) \
return STATUS_NONE; \
} else \
session_destroy(ssn); \
@@ -153,7 +154,7 @@
*/
int
request_login(session **ssnptr, const char *server, const char *port, const
- char *ssl, const char *user, const char *pass)
+ char *ssl, const char *user, const char *pass, const char *oauth2)
{
int t, r, rg = -1, rl = -1;
session *ssn = *ssnptr;
@@ -168,8 +169,9 @@
ssn->port = port;
ssn->username = user;
ssn->password = pass;
+ ssn->oauth2 = oauth2;
- if (strlen(ssl) != 0)
+ if (ssl)
ssn->sslproto = ssl;
} else {
debug("recovering connection: %s://%s@%s:%s/%s\n",
@@ -203,7 +205,28 @@
}
if (rg != STATUS_PREAUTH) {
- if (ssn->capabilities & CAPABILITY_CRAMMD5 &&
+ if (ssn->oauth2 && !ssn->password &&
+ !(ssn->capabilities & CAPABILITY_XOAUTH2)) {
+ error("OAuth2 not supported at %s@%s\n", ssn->username,
+ ssn->server);
+ close_connection(ssn);
+ session_destroy(ssn);
+ return STATUS_NO;
+ }
+ if (ssn->capabilities & CAPABILITY_XOAUTH2 && ssn->oauth2) {
+ CHECK(t = send_request(ssn, "AUTHENTICATE XOAUTH2 %s",
+ ssn->oauth2));
+ CHECK(rl = response_generic(ssn, t));
+ }
+ if (rl == STATUS_NO) {
+ error("oauth2 string rejected at %s@%s\n",
+ ssn->username, ssn->server);
+ close_connection(ssn);
+ session_destroy(ssn);
+ return STATUS_NO;
+ }
+ if (rl != STATUS_OK && ssn->password &&
+ ssn->capabilities & CAPABILITY_CRAMMD5 &&
get_option_boolean("crammd5")) {
unsigned char *in, *out;
CHECK(t = send_request(ssn, "AUTHENTICATE CRAM-MD5"));
@@ -219,12 +242,11 @@
} else
goto abort;
}
- if (rl != STATUS_OK) {
+ if (rl != STATUS_OK && ssn->password) {
CHECK(t = send_request(ssn, "LOGIN \"%s\" \"%s\"",
ssn->username, ssn->password));
CHECK(rl = response_generic(ssn, t));
}
-
if (rl == STATUS_NO) {
error("username %s or password rejected at %s\n",
ssn->username, ssn->server);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/response.c new/imapfilter-2.6.6/src/response.c
--- old/imapfilter-2.6.3/src/response.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/response.c 2016-01-23 21:12:28.000000000 +0100
@@ -336,9 +336,10 @@
ssn->capabilities |= CAPABILITY_STARTTLS;
if (xstrcasestr(s, "CHILDREN"))
ssn->capabilities |= CAPABILITY_CHILDREN;
-
if (xstrcasestr(s, "IDLE"))
ssn->capabilities |= CAPABILITY_IDLE;
+ if (xstrcasestr(s, "AUTH=XOAUTH2"))
+ ssn->capabilities |= CAPABILITY_XOAUTH2;
xfree(s);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/session.c new/imapfilter-2.6.6/src/session.c
--- old/imapfilter-2.6.3/src/session.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/session.c 2016-01-23 21:12:28.000000000 +0100
@@ -40,6 +40,7 @@
ssn->sslproto = NULL;
ssn->username = NULL;
ssn->password = NULL;
+ ssn->oauth2 = NULL;
ssn->socket = -1;
ssn->sslconn = NULL;
ssn->protocol = PROTOCOL_NONE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/session.h new/imapfilter-2.6.6/src/session.h
--- old/imapfilter-2.6.3/src/session.h 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/session.h 2016-01-23 21:12:28.000000000 +0100
@@ -12,6 +12,7 @@
const char *sslproto; /* SSL protocol. */
const char *username; /* User name. */
const char *password; /* User password. */
+ const char *oauth2; /* Oauth2 token */
int socket; /* Socket. */
SSL *sslconn; /* SSL connection. */
unsigned int protocol; /* IMAP protocol. Currently IMAP4rev1 and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/socket.c new/imapfilter-2.6.6/src/socket.c
--- old/imapfilter-2.6.3/src/socket.c 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/socket.c 2016-01-23 21:12:28.000000000 +0100
@@ -16,8 +16,10 @@
#include "imapfilter.h"
#include "session.h"
-
-SSL_CTX *ssl3ctx, *ssl23ctx, *tls1ctx;
+SSL_CTX *ssl23ctx, *tls1ctx;
+#ifndef OPENSSL_NO_SSL3_METHOD
+SSL_CTX *ssl3ctx;
+#endif
#if OPENSSL_VERSION_NUMBER >= 0x01000100fL
SSL_CTX *tls11ctx, *tls12ctx;
#endif
@@ -95,7 +97,12 @@
if (!ssn->sslproto) {
ctx = ssl23ctx;
} else if (!strcasecmp(ssn->sslproto, "ssl3")) {
+#ifndef OPENSSL_NO_SSL3_METHOD
ctx = ssl3ctx;
+#else
+ error("protocol SSLv3 not supported by current build\n");
+ goto fail;
+#endif
} else if (!strcasecmp(ssn->sslproto, "tls1")) {
ctx = tls1ctx;
} else if (!strcasecmp(ssn->sslproto, "tls1.1")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/version.h new/imapfilter-2.6.6/src/version.h
--- old/imapfilter-2.6.3/src/version.h 2015-09-30 22:55:26.000000000 +0200
+++ new/imapfilter-2.6.6/src/version.h 2016-01-23 21:12:28.000000000 +0100
@@ -3,10 +3,10 @@
/* Program's version number. */
-#define VERSION "2.6.3"
+#define VERSION "2.6.6"
/* Program's copyright. */
-#define COPYRIGHT "Copyright (c) 2001-2015 Eleftherios Chatzimparmpas"
+#define COPYRIGHT "Copyright (c) 2001-2016 Eleftherios Chatzimparmpas"
#endif /* VERSION_H */