724 |
725 |
725 serverSettingsFile.Append(KProvisionServerSettings); |
726 serverSettingsFile.Append(KProvisionServerSettings); |
726 |
727 |
727 if ( iFileUtil.FileExists(serverSettingsFile) ) |
728 if ( iFileUtil.FileExists(serverSettingsFile) ) |
728 { |
729 { |
729 HBufC8* fileData=iFileUtil.LoadFileDataL(serverSettingsFile); |
730 _LIT(KCRLF, "\n"); |
730 CleanupStack::PushL(fileData); |
731 RFile serverFile; |
731 HBufC8* newFileData =HBufC8::New(fileData->Length() + KCRLF().Length() + 4); |
732 User::LeaveIfError(serverFile.Open(iFs,serverSettingsFile, EFileRead)); |
732 CleanupStack::PushL(newFileData); |
733 |
733 TPtr8 fileDataPtr = newFileData->Des(); |
734 TFileText tx; |
734 fileDataPtr.Copy(*fileData); |
735 tx.Set(serverFile); |
735 fileDataPtr.Append(KCRLF); |
736 |
736 fileDataPtr.AppendNum(provisionIapId); |
737 TInt fileSize; |
737 iFileUtil.SaveFileDataL(serverSettingsFile,fileDataPtr); |
738 User::LeaveIfError(serverFile.Size(fileSize)); |
738 CleanupStack::PopAndDestroy(newFileData); |
739 |
739 CleanupStack::PopAndDestroy(fileData); |
740 HBufC* serverUrlBuf = HBufC::NewLC(fileSize); |
|
741 |
|
742 TPtr serverUrlPtr=serverUrlBuf->Des(); |
|
743 |
|
744 User::LeaveIfError(tx.Read(serverUrlPtr)); |
|
745 |
|
746 |
|
747 HBufC* serverNameBuf = HBufC::NewLC(fileSize); |
|
748 TPtr serverNamePtr=serverNameBuf->Des(); |
|
749 |
|
750 User::LeaveIfError(tx.Read(serverNamePtr)); |
|
751 |
|
752 |
|
753 TBuf<KMaxIapLength> iapIdData; |
|
754 User::LeaveIfError(tx.Read(iapIdData)); |
|
755 |
|
756 TBuf<KMaxIapLength> iapModeData; |
|
757 User::LeaveIfError(tx.Read(iapModeData)); |
|
758 |
|
759 HBufC* policyFileNameBuf = HBufC::NewLC(fileSize); |
|
760 |
|
761 TPtr policyFileNamePtr = policyFileNameBuf->Des(); |
|
762 User::LeaveIfError(tx.Read(policyFileNamePtr)); |
|
763 |
|
764 serverFile.Close(); |
|
765 |
|
766 TBuf<KMaxIapLength> agileIapIdStr; |
|
767 agileIapIdStr.Num(provisionIapId); |
|
768 |
|
769 HBufC* serverFileBuf = HBufC::NewL(fileSize + KCRLF().Length() + agileIapIdStr.Length()); |
|
770 CleanupStack::PushL(serverFileBuf); |
|
771 TPtr tPtr(serverFileBuf->Des()); |
|
772 tPtr.Copy(serverUrlPtr); |
|
773 tPtr.Append(KCRLF); |
|
774 tPtr.Append(serverNamePtr); |
|
775 tPtr.Append(KCRLF); |
|
776 tPtr.Append(iapIdData); |
|
777 tPtr.Append(KCRLF); |
|
778 tPtr.Append(iapModeData); |
|
779 tPtr.Append(KCRLF); |
|
780 tPtr.Append(policyFileNamePtr); |
|
781 tPtr.Append(KCRLF); |
|
782 tPtr.AppendNum(provisionIapId); |
|
783 |
|
784 RFile file; |
|
785 CleanupClosePushL(file); |
|
786 User::LeaveIfError(file.Replace(iFs, serverSettingsFile, EFileWrite)); |
|
787 TPtrC8 ptr8 ( (TUint8*) tPtr.Ptr(), tPtr.Size() ); |
|
788 file.Write ( ptr8 ); |
|
789 file.Close(); |
|
790 |
|
791 CleanupStack::PopAndDestroy(1); //file |
|
792 CleanupStack::PopAndDestroy(serverFileBuf); |
|
793 CleanupStack::PopAndDestroy(policyFileNameBuf); |
|
794 CleanupStack::PopAndDestroy(serverNameBuf); |
|
795 CleanupStack::PopAndDestroy(serverUrlBuf); |
|
796 |
740 } |
797 } |
741 } |
798 } |
742 } |
799 } |
743 |
800 |
744 CleanupStack::PopAndDestroy(policyInfo); |
801 CleanupStack::PopAndDestroy(policyInfo); |
1294 } |
1351 } |
1295 |
1352 |
1296 |
1353 |
1297 void CPolicyImporter::GetPolicyWsL() |
1354 void CPolicyImporter::GetPolicyWsL() |
1298 { |
1355 { |
1299 const TInt KEolLen = 2; |
1356 |
1300 |
|
1301 delete iAgileProvisionWs; |
1357 delete iAgileProvisionWs; |
1302 iImportDir=KTempDirectory(); |
1358 iImportDir=KTempDirectory(); |
1303 iFileUtil.CreateDirIfNeededL(iImportDir); |
1359 iFileUtil.CreateDirIfNeededL(iImportDir); |
1304 iAgileProvisionWs = CAgileProvisionWs::NewL(); |
1360 iAgileProvisionWs = CAgileProvisionWs::NewL(); |
1305 |
1361 |
1306 TFileName serverSettingsFile; |
1362 TFileName serverSettingsFile; |
1307 User::LeaveIfError(iFs.PrivatePath(serverSettingsFile)); |
1363 User::LeaveIfError(iFs.PrivatePath(serverSettingsFile)); |
1308 |
1364 |
1309 serverSettingsFile.Append(KProvisionServerSettings); |
1365 serverSettingsFile.Append(KProvisionServerSettings); |
1310 |
1366 |
1311 |
|
1312 HBufC8* fileData; |
|
1313 TInt endOfLine; |
|
1314 HBufC8* serviceEndPoint; |
1367 HBufC8* serviceEndPoint; |
1315 TUint iapIdInt; |
1368 |
1316 |
|
1317 if ( iFileUtil.FileExists(serverSettingsFile) ) |
1369 if ( iFileUtil.FileExists(serverSettingsFile) ) |
1318 { |
1370 { |
1319 fileData=iFileUtil.LoadFileDataL(serverSettingsFile); |
1371 |
1320 CleanupStack::PushL(fileData); |
|
1321 endOfLine=fileData->Find(KCRLF); |
|
1322 |
1372 |
1323 serviceEndPoint=HBufC8::NewL( KHTTPprefix().Length() + KServiceSuffix().Length() + fileData->Mid(0,endOfLine).Length()); |
1373 RFile serverFile; |
|
1374 User::LeaveIfError(serverFile.Open(iFs,serverSettingsFile, EFileRead)); |
|
1375 |
|
1376 TFileText tx; |
|
1377 tx.Set(serverFile); |
|
1378 |
|
1379 TInt fileSize; |
|
1380 User::LeaveIfError(serverFile.Size(fileSize)); |
|
1381 |
|
1382 HBufC* serverUrlBuf = HBufC::NewLC(fileSize); |
|
1383 |
|
1384 TPtr serverUrlPtr=serverUrlBuf->Des(); |
|
1385 |
|
1386 User::LeaveIfError(tx.Read(serverUrlPtr)); |
|
1387 |
|
1388 HBufC8* serverUrl=iFileUtil.To8BitL(serverUrlPtr); |
|
1389 |
|
1390 CleanupStack::PopAndDestroy(serverUrlBuf); |
|
1391 |
|
1392 CleanupStack::PushL(serverUrl); |
|
1393 |
|
1394 |
|
1395 serviceEndPoint=HBufC8::NewL( KHTTPprefix().Length() + KServiceSuffix().Length() + serverUrlPtr.Length()); |
1324 CleanupStack::PushL(serviceEndPoint); |
1396 CleanupStack::PushL(serviceEndPoint); |
1325 TPtr8 endPointPtr(serviceEndPoint->Des()); |
1397 TPtr8 endPointPtr(serviceEndPoint->Des()); |
1326 endPointPtr=KHTTPprefix; |
1398 endPointPtr=KHTTPprefix; |
1327 HBufC8* serviceAddrBuf=(fileData->Mid(0,endOfLine)).AllocL(); |
1399 |
1328 CleanupStack::PushL(serviceAddrBuf); |
1400 // serverUrl ownership transfer |
|
1401 iAgileProvisionWs->SetServiceAddr(serverUrl); |
|
1402 endPointPtr.Append(*serverUrl); |
|
1403 endPointPtr.Append(KServiceSuffix); |
1329 |
1404 |
1330 //serviceAddrBuf ownership transfer |
|
1331 iAgileProvisionWs->SetServiceAddr(serviceAddrBuf); |
|
1332 endPointPtr.Append(fileData->Mid(0,endOfLine)); |
|
1333 endPointPtr.Append(KServiceSuffix); |
|
1334 CleanupStack::Pop(serviceAddrBuf); |
|
1335 |
1405 |
1336 TInt startOfLine(endOfLine+KEolLen); |
1406 HBufC* serverNameBuf = HBufC::NewLC(fileSize); |
1337 TPtrC8 nameData=fileData->Right(fileData->Length()-startOfLine); |
1407 TPtr serverNamePtr=serverNameBuf->Des(); |
1338 endOfLine=nameData.Find(KCRLF); |
1408 |
1339 |
1409 User::LeaveIfError(tx.Read(serverNamePtr)); |
1340 startOfLine = endOfLine + KEolLen; |
1410 |
1341 TPtrC8 iapIdData=nameData.Right(nameData.Length()-startOfLine); |
1411 CleanupStack::PopAndDestroy(serverNameBuf); |
1342 endOfLine=iapIdData.Find(KCRLF); |
1412 |
1343 TLex8 iapIdConverter(iapIdData.Left(endOfLine)); |
1413 TBuf<KMaxIapLength> iapIdData; |
1344 |
1414 User::LeaveIfError(tx.Read(iapIdData)); |
|
1415 |
|
1416 TLex iapIdConverter(iapIdData); |
|
1417 TUint iapIdInt; |
1345 iapIdConverter.Val(iapIdInt); |
1418 iapIdConverter.Val(iapIdInt); |
|
1419 |
1346 iAgileProvisionWs->GetPolicy( *serviceEndPoint, iapIdInt, iStatus ); |
1420 iAgileProvisionWs->GetPolicy( *serviceEndPoint, iapIdInt, iStatus ); |
1347 CleanupStack::PopAndDestroy(serviceEndPoint); |
1421 CleanupStack::PopAndDestroy(serviceEndPoint); |
1348 CleanupStack::PopAndDestroy(fileData); |
1422 CleanupStack::Pop(serverUrl); |
|
1423 serverFile.Close(); |
1349 } |
1424 } |
1350 |
1425 |
1351 |
1426 |
1352 SetActive(); |
1427 SetActive(); |
1353 |
1428 |
1395 HBufC* policyServerSettingsFileName = HBufC::NewL(KProvisionServerSettings().Length() + privateDir.Length()); |
1470 HBufC* policyServerSettingsFileName = HBufC::NewL(KProvisionServerSettings().Length() + privateDir.Length()); |
1396 CleanupStack::PushL(policyServerSettingsFileName); |
1471 CleanupStack::PushL(policyServerSettingsFileName); |
1397 TPtr fileNamePtr=policyServerSettingsFileName->Des(); |
1472 TPtr fileNamePtr=policyServerSettingsFileName->Des(); |
1398 fileNamePtr.Append(privateDir); |
1473 fileNamePtr.Append(privateDir); |
1399 fileNamePtr.Append(KProvisionServerSettings); |
1474 fileNamePtr.Append(KProvisionServerSettings); |
1400 |
1475 _LIT(KCRLF, "\n"); |
1401 |
|
1402 if ( iFileUtil.FileExists(fileNamePtr) ) |
1476 if ( iFileUtil.FileExists(fileNamePtr) ) |
1403 { |
1477 { |
1404 HBufC8* fileData=iFileUtil.LoadFileDataL(fileNamePtr); |
1478 |
1405 CleanupStack::PushL(fileData); |
1479 RFile serverFile; |
1406 |
1480 User::LeaveIfError(serverFile.Open(iFs,fileNamePtr, EFileRead)); |
1407 TPtrC8 restOfData = *fileData; |
1481 |
|
1482 TFileText tx; |
|
1483 tx.Set(serverFile); |
|
1484 |
|
1485 TInt fileSize; |
|
1486 User::LeaveIfError(serverFile.Size(fileSize)); |
|
1487 |
|
1488 HBufC* serverUrlBuf = HBufC::NewLC(fileSize); |
|
1489 |
|
1490 TPtr serverUrlPtr=serverUrlBuf->Des(); |
|
1491 |
|
1492 User::LeaveIfError(tx.Read(serverUrlPtr)); |
|
1493 |
|
1494 HBufC* serverNameBuf = HBufC::NewLC(fileSize); |
|
1495 TPtr serverNamePtr=serverNameBuf->Des(); |
|
1496 |
|
1497 User::LeaveIfError(tx.Read(serverNamePtr)); |
|
1498 |
1408 |
1499 |
1409 TInt bofInt; |
1500 TBuf<KMaxIapLength> iapIdData; |
1410 TInt line=1; |
1501 User::LeaveIfError(tx.Read(iapIdData)); |
1411 while ( (bofInt=restOfData.Find(KCRLF)) != KErrNotFound && line < KPolicyFileLine ) |
1502 |
1412 { |
1503 TBuf<KMaxIapLength> iapModeData; |
1413 restOfData.Set(restOfData.Mid(bofInt + KCRLF().Length())); |
1504 User::LeaveIfError(tx.Read(iapModeData)); |
1414 line++; |
1505 |
1415 } |
1506 TBuf<KMaxIapLength> iapIdBuf; |
1416 TInt iapIdStart=restOfData.Find(KCRLF); |
1507 |
1417 HBufC16* iapIdBuf; |
1508 HBufC* policyFilePath; |
1418 if ( iapIdStart!=KErrNotFound ) |
1509 HBufC* policyFileNameBuf = HBufC::NewLC(fileSize); |
|
1510 TPtr policyFileNamePtr = policyFileNameBuf->Des(); |
|
1511 |
|
1512 if ( tx.Read(policyFileNamePtr) == KErrNone ) |
|
1513 { |
|
1514 |
|
1515 tx.Read(iapIdBuf); |
|
1516 TLex iapIdConverter(iapIdBuf); |
|
1517 iapIdConverter.Val(iAgileProvisionAPId,EDecimal); |
|
1518 |
|
1519 policyFilePath = iFileUtil.MakeFileNameLC(privateDir, *policyFileNameBuf, KPolFileExt); |
|
1520 } |
|
1521 else |
|
1522 { |
|
1523 policyFilePath =iFileUtil.MakeFileNameLC(privateDir, *iNewPolicyId, KPolFileExt); |
|
1524 } |
|
1525 |
|
1526 serverFile.Close(); |
|
1527 |
|
1528 TBuf<KMaxIapLength> iapAgileIdStr; |
|
1529 //server configuration file includes installed policy file name and policy exists. |
|
1530 if ( (iAgileProvisionAPId > 0) && iFileUtil.FileExists(*policyFilePath) ) |
|
1531 { |
|
1532 iPolicyIdBuf.Append(*policyFileNameBuf); |
|
1533 iNewPolicyIdBuf=iPolicyIdBuf; |
|
1534 iPolicyStore.ReplacePolicyL(iPolicyIdBuf,*iNewPolicyId); |
|
1535 iNewPolicyId= &iNewPolicyIdBuf; |
|
1536 } |
|
1537 //either first configuration or policy removed |
|
1538 else |
1419 { |
1539 { |
1420 TPtrC8 iapIdPtr=restOfData.Mid(iapIdStart + KCRLF().Length(),restOfData.Length()-KCRLF().Length()-iapIdStart); |
|
1421 iapIdBuf=iFileUtil.To16BitL(iapIdPtr); |
|
1422 CleanupStack::PushL(iapIdBuf); |
|
1423 TLex iapIdConverter(*iapIdBuf); |
|
1424 iapIdConverter.Val(iAgileProvisionAPId,EDecimal); |
|
1425 CleanupStack::PopAndDestroy(iapIdBuf); |
|
1426 } |
|
1427 |
|
1428 if ( iAgileProvisionAPId >0) |
|
1429 restOfData.Set(restOfData.Mid(0,iapIdStart)); |
|
1430 HBufC16* policyFileNameBuf = iFileUtil.To16BitL(restOfData); |
|
1431 CleanupStack::PushL(policyFileNameBuf); |
|
1432 HBufC* policyFilePath = iFileUtil.MakeFileNameLC(privateDir, *policyFileNameBuf, KPolFileExt); |
|
1433 |
1540 |
1434 //server configuration file includes installed policy file name and policy exists. |
1541 HBufC* serverFileBuf = HBufC::NewL(fileSize + KCRLF().Length() + iNewPolicyId->Length() + KMaxIapLength); |
1435 if ( line == KPolicyFileLine && iFileUtil.FileExists(*policyFilePath) ) |
1542 CleanupStack::PushL(serverFileBuf); |
1436 { |
1543 TPtr tPtr(serverFileBuf->Des()); |
1437 HBufC16* restOfDataBuf=iFileUtil.To16BitL(restOfData); |
1544 tPtr.Copy(serverUrlPtr); |
1438 CleanupStack::PushL(restOfDataBuf); |
1545 tPtr.Append(KCRLF); |
1439 iPolicyIdBuf.Append(*restOfDataBuf); |
1546 tPtr.Append(serverNamePtr); |
1440 iNewPolicyIdBuf=iPolicyIdBuf; |
1547 tPtr.Append(KCRLF); |
1441 iPolicyStore.ReplacePolicyL(iPolicyIdBuf,*iNewPolicyId); |
1548 tPtr.Append(iapIdData); |
1442 iNewPolicyId= &iNewPolicyIdBuf; |
1549 tPtr.Append(KCRLF); |
1443 CleanupStack::PopAndDestroy(restOfDataBuf); |
1550 tPtr.Append(iapModeData); |
|
1551 |
|
1552 //policy removed |
|
1553 if ( !iFileUtil.FileExists(*policyFilePath) ) |
|
1554 { |
|
1555 tPtr.Append(KCRLF); |
|
1556 tPtr.Append(*iNewPolicyId); |
|
1557 tPtr.Append(KCRLF); |
|
1558 iapAgileIdStr.Num(iAgileProvisionAPId); |
|
1559 tPtr.Append(iapAgileIdStr); |
1444 } |
1560 } |
1445 //either first configuration or policy removed |
1561 //first configuration |
1446 else |
1562 else |
1447 { |
1563 { |
1448 HBufC* serverFile = HBufC::NewL(fileData->Length() + KCRLF().Length() + iNewPolicyId->Length()); |
1564 tPtr.Append(KCRLF); |
1449 CleanupStack::PushL(serverFile); |
1565 tPtr.Append(*iNewPolicyId); |
1450 TPtr tPtr(serverFile->Des()); |
|
1451 HBufC16* fileData16=iFileUtil.To16BitL(*fileData); |
|
1452 CleanupStack::PushL(fileData16); |
|
1453 tPtr.Copy(*fileData16); |
|
1454 _LIT(KCRLF, "\r\n"); |
|
1455 |
|
1456 //policy removed |
|
1457 if ( line == KPolicyFileLine ) |
|
1458 { |
|
1459 TInt lengthOfPolicyId=restOfData.Length(); |
|
1460 tPtr.Replace(fileData->Length()-lengthOfPolicyId,lengthOfPolicyId,*iNewPolicyId); |
|
1461 } |
|
1462 //first configuration |
|
1463 else |
|
1464 { |
|
1465 tPtr.Append(KCRLF); |
|
1466 tPtr.Append(*iNewPolicyId); |
|
1467 } |
|
1468 iFileUtil.SaveFileDataL(fileNamePtr,tPtr); |
|
1469 |
1566 |
1470 CleanupStack::PopAndDestroy(fileData16); |
|
1471 CleanupStack::PopAndDestroy(serverFile); |
|
1472 } |
1567 } |
|
1568 RFile file; |
|
1569 CleanupClosePushL(file); |
|
1570 User::LeaveIfError(file.Replace(iFs, fileNamePtr, EFileWrite)); |
|
1571 |
|
1572 TPtrC8 ptr8 ( (TUint8*) tPtr.Ptr(), tPtr.Size() ); |
|
1573 file.Write ( ptr8 ); |
|
1574 file.Close(); |
|
1575 CleanupStack::PopAndDestroy(1); //file |
|
1576 CleanupStack::PopAndDestroy(serverFileBuf); |
|
1577 } |
1473 |
1578 |
1474 CleanupStack::PopAndDestroy(policyFilePath); |
1579 CleanupStack::PopAndDestroy(policyFilePath); |
1475 CleanupStack::PopAndDestroy(policyFileNameBuf); |
1580 CleanupStack::PopAndDestroy(policyFileNameBuf); |
1476 CleanupStack::PopAndDestroy(fileData); |
1581 CleanupStack::PopAndDestroy(serverNameBuf); |
|
1582 CleanupStack::PopAndDestroy(serverUrlBuf); |
1477 CleanupStack::PopAndDestroy(policyServerSettingsFileName); |
1583 CleanupStack::PopAndDestroy(policyServerSettingsFileName); |
1478 } |
1584 } |
1479 |
1585 |
1480 } |
1586 } |
1481 /***/ |
1587 /***/ |