diff -r b3cee849fa46 -r fad26422216a creator/src/creator_connectionmethod.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/src/creator_connectionmethod.cpp Wed Sep 01 12:30:35 2010 +0100 @@ -0,0 +1,948 @@ +/* +* Copyright (c) 2008 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 "creator_connectionmethod.h" +#include "creator_traces.h" + +using namespace CMManager; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include +#include +#include +#include +#include +#include +#include + +//#include //For WEP setting +//#include + +static const TInt KConnectionSettingssFieldLength = 128; + +_LIT(KCreatorConnectionSettingssPrefixName, "CR_"); + +//---------------------------------------------------------------------------- + +CConnectionSettingsParameters::CConnectionSettingsParameters() + { + LOGSTRING("Creator: CConnectionSettingsParameters::CConnectionSettingsParameters"); + + iConnectionName = HBufC::New(KConnectionSettingssFieldLength); + iStartPage = HBufC::New(KConnectionSettingssFieldLength); + iLoginName = HBufC::New(KConnectionSettingssFieldLength); + iLoginPass = HBufC::New(KConnectionSettingssFieldLength); + iIPAddr = HBufC::New(KConnectionSettingssFieldLength); + iIP4NameServer1 = HBufC::New(KConnectionSettingssFieldLength); + iIP4NameServer2 = HBufC::New(KConnectionSettingssFieldLength); + iDefaultTelNumber = HBufC::New(KConnectionSettingssFieldLength); + iProxyServerAddress = HBufC::New(KConnectionSettingssFieldLength); + iSubnetMask = HBufC::New(KConnectionSettingssFieldLength); + iGatewayAddress = HBufC::New(KConnectionSettingssFieldLength); + iWLANName = HBufC::New(KConnectionSettingssFieldLength); + iWlanIpAddr = HBufC::New(KConnectionSettingssFieldLength); + iIP6NameServer1 = HBufC::New(KConnectionSettingssFieldLength); + iIP6NameServer2 = HBufC::New(KConnectionSettingssFieldLength); + } + +CConnectionSettingsParameters::~CConnectionSettingsParameters() + { + LOGSTRING("Creator: CConnectionSettingssParameters::~CConnectionSettingssParameters"); + + delete iProxyServerAddress; + delete iDefaultTelNumber; + delete iIP4NameServer2; + delete iIP4NameServer1; + delete iIPAddr; + delete iLoginPass; + delete iLoginName; + delete iStartPage; + delete iConnectionName; + delete iSubnetMask; + delete iGatewayAddress; + delete iWLANName; + delete iWlanIpAddr; + delete iIP6NameServer1; + delete iIP6NameServer2; + } + +//---------------------------------------------------------------------------- + +CCreatorConnectionSettings* CCreatorConnectionSettings::NewL(CCreatorEngine* aEngine) + { + CCreatorConnectionSettings* self = CCreatorConnectionSettings::NewLC(aEngine); + CleanupStack::Pop(self); + return self; + } + +CCreatorConnectionSettings* CCreatorConnectionSettings::NewLC(CCreatorEngine* aEngine) + { + CCreatorConnectionSettings* self = new (ELeave) CCreatorConnectionSettings; + CleanupStack::PushL(self); + self->ConstructL(aEngine); + return self; + } + +CCreatorConnectionSettings::CCreatorConnectionSettings() + { + } + +void CCreatorConnectionSettings::ConstructL(CCreatorEngine* aEngine) + { + LOGSTRING("Creator: CCreatorConnectionSettings::ConstructL"); + + iEngine = aEngine; + + iCmManagerExt.CreateTablesAndOpenL(); + } + +CCreatorConnectionSettings::~CCreatorConnectionSettings() + { + LOGSTRING("Creator: CCreatorConnectionSettings::~CCreatorConnectionSettings"); + + if ( iEngine && iEntryIds.Count() ) + { + TRAP_IGNORE( iEngine->WriteEntryIdsToStoreL( iEntryIds, KUidDictionaryUidIAP ) ); + } + iEntryIds.Reset(); + iEntryIds.Close(); + + if (iParameters) + { + delete iParameters; + } + + iCmManagerExt.Close(); + } + + +//---------------------------------------------------------------------------- + +TBool CCreatorConnectionSettings::AskDataFromUserL(TInt aCommand, TInt& aNumberOfEntries) + { + LOGSTRING("Creator: CCreatorConnectionSettings::AskDataFromUserL"); + + if( aCommand == ECmdDeleteIAPs ) + { + return iEngine->YesNoQueryDialogL(_L("Delete all Connection Methods?") ); + } + else if( aCommand == ECmdDeleteCreatorIAPs ) + { + return iEngine->YesNoQueryDialogL(_L("Delete all Connection Methods created with Creator?") ); + } + else + { + return iEngine->EntriesQueryDialogL(aNumberOfEntries, _L("How many entries to create?")); + } + } + + +//---------------------------------------------------------------------------- + +TInt CCreatorConnectionSettings::CreateConnectionSettingsEntryL(CCreatorModuleBaseParameters *aParameters) + { + LOGSTRING("Creator: CCreatorConnectionSettings::CreateConnectionSettingsEntryL"); + + CConnectionSettingsParameters* parameters = (CConnectionSettingsParameters*) aParameters; + + // clear any existing parameter definations + delete iParameters; + iParameters = NULL; + + // random data needed if no predefined data available + if (!parameters) + { + iParameters = new (ELeave) CConnectionSettingsParameters(); + parameters = iParameters; + SetRandomParametersL(*parameters); + } + + if( parameters->iBearerType == KRandomBearerType ) + { + SetRandomBearerTypeL(*parameters); + } + + TInt err = KErrNone; + + // create unique name for each network destination + RCmDestinationExt dest; + TInt destinationError = KErrNone; + TInt count = 0; + TBuf name; + name.Copy(parameters->iConnectionName->Des()); + do + { + TRAP(destinationError, dest = iCmManagerExt.CreateDestinationL(name)); + if (destinationError == KErrAlreadyExists) + { + name.Copy(parameters->iConnectionName->Des()); + count++; + name.AppendFormat(_L(" (%d)"), count); + } + else if (destinationError != KErrNone) + { + User::Leave(destinationError); + } + } + while (destinationError == KErrAlreadyExists); + parameters->iConnectionName->Des().Copy(name); + + CleanupClosePushL(dest); + dest.UpdateL(); + + RCmConnectionMethodExt conMethod = dest.CreateConnectionMethodL( parameters->iBearerType);//KUidPacketDataBearerType + CleanupClosePushL( conMethod ); + + if(parameters->iBearerType == KUidWlanBearerType) + { + //IP net mask of interface + conMethod.SetStringAttributeL( EWlanIpNetMask, parameters->iSubnetMask->Des() ); + + //IP address of EPOC. + conMethod.SetStringAttributeL( EWlanIpAddr, parameters->iWlanIpAddr->Des() ); + // + //following gateway ID:s is not workin, + //logically ID would be EWlanIpGateway because EWlanIpNetMask + //is going to net mask, which is just before gateway in ui + //---> + conMethod.SetStringAttributeL( EWlanIpGateway, parameters->iGatewayAddress->Des() ); + //conMethod.SetStringAttributeL( EApIspIPGateway, parameters->iGatewayAddress->Des() ); + conMethod.SetStringAttributeL( ECmWapIPGatewayAddress, parameters->iGatewayAddress->Des() ); + conMethod.SetStringAttributeL( ECmIPGateway, parameters->iGatewayAddress->Des() ); + //<--- + + //IP Address of primary and secondary name server (IP v4). + conMethod.SetStringAttributeL( EWlanIpNameServer1, parameters->iIP4NameServer1->Des() ); + conMethod.SetStringAttributeL( EWlanIpNameServer2, parameters->iIP4NameServer2->Des() ); + //The SSID of this WLAN connection. + conMethod.SetStringAttributeL( EWlanSSID, parameters->iWLANName->Des() ); + + //IP6 address of primary and secondary name servers + conMethod.SetStringAttributeL( EWlanIp6NameServer1, parameters->iIP6NameServer1->Des() ); + conMethod.SetStringAttributeL( EWlanIp6NameServer2, parameters->iIP6NameServer2->Des() ); + + // + //Setting secure mode settings + // + + //Network status (default: EWlanSecModeOpen) // EWlanAuthenticationMode use instead? + conMethod.SetIntAttributeL( EWlanSecurityMode, parameters->iWLanSecMode ); + //WLAN Network mode + conMethod.SetIntAttributeL( EWlanConnectionMode, parameters->iWlanNetMode ); + + + if(parameters->iWLanSecMode == EWlanSecModeOpen) + {}//Nothing to set when mode is open + else if(parameters->iWLanSecMode == EWlanSecModeWep) + { + //See WEPSecuritySettingsUI.h + + + ///CWEPSecuritySettings + // conMethod.SetIntAttributeL( EWlanSecurityMode, parameters->iWLanSecMode ); + } + else if(parameters->iWLanSecMode == EWlanSecMode802_1x) + { + } + else if(parameters->iWLanSecMode == EWlanSecModeWpa) + { + } + else if(parameters->iWLanSecMode == EWlanSecModeWpa2) + { + } + + //WLAN security setting + //conMethod.SetStringAttributeL( EWlanAuthenticationMode, parameters->iIP6NameServer2->Des() ); + //Utilise this method + //conMethod.SetStringAttributeL( EWlanSecurityMode, parameters->iWLanSecMode ); + } + //Not known special attributes for packet data + else if(parameters->iBearerType == KUidPacketDataBearerType) + { + + //Access point name. + conMethod.SetStringAttributeL( EPacketDataAPName, parameters->iConnectionName->Des() );//crash + + //Authentication user name + conMethod.SetStringAttributeL( EPacketDataIFAuthName, parameters->iLoginName->Des() ); + ///TProtocolType a; + //EPdpTypeIPv4 or EPdpTypeIPv6 + conMethod.SetIntAttributeL( EPacketDataPDPType, parameters->iProtocolType ); + + //IP6 address of primary and secondary name servers + conMethod.SetStringAttributeL( EPacketDataIPIP6NameServer1, parameters->iIP6NameServer1->Des() ); + conMethod.SetStringAttributeL( EPacketDataIPIP6NameServer2, parameters->iIP6NameServer2->Des() ); + //IP address of primary name server + conMethod.SetStringAttributeL( EPacketDataIPNameServer1, parameters->iIP4NameServer1->Des() ); + //IP address of secondary name server + conMethod.SetStringAttributeL( EPacketDataIPNameServer2, parameters->iIP4NameServer2->Des() ); + + //Also existing but UI not showing them: EPacketDataHeaderCompression, EPacketDataDisablePlainTextAuth + //EPacketDataIFAuthPass, EDialIFAuthPass, EPacketDataIFPromptForAuth, EPacketDataIPAddr + } + else if(parameters->iBearerType == KUidCSDBearerType || parameters->iBearerType == KUidHSCSDBearerType) + { + //Authentication user name + conMethod.SetStringAttributeL( EDialIFAuthName, parameters->iLoginName->Des() ); + //Dial-up number + conMethod.SetStringAttributeL( EDialDefaultTelNum, parameters->iDefaultTelNumber->Des() ); + //Call type + conMethod.SetIntAttributeL( EDialCallType , parameters->iBearerCallTypeIsdn ); + //Maximum speed + conMethod.SetIntAttributeL( EDialMaxConnSpeed, parameters->iBearerSpeed ); + //Prompt user for username and password? (Only for dial out) + conMethod.SetBoolAttributeL( EDialPromptForLogin, parameters->iPromptPassword ); + //IP6 address of primary and secondary name servers + conMethod.SetStringAttributeL( EDialIP6NameServer1, parameters->iIP6NameServer1->Des() ); + conMethod.SetStringAttributeL( EDialIP6NameServer2, parameters->iIP6NameServer2->Des() ); + //Disable plaintext authentication + conMethod.SetBoolAttributeL( EDialDisablePlainTextAuth, parameters->iDisableTextAuth ); + //IP address of primary name server + conMethod.SetStringAttributeL( EDialIPNameServer1, parameters->iIP4NameServer1->Des() ); + //IP address of secondary name server + conMethod.SetStringAttributeL( EDialIPNameServer2, parameters->iIP4NameServer2->Des() ); + + //Also existing EDialEnableIPHeaderComp; EDialIFPromptForAuth;EDialIPAddress parameters + + } + else if(parameters->iBearerType == KUidLanBearerType) + { + + conMethod.SetStringAttributeL( ELanBaseIpNetMask, parameters->iSubnetMask->Des() ); + conMethod.SetStringAttributeL( ELanBaseIpGateway, parameters->iGatewayAddress->Des()); + conMethod.SetStringAttributeL( ELanBaseIpAddr, parameters->iIPAddr->Des() ); + conMethod.SetStringAttributeL( ELanBaseIpNameServer1, parameters->iIP4NameServer1->Des() ); + conMethod.SetStringAttributeL( ELanBaseIpNameServer2, parameters->iIP4NameServer2->Des() ); + conMethod.SetStringAttributeL( ELanBaseIp6NameServer1,parameters->iIP6NameServer1->Des() ); + conMethod.SetStringAttributeL( ELanBaseIp6NameServer2,parameters->iIP6NameServer2->Des() ); + + } + else //KUidEmbeddedDestination and KPluginVPNBearerTypeUid + { + //NOTE: NOT Tested, because no supporting Emulator for them + + //Authentication user name + conMethod.SetStringAttributeL( ECmIFAuthName, parameters->iLoginName->Des() ); + //IP6 address of primary and secondary name servers + conMethod.SetStringAttributeL( ECmIP6NameServer1, parameters->iIP6NameServer1->Des() ); + conMethod.SetStringAttributeL( ECmIP6NameServer2, parameters->iIP6NameServer2->Des() ); + //Disable plaintext authentication + conMethod.SetBoolAttributeL( ECmDisablePlainTextAuth, parameters->iDisableTextAuth ); + //Prompt user for authentication + conMethod.SetBoolAttributeL( ECmIFPromptForAuth, parameters->iPromptPassword ); + //Authentication password + conMethod.SetStringAttributeL( ECmIFAuthPass, parameters->iLoginPass->Des() ); + } + + // + //Adding common attributes, all not neccessary used with all bearer types, but should not cause any problems eather + // + + //CM Name (Connection Method, formelly known as Access Point) + conMethod.SetStringAttributeL( ECmName, parameters->iConnectionName->Des() ); + // Start page of CM + conMethod.SetStringAttributeL( ECmStartPage, parameters->iStartPage->Des() ); + // Enable Proxy + conMethod.SetBoolAttributeL( ECmProxyUsageEnabled, parameters->iUseProxy ); + // Server Name + conMethod.SetStringAttributeL( ECmProxyServerName, parameters->iProxyServerAddress->Des() ); + // Port Number + conMethod.SetIntAttributeL( ECmProxyPortNumber, parameters->iProxyPortNumber ); + //Proxy login name + conMethod.SetStringAttributeL( ECmWapIPProxyLoginName, parameters->iLoginName->Des() ); + //Proxy login password + conMethod.SetStringAttributeL( ECmWapIPProxyLoginPass, parameters->iLoginPass->Des() ); + //IP address of gateway + conMethod.SetStringAttributeL( ECmIPGateway, parameters->iGatewayAddress->Des() ); + //connection-oriented or connectionless API should be used + //ECmWapIPWSPOption option TWapWSPOption: ECmWapWspOptionConnectionless or ECmWapWspOptionConnectionOriented + conMethod.SetIntAttributeL( ECmWapIPWSPOption, parameters->iWapWspOption ); + //NOT WORKING????? Attempt secure WTLS connection to the gateway + conMethod.SetBoolAttributeL( ECmWapIPSecurity, parameters->iSecureAuthentication ); + + // + //Adding advanced settings (Network type, Phone IP addr, DNS addr, proxy srv name, proxy port nbr + // + + //IP address of interface + conMethod.SetStringAttributeL( ECmIPAddress, parameters->iIPAddr->Des() ); + //IP address of primary name server + conMethod.SetStringAttributeL( ECmIPNameServer1, parameters->iIP4NameServer1->Des() ); + //IP address of secondary name server + conMethod.SetStringAttributeL( ECmIPNameServer2, parameters->iIP4NameServer2->Des() ); + + + conMethod.UpdateL(); + + //If no defaults set, set the created CM as a default + SetDefaultCML( conMethod ); + + // id has been generated, store it for being able to delete + // only entries created with Creator + iEntryIds.Append( dest.Id() ); + + conMethod.Close(); + CleanupStack::Pop( );//conMethod + + dest.UpdateL(); + dest.Close(); + CleanupStack::Pop(); // dest + + return err; + } + +//---------------------------------------------------------------------------- +void CConnectionSettingsParameters::SetRandomCMNameL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomCMNameL"); + + TInt num = aEngine.RandomNumber(1, 3); + TBuf<10> apType; + + if (num==1) + { + apType = _L("mms"); + } + else if (num==2) + { + apType = _L("wap"); + } + else + { + apType = _L("internet"); + } + TBuf<160> company = aEngine.RandomString(CCreatorEngine::ECompany); + iConnectionName->Des() = KCreatorConnectionSettingssPrefixName; + iConnectionName->Des().Append( company ); + iConnectionName->Des().Append(_L(" ")); + iConnectionName->Des().Append(apType); + } + +void CConnectionSettingsParameters::SetRandomWLANNameL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomWLANNameL"); + + TBuf<160> company = aEngine.RandomString(CCreatorEngine::ECompany); + iWLANName->Des() = KCreatorConnectionSettingssPrefixName; + iWLANName->Des().Append( company ); + iWLANName->Des().Append( _L(" WLAN") ); + } + +void CConnectionSettingsParameters::SetRandomWLANNetModeL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomWLANNetModeL"); + + TInt wlanNetModeRand = aEngine.RandomNumber(1, 2); + if(wlanNetModeRand == 1) + { + iWlanNetMode = EAdhoc;//Ad-Hoc mode + } + else + { + iWlanNetMode = CMManager::EInfra;//Infrastructure mode + } + } + +void CConnectionSettingsParameters::SetRandomWLANSecurityModeL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomWLANSecurityModeL"); + + TInt wlanSecModeRand = aEngine.RandomNumber(1, 5); + if(wlanSecModeRand == 1) + { + iWLanSecMode = EWlanSecModeOpen;///< Open security mode + } + else if(wlanSecModeRand == 2) + { + iWLanSecMode = EWlanSecModeWep;///< WEP security mode + //See WEPSecuritySettingsUI.h + + ///CWEPSecuritySettings + + //WEP key in us + + //Authentication type + + //WEP Key settings (key len, key format, key data) + } + else if(wlanSecModeRand == 3) + { + iWLanSecMode = EWlanSecMode802_1x; ///< 802.1x security mode + } + else if(wlanSecModeRand == 4) + { + iWLanSecMode = EWlanSecModeWpa;///< WPA security mode + } + else if(wlanSecModeRand == 5) + { + iWLanSecMode = EWlanSecModeWpa2;///< WPA@ security mode + } + } + +void CConnectionSettingsParameters::SetRandomLoginNameL(CCreatorEngine& aEngine) + { + iLoginName->Des() = aEngine.RandomString(CCreatorEngine::EFirstName); + iLoginName->Des().LowerCase(); + } + +void CConnectionSettingsParameters::SetRandomLoginPassL(CCreatorEngine& aEngine) + { + iLoginPass->Des() = aEngine.RandomString(CCreatorEngine::ESurname); + iLoginPass->Des().LowerCase(); + } + +void CConnectionSettingsParameters::SetRandomSecureAuthenticationL(CCreatorEngine& /*aEngine*/) + { + iSecureAuthentication = EFalse; + } + +void CConnectionSettingsParameters::SetRandomPromptPasswordL(CCreatorEngine& /*aEngine*/) + { + iPromptPassword = ETrue; + } + +void CConnectionSettingsParameters::SetRandomUseProxyL(CCreatorEngine& /*aEngine*/) + { + iUseProxy = ETrue; + } + +void CConnectionSettingsParameters::SetRandomProxyAddressL(CCreatorEngine& /*aEngine*/) + { + iProxyServerAddress->Des() = _L("127.0.0.1"); + } + +void CConnectionSettingsParameters::SetRandomProxyPortL(CCreatorEngine& /*aEngine*/) + { + iProxyPortNumber = 80; + } + +void CConnectionSettingsParameters::SetRandomStartPageL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomStartPageL"); + + TInt num = aEngine.RandomNumber(1, 3); + TBuf<10> apType; + + if (num==1) + { + apType = _L("mms"); + } + else if (num==2) + { + apType = _L("wap"); + } + else + { + apType = _L("internet"); + } + TBuf<160> company = aEngine.RandomString(CCreatorEngine::ECompany); + iStartPage->Des() = _L("http://"); + iStartPage->Des().Append(apType); + iStartPage->Des().Append(_L(".")); + iStartPage->Des().Append(company); + iStartPage->Des().Append(_L(".com")); + iStartPage->Des().LowerCase(); + } + +void CConnectionSettingsParameters::SetRandomIPAddressL(CCreatorEngine& /*aEngine*/) + { + iIPAddr->Des() = _L("10.10.10.10"); + } + +void CConnectionSettingsParameters::SetRandomIP4NameServer1L(CCreatorEngine& /*aEngine*/) + { + iIP4NameServer1->Des() = _L("10.1.1.1"); + } +void CConnectionSettingsParameters::SetRandomIP4NameServer2L(CCreatorEngine& /*aEngine*/) + { + iIP4NameServer2->Des() = _L("10.2.2.2"); + } + +void CConnectionSettingsParameters::SetRandomProtocolTypeL(CCreatorEngine& aEngine) + { + LOGSTRING("Creator: CConnectionSettingsParameters::SetRandomProtocolTypeL"); + + TInt protocolTypeRand = aEngine.RandomNumber(1, 2); + if(protocolTypeRand == 1) + { + iProtocolType = RPacketContext::EPdpTypeIPv4; + } + else + { + iProtocolType = RPacketContext::EPdpTypeIPv6; + } + } + +void CConnectionSettingsParameters::SetRandomTelephoneNumberL(CCreatorEngine& aEngine) + { + iDefaultTelNumber->Des() = aEngine.RandomString(CCreatorEngine::EPhoneNumber); + } + +void CConnectionSettingsParameters::SetRandomBearerTypeIsdnL(CCreatorEngine& /*aEngine*/) + { + iBearerCallTypeIsdn = ECmCallTypeISDNv110; + } + +void CConnectionSettingsParameters::SetRandomBearerSpeedL(CCreatorEngine& /*aEngine*/) + { + iBearerSpeed = ECmSpeed14400; + } + +void CConnectionSettingsParameters::SetRandomWapWspOptionL(CCreatorEngine& /*aEngine*/) + { + iWapWspOption = ECmWapWspOptionConnectionless; + } + +void CConnectionSettingsParameters::SetRandomSubnetMaskL(CCreatorEngine& /*aEngine*/) + { + iSubnetMask->Des() = _L("255.255.255.0"); + } + +void CConnectionSettingsParameters::SetRandomGatewayAddressL(CCreatorEngine& /*aEngine*/) + { + iGatewayAddress->Des() = _L("10.0.0.1"); + } + +void CConnectionSettingsParameters::SetRandomWlanIpAddrL(CCreatorEngine& /*aEngine*/) + { + iWlanIpAddr->Des() = _L("10.0.0.99"); + } + +void CConnectionSettingsParameters::SetRandomIPv6NameServer1L(CCreatorEngine& /*aEngine*/) + { + iIP6NameServer1->Des() = _L("2007:abcd:1000:2000:3000:4000:5000:6001"); + } + +void CConnectionSettingsParameters::SetRandomIPv6NameServer2L(CCreatorEngine& /*aEngine*/) + { + iIP6NameServer2->Des() = _L("2007:abcd:1000:2000:3000:4000:5000:6002"); + } + +void CConnectionSettingsParameters::SetRandomDisableTextAuthL(CCreatorEngine& /*aEngine*/) + { + iDisableTextAuth = EFalse; + } + +void CCreatorConnectionSettings::SetRandomBearerTypeL(CConnectionSettingsParameters& parameters) + { + LOGSTRING("Creator: CCreatorConnectionSettings::SetRandomBearerTypeL"); + + RArray supportedBearers = RArray( 10 ); + iCmManagerExt.SupportedBearersL(supportedBearers); + CleanupClosePushL( supportedBearers ); + + //In random mode, skipping KUidLanBearerType + //Because of Emulator migh show it as supported, when it's really not + //and that causes weird situation in UI when there is an item, but it can't be opened + TInt lanID = supportedBearers.Find(KUidLanBearerType); + if( lanID != KErrNotFound ) + { + supportedBearers.Remove(lanID); + } + + // in emulator remove WLAN + #ifdef __WINSCW__ + TInt wlanID = supportedBearers.Find(KUidWlanBearerType); + if( wlanID != KErrNotFound ) + { + supportedBearers.Remove(wlanID); + } + #endif + + /* + for(TInt i = 0; iRandomNumber(0, supportedCount-1); + + TUint bearerType = supportedBearers[bearerTypeID]; + + //Bearer types KUidEmbeddedDestination and KPluginVPNBearerTypeUid is not supported + if(bearerType == KUidWlanBearerType)//Wireless LAN + { + parameters.iBearerType = KUidWlanBearerType; + } + else if(bearerType == KUidPacketDataBearerType)//Packet data (GPRS) + { + parameters.iBearerType = KUidPacketDataBearerType; + } + else if(bearerType == KUidCSDBearerType)//Data Call + { + parameters.iBearerType = KUidCSDBearerType; + } + else if(bearerType == KUidHSCSDBearerType) //High speed GSM + { + parameters.iBearerType = KUidHSCSDBearerType; + } + else if(bearerType == KUidEmbeddedDestination) + { + parameters.iBearerType = KUidEmbeddedDestination; + } + else// if(bearerType == KPluginVPNBearerTypeUid) + { + parameters.iBearerType = KPluginVPNBearerTypeUid; + } + /* In random mode skipping LAN type + else// if(bearerType == KUidLanBearerType) + { + iBearerType = KUidLanBearerType; + }*/ + + CleanupStack::PopAndDestroy(); // supportedBearers + } + +void CCreatorConnectionSettings::SetRandomParametersL(CConnectionSettingsParameters& parameters) + { + LOGSTRING("Creator: CCreatorConnectionSettings::SetRandomParametersL"); + + // Connection method name: + parameters.SetRandomCMNameL(*iEngine); + + SetRandomBearerTypeL(parameters); + + if(parameters.iBearerType == KUidWlanBearerType)//Wireless LAN + { + // WLAN name: + parameters.SetRandomWLANNameL(*iEngine); + + //WLAN network mode + parameters.SetRandomWLANNetModeL(*iEngine); + + //WLAN security mode: + parameters.SetRandomWLANSecurityModeL(*iEngine); + } + + // Login name: + parameters.SetRandomLoginNameL(*iEngine); + + // Login password: + parameters.SetRandomLoginPassL(*iEngine); + + // Secure authentication: + parameters.SetRandomSecureAuthenticationL(*iEngine); + + // Prompt password: + parameters.SetRandomPromptPasswordL(*iEngine); + + // Use proxy: + parameters.SetRandomUseProxyL(*iEngine); + + // Proxy address + parameters.SetRandomProxyAddressL(*iEngine); + + // Proxy port number: + parameters.SetRandomProxyPortL(*iEngine); + + // Start page: + parameters.SetRandomStartPageL(*iEngine); + + // IP address: + parameters.SetRandomIPAddressL(*iEngine); + + // IPv4 name servers: + parameters.SetRandomIP4NameServer1L(*iEngine); + parameters.SetRandomIP4NameServer2L(*iEngine); + + // Protocol type: + parameters.SetRandomProtocolTypeL(*iEngine); + + // Default telephone number: + parameters.SetRandomTelephoneNumberL(*iEngine); + + // Bearer isdn + parameters.SetRandomBearerTypeIsdnL(*iEngine); + + // Bearer speed: + parameters.SetRandomBearerSpeedL(*iEngine); + + // WAP wsp option: + parameters.SetRandomWapWspOptionL(*iEngine); + + // Subnet mask: + parameters.SetRandomSubnetMaskL(*iEngine); + + // Gateway address: + parameters.SetRandomGatewayAddressL(*iEngine); + + // WLAN ip address: + parameters.SetRandomWlanIpAddrL(*iEngine); + + // IPv6 name servers: + parameters.SetRandomIPv6NameServer1L(*iEngine); + parameters.SetRandomIPv6NameServer2L(*iEngine); + + // Disable text authorization: + parameters.SetRandomDisableTextAuthL(*iEngine); + } + +//---------------------------------------------------------------------------- + +void CCreatorConnectionSettings::SetDefaultCML(RCmConnectionMethodExt conMethod) + { + LOGSTRING("Creator: CCreatorConnectionSettings::SetDefaultCM"); + + TCmDefConnValue defConnValue; + + //Returns the default connection method/SNAP. + TRAPD( err, iCmManagerExt.ReadDefConnL( defConnValue ) ); + if( err == KErrNotSupported ) + { + return; //If Default Connection NOT supported, just returning + } + else if ( err != KErrNone ) + { + User::Leave( err ); //If something else happend + } + else if ( defConnValue.iId == 0 ) // default not set + { + TCmDefConnValue newDefaultCM; + HBufC* cmName = conMethod.GetStringAttributeL( ECmName ); + CleanupStack::PushL( cmName ); + newDefaultCM.iId = AccessPointNameToIdL( cmName->Des() ); + newDefaultCM.iType = ECmDefConnDestination; + //Stores the default connection method/SNAP. + iCmManagerExt.WriteDefConnL( newDefaultCM ); + CleanupStack::PopAndDestroy( cmName ); + } + } + +//---------------------------------------------------------------------------- + +TUint32 CCreatorConnectionSettings::AccessPointNameToIdL(const TDesC& aAPName, + TBool aAnyIfNotFound ) + { + LOGSTRING("Creator: CCreatorConnectionSettings::AccessPointNameToIdL"); + + //RCmDestination destination + + RArray destIdArray = RArray( 10 ); + + iCmManagerExt.AllDestinationsL( destIdArray ); + + CleanupClosePushL( destIdArray ); + TUint32 id = 0 ; + TBool found = EFalse; + + for( TInt i = 0; i < destIdArray.Count(); i++ ) + { + RCmDestinationExt dest = iCmManagerExt.DestinationL( destIdArray[i] ); + CleanupClosePushL( dest ); + + HBufC* destName = dest.NameLC(); + + if (destName->CompareF(aAPName) == 0){ + id = dest.Id(); + found = ETrue; + } + if ( !found && id == 0 && aAnyIfNotFound ) + { + id = dest.Id(); + } + CleanupStack::PopAndDestroy( 2 ); // destName , dest + if(found) + { + break; + } + } + + CleanupStack::PopAndDestroy(); // destIdArray + return id; + } + +//---------------------------------------------------------------------------- + +void CCreatorConnectionSettings::HandleSessionEventL(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/) // from MMsvSessionObserver + { + LOGSTRING("Creator: CCreatorConnectionSettings::HandleSessionEventL"); + } + +//---------------------------------------------------------------------------- +void CCreatorConnectionSettings::DeleteAllL() + { + LOGSTRING("Creator: CCreatorConnectionSettings::DeleteAllL"); + DeleteAllDestinationsL( EFalse ); + } + +//---------------------------------------------------------------------------- +void CCreatorConnectionSettings::DeleteAllCreatedByCreatorL() + { + LOGSTRING("Creator: CCreatorConnectionSettings::DeleteAllCreatedByCreatorL"); + iEntryIds.Reset(); + + // fetch ids of entries created by Creator + iEngine->ReadEntryIdsFromStoreL( iEntryIds, KUidDictionaryUidIAP ); + + // delete entries + DeleteAllDestinationsL( ETrue ); + } + +//---------------------------------------------------------------------------- + +void CCreatorConnectionSettings::DeleteAllDestinationsL( TBool aOnlyCreatedWithCreator ) + { + LOGSTRING("Creator: CCreatorConnectionSettings::DeleteAllDestinationsL"); + RArray destIdArray(5); + CleanupClosePushL( destIdArray ); + iCmManagerExt.AllDestinationsL( destIdArray ); + + for( TInt i = 0; i < destIdArray.Count(); i++ ) + { + TRAP_IGNORE + ( + RCmDestinationExt dest = iCmManagerExt.DestinationL( destIdArray[i] ); + CleanupClosePushL( dest ); + + if ( !aOnlyCreatedWithCreator || iEntryIds.Find( destIdArray[i]) != KErrNotFound ) + { + dest.DeleteLD(); + } + CleanupStack::PopAndDestroy(); // dest + ); + } + + CleanupStack::PopAndDestroy(); // destIdArray + + // reset must be done here, because iEntryIds is stored in destructor + iEntryIds.Reset(); + + // all entries deleted, remove the IMPS related registry + iEngine->RemoveStoreL( KUidDictionaryUidIAP ); + } +//----------------------------------------------------------------------------