diff -r bad0cc58d154 -r c74b3d9f6b9e eapol/eapol_framework/eapol_symbian/am/common/symbian/EapPluginTools.cpp --- a/eapol/eapol_framework/eapol_symbian/am/common/symbian/EapPluginTools.cpp Tue Aug 31 15:16:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -/* -* Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: Tools for plugin handling on Symbian. -* -*/ - -/* -* %version: 19 % -*/ - -#include -#include -#include - -#include "EapPluginTools.h" -#include "EapAutomatic.h" - -/** @file */ - -// ---------------------------------------------------------------------- - -EXPORT_C EapPluginTools::EapPluginTools() -{ - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::EapPluginTools(): this=0x%08x.\n"), - this)); - EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapPluginTools::EapPluginTools()")); -} - -// ---------------------------------------------------------------------- - -EXPORT_C EapPluginTools::~EapPluginTools() -{ - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::~EapPluginTools(): this=0x%08x.\n"), - this)); - EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapPluginTools::~EapPluginTools()")); -} - -// ---------------------------------------------------------------------- - -EXPORT_C void EapPluginTools::CleanupImplArray( TAny* aAny ) -{ - RImplInfoPtrArray* implArray = - reinterpret_cast( aAny ); - - implArray->ResetAndDestroy(); - implArray->Close(); -} - -// ---------------------------------------------------------------------- - -EXPORT_C void EapPluginTools::ListAllEapPluginsL(const TIndexType aIndexType, const TEapExpandedType & aTunnelingEapType, RPointerArray & aPlugins) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): this=0x%08x, aTunnelingEapType=0xfe%06x%08x.\n"), - this, - aTunnelingEapType.GetVendorId(), - aTunnelingEapType.GetVendorType())); - EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapPluginTools::ListAllEapPluginsL()")); - - aPlugins.Reset(); // Reset this first - - RImplInfoPtrArray aEapArray; - - CleanupStack::PushL( TCleanupItem( CleanupImplArray, &aEapArray ) ); - - REComSession::ListImplementationsL( KEapTypeInterfaceUid, aEapArray ); - - // Checks which plugins are allowed inside the tunneling EAP-methods and which are allowed outer most EAP-methods. - for( TInt counter = 0; counter < aEapArray.Count(); counter++ ) - { - TEapExpandedType plugin_type(aEapArray[counter]->DataType()); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): aEapArray[%d] EAP-type=0xfe%06x%08x\n"), - counter, - plugin_type.GetVendorId(), - plugin_type.GetVendorType())); - - TBool aNotAllowed(EFalse); - - if (aIndexType == ELan - && aTunnelingEapType == (*EapExpandedTypeNone.GetType())) - { - // Filter out the EAP types which are NOT allowed outside PEAP, TTLS or FAST on WLAN. - if( CEapTypePlugin::IsDisallowedOutsidePEAP( *aEapArray[counter] ) ) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): aEapArray[%d] EAP-type=0xfe%06x%08x, IsDisallowedOutsidePEAP()\n"), - counter, - plugin_type.GetVendorId(), - plugin_type.GetVendorType())); - - aNotAllowed = ETrue; - } - } - else if (aTunnelingEapType == (*EapExpandedTypePeap.GetType()) - || aTunnelingEapType == (*EapExpandedTypeFast.GetType())) - { - // Filter out the EAP types which are NOT allowed inside PEAP or FAST. - if( CEapTypePlugin::IsDisallowedInsidePEAP( *aEapArray[counter] ) ) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): aEapArray[%d] EAP-type=0xfe%06x%08x, IsDisallowedInsidePEAP()\n"), - counter, - plugin_type.GetVendorId(), - plugin_type.GetVendorType())); - - aNotAllowed = ETrue; - } - } - else if (aTunnelingEapType == (*EapExpandedTypeTtls.GetType())) - { - // Filter out the EAP types which are NOT allowed inside TTLS. - if( CEapTypePlugin::IsDisallowedInsideTTLS( *aEapArray[counter] ) ) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): aEapArray[%d] EAP-type=0xfe%06x%08x, IsDisallowedInsideTTLS()\n"), - counter, - plugin_type.GetVendorId(), - plugin_type.GetVendorType())); - - aNotAllowed = ETrue; - } - } - - if (aNotAllowed) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): Removes EAP-plugin aEapArray[%d] EAP-type=0xfe%06x%08x\n"), - counter, - plugin_type.GetVendorId(), - plugin_type.GetVendorType())); - - // Delete the EAP type, which isn't allowed here from the array. - delete aEapArray[counter]; - aEapArray.Remove( counter ); - - // One item removed from the array. So reduce the item counter. - counter--; - } - } - - // Adds allowed EAP-methods to an array. - for (TInt ind = 0; ind < aEapArray.Count(); ind++ ) - { - TEapExpandedType * eap_type = new TEapExpandedType; - if (eap_type != 0) - { - *eap_type = aEapArray[ind]->DataType(); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::ListAllEapPluginsL(): aEapArray[%d] EAP-type=0xfe%06x%08x\n"), - ind, - eap_type->GetVendorId(), - eap_type->GetVendorType())); - - User::LeaveIfError( aPlugins.Append( eap_type ) ); - } - } - - CleanupStack::PopAndDestroy(&aEapArray); -} - -// ---------------------------------------------------------------------- - -EXPORT_C void EapPluginTools::GetPrivatePathL( - RFs& aFileServerSession, - TFileName& aPrivateDatabasePathName) -{ - // Reads the private folder. Caller must connect file server before calling this function. - - CleanupClosePushL(aFileServerSession); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::GetPrivatePathL(): - calls aFileServerSession.PrivatePath()\n"))); - - aPrivateDatabasePathName.SetLength(0); - - TInt error = aFileServerSession.PrivatePath(aPrivateDatabasePathName); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::GetPrivatePathL(): - aFileServerSession.PrivatePath(), error=%d\n"), error)); - - User::LeaveIfError(error); - - EAP_TRACE_DATA_DEBUG_SYMBIAN(("aPrivateDatabasePathName", - aPrivateDatabasePathName.Ptr(), - aPrivateDatabasePathName.Size())); - - CleanupStack::Pop(&aFileServerSession); -} - -// ---------------------------------------------------------------------- - -EXPORT_C void EapPluginTools::GetPrivatePathL( - TFileName& aPrivateDatabasePathName) -{ - // Reads the private folder. - - RFs aFileServerSession; - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::GetPrivatePathL(): - calls aFileServerSession.Connect()\n"))); - - TInt error = aFileServerSession.Connect(); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::GetPrivatePathL(): - aFileServerSession.Connect(), error=%d\n"), error)); - - User::LeaveIfError(error); - - EapPluginTools::GetPrivatePathL( - aFileServerSession, - aPrivateDatabasePathName); - - aFileServerSession.Close(); -} - -// ---------------------------------------------------------------------- - -EXPORT_C void EapPluginTools::CreateDatabaseLC( - RDbNamedDatabase& aDatabase, - RFs& aFileServerSession, - TInt& error, - const TDesC& aDatabaseName, - TFileName& aPrivateDatabasePathName) -{ - // Caller must connect file server before calling this function. - - // aDatabase is pushed to the cleanup stack even though they may be member - // variables of the calling class and would be closed in the destructor anyway. This ensures - // that if they are not member variables they will be closed. Closing the handle twice - // does no harm. - CleanupClosePushL(aFileServerSession); - CleanupClosePushL(aDatabase); - - // Create the private database in the private folder of EAP-server. - - EapPluginTools::GetPrivatePathL( - aFileServerSession, - aPrivateDatabasePathName); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::CreateDatabaseLC(): - calls aPrivateDatabasePathName.Append()\n"))); - - aPrivateDatabasePathName.Append(aDatabaseName); - - EAP_TRACE_DATA_DEBUG_SYMBIAN(("aPrivateDatabasePathName", - aPrivateDatabasePathName.Ptr(), - aPrivateDatabasePathName.Size())); - - User::LeaveIfError(error); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::CreateDatabaseLC(): - calls aDatabase.Create()\n"))); - - error = aDatabase.Create(aFileServerSession, aPrivateDatabasePathName); - - EAP_TRACE_DEBUG_SYMBIAN((_L("EapPluginTools::CreateDatabaseLC(): - Created private DB for %S. error=%d, (%d is KErrAlreadyExists)\n"), - &aDatabaseName, - error, - KErrAlreadyExists)); -} - -// ---------------------------------------------------------------------- -// End