diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/src/MIUTSET.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/src/MIUTSET.CPP Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,380 @@ +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "MIUTSET.H" +#include "MIUT_ERR.H" + + +GLREF_C TPtrC8 LimitStringSize(const TPtrC8& aString, TInt aMaxSize); +GLREF_C TPtrC16 LimitStringSize(const TPtrC16& aString, TInt aMaxSize); + + +EXPORT_C CImBaseEmailSettings::CImBaseEmailSettings() +/** +Allocates and creates a new CImBaseEmailSettings object initialised to +default values. + +@internalComponent +*/ + { + Reset(); + } + + +EXPORT_C CImBaseEmailSettings::~CImBaseEmailSettings() +/** +Destructor. + +@internalComponent +*/ + { + Reset(); + } + + +EXPORT_C void CImBaseEmailSettings::Reset() +/** +Resets the settings to their default values. + +@internalComponent +*/ + { + delete iServerAddress; + iServerAddress = NULL; + + + iFlags=0; + iPortNumber=0; + } + + +EXPORT_C const TPtrC CImBaseEmailSettings::ServerAddress() const +/** +Retrieves the configured IP address or host name of the email server. +The IP address or hostname is configured by calling SetServerAddressL(). + +If an instance of this class is of type CImPop3Settings or CImImap4Settings, +the address should be the incoming POP3 or IMAP4 email server. +If an instance of this class is of type CImSmtpSettings, the address should +be the outbound SMTP email server. + +The default setting is empty. + +@see CImPop3Settings +@see CImImap4Settings +@see CImSmtpSettings + +@return +Email server IP address if it is configured, or empty if not configured. +*/ + { + return iServerAddress ? TPtrC(*iServerAddress) : TPtrC(); + } + + +EXPORT_C TUint CImBaseEmailSettings::Port() const +/** +Retrieves the port number of an email server when establishing +a TCP connection. The port number is configured by calling +SetPort(). + +If an instance of this class is of type CImPop3Settings, +the default port number is 110. +If an instance of this class is of type CImImap4Settings, +the default port number is 143. +If an instance of this class is of type CImSmtpSettings, +the default port number is 25. + +@see CImPop3Settings +@see CImImap4Settings +@see CImSmtpSettings + +@return +Email server TCP port number. +*/ + { + return iPortNumber; + } + + +EXPORT_C void CImBaseEmailSettings::SetServerAddressL(const TDesC& aServerAddress) +/** +If an instance of this class is of type CImPop3Settings or CImImap4Settings, +the address should be the incoming POP3 or IMAP4 email server. +If an instance of this class is of type CImSmtpSettings, the address should +be the outbound SMTP email server. + +The default setting is empty. + +@see CImPop3Settings +@see CImImap4Settings +@see CImSmtpSettings + +@param aServerAddress +Email server IP address. +*/ + { + HBufC* newServerAddress = aServerAddress.AllocL(); + delete iServerAddress; + iServerAddress = newServerAddress; + } + + +EXPORT_C void CImBaseEmailSettings::SetPort(const TUint aPortNumber) +/** +Configures the port number of an email server when establishing +a TCP connection. + +If an instance of this class is of type CImPop3Settings, +the default port number is 110. +If an instance of this class is of type CImImap4Settings, +the default port number is 143. +If an instance of this class is of type CImSmtpSettings, +the default port number is 25. + +@see CImPop3Settings +@see CImImap4Settings +@see CImSmtpSettings + +@param aPortNumber +Email server TCP port number. +*/ + { + iPortNumber = aPortNumber; + } + + +EXPORT_C TBool CImBaseEmailSettings::SecureSockets() const +/** +Retrieves whether a secure TLS connection will be negotiated over an +unsecure TCP socket connection when a connection is being established. +This setting is configured by calling SetSecureSockets(). + +Refer to RFC 2595 - "Using TLS with IMAP, POP3 and ACAP" for information +on how a secure socket is established when retrieving email from a POP3 +or IMAP4 server. + +Refer to RFC 3207 - "SMTP Service Extension for Secure SMTP over Transport +Layer Security" for information on how a secure socket is established when +sending an email. + +@return +ETrue if a secure sockets is enabled. +*/ + { + if(iFlags & EBaseEmailSettingsSecureSockets) + { + return ETrue; + } + else + { + return EFalse; + } + } + + +EXPORT_C void CImBaseEmailSettings::SetSecureSockets(TBool aFlag) +/** +Sets whether a secure TLS connection will be negotiated over an +unsecure socket when a connection is being established. This setting +is configured by calling SetSecureSockets(). + +Refer to RFC 2595 - "Using TLS with IMAP, POP3 and ACAP" for information +on how a secure socket is established when retrieving email from a POP3 +or IMAP4 server. + +Refer to RFC 3207 - "SMTP Service Extension for Secure SMTP over Transport +Layer Security" for information on how a secure socket is established when +sending an email. + +Not all POP3, IMAP4, or SMTP servers support this protocol. + +@post +If aFlag is ETrue, secure TLS connection will be disabled if it had been +previously been enabled by calling SetSSLWrapper(). + +@param aFlag +ETrue if a secure socket session will be negotiated after establishing +a non-secure TCP connection with the POP3, IMAP4, or SMTP server. +*/ + { + iFlags = (iFlags & ~EBaseEmailSettingsSecureSockets) | (aFlag?EBaseEmailSettingsSecureSockets : EBaseEmailSettingsClearFlag); + + // Ensure that SSLWrapper AND SecureSockets are not BOTH set + if (aFlag && SSLWrapper()) + { + SetSSLWrapper(EFalse); + } + } + + +EXPORT_C TBool CImBaseEmailSettings::SSLWrapper() const +/** +Whether secure sockets will be used. + +Retrieves whether a secure TLS connection will be established +directly over a TLS/SSL socket when connecting to the email server. + +The well known port number for a secure TLS POP3 connection is 995. +The well known port number for a secure TLS IMAP4 connection is 993. +There is no well known port number for a secure SMTP TLS connection. +The TLS/SSL port number that the email server is listening on may not +necessarily be configured to the well known port number. +The port number upon which the connection is attempted is configured +by calling SetPort(). + +@return +ETrue if a secure TLS connection will be attempted when establishing +a connection. +*/ + { + if(iFlags & EBaseEmailSettingsSSLWrappedSockets) + { + return ETrue; + } + else + { + return EFalse; + } + } + + +EXPORT_C void CImBaseEmailSettings::SetSSLWrapper(TBool aFlag) +/** +Specifies whether a secure TLS connection will be established +directly over a TLS socket when connecting to the email server. + +The well known port number for a secure TLS POP3 connection is 995. +The well known port number for a secure TLS IMAP4 connection is 993. +There is no well known port number for a secure SMTP TLS connection. +The TLS/SSL port number that the email server is listening on may not +necessarily be configured to the well known port number. +The port number upon which the connection is attempted is configured +by calling SetPort(). + +@post +If aFlag is ETrue, secure socket negotiation over an unsecure connection +will be disabled if it had been previously enabled by calling +SetSecureSockets(). + +@param aFlag +If ETrue, a secure TLS connection will be established +when connecting to the email server. +*/ + { + iFlags = (iFlags & ~EBaseEmailSettingsSSLWrappedSockets) | (aFlag?EBaseEmailSettingsSSLWrappedSockets : EBaseEmailSettingsClearFlag); + + // Ensure that SSLWrapper AND SecureSockets are not BOTH set + if (aFlag && SecureSockets()) + { + SetSecureSockets(EFalse); + } + } + + +EXPORT_C CImBaseEmailSettings& CImBaseEmailSettings::CopyL(const CImBaseEmailSettings& aCImBaseEmailSettings) +/** +Copies the configuration settings from another service settings object +into this object. + +@param aCImBaseEmailSettings +Specifies the object to copy. + +@return +This object after copying. + +@internalComponent +*/ + { + Reset(); + iPortNumber = aCImBaseEmailSettings.iPortNumber; + iFlags = aCImBaseEmailSettings.iFlags; +#ifdef __SUPPORT_MESSAGING_API_V1 + iData = aCImBaseEmailSettings.iData; +#endif + iServerAddress = aCImBaseEmailSettings.ServerAddress().AllocL(); + return (*this); + } + + +EXPORT_C TBool CImBaseEmailSettings::operator==(const CImBaseEmailSettings& aCImBaseEmailSettings) const +/** +Equality operator. + +@param aCImBaseEmailSettings +Specifies the settings object to compare with. + +@return +ETrue if the settings are the same. + +@internalComponent +*/ + { + return ( + (Port() == aCImBaseEmailSettings.iPortNumber) && + (iFlags == aCImBaseEmailSettings.iFlags) && + !(ServerAddress().Compare(aCImBaseEmailSettings.ServerAddress()))); + } + +TUint32 CImBaseEmailSettings::SettingsFlags() const + { + return iFlags; + } + +void CImBaseEmailSettings::SetSettingsFlags(TUint32 aSetFlags) + { + iFlags = aSetFlags; + } + +/** +Sets flag to indicate bearer mobility will be supported by the service. +default 0 shall indicate that bearer mobility is not supported. + + +@param aFlag +Specifies the new value of the Flag to be set. + +@return +void + +@internalComponent +*/ +EXPORT_C void CImBaseEmailSettings::SetBearerMobility(TBool aFlag) + { + iFlags = (iFlags & ~EBaseEmailSettingsBearerMobFlag) | (aFlag?EBaseEmailSettingsBearerMobFlag : EBaseEmailSettingsClearFlag); + } + +/** +Indicates whether bearer mobility is supported by the service. + +@param +None + +@return +ETrue if bearer mobility is supported by the service, EFalse otherwise. + +@internalComponent +*/ +EXPORT_C TBool CImBaseEmailSettings::BearerMobility() const + { + if(iFlags & EBaseEmailSettingsBearerMobFlag) + { + return ETrue; + } + else + { + return EFalse; + } + }