eapol/eapol_framework/eapol_symbian/am/common/symbian/EapConfigToolsSymbian.cpp
branchRCL_3
changeset 19 c74b3d9f6b9e
parent 18 bad0cc58d154
equal deleted inserted replaced
18:bad0cc58d154 19:c74b3d9f6b9e
     1 /*
       
     2 * Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Some tools used in Symbian.
       
    15 *
       
    16 */
       
    17 
       
    18 /*
       
    19 * %version: 6 %
       
    20 */
       
    21 
       
    22 // This is enumeration of EAPOL source code.
       
    23 #if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
       
    24 	#undef EAP_FILE_NUMBER_ENUM
       
    25 	#define EAP_FILE_NUMBER_ENUM 725 
       
    26 	#undef EAP_FILE_NUMBER_DATE 
       
    27 	#define EAP_FILE_NUMBER_DATE 1127594498 
       
    28 #endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
       
    29 
       
    30 #include "eap_config.h"
       
    31 #include "eap_file_config.h"
       
    32 #include "eap_am_file_input_symbian.h"
       
    33 #include "eap_automatic_variable.h"
       
    34 #include "EapConfigToolsSymbian.h"
       
    35 
       
    36 #include "EapConversion.h"
       
    37 
       
    38 #include "EapPluginTools.h"
       
    39 
       
    40 //--------------------------------------------------
       
    41 
       
    42 eap_status_e EapConfigToolsSymbian::EapReadDefaultConfigFileSymbian(
       
    43 	abs_eap_am_tools_c * const aAmTools,
       
    44 	eap_file_config_c ** const aFileconfig)
       
    45 {
       
    46 	EAP_TRACE_BEGIN(aAmTools, TRACE_FLAGS_DEFAULT);
       
    47 
       
    48 	EAP_TRACE_DEBUG(
       
    49 		aAmTools, 
       
    50 		TRACE_FLAGS_DEFAULT, 
       
    51 		(EAPL("eapol_read_default_config_file_symbian()\n")));
       
    52 	EAP_TRACE_RETURN_STRING(aAmTools, "returns: eapol_read_default_config_file_symbian()");
       
    53 
       
    54 	TInt error(KErrNone);
       
    55 	eap_status_e status(eap_status_ok);
       
    56 
       
    57 	(*aFileconfig) = 0;
       
    58 
       
    59 #if defined(USE_EAP_FILECONFIG)
       
    60 	{
       
    61 		eap_am_file_input_symbian_c * const fileio = new eap_am_file_input_symbian_c(aAmTools);
       
    62 
       
    63 		eap_automatic_variable_c<eap_am_file_input_symbian_c> automatic_fileio(aAmTools, fileio);
       
    64 
       
    65 		if (fileio != 0
       
    66 			&& fileio->get_is_valid() == true)
       
    67 		{
       
    68 			EAP_TRACE_DEBUG(
       
    69 				aAmTools,
       
    70 				TRACE_FLAGS_DEFAULT,
       
    71 				(EAPL("Initialize file configuration.\n")));
       
    72 
       
    73 			eap_variable_data_c config_file_name(aAmTools);
       
    74 
       
    75 			{
       
    76 				TFileName aPrivateDatabasePathName;
       
    77 
       
    78 				TRAP(error, EapPluginTools::GetPrivatePathL(
       
    79 					aPrivateDatabasePathName));
       
    80 				if (error != KErrNone)
       
    81 				{
       
    82 					eap_status_e status(aAmTools->convert_am_error_to_eapol_error(error));
       
    83 
       
    84 					EAP_TRACE_DEBUG(
       
    85 						aAmTools,
       
    86 						TRACE_FLAGS_DEFAULT,
       
    87 						(EAPL("ERROR: EapPluginTools::GetPrivatePathL(): failed %d=%s.\n"),
       
    88 						status,
       
    89 						eap_status_string_c::get_status_string(status)));
       
    90 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
    91 					return EAP_STATUS_RETURN(aAmTools, status);
       
    92 				}
       
    93 
       
    94 				_LIT(FILECONFIG_FILENAME, "eap.conf");
       
    95 
       
    96 				aPrivateDatabasePathName.Append(FILECONFIG_FILENAME);
       
    97 
       
    98 				error = CEapConversion::ConvertFromTDesCToInternal(
       
    99 					aAmTools,
       
   100 					aPrivateDatabasePathName,
       
   101 					&config_file_name);
       
   102 				if (error != KErrNone)
       
   103 				{
       
   104 					eap_status_e status(aAmTools->convert_am_error_to_eapol_error(error));
       
   105 
       
   106 					EAP_TRACE_DEBUG(
       
   107 						aAmTools,
       
   108 						TRACE_FLAGS_DEFAULT,
       
   109 						(EAPL("ERROR: CEapConversion::ConvertFromTDesCToInternal(): failed %d=%s.\n"),
       
   110 						status,
       
   111 						eap_status_string_c::get_status_string(status)));
       
   112 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   113 					return EAP_STATUS_RETURN(aAmTools, status);
       
   114 				}
       
   115 			}
       
   116 
       
   117 			eap_variable_data_c file_name_c_data(aAmTools);
       
   118 
       
   119 			{
       
   120 				eap_const_string const FILECONFIG_DRIVE_C = "c:";
       
   121 
       
   122 				status = file_name_c_data.set_copy_of_buffer(
       
   123 					FILECONFIG_DRIVE_C,
       
   124 					aAmTools->strlen(FILECONFIG_DRIVE_C));
       
   125 				if (status != eap_status_ok)
       
   126 				{
       
   127 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   128 					return EAP_STATUS_RETURN(aAmTools, status);
       
   129 				}
       
   130 
       
   131 				status = file_name_c_data.add_data(&config_file_name);
       
   132 				if (status != eap_status_ok)
       
   133 				{
       
   134 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   135 					return EAP_STATUS_RETURN(aAmTools, status);
       
   136 				}
       
   137 
       
   138 				status = file_name_c_data.add_end_null();
       
   139 				if (status != eap_status_ok)
       
   140 				{
       
   141 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   142 					return EAP_STATUS_RETURN(aAmTools, status);
       
   143 				}
       
   144 			}
       
   145 
       
   146 			eap_variable_data_c file_name_z_data(aAmTools);
       
   147 
       
   148 			{
       
   149 				eap_const_string const FILECONFIG_DRIVE_Z = "z:";
       
   150 
       
   151 				status = file_name_z_data.set_copy_of_buffer(
       
   152 					FILECONFIG_DRIVE_Z,
       
   153 					aAmTools->strlen(FILECONFIG_DRIVE_Z));
       
   154 				if (status != eap_status_ok)
       
   155 				{
       
   156 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   157 					return EAP_STATUS_RETURN(aAmTools, status);
       
   158 				}
       
   159 
       
   160 				status = file_name_z_data.add_data(&config_file_name);
       
   161 				if (status != eap_status_ok)
       
   162 				{
       
   163 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   164 					return EAP_STATUS_RETURN(aAmTools, status);
       
   165 				}
       
   166 
       
   167 				status = file_name_z_data.add_end_null();
       
   168 				if (status != eap_status_ok)
       
   169 				{
       
   170 					EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   171 					return EAP_STATUS_RETURN(aAmTools, status);
       
   172 				}
       
   173 			}
       
   174 
       
   175 
       
   176 
       
   177 			if (status == eap_status_ok)
       
   178 			{
       
   179 				// Disable traces because this could fail. In most cases there are no configuration file on C: disk,
       
   180 				u32_t saved_trace_mask =  aAmTools->get_trace_mask();
       
   181 				aAmTools->set_trace_mask(eap_am_tools_c::eap_trace_mask_none);
       
   182 
       
   183 				// First try open from C: disk.
       
   184 				status = fileio->file_open(
       
   185 					&file_name_c_data,
       
   186 					eap_file_io_direction_read);
       
   187 
       
   188 				// Enable traces because the next should not fail. Always there are configuration file on Z: disk,
       
   189 				aAmTools->set_trace_mask(saved_trace_mask);
       
   190 
       
   191 				if (status == eap_status_ok)
       
   192 				{
       
   193 					EAP_TRACE_DEBUG(
       
   194 						aAmTools,
       
   195 						TRACE_FLAGS_DEFAULT,
       
   196 						(EAPL("Opens configure file %s\n"),
       
   197 						file_name_c_data.get_data(file_name_c_data.get_data_length())));
       
   198 				}
       
   199 				else
       
   200 				{
       
   201 					// Second try open from Z: disk.
       
   202 					status = fileio->file_open(
       
   203 						&file_name_z_data,
       
   204 						eap_file_io_direction_read);
       
   205 					if (status == eap_status_ok)
       
   206 					{
       
   207 						EAP_TRACE_DEBUG(
       
   208 							aAmTools,
       
   209 							TRACE_FLAGS_DEFAULT,
       
   210 							(EAPL("Opens configure file %s\n"),
       
   211 							 file_name_z_data.get_data(file_name_z_data.get_data_length())));
       
   212 					}
       
   213 				}
       
   214 
       
   215 				if (status == eap_status_ok)
       
   216 				{
       
   217 					// Some of the files were opened.
       
   218 
       
   219 					(*aFileconfig) = new eap_file_config_c(aAmTools);
       
   220 					if ((*aFileconfig) != 0
       
   221 						&& (*aFileconfig)->get_is_valid() == true)
       
   222 					{
       
   223 						status = (*aFileconfig)->configure(fileio);
       
   224 						if (status != eap_status_ok)
       
   225 						{
       
   226 							EAP_TRACE_DEBUG(
       
   227 								aAmTools,
       
   228 								TRACE_FLAGS_DEFAULT,
       
   229 								(EAPL("ERROR: Configure read from %s failed.\n"),
       
   230 								file_name_c_data.get_data(file_name_c_data.get_data_length())));
       
   231 						}
       
   232 						else
       
   233 						{
       
   234 							EAP_TRACE_DEBUG(
       
   235 								aAmTools,
       
   236 								TRACE_FLAGS_DEFAULT,
       
   237 								(EAPL("Configure read from %s\n"),
       
   238 								file_name_c_data.get_data(file_name_c_data.get_data_length())));
       
   239 						}
       
   240 					}
       
   241 					else
       
   242 					{
       
   243 						// No file configuration.
       
   244 						delete (*aFileconfig);
       
   245 						(*aFileconfig) = 0;
       
   246 
       
   247 						EAP_TRACE_DEBUG(
       
   248 							aAmTools,
       
   249 							TRACE_FLAGS_DEFAULT,
       
   250 							(EAPL("ERROR: Cannot create configure object for file %s\n"),
       
   251 							file_name_c_data.get_data(file_name_c_data.get_data_length())));
       
   252 					}
       
   253 				}
       
   254 				else
       
   255 				{
       
   256 					EAP_TRACE_DEBUG(
       
   257 						aAmTools,
       
   258 						TRACE_FLAGS_DEFAULT,
       
   259 						(EAPL("ERROR: Cannot open configure file neither %s nor %s\n"),
       
   260 						file_name_c_data.get_data(file_name_c_data.get_data_length()),
       
   261 						file_name_z_data.get_data(file_name_z_data.get_data_length())));
       
   262 				}
       
   263 			}
       
   264 		}
       
   265 		else
       
   266 		{
       
   267 			EAP_TRACE_DEBUG(
       
   268 				aAmTools,
       
   269 				TRACE_FLAGS_DEFAULT,
       
   270 				(EAPL("Skips file configuration.\n")));
       
   271 		}
       
   272 	}
       
   273 #endif //#if defined(USE_EAP_FILECONFIG)
       
   274 
       
   275 
       
   276 	EAP_TRACE_END(aAmTools, TRACE_FLAGS_DEFAULT);
       
   277 	return EAP_STATUS_RETURN(aAmTools, status);
       
   278 }
       
   279 
       
   280 //--------------------------------------------------
       
   281 // End.