--- desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-15 19:10:43.340595365 -0400 @@ -922,7 +922,7 @@ // WebViewFlow > OAuth > Shib > Basic if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) { - result = WebViewFlow; + result = Basic; } qCInfo(lcDetermineAuthTypeJob) << "Auth type for" << _account->davUrl() << "is" << result; --- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.cpp 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:12:03.420596798 -0400 @@ -1,49 +0,0 @@ -#include "webflowcredentialsdialog.h" - -#include -#include - -#include "wizard/webview.h" - -namespace OCC { - -WebFlowCredentialsDialog::WebFlowCredentialsDialog(QWidget *parent) - : QDialog(parent) -{ - _layout = new QVBoxLayout(this); - - //QString msg = tr("You have been logged out of %1 as user %2, please login again") - // .arg(_account->displayName(), _user); - _infoLabel = new QLabel(); - _layout->addWidget(_infoLabel); - - _webView = new WebView(); - _layout->addWidget(_webView); - - _errorLabel = new QLabel(); - _errorLabel->hide(); - _layout->addWidget(_errorLabel); - - setLayout(_layout); - - connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched); -} - -void WebFlowCredentialsDialog::setUrl(const QUrl &url) { - _webView->setUrl(url); -} - -void WebFlowCredentialsDialog::setInfo(const QString &msg) { - _infoLabel->setText(msg); -} - -void WebFlowCredentialsDialog::setError(const QString &error) { - if (error.isEmpty()) { - _errorLabel->hide(); - } else { - _errorLabel->setText(error); - _errorLabel->show(); - } -} - -} --- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.cpp 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:12:03.420596798 -0400 @@ -1,258 +0,0 @@ -#include "webflowcredentials.h" - -#include "creds/httpcredentials.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "accessmanager.h" -#include "account.h" -#include "theme.h" -#include "wizard/webview.h" -#include "webflowcredentialsdialog.h" - -using namespace QKeychain; - -namespace OCC { - -Q_LOGGING_CATEGORY(lcWebFlowCredentials, "sync.credentials.webflow", QtInfoMsg) - -WebFlowCredentials::WebFlowCredentials() - : _ready(false), - _credentialsValid(false) -{ - -} - -WebFlowCredentials::WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate, const QSslKey &key) - : _user(user) - , _password(password) - , _clientSslKey(key) - , _clientSslCertificate(certificate) - , _ready(true) - , _credentialsValid(true) -{ - -} - -QString WebFlowCredentials::authType() const { - return QString::fromLatin1("webflow"); -} - -QString WebFlowCredentials::user() const { - return _user; -} - -QString WebFlowCredentials::password() const { - return _password; -} - -QNetworkAccessManager *WebFlowCredentials::createQNAM() const { - qCInfo(lcWebFlowCredentials()) << "Get QNAM"; - AccessManager *qnam = new AccessManager(); - - connect(qnam, &AccessManager::authenticationRequired, this, &WebFlowCredentials::slotAuthentication); - connect(qnam, &AccessManager::finished, this, &WebFlowCredentials::slotFinished); - - return qnam; -} - -bool WebFlowCredentials::ready() const { - return _ready; -} - -void WebFlowCredentials::fetchFromKeychain() { - _wasFetched = true; - - // Make sure we get the user fromt he config file - fetchUser(); - - if (ready()) { - emit fetched(); - } else { - qCInfo(lcWebFlowCredentials()) << "Fetch from keyhchain!"; - fetchFromKeychainHelper(); - } -} - -void WebFlowCredentials::askFromUser() { - _askDialog = new WebFlowCredentialsDialog(); - - QUrl url = _account->url(); - QString path = url.path() + "/index.php/login/flow"; - url.setPath(path); - _askDialog->setUrl(url); - - QString msg = tr("You have been logged out of %1 as user %2. Please login again") - .arg(_account->displayName(), _user); - _askDialog->setInfo(msg); - - _askDialog->show(); - - connect(_askDialog, &WebFlowCredentialsDialog::urlCatched, this, &WebFlowCredentials::slotAskFromUserCredentialsProvided); - - qCWarning(lcWebFlowCredentials()) << "User needs to reauth!"; -} - -void WebFlowCredentials::slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host) { - Q_UNUSED(host); - - if (_user != user) { - qCInfo(lcWebFlowCredentials()) << "Authed with the wrong user!"; - - QString msg = tr("Please login with the user: %1") - .arg(_user); - _askDialog->setError(msg); - - QUrl url = _account->url(); - QString path = url.path() + "/index.php/login/flow"; - url.setPath(path); - _askDialog->setUrl(url); - - return; - } - - qCInfo(lcWebFlowCredentials()) << "Obtained a new password"; - - _password = pass; - _ready = true; - _credentialsValid = true; - persist(); - emit asked(); - - _askDialog->close(); - delete _askDialog; - _askDialog = NULL; -} - - -bool WebFlowCredentials::stillValid(QNetworkReply *reply) { - qCWarning(lcWebFlowCredentials()) << "Still valid?"; - qCWarning(lcWebFlowCredentials()) << reply->error(); - qCWarning(lcWebFlowCredentials()) << reply->errorString(); - return (reply->error() != QNetworkReply::AuthenticationRequiredError); -} - -void WebFlowCredentials::persist() { - if (_user.isEmpty()) { - // We don't even have a user nothing to see here move along - return; - } - - _account->setCredentialSetting("user", _user); - _account->wantsAccountSaved(_account); - - //TODO: Add ssl cert and key storing - WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName()); - job->setInsecureFallback(false); - job->setKey(keychainKey(_account->url().toString(), _user, _account->id())); - job->setTextData(_password); - job->start(); -} - -void WebFlowCredentials::invalidateToken() { - // clear the session cookie. - _account->clearCookieJar(); - - // let QNAM forget about the password - // This needs to be done later in the event loop because we might be called (directly or - // indirectly) from QNetworkAccessManagerPrivate::authenticationRequired, which itself - // is a called from a BlockingQueuedConnection from the Qt HTTP thread. And clearing the - // cache needs to synchronize again with the HTTP thread. - QTimer::singleShot(0, _account, &Account::clearQNAMCache); -} - -void WebFlowCredentials::forgetSensitiveData(){ - _password = QString(); - _ready = false; - - fetchUser(); - - const QString kck = keychainKey(_account->url().toString(), _user, _account->id()); - if (kck.isEmpty()) { - qCWarning(lcWebFlowCredentials()) << "InvalidateToken: User is empty, bailing out!"; - return; - } - - DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName()); - job->setInsecureFallback(false); - job->setKey(kck); - job->start(); - - invalidateToken(); -} - -void WebFlowCredentials::setAccount(Account *account) { - AbstractCredentials::setAccount(account); - if (_user.isEmpty()) { - fetchUser(); - } -} - -QString WebFlowCredentials::fetchUser() { - _user = _account->credentialSetting("user").toString(); - return _user; -} - -void WebFlowCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator) { - Q_UNUSED(reply); - - if (!_ready) { - return; - } - - if (_credentialsValid == false) { - return; - } - - qCWarning(lcWebFlowCredentials()) << "Requires authentication"; - - authenticator->setUser(_user); - authenticator->setPassword(_password); - _credentialsValid = false; -} - -void WebFlowCredentials::slotFinished(QNetworkReply *reply) { - qCInfo(lcWebFlowCredentials()) << "request finished"; - - if (reply->error() == QNetworkReply::NoError) { - _credentialsValid = true; - } -} - -void WebFlowCredentials::fetchFromKeychainHelper() { - const QString kck = keychainKey( - _account->url().toString(), - _user, - _account->id()); - - ReadPasswordJob *job = new ReadPasswordJob(Theme::instance()->appName()); - job->setInsecureFallback(false); - job->setKey(kck); - connect(job, &Job::finished, this, &WebFlowCredentials::slotReadPasswordJobDone); - job->start(); -} - -void WebFlowCredentials::slotReadPasswordJobDone(Job *incomingJob) { - QKeychain::ReadPasswordJob *job = static_cast(incomingJob); - QKeychain::Error error = job->error(); - - if (error == QKeychain::NoError) { - _password = job->textData(); - _ready = true; - _credentialsValid = true; - } else { - _ready = false; - } - - emit fetched(); -} - -} --- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.h 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:12:03.420596798 -0400 @@ -1,36 +0,0 @@ -#ifndef WEBFLOWCREDENTIALSDIALOG_H -#define WEBFLOWCREDENTIALSDIALOG_H - -#include -#include - -class QLabel; -class QVBoxLayout; - -namespace OCC { - -class WebView; - -class WebFlowCredentialsDialog : public QDialog -{ - Q_OBJECT -public: - WebFlowCredentialsDialog(QWidget *parent = 0); - - void setUrl(const QUrl &url); - void setInfo(const QString &msg); - void setError(const QString &error); - -signals: - void urlCatched(const QString user, const QString pass, const QString host); - -private: - WebView *_webView; - QLabel *_errorLabel; - QLabel *_infoLabel; - QVBoxLayout *_layout; -}; - -} - -#endif // WEBFLOWCREDENTIALSDIALOG_H --- desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-15 19:29:27.240615471 -0400 @@ -21,7 +21,6 @@ #ifndef NO_SHIBBOLETH #include "creds/shibbolethcredentials.h" #endif -#include "creds/webflowcredentials.h" namespace OCC { @@ -40,8 +39,6 @@ } else if (type == "shibboleth") { return new ShibbolethCredentials; #endif - } else if (type == "webflow") { - return new WebFlowCredentials; } else { qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type)); return new DummyCredentials; --- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.h 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:12:03.420596798 -0400 @@ -1,79 +0,0 @@ -#ifndef WEBFLOWCREDENTIALS_H -#define WEBFLOWCREDENTIALS_H - -#include -#include - -#include "creds/abstractcredentials.h" - -class QDialog; -class QLabel; -class QNetworkReply; -class QAuthenticator; - -namespace QKeychain { - class Job; -} - -namespace OCC { - -class WebFlowCredentialsDialog; - -class WebFlowCredentials : public AbstractCredentials -{ - Q_OBJECT -public: - explicit WebFlowCredentials(); - WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate = QSslCertificate(), const QSslKey &key = QSslKey()); - - QString authType() const override; - QString user() const override; - QString password() const; - QNetworkAccessManager *createQNAM() const override; - - bool ready() const override; - - void fetchFromKeychain() override; - void askFromUser() override; - - bool stillValid(QNetworkReply *reply) override; - void persist() override; - void invalidateToken() override; - void forgetSensitiveData() override; - - // To fetch the user name as early as possible - void setAccount(Account *account) override; - -private slots: - void slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator); - void slotFinished(QNetworkReply *reply); - - void slotReadPasswordJobDone(QKeychain::Job *incomingJob); - void slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host); - -private: - /** Reads data from keychain locations - * - * Goes through - * slotReadClientCertPEMJobDone to - * slotReadClientCertPEMJobDone to - * slotReadJobDone - */ - void fetchFromKeychainHelper(); - - QString fetchUser(); - - QString _user; - QString _password; - QSslKey _clientSslKey; - QSslCertificate _clientSslCertificate; - - bool _ready; - bool _credentialsValid; - - WebFlowCredentialsDialog *_askDialog; -}; - -} - -#endif // WEBFLOWCREDENTIALS_H --- desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-15 19:28:53.640614870 -0400 @@ -41,7 +41,6 @@ wizard/owncloudoauthcredspage.ui wizard/owncloudsetupnocredspage.ui wizard/owncloudwizardresultpage.ui - wizard/webview.ui ) set(client_SRCS @@ -104,8 +103,6 @@ creds/credentialsfactory.cpp creds/httpcredentialsgui.cpp creds/oauth.cpp - creds/webflowcredentials.cpp - creds/webflowcredentialsdialog.cpp wizard/postfixlineedit.cpp wizard/abstractcredswizardpage.cpp wizard/owncloudadvancedsetuppage.cpp @@ -116,8 +113,6 @@ wizard/owncloudwizardcommon.cpp wizard/owncloudwizard.cpp wizard/owncloudwizardresultpage.cpp - wizard/webviewpage.cpp - wizard/webview.cpp ) IF(NOT NO_SHIBBOLETH) @@ -290,7 +290,7 @@ endif() add_library(updater STATIC ${updater_SRCS}) -target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets) +target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml) target_include_directories(updater PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES --- desktop-2.5.0-beta2/src/gui/wizard/webview.cpp 2018-08-24 12:54:42.000000000 +0000 +++ /dev/null 2018-10-03 06:10:44.230254545 +0000 @@ -1,162 +0,0 @@ -#include "webview.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/utility.h" - -namespace OCC { - -Q_LOGGING_CATEGORY(lcWizardWebiew, "gui.wizard.webview", QtInfoMsg) - - -class WebViewPageUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor -{ - Q_OBJECT -public: - WebViewPageUrlRequestInterceptor(QObject *parent = 0); - void interceptRequest(QWebEngineUrlRequestInfo &info); -}; - -class WebViewPageUrlSchemeHandler : public QWebEngineUrlSchemeHandler -{ - Q_OBJECT -public: - WebViewPageUrlSchemeHandler(QObject *parent = 0); - void requestStarted(QWebEngineUrlRequestJob *request); - -Q_SIGNALS: - void urlCatched(QString user, QString pass, QString host); -}; - -class WebEnginePage : public QWebEnginePage { -public: - WebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr); - QWebEnginePage * createWindow(QWebEnginePage::WebWindowType type) override; -}; - -// We need a separate class here, since we cannot simply return the same WebEnginePage object -// this leads to a strage segfault somewhere deep inside of the QWebEngine code -class ExternalWebEnginePage : public QWebEnginePage { -public: - ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr); - bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override; -}; - -WebView::WebView(QWidget *parent) - : QWidget(parent), - _ui() -{ - _ui.setupUi(this); - - _webview = new QWebEngineView(this); - _profile = new QWebEngineProfile(this); - _page = new WebEnginePage(_profile); - _interceptor = new WebViewPageUrlRequestInterceptor(this); - _schemeHandler = new WebViewPageUrlSchemeHandler(this); - - const QString userAgent(Utility::userAgentString()); - _profile->setHttpUserAgent(userAgent); - QWebEngineProfile::defaultProfile()->setHttpUserAgent(userAgent); - _profile->setRequestInterceptor(_interceptor); - _profile->installUrlSchemeHandler("nc", _schemeHandler); - - /* - * Set a proper accept langauge to the language of the client - * code from: http://code.qt.io/cgit/qt/qtbase.git/tree/src/network/access/qhttpnetworkconnection.cpp - */ - { - QString systemLocale = QLocale::system().name().replace(QChar::fromLatin1('_'),QChar::fromLatin1('-')); - QString acceptLanguage; - if (systemLocale == QLatin1String("C")) { - acceptLanguage = QString::fromLatin1("en,*"); - } else if (systemLocale.startsWith(QLatin1String("en-"))) { - acceptLanguage = systemLocale + QLatin1String(",*"); - } else { - acceptLanguage = systemLocale + QLatin1String(",en,*"); - } - _profile->setHttpAcceptLanguage(acceptLanguage); - } - - _webview->setPage(_page); - _ui.verticalLayout->addWidget(_webview); - - connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue); - connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched); -} - -void WebView::setUrl(const QUrl &url) { - _page->setUrl(url); -} - -WebViewPageUrlRequestInterceptor::WebViewPageUrlRequestInterceptor(QObject *parent) - : QWebEngineUrlRequestInterceptor(parent) { - -} - -void WebViewPageUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) { - info.setHttpHeader("OCS-APIREQUEST", "true"); -} - -WebViewPageUrlSchemeHandler::WebViewPageUrlSchemeHandler(QObject *parent) - : QWebEngineUrlSchemeHandler(parent) { - -} - -void WebViewPageUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request) { - QUrl url = request->requestUrl(); - - QString path = url.path().mid(1); - QStringList parts = path.split("&"); - - QString server; - QString user; - QString password; - - for (QString part : parts) { - if (part.startsWith("server:")) { - server = part.mid(7); - } else if (part.startsWith("user:")) { - user = part.mid(5); - } else if (part.startsWith("password:")) { - password = part.mid(9); - } - } - - qCInfo(lcWizardWebiew()) << "Got user: " << user << ", server: " << server; - - emit urlCatched(user, password, server); -} - - -WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) { - -} - -QWebEnginePage * WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) { - ExternalWebEnginePage *view = new ExternalWebEnginePage(this->profile()); - return view; -} - -ExternalWebEnginePage::ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) { - -} - - -bool ExternalWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) -{ - QDesktopServices::openUrl(url); - return false; -} - -} - -#include "webview.moc" --- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.cpp 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:06:30.250590838 -0400 @@ -1,73 +0,0 @@ -#include "webviewpage.h" - -#include -#include -#include - -#include "owncloudwizard.h" -#include "creds/webflowcredentials.h" -#include "webview.h" -#include "account.h" - -namespace OCC { - -Q_LOGGING_CATEGORY(lcWizardWebiewPage, "gui.wizard.webviewpage", QtInfoMsg) - - -WebViewPage::WebViewPage(QWidget *parent) - : AbstractCredentialsWizardPage() -{ - _ocWizard = qobject_cast(parent); - - qCInfo(lcWizardWebiewPage()) << "Time for a webview!"; - _webView = new WebView(this); - - QVBoxLayout *layout = new QVBoxLayout(this); - layout->addWidget(_webView); - setLayout(layout); - - connect(_webView, &WebView::urlCatched, this, &WebViewPage::urlCatched); -} - -void WebViewPage::initializePage() { - QString url; - if (_ocWizard->registration()) { - url = "https://nextcloud.com/register"; - } else { - url = _ocWizard->ocUrl(); - url += "/index.php/login/flow"; - } - qCInfo(lcWizardWebiewPage()) << "Url to auth at: " << url; - _webView->setUrl(QUrl(url)); -} - -int WebViewPage::nextId() const { - return WizardCommon::Page_AdvancedSetup; -} - -bool WebViewPage::isComplete() const { - return false; -} - -AbstractCredentials* WebViewPage::getCredentials() const { - return new WebFlowCredentials(_user, _pass, _ocWizard->_clientSslCertificate, _ocWizard->_clientSslKey); -} - -void WebViewPage::setConnected() { - qCInfo(lcWizardWebiewPage()) << "YAY! we are connected!"; -} - -void WebViewPage::urlCatched(QString user, QString pass, QString host) { - qCInfo(lcWizardWebiewPage()) << "Got user: " << user << ", server: " << host; - - _user = user; - _pass = pass; - - AccountPtr account = _ocWizard->account(); - account->setUrl(host); - - qCInfo(lcWizardWebiewPage()) << "URL: " << field("OCUrl").toString(); - emit connectToOCUrl(host); -} - -} --- desktop-2.5.0-beta2/src/gui/wizard/webview.h 2018-08-24 12:54:42.000000000 +0000 +++ /dev/null 2018-10-03 06:11:27.640255322 +0000 @@ -1,42 +0,0 @@ -#ifndef WEBVIEW_H -#define WEBVIEW_H - -#include -#include - -#include "ui_webview.h" - -class QWebEngineView; -class QWebEngineProfile; -class QWebEnginePage; - -namespace OCC { - -class WebViewPageUrlRequestInterceptor; -class WebViewPageUrlSchemeHandler; -class WebEnginePage; - -class WebView : public QWidget -{ - Q_OBJECT -public: - WebView(QWidget *parent = 0); - void setUrl(const QUrl &url); - -signals: - void urlCatched(const QString user, const QString pass, const QString host); - -private: - Ui_WebView _ui; - - QWebEngineView *_webview; - QWebEngineProfile *_profile; - WebEnginePage *_page; - - WebViewPageUrlRequestInterceptor *_interceptor; - WebViewPageUrlSchemeHandler *_schemeHandler; -}; - -} - -#endif // WEBVIEW_H --- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.h 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:25:56.010611692 -0400 @@ -1,41 +0,0 @@ -#ifndef WEBVIEWPAGE_H -#define WEBVIEWPAGE_H - -#include "wizard/abstractcredswizardpage.h" - -namespace OCC { - -class AbstractCredentials; -class OwncloudWizard; -class WebView; - -class WebViewPage : public AbstractCredentialsWizardPage -{ - Q_OBJECT -public: - WebViewPage(QWidget *parent = 0); - - void initializePage() Q_DECL_OVERRIDE; - int nextId() const Q_DECL_OVERRIDE; - bool isComplete() const; - - AbstractCredentials* getCredentials() const; - void setConnected(); - -signals: - void connectToOCUrl(const QString&); - -private slots: - void urlCatched(QString user, QString pass, QString host); - -private: - OwncloudWizard *_ocWizard; - WebView *_webView; - - QString _user; - QString _pass; -}; - -} - -#endif // WEBVIEWPAGE_H --- desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-15 19:23:33.100609136 -0400 @@ -161,7 +161,7 @@ void OwncloudSetupPage::slotGotoProviderList() { _ocWizard->setRegistration(true); - _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow); + _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::Basic); _authTypeKnown = true; _checking = false; emit completeChanged(); @@ -278,8 +278,6 @@ return WizardCommon::Page_OAuthCreds; case DetermineAuthTypeJob::Shibboleth: return WizardCommon::Page_ShibbolethCreds; - case DetermineAuthTypeJob::WebViewFlow: - return WizardCommon::Page_WebView; } return WizardCommon::Page_HttpCreds; } --- desktop-2.5.0-beta1/src/gui/wizard/webview.ui 2018-08-02 16:32:56.000000000 -0400 +++ /dev/null 2018-08-15 19:24:43.320610392 -0400 @@ -1,80 +0,0 @@ - - - WebView - - - - 0 - 0 - 800 - 700 - - - - - 0 - 0 - - - - - 800 - 650 - - - - Form - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - - 16777215 - 5 - - - - QProgressBar::chunk { - background-color: rgba(0, 130, 201, 255); -} - - - 0 - - - false - - - - - - - 0 - - - - - - - - - - --- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-15 19:22:00.430607478 -0400 @@ -39,7 +39,6 @@ class OwncloudWizardResultPage; class AbstractCredentials; class AbstractCredentialsWizardPage; -class WebViewPage; /** * @brief The OwncloudWizard class @@ -106,7 +105,6 @@ OwncloudAdvancedSetupPage *_advancedSetupPage; OwncloudWizardResultPage *_resultPage; AbstractCredentialsWizardPage *_credentialsPage; - WebViewPage *_webViewPage; QStringList _setupLog; --- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-15 19:04:35.670588788 -0400 @@ -26,7 +26,6 @@ #endif #include "wizard/owncloudadvancedsetuppage.h" #include "wizard/owncloudwizardresultpage.h" -#include "wizard/webviewpage.h" #include "QProgressIndicator.h" @@ -51,7 +50,6 @@ , _advancedSetupPage(new OwncloudAdvancedSetupPage) , _resultPage(new OwncloudWizardResultPage) , _credentialsPage(0) - , _webViewPage(new WebViewPage(this)) , _setupLog() , _registration(false) { @@ -64,7 +62,6 @@ #endif setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage); setPage(WizardCommon::Page_Result, _resultPage); - setPage(WizardCommon::Page_WebView, _webViewPage); connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished); @@ -79,7 +76,6 @@ #ifndef NO_SHIBBOLETH connect(_shibbolethCredsPage, &OwncloudShibbolethCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl); #endif - connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl); connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders, this, &OwncloudWizard::createLocalAndRemoteFolders); connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration); @@ -168,10 +164,6 @@ break; #endif - case WizardCommon::Page_WebView: - _webViewPage->setConnected(); - break; - case WizardCommon::Page_AdvancedSetup: _advancedSetupPage->directoriesCreated(); break; @@ -195,8 +187,6 @@ #endif if (type == DetermineAuthTypeJob::OAuth) { _credentialsPage = _browserCredsPage; - } else if (type == DetermineAuthTypeJob::WebViewFlow) { - _credentialsPage = _webViewPage; } else { // try Basic auth even for "Unknown" _credentialsPage = _httpCredsPage; } --- desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400 +++ desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-15 20:59:59.390712646 -0400 @@ -4,7 +4,7 @@ set(synclib_NAME ${APPLICATION_EXECUTABLE}sync) -find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED) +find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED) if (Qt5Core_VERSION VERSION_LESS 5.9.0) message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.") endif()