From f3722acc63671b8733c7a5680d89b913f91b6402 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Thu, 6 Apr 2017 23:47:49 +0200 Subject: dev-cpp/libcmis: Fix gdrive 2FA again, restrict tests, use vcs-snapshot Gentoo-bug: 577926 See also: https://bugs.documentfoundation.org/show_bug.cgi?id=98416 Package-Manager: Portage-2.3.3, Repoman-2.3.1 --- .../files/libcmis-0.5.2-fix-gdrive-2fa.patch | 70 ++++++++++++++++++ .../libcmis/libcmis-0.5.2_pre20160820-r1.ebuild | 82 ++++++++++++++++++++++ dev-cpp/libcmis/libcmis-9999.ebuild | 27 +++---- 3 files changed, 167 insertions(+), 12 deletions(-) create mode 100644 dev-cpp/libcmis/files/libcmis-0.5.2-fix-gdrive-2fa.patch create mode 100644 dev-cpp/libcmis/libcmis-0.5.2_pre20160820-r1.ebuild (limited to 'dev-cpp') diff --git a/dev-cpp/libcmis/files/libcmis-0.5.2-fix-gdrive-2fa.patch b/dev-cpp/libcmis/files/libcmis-0.5.2-fix-gdrive-2fa.patch new file mode 100644 index 000000000000..3c19e99a5ba9 --- /dev/null +++ b/dev-cpp/libcmis/files/libcmis-0.5.2-fix-gdrive-2fa.patch @@ -0,0 +1,70 @@ +From 1effce6d286ba3a9f467e15074b532d2ba4b7c98 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Szymon=20K=C5=82os?= +Date: Wed, 29 Mar 2017 17:45:10 +0200 +Subject: [PATCH] Fix 2FA for Google Drive + +--- + src/libcmis/oauth2-providers.cxx | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/libcmis/oauth2-providers.cxx b/src/libcmis/oauth2-providers.cxx +index 74c0fec..dd872dd 100644 +--- a/src/libcmis/oauth2-providers.cxx ++++ b/src/libcmis/oauth2-providers.cxx +@@ -37,6 +37,7 @@ + #define CHALLENGE_PAGE_ACTION_LEN sizeof( CHALLENGE_PAGE_ACTION ) - 1 + #define PIN_FORM_ACTION "/signin/challenge/ipp" + #define PIN_FORM_ACTION_LEN sizeof( PIN_FORM_ACTION ) - 1 ++#define PIN_INPUT_NAME "Pin" + + using namespace std; + +@@ -152,7 +153,7 @@ string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUr + } + + loginChallengeLink = "https://accounts.google.com" + loginChallengeLink; +- loginChallengePost += "Pin="; ++ loginChallengePost += string( PIN_INPUT_NAME ) + "="; + loginChallengePost += string( pin ); + + istringstream loginChallengeIs( loginChallengePost ); +@@ -291,6 +292,8 @@ int OAuth2Providers::parseResponse ( const char* response, string& post, string& + if ( reader == NULL ) return 0; + + bool readInputField = false; ++ bool bIsRightForm = false; ++ bool bHasPinField = false; + + while ( true ) + { +@@ -301,6 +304,12 @@ int OAuth2Providers::parseResponse ( const char* response, string& post, string& + // Find the redirect link + if ( xmlStrEqual( nodeName, BAD_CAST( "form" ) ) ) + { ++ // 2FA: Don't add fields form other forms not having pin field ++ if ( bIsRightForm && !bHasPinField ) ++ post = string( "" ); ++ if ( bIsRightForm && bHasPinField ) ++ break; ++ + xmlChar* action = xmlTextReaderGetAttribute( reader, + BAD_CAST( "action" )); + +@@ -311,7 +320,7 @@ int OAuth2Providers::parseResponse ( const char* response, string& post, string& + bool bChallengePage = ( strncmp( (char*)action, + CHALLENGE_PAGE_ACTION, + CHALLENGE_PAGE_ACTION_LEN ) == 0 ); +- bool bIsRightForm = ( strncmp( (char*)action, ++ bIsRightForm = ( strncmp( (char*)action, + PIN_FORM_ACTION, + PIN_FORM_ACTION_LEN ) == 0 ); + if ( ( xmlStrlen( action ) > 0 ) +@@ -332,6 +341,8 @@ int OAuth2Providers::parseResponse ( const char* response, string& post, string& + BAD_CAST( "name" )); + xmlChar* value = xmlTextReaderGetAttribute( reader, + BAD_CAST( "value" )); ++ if ( name != NULL && strcmp( (char*)name, PIN_INPUT_NAME ) == 0 ) ++ bHasPinField = true; + if ( ( name != NULL ) && ( value!= NULL ) ) + { + if ( ( xmlStrlen( name ) > 0) && ( xmlStrlen( value ) > 0) ) diff --git a/dev-cpp/libcmis/libcmis-0.5.2_pre20160820-r1.ebuild b/dev-cpp/libcmis/libcmis-0.5.2_pre20160820-r1.ebuild new file mode 100644 index 000000000000..08e6cd3a9251 --- /dev/null +++ b/dev-cpp/libcmis/libcmis-0.5.2_pre20160820-r1.ebuild @@ -0,0 +1,82 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +if [[ ${PV} = 9999 ]]; then + EGIT_REPO_URI="https://github.com/tdf/libcmis.git" + SCM_ECLASS="git-r3" +elif [[ ${PV} = *_pre* ]]; then + SCM_ECLASS="vcs-snapshot" + snapshot=d2054a12e3f52fff8e96341e8c48f0dcd75e2e2a + SRC_URI="https://github.com/tdf/${PN}/archive/${snapshot}.tar.gz -> ${P}.tar.gz" + unset snapshot +else + SRC_URI="https://github.com/tdf/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" +fi +inherit alternatives autotools ${SCM_ECLASS} +unset SCM_ECLASS + +DESCRIPTION="C++ client library for the CMIS interface" +HOMEPAGE="https://github.com/tdf/libcmis" + +LICENSE="|| ( GPL-2 LGPL-2 MPL-1.1 )" +SLOT="0.5" + +# Don't move KEYWORDS on the previous line or ekeyword won't work # 399061 +[[ ${PV} == 9999 ]] || \ +KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux" + +IUSE="man static-libs test" + +COMMON_DEPEND=" + dev-libs/boost:= + dev-libs/libxml2 + net-misc/curl +" +DEPEND="${COMMON_DEPEND} + virtual/pkgconfig + man? ( + app-text/docbook2X + dev-libs/libxslt + ) + test? ( + dev-util/cppcheck + dev-util/cppunit + ) +" +RDEPEND="${COMMON_DEPEND} + !