summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Mollekopf <mollekopf@kolabsys.com>2012-11-21 14:20:11 (GMT)
committerChristian Mollekopf <mollekopf@kolabsys.com>2012-11-21 14:20:11 (GMT)
commit1ab5e38fbdfb5baa568f4879e7821c1484a7af38 (patch)
tree3334d11891ddf986694c8887fc5d790aec96c0a1
parent82812d7f4275fd105183def8d510bf3a2dc4fad3 (diff)
downloadkolab-utils-1ab5e38fbdfb5baa568f4879e7821c1484a7af38.tar.gz
Don't pass all options over the singleton. Use SSL with port 993 for imaps urls, otherwise tlsv1 on port 143.
-rw-r--r--fbdaemon/authenticationjob.cpp37
-rw-r--r--fbdaemon/authenticationjob.h15
-rw-r--r--fbdaemon/fbaggregatorjob.cpp10
-rw-r--r--fbdaemon/fbaggregatorjob.h2
-rw-r--r--fbdaemon/fbcoordinator.cpp32
-rw-r--r--fbdaemon/fbgeneratorjob.cpp6
-rw-r--r--fbdaemon/fbgeneratorjob.h2
-rw-r--r--fbdaemon/kolabjob.cpp13
-rw-r--r--fbdaemon/kolabjob.h7
-rw-r--r--fbdaemon/settings.cpp50
-rw-r--r--fbdaemon/settings.h8
-rw-r--r--fbdaemon/tests/fbaggregatortest.cpp7
-rw-r--r--fbdaemon/tests/fbgeneratortest.cpp4
-rw-r--r--lib/sessionsettings.h34
14 files changed, 154 insertions, 73 deletions
diff --git a/fbdaemon/authenticationjob.cpp b/fbdaemon/authenticationjob.cpp
index 1b9f9ba..7e906f7 100644
--- a/fbdaemon/authenticationjob.cpp
+++ b/fbdaemon/authenticationjob.cpp
@@ -21,19 +21,10 @@
#include <qsettings.h>
#include <kolab/errorhandler.h>
-AuthenticationJob::AuthenticationJob(const QString &userName, KIMAP::Session *session, QObject* parent)
+AuthenticationJob::AuthenticationJob(const SessionSettings &settings, KIMAP::Session *session, QObject* parent)
: KJob(parent),
- mUserName(userName),
- mSession(session),
- mDoProxyAuth(true)
-{
-
-}
-
-AuthenticationJob::AuthenticationJob(KIMAP::Session *session, QObject* parent)
-: KJob(parent),
- mSession(session),
- mDoProxyAuth(false)
+ mSessionSettings(settings),
+ mSession(session)
{
}
@@ -41,18 +32,20 @@ AuthenticationJob::AuthenticationJob(KIMAP::Session *session, QObject* parent)
void AuthenticationJob::start()
{
- Debug() << "logging in as " << mUserName << " using " << Settings::instance().getAuthorizationUser();
+ Debug() << "logging in as " << mSessionSettings.userName << " using " << mSessionSettings.authorizationName;
KIMAP::LoginJob *loginJob = new KIMAP::LoginJob( mSession );
- if (mDoProxyAuth) {
- loginJob->setUserName( mUserName );
- loginJob->setAuthorizationName(Settings::instance().getAuthorizationUser());
+ if (!mSessionSettings.authorizationName.isEmpty()) {
+ loginJob->setUserName(mSessionSettings.userName);
+ loginJob->setAuthorizationName(mSessionSettings.authorizationName);
} else {
- loginJob->setUserName( Settings::instance().getAuthorizationUser() );
+ loginJob->setUserName(mSessionSettings.userName);
}
loginJob->setPassword(Settings::instance().getPassword());
+
+ mRequestedMode = mSessionSettings.encryptionMode;
+ loginJob->setEncryptionMode( mRequestedMode );
- loginJob->setEncryptionMode( KIMAP::LoginJob::TlsV1 );
- loginJob->setAuthenticationMode( KIMAP::LoginJob::Plain );
+ loginJob->setAuthenticationMode(mSessionSettings.authenticationMode);
QObject::connect( loginJob, SIGNAL(result(KJob*)),
this, SLOT(onLoginDone(KJob*)) );
@@ -67,6 +60,12 @@ void AuthenticationJob::onLoginDone(KJob* job)
emitResult();
return;
}
+ if ((static_cast<KIMAP::LoginJob*>(job))->encryptionMode() != mRequestedMode) {
+ Warning() << "Failed to get requested encryption mode";
+ setError(KJob::UserDefinedError);
+ emitResult();
+ return;
+ }
Debug() << "authentication successful";
emitResult();
}
diff --git a/fbdaemon/authenticationjob.h b/fbdaemon/authenticationjob.h
index a33a16d..abd19f8 100644
--- a/fbdaemon/authenticationjob.h
+++ b/fbdaemon/authenticationjob.h
@@ -19,6 +19,8 @@
#define AUTHENTICATIONJOB_H
#include <kjob.h>
#include <kimap/session.h>
+#include <kimap/loginjob.h>
+#include <sessionsettings.h>
/**
* Load credentials from local file
@@ -30,22 +32,15 @@ class AuthenticationJob: public KJob
{
Q_OBJECT
public:
- /**
- * Proxyauthentication with @param userName
- */
- explicit AuthenticationJob(const QString &userName, KIMAP::Session *, QObject* parent = 0);
- /**
- * Login as admin
- */
- explicit AuthenticationJob(KIMAP::Session *, QObject* parent = 0);
+ explicit AuthenticationJob(const SessionSettings &settings, KIMAP::Session *, QObject* parent = 0);
virtual void start();
private slots:
void onLoginDone(KJob* job);
private:
KIMAP::Session *mSession;
- QString mUserName;
- bool mDoProxyAuth;
+ SessionSettings mSessionSettings;
+ KIMAP::LoginJob::EncryptionMode mRequestedMode;
};
#endif // AUTHENTICATIONJOB_H
diff --git a/fbdaemon/fbaggregatorjob.cpp b/fbdaemon/fbaggregatorjob.cpp
index d9c306a..b91984b 100644
--- a/fbdaemon/fbaggregatorjob.cpp
+++ b/fbdaemon/fbaggregatorjob.cpp
@@ -28,8 +28,8 @@
#include <kolab/errorhandler.h>
#include <kolab/commonconversion.h>
-FBAggregatorJob::FBAggregatorJob(const QString& hostName, qint16 port, const QString& username, QObject* parent)
-: KolabJob(hostName, port, username, parent)
+FBAggregatorJob::FBAggregatorJob(const SessionSettings& settings, QObject* parent)
+: KolabJob(settings, parent)
{
}
@@ -41,7 +41,7 @@ QStringList FBAggregatorJob::requiredFolders()
void FBAggregatorJob::startWork(ProbeKolabServerJob* capabilitiesJob)
{
- Debug() << "starting aggregator job for " << mUserName;
+ Debug() << "starting aggregator job for " << mSessionSettings.userName;
if (capabilitiesJob->kolabFolders().values(KOLAB_FOLDER_TYPE_FREEBUSY).isEmpty()) {
kWarning() << "no freebusy folder found";
setError(KJob::UserDefinedError);
@@ -86,12 +86,12 @@ void FBAggregatorJob::onFetchFBDone(KJob *job)
return;
}
std::string organizerName;
- std::string organizerEmail(Kolab::Conversion::toStdString(mUserName));
+ std::string organizerEmail(Kolab::Conversion::toStdString(mSessionSettings.userName));
const Kolab::Freebusy aggregatedFb = Kolab::FreebusyUtils::aggregateFreeBusy(fbList, organizerEmail, organizerName, true);
// kDebug() << QString::fromStdString(Kolab::FreebusyUtils::toIFB(aggregatedFb));
- QFile file(QDir(Settings::instance().getAggregatedICalOutputDirectory()).absoluteFilePath(QString::fromLatin1("%1.ifb").arg(mUserName)/*.arg(KDateTime::currentUtcDateTime().toString(KDateTime::ISODate))*/));
+ QFile file(QDir(Settings::instance().getAggregatedICalOutputDirectory()).absoluteFilePath(QString::fromLatin1("%1.ifb").arg(mSessionSettings.userName)/*.arg(KDateTime::currentUtcDateTime().toString(KDateTime::ISODate))*/));
if (!file.open(QIODevice::WriteOnly|QIODevice::Text)) {
Warning() << "failed to create aggregated f/b file";
logout();
diff --git a/fbdaemon/fbaggregatorjob.h b/fbdaemon/fbaggregatorjob.h
index f54be30..0b4c270 100644
--- a/fbdaemon/fbaggregatorjob.h
+++ b/fbdaemon/fbaggregatorjob.h
@@ -29,7 +29,7 @@ class FBAggregatorJob: public KolabJob
{
Q_OBJECT
public:
- explicit FBAggregatorJob(const QString &hostName, qint16 port, const QString &username, QObject* parent = 0);
+ explicit FBAggregatorJob(const SessionSettings &settings, QObject* parent = 0);
QString generatedFile() const;
protected:
diff --git a/fbdaemon/fbcoordinator.cpp b/fbdaemon/fbcoordinator.cpp
index eaa38d7..2d39574 100644
--- a/fbdaemon/fbcoordinator.cpp
+++ b/fbdaemon/fbcoordinator.cpp
@@ -51,16 +51,20 @@ void FBCoordinator::generateForAllUsers(const QString &domain)
}
mTimer.start();
mTimerIsRunning = true;
- qint16 port;
- const QString server = Settings::instance().getServerUri(port);
+ SessionSettings settings;
+ settings.authenticationMode = Settings::instance().getAuthenticationMode();
+ settings.encryptionMode = Settings::instance().getEncryptionMode();
+ settings.userName = Settings::instance().getAuthorizationUser(); //Login as admin
+ settings.host = Settings::instance().getServerUri(settings.port);
SequentialCompositeJob *sequentialJob = new SequentialCompositeJob(true, this);
//TODO test if that still works
- KIMAP::Session *mSession = new KIMAP::Session( server, port, this );
+ KIMAP::Session *mSession = new KIMAP::Session( settings.host, settings.port, this );
mSession->setUiProxy( KIMAP::SessionUiProxy::Ptr(new UiProxy()) );
// QObject::connect( mSession, SIGNAL(stateChanged(KIMAP::Session::State,KIMAP::Session::State)),
// this, SLOT(onSessionStateChanged(KIMAP::Session::State,KIMAP::Session::State)) );
+
- AuthenticationJob *authJob = new AuthenticationJob(mSession, this);
+ AuthenticationJob *authJob = new AuthenticationJob(settings, mSession, this);
sequentialJob->addSubjob(authJob);
GetUserListJob *getUsersJob = new GetUserListJob(mSession, this);
@@ -112,12 +116,12 @@ void FBCoordinator::generateAllForUser(const QString& user)
if (!mTimerIsRunning) {
mTimer.start();
}
- qint16 port;
- const QString server = Settings::instance().getServerUri(port);
Debug() << "Starting generation for user: " << user;
SequentialCompositeJob *userJob = new SequentialCompositeJob(true, this);
- userJob->addSubjob(new FBGeneratorJob(server, port, user, userJob));
- userJob->addSubjob(new FBAggregatorJob(server, port, user, userJob));
+ SessionSettings settings = Settings::instance().getSessionSettings();
+ settings.userName = user;
+ userJob->addSubjob(new FBGeneratorJob(settings, userJob));
+ userJob->addSubjob(new FBAggregatorJob(settings, userJob));
connect(userJob, SIGNAL(result(KJob*)), this, SLOT(onGeneratorDone(KJob*)));
mUserTimer.start();
userJob->start();
@@ -127,9 +131,9 @@ void FBCoordinator::generateForUser(const QString& user)
{
Debug() << "Starting generation for user: " << user;
mTimer.start();
- qint16 port;
- const QString server = Settings::instance().getServerUri(port);
- FBGeneratorJob *generator = new FBGeneratorJob(server, port, user, this);
+ SessionSettings settings = Settings::instance().getSessionSettings();
+ settings.userName = user;
+ FBGeneratorJob *generator = new FBGeneratorJob(settings, this);
connect(generator, SIGNAL(result(KJob*)), this, SLOT(onGeneratorDone(KJob*)));
generator->start();
}
@@ -138,9 +142,9 @@ void FBCoordinator::aggregateForUser(const QString& user)
{
Debug() << "Starting aggregation for user";
mTimer.start();
- qint16 port;
- const QString server = Settings::instance().getServerUri(port);
- FBAggregatorJob *generator = new FBAggregatorJob(server, port, user, this);
+ SessionSettings settings = Settings::instance().getSessionSettings();
+ settings.userName = user;
+ FBAggregatorJob *generator = new FBAggregatorJob(settings, this);
connect(generator, SIGNAL(result(KJob*)), this, SLOT(onGeneratorDone(KJob*)));
generator->start();
}
diff --git a/fbdaemon/fbgeneratorjob.cpp b/fbdaemon/fbgeneratorjob.cpp
index 02e43c0..d55deab 100644
--- a/fbdaemon/fbgeneratorjob.cpp
+++ b/fbdaemon/fbgeneratorjob.cpp
@@ -36,8 +36,8 @@
#include <kimap/expungejob.h>
-FBGeneratorJob::FBGeneratorJob(const QString& hostName, qint16 port, const QString& username, QObject* parent)
-: KolabJob(hostName, port, username, parent),
+FBGeneratorJob::FBGeneratorJob(const SessionSettings &settings, QObject* parent)
+: KolabJob(settings, parent),
mOldImapUid(-1)
{
@@ -159,7 +159,7 @@ void FBGeneratorJob::onGenerateFBDone(KJob *job)
logout();
return;
}
- const Kolab::ContactReference org(Kolab::ContactReference::EmailReference, Kolab::Conversion::toStdString(mUserName));
+ const Kolab::ContactReference org(Kolab::ContactReference::EmailReference, Kolab::Conversion::toStdString(mSessionSettings.userName));
fb.setOrganizer(org);
if (!fb.organizer().isValid()) {
// fb.setOrganizer(/*mUserName, mUserName+QLatin1Char('@')+mHostName.remove("imap.")*/);
diff --git a/fbdaemon/fbgeneratorjob.h b/fbdaemon/fbgeneratorjob.h
index 0021e33..bdfc5a6 100644
--- a/fbdaemon/fbgeneratorjob.h
+++ b/fbdaemon/fbgeneratorjob.h
@@ -27,7 +27,7 @@ class FBGeneratorJob: public KolabJob
{
Q_OBJECT
public:
- explicit FBGeneratorJob(const QString &hostName, qint16 port, const QString &username, QObject* parent = 0);
+ explicit FBGeneratorJob(const SessionSettings &settings, QObject* parent = 0);
private Q_SLOTS:
void onFetchFBDone(KJob *job);
void onGenerateFBDone(KJob*);
diff --git a/fbdaemon/kolabjob.cpp b/fbdaemon/kolabjob.cpp
index 39ea667..23f632b 100644
--- a/fbdaemon/kolabjob.cpp
+++ b/fbdaemon/kolabjob.cpp
@@ -24,12 +24,11 @@
#include "uiproxy.h"
#include "authenticationjob.h"
#include "jobs/probekolabserverjob.h"
+#include <sessionsettings.h>
-KolabJob::KolabJob(const QString& hostName, qint16 port, const QString& username, QObject* parent)
+KolabJob::KolabJob(const SessionSettings &sessionSettings, QObject* parent)
: KJob(parent),
- mHostName(hostName),
- mPort(port),
- mUserName(username),
+ mSessionSettings(sessionSettings),
mSession(0)
{
}
@@ -45,14 +44,14 @@ void KolabJob::onSessionStateChanged(KIMAP::Session::State newState, KIMAP::Sess
void KolabJob::start()
{
Debug() << "===========================================================";
- Debug() << "starting kolab job: " << mUserName << " on " << mHostName;
+ Debug() << "starting kolab job: " << mSessionSettings.userName << " on " << mSessionSettings.host << ":" << mSessionSettings.port;
//Create the session in the same batch as the LoginJob, if we enter the eventloop in between the session might break
- mSession = new KIMAP::Session( mHostName, mPort, this );
+ mSession = new KIMAP::Session( mSessionSettings.host, mSessionSettings.port, this );
mSession->setUiProxy( KIMAP::SessionUiProxy::Ptr(new UiProxy()) );
QObject::connect( mSession, SIGNAL(stateChanged(KIMAP::Session::State,KIMAP::Session::State)),
this, SLOT(onSessionStateChanged(KIMAP::Session::State,KIMAP::Session::State)) );
- AuthenticationJob *job = new AuthenticationJob(mUserName, mSession, this);
+ AuthenticationJob *job = new AuthenticationJob(mSessionSettings, mSession, this);
QObject::connect( job, SIGNAL(result(KJob*)),
this, SLOT(onAuthDone(KJob*)) );
job->start();
diff --git a/fbdaemon/kolabjob.h b/fbdaemon/kolabjob.h
index 4dc6cd8..8a1749e 100644
--- a/fbdaemon/kolabjob.h
+++ b/fbdaemon/kolabjob.h
@@ -19,6 +19,7 @@
#define KOLABJOB_H
#include <kimap/session.h>
#include <QStringList>
+#include <sessionsettings.h>
#define X_ORIGIN_HEADER "X-Freebusy-Origin"
@@ -27,7 +28,7 @@ class KolabJob: public KJob
{
Q_OBJECT
public:
- explicit KolabJob(const QString &hostName, qint16 port, const QString &username, QObject* parent = 0);
+ explicit KolabJob(const SessionSettings &settings, QObject* parent = 0);
virtual void start();
private Q_SLOTS:
@@ -40,9 +41,7 @@ protected:
virtual QStringList requiredFolders();
virtual void startWork(ProbeKolabServerJob *job) = 0;
void logout();
- QString mHostName;
- qint16 mPort;
- QString mUserName;
+ SessionSettings mSessionSettings;
QString mFreebusyFolder;
diff --git a/fbdaemon/settings.cpp b/fbdaemon/settings.cpp
index c48aef5..8975246 100644
--- a/fbdaemon/settings.cpp
+++ b/fbdaemon/settings.cpp
@@ -45,7 +45,8 @@
Settings::Settings()
: mTimeframe(-1),
- mThreshold(-1)
+ mThreshold(-1),
+ mPort(-1)
{
}
@@ -74,26 +75,53 @@ void Settings::setServerUri(const QString& server, qint16 port)
mPort = port;
}
-
-QString Settings::getServerUri(qint16 &port) const
+QString Settings::getServerUri() const
{
if (!mServerUri.isEmpty()) {
- port = mPort;
return mServerUri;
}
- QString serverUri = getValue("uri", "localhost").toString();
+ return getValue("uri", "localhost").toString();
+}
+
+bool Settings::usesImplicitSSL() const
+{
+ return getServerUri().startsWith("imaps:");
+}
+
+QString Settings::getServerUri(qint16 &port) const
+{
+ QString serverUri = getServerUri();
if (serverUri.contains(QLatin1String("://"))) {
serverUri.remove(0, serverUri.indexOf(QLatin1String("://"))+3);
}
if (serverUri.contains(":")) {
port = serverUri.section(":", 1, 1).toInt();
serverUri.truncate(serverUri.indexOf(":"));
+ } else if (mPort >= 0) {
+ port = mPort;
} else {
- port = 993;
+ if (usesImplicitSSL()) {
+ port = 993;
+ } else {
+ port = 143;
+ }
}
return serverUri;
}
+KIMAP::LoginJob::EncryptionMode Settings::getEncryptionMode() const
+{
+ if (usesImplicitSSL()) {
+ return KIMAP::LoginJob::AnySslVersion;
+ }
+ return KIMAP::LoginJob::TlsV1;
+}
+
+KIMAP::LoginJob::AuthenticationMode Settings::getAuthenticationMode() const
+{
+ return KIMAP::LoginJob::Plain;
+}
+
void Settings::setAuthorizationUser(const QString &user)
{
mAuthorizationUser = user;
@@ -112,6 +140,16 @@ void Settings::setPassword(const QString &password)
mPassword = password;
}
+SessionSettings Settings::getSessionSettings() const
+{
+ SessionSettings settings;
+ settings.authenticationMode = getAuthenticationMode();
+ settings.encryptionMode = getEncryptionMode();
+ settings.authorizationName = getAuthorizationUser();
+ settings.host = getServerUri(settings.port);
+ return settings;
+}
+
QString Settings::getPassword() const
{
diff --git a/fbdaemon/settings.h b/fbdaemon/settings.h
index b816075..383113f 100644
--- a/fbdaemon/settings.h
+++ b/fbdaemon/settings.h
@@ -19,6 +19,8 @@
#define SETTINGS_H
#include <QString>
#include <QVariant>
+#include <kimap/loginjob.h>
+#include <sessionsettings.h>
class Settings
{
@@ -31,8 +33,12 @@ public:
void setFile(const QString &file) {mFile = file;};
// QString file() {return mFile;};
+ SessionSettings getSessionSettings() const;
+
void setServerUri(const QString &server, qint16 port);
QString getServerUri(qint16 &port) const;
+ KIMAP::LoginJob::EncryptionMode getEncryptionMode() const;
+ KIMAP::LoginJob::AuthenticationMode getAuthenticationMode() const;
void setAuthorizationUser(const QString &);
QString getAuthorizationUser() const;
@@ -51,6 +57,8 @@ public:
QString getAggregatedICalOutputDirectory() const;
private:
+ QString getServerUri() const;
+ bool usesImplicitSSL() const;
QVariant getValue(const QString &, const QVariant &) const;
Settings();
Settings(const Settings &);
diff --git a/fbdaemon/tests/fbaggregatortest.cpp b/fbdaemon/tests/fbaggregatortest.cpp
index 56a66e1..783b10a 100644
--- a/fbdaemon/tests/fbaggregatortest.cpp
+++ b/fbdaemon/tests/fbaggregatortest.cpp
@@ -77,7 +77,8 @@ private:
KolabAccount *account = new KolabAccount(&obj);
account->setHost(targethost, port);
account->setCredentials(user, adminpw, admin);
- account->init();
+ account->setEncryptionMode(KIMAP::LoginJob::AnySslVersion);
+ QVERIFY(account->init());
account->cleanAccount();
createFolders(account, folders);
@@ -91,9 +92,11 @@ private:
Settings::instance().setThreshold(10);
Settings::instance().setTimeframe(60);
Settings::instance().setAggregatedICalOutputDirectory(QDir::tempPath());
+ SessionSettings sessionSettings = Settings::instance().getSessionSettings();
+ sessionSettings.userName = user;
QObject obj;
- FBAggregatorJob *job = new FBAggregatorJob(targethost, port, user, &obj);
+ FBAggregatorJob *job = new FBAggregatorJob(sessionSettings, &obj);
job->exec();
generatedFile = job->generatedFile();
}
diff --git a/fbdaemon/tests/fbgeneratortest.cpp b/fbdaemon/tests/fbgeneratortest.cpp
index 4064b13..db03666 100644
--- a/fbdaemon/tests/fbgeneratortest.cpp
+++ b/fbdaemon/tests/fbgeneratortest.cpp
@@ -82,9 +82,11 @@ private:
Settings::instance().setThreshold(10);
Settings::instance().setTimeframe(60);
Settings::instance().setAggregatedICalOutputDirectory(QDir::tempPath());
+ SessionSettings sessionSettings = Settings::instance().getSessionSettings();
+ sessionSettings.userName = user;
QObject obj;
- FBGeneratorJob *job = new FBGeneratorJob(targethost, port, user, &obj);
+ FBGeneratorJob *job = new FBGeneratorJob(sessionSettings, &obj);
job->exec();
}
diff --git a/lib/sessionsettings.h b/lib/sessionsettings.h
new file mode 100644
index 0000000..86fdda3
--- /dev/null
+++ b/lib/sessionsettings.h
@@ -0,0 +1,34 @@
+
+/*
+ * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SESSIONSETTINGS_H
+#define SESSIONSETTINGS_H
+#include <QString>
+#include <kimap/loginjob.h>
+
+struct SessionSettings
+{
+ QString host;
+ qint16 port;
+ KIMAP::LoginJob::EncryptionMode encryptionMode;
+ KIMAP::LoginJob::AuthenticationMode authenticationMode;
+ QString userName;
+ QString authorizationName;
+};
+
+#endif // OBJECT_H