vpnengine/vpnmanager/src/vpnapiservant.cpp
branchRCL_3
changeset 46 29c8f9bc68e1
parent 41 e06095241a65
child 49 5960d2d03390
--- a/vpnengine/vpnmanager/src/vpnapiservant.cpp	Tue Sep 14 23:16:15 2010 +0300
+++ b/vpnengine/vpnmanager/src/vpnapiservant.cpp	Wed Sep 15 13:20:54 2010 +0300
@@ -26,7 +26,6 @@
 #include "pwdchanger.h"
 #include "vpnapidefs.h"
 #include "vpnmanagerserverdefs.h"
-#include "vpnextapiservantdefs.h"
 #include "vpnmaninternal.h"
 #include "log_r6.h"
 #include "agileprovisionws.h"
@@ -575,59 +574,75 @@
       /* Check if file allready exists and copy policy and vpn iap id to a new file */
       TFileName policyFileName;
       TUint32 agileProvisionAPId=0;
-            
+      
+      HBufC* serverUrlBuf=NULL;
+      
+      HBufC* serverNameBuf=NULL;
+      
+      TBuf<KMaxIapLength> iapIdBuf;
+      
+      TBool serverFileExist=EFalse;
+      
       if ( iFileUtil.FileExists(serverFilePath) )
          {
-          HBufC8* fileData=iFileUtil.LoadFileDataL(serverFilePath);
-          CleanupStack::PushL(fileData);
-             
-          TPtrC8 restOfData = fileData->Des();
-                
-          TInt bofInt;
-          TInt line=1;             
-          while ( (bofInt=restOfData.Find(KCRLF)) != KErrNotFound && line < KPolicyFileLine )
-                {
-                restOfData.Set(restOfData.Mid(bofInt + KCRLF().Length()));
-                line++;                                  
-                }
-          TInt iapIdStart=restOfData.Find(KCRLF);
-          HBufC16* iapIdBuf;
-                 
-          if ( iapIdStart!=KErrNotFound )
+          RFile serverFile;
+          User::LeaveIfError(serverFile.Open(iFs,serverFilePath, EFileRead));
+                                        
+         
+          TFileText tx;
+          tx.Set(serverFile);
+
+          TInt fileSize;
+          User::LeaveIfError(serverFile.Size(fileSize));
+
+          serverUrlBuf = HBufC::NewLC(fileSize);
+                                   
+          TPtr serverUrlPtr=serverUrlBuf->Des();
+                                   
+          User::LeaveIfError(tx.Read(serverUrlPtr));
+                                    
+          serverNameBuf = HBufC::NewLC(fileSize);
+          TPtr serverNamePtr=serverNameBuf->Des();
+                                    
+          User::LeaveIfError(tx.Read(serverNamePtr));
+           
+          TBuf<KMaxIapLength> iapIdData;
+          User::LeaveIfError(tx.Read(iapIdData));
+                         
+          TBuf<KMaxIapLength> iapModeData;
+          User::LeaveIfError(tx.Read(iapModeData));
+          
+          HBufC* policyFileNameBuf = HBufC::NewLC(fileSize);
+          TPtr policyFileNamePtr = policyFileNameBuf->Des();
+          
+          if (  tx.Read(policyFileNamePtr) == KErrNone )
               {
-              TPtrC8 iapIdPtr=restOfData.Mid(iapIdStart + KCRLF().Length(),restOfData.Length()-KCRLF().Length()-iapIdStart);
-              iapIdBuf=iFileUtil.To16BitL(iapIdPtr);
-              CleanupStack::PushL(iapIdBuf);
-              TLex iapIdConverter(*iapIdBuf);
-              iapIdConverter.Val(agileProvisionAPId,EDecimal);     
-              CleanupStack::PopAndDestroy(iapIdBuf);           
+               tx.Read(iapIdBuf);
+               
+               TLex iapIdConverter(iapIdBuf);
+               iapIdConverter.Val(agileProvisionAPId,EDecimal);
+               policyFileName = *policyFileNameBuf;
               }
-                 
-          if ( agileProvisionAPId >0)
-              {
-               restOfData.Set(restOfData.Mid(0,iapIdStart));
-               HBufC16* policyFileNameBuf = iFileUtil.To16BitL(restOfData);
-               policyFileName = *policyFileNameBuf;
-               delete policyFileNameBuf;
-              }
-          CleanupStack::PopAndDestroy(fileData);
+          CleanupStack::PopAndDestroy(policyFileNameBuf);
+          serverFile.Close();
+          serverFileExist = ETrue;
           }
       /* end of saving old values */
       
       //IAP data Max value 255 
-      TBuf<10> iapIdStr;
-      TBuf<10> iapModeStr;
-      TBuf<10> iapAgileIdStr;
+      TBuf<KMaxIapLength> iapIdStr;
+      TBuf<KMaxIapLength> iapModeStr;
+      TBuf<KMaxIapLength> iapAgileIdStr;
       
       iapIdStr.Num(serverAccountLocalData->iSelection.iId);
       iapModeStr.Num(serverAccountLocalData->iSelection.iResult);
       HBufC* serverSettingsDataBuf;
+      _LIT(KCRLF, "\n"); 
       if ( agileProvisionAPId >0 )
           {
-          iapAgileIdStr.Num(agileProvisionAPId);
-                                                                                                                          
+                                                                                                                                    
           serverSettingsDataBuf = HBufC::NewL(serverAccountLocalData->iServerNameLocal.Length() + serverAccountLocalData->iServerAddress.Length() + 
-                                              iapIdStr.Length() + iapModeStr.Length() + policyFileName.Length() + iapAgileIdStr.Length() + 5*(KCRLF().Length()) );
+                                              iapIdStr.Length() + iapModeStr.Length() + policyFileName.Length() + iapIdBuf.Length() + 5*(KCRLF().Length()) );
           }
       else
           {                                                                                                         
@@ -637,7 +652,7 @@
       CleanupStack::PushL(serverSettingsDataBuf);
       TPtr tPtr(serverSettingsDataBuf->Des());
       tPtr.Copy(serverAccountLocalData->iServerAddress);
-      _LIT(KCRLF, "\r\n"); 
+     
       tPtr.Append(KCRLF);
       tPtr.Append(serverAccountLocalData->iServerNameLocal);
       tPtr.Append(KCRLF);
@@ -649,20 +664,35 @@
           tPtr.Append(KCRLF);
           tPtr.Append(policyFileName);
           tPtr.Append(KCRLF);
-          tPtr.Append(iapAgileIdStr);
+          tPtr.Append(iapIdBuf);
           }
-     
-      iFileUtil.SaveFileDataL(serverFilePath,tPtr);
-      CleanupStack::PopAndDestroy(3);
+      
+      RFile file;
+      CleanupClosePushL(file);
+
+      User::LeaveIfError(file.Replace(iFs, serverFilePath, EFileWrite));
+      
+      TPtrC8 ptr8 ( (TUint8*) tPtr.Ptr(), tPtr.Size() );
+      file.Write ( ptr8 );
+      file.Close();
+      CleanupStack::PopAndDestroy(1); //file
+      CleanupStack::PopAndDestroy(serverSettingsDataBuf);
+      
+      if ( serverFileExist != EFalse )
+          {
+          CleanupStack::PopAndDestroy(serverNameBuf);
+          CleanupStack::PopAndDestroy(serverUrlBuf);
+          }
+      
+      CleanupStack::PopAndDestroy(serverAccountLocalData);
+      CleanupStack::PopAndDestroy(serverCreate);
+      
       aMessage.Complete(KErrNone);
     }
 
 void CVpnApiServant::ListProvisionServerL( const RMessage2& aMessage )
     {
-      _LIT8(KCRLF, "\r\n");
-      
-      const TInt KEolLen = 2;
-      
+              
       TAgileProvisionApiServerListElem* serverList = new (ELeave) TAgileProvisionApiServerListElem();
       CleanupStack::PushL(serverList);
       TPckg<TAgileProvisionApiServerListElem> serverPckg(*serverList);
@@ -670,29 +700,48 @@
       TFileName serverFilePath;
       User::LeaveIfError(iFs.PrivatePath(serverFilePath));
       serverFilePath.Append(KProvisionServerSettings);   
-      
-      HBufC8* fileData(NULL);
-     
+          
       if ( iFileUtil.FileExists(serverFilePath) )
           {
-          fileData=iFileUtil.LoadFileDataL(serverFilePath);
-          CleanupStack::PushL(fileData);
-          TInt endOfLine=fileData->Find(KCRLF);
-          serverList->iServerUrl=fileData->Mid(0,endOfLine);
+         
+          RFile serverFile;
+          User::LeaveIfError(serverFile.Open(iFs,serverFilePath, EFileRead));
+      
+      
+          TFileText tx;
+          tx.Set(serverFile);
+
+          TInt fileSize;
+          User::LeaveIfError(serverFile.Size(fileSize));
+
+          HBufC* serverUrlBuf = HBufC::NewLC(fileSize);
+         
+          TPtr serverUrlPtr=serverUrlBuf->Des();
+         
+          User::LeaveIfError(tx.Read(serverUrlPtr));
           
-          TInt startOfLine(endOfLine+KEolLen);
-          TPtrC8 nameData=fileData->Right(fileData->Length()-startOfLine);
-          endOfLine=nameData.Find(KCRLF);
-          HBufC16* serverName=iFileUtil.To16BitL(nameData.Left(endOfLine));
-          serverList->iServerNameLocal=*serverName;
-          delete serverName;
-          serverName = NULL;
+          HBufC8* serverUrl=iFileUtil.To8BitL(serverUrlPtr);
+          serverList->iServerUrl=*serverUrl;
+          
+          delete serverUrl;
+          serverUrl=NULL;
+          
+          CleanupStack::PopAndDestroy(serverUrlBuf);
+          
+          HBufC* serverNameBuf = HBufC::NewLC(fileSize);
+          TPtr serverNamePtr=serverNameBuf->Des();
+          
+          User::LeaveIfError(tx.Read(serverNamePtr));
+          
+          serverList->iServerNameLocal=serverNamePtr;
+                   
+          CleanupStack::PopAndDestroy(serverNameBuf);
+          
+          serverFile.Close();
           }
       
       aMessage.WriteL(0, serverPckg);
-      if ( iFileUtil.FileExists(serverFilePath) )
-          CleanupStack::PopAndDestroy(fileData);
-      
+          
       CleanupStack::PopAndDestroy(serverList);
       aMessage.Complete(KErrNone);
     }
@@ -704,59 +753,65 @@
       CleanupStack::PushL(serverList);
       TPckg<TAgileProvisionApiServerSettings> serverPckg(*serverList);
       
-      _LIT8(KCRLF, "\r\n");     
-      
       TFileName serverFilePath;
       User::LeaveIfError(iFs.PrivatePath(serverFilePath));
       serverFilePath.Append(KProvisionServerSettings);  
       
-      HBufC8* fileData(NULL);
-      const TInt KEolLen = 2;
-      TBool serverFileExist = EFalse;
-      
       if ( iFileUtil.FileExists(serverFilePath) )
          {
-          fileData=iFileUtil.LoadFileDataL(serverFilePath);
-          CleanupStack::PushL(fileData);  
-          TInt endOfLine=fileData->Find(KCRLF);
-          serverList->iServerUrl=fileData->Mid(0,endOfLine);
-                
-          TInt startOfLine(endOfLine+2);
-          TPtrC8 nameData=fileData->Right(fileData->Length()-startOfLine);
-          endOfLine=nameData.Find(KCRLF);      
-             
-          HBufC16* serverName=iFileUtil.To16BitL(nameData.Left(endOfLine));
-          serverList->iServerNameLocal=*serverName;
-          delete serverName;
-          serverName = NULL;
+          RFile serverFile;
+          User::LeaveIfError(serverFile.Open(iFs,serverFilePath, EFileRead));
+            
+          TFileText tx;
+          tx.Set(serverFile);
+
+          TInt fileSize;
+          User::LeaveIfError(serverFile.Size(fileSize));
           
-          startOfLine = endOfLine + KEolLen;
-          TPtrC8 iapIdData=nameData.Right(nameData.Length()-startOfLine);
-          endOfLine=iapIdData.Find(KCRLF);
-          TLex8 iapIdConverter(iapIdData.Left(endOfLine));
+          HBufC* serverUrlBuf = HBufC::NewLC(fileSize);
+                   
+          TPtr serverUrlPtr=serverUrlBuf->Des();
+                   
+          User::LeaveIfError(tx.Read(serverUrlPtr));
+                    
+          HBufC8* serverUrl=iFileUtil.To8BitL(serverUrlPtr);
+          serverList->iServerUrl=*serverUrl;
+                    
+          delete serverUrl;
+          serverUrl=NULL;
+                    
+          CleanupStack::PopAndDestroy(serverUrlBuf);
+                    
+          HBufC* serverNameBuf = HBufC::NewLC(fileSize);
+          TPtr serverNamePtr=serverNameBuf->Des();
+                    
+          User::LeaveIfError(tx.Read(serverNamePtr));
+                    
+          serverList->iServerNameLocal=serverNamePtr;
+                             
+          CleanupStack::PopAndDestroy(serverNameBuf);
+          
+          TBuf<KMaxIapLength> iapIdData;
+          User::LeaveIfError(tx.Read(iapIdData));
+                    
+          TLex iapIdConverter(iapIdData);
           TUint idInt;
           iapIdConverter.Val(idInt);
           serverList->iSelection.iId = idInt;
         
-          startOfLine = endOfLine + KEolLen;
-          TPtrC8 iapModeData=iapIdData.Right(iapIdData.Length()-startOfLine);
-          TLex8 iapModeConverter;
-          endOfLine=iapModeData.Find(KCRLF);
-          if ( endOfLine==KErrNotFound )
-              iapModeConverter = iapModeData;
-          else
-              iapModeConverter = iapModeData.Left(endOfLine);
-              
+          TBuf<KMaxIapLength> iapModeData;
+          User::LeaveIfError(tx.Read(iapModeData));
+          
+          TLex iapModeConverter = iapModeData;
           iapModeConverter.Val(idInt);
+          
           CMManager::TCmSettingSelectionMode selectionMode = (CMManager::TCmSettingSelectionMode) idInt;
           serverList->iSelection.iResult = selectionMode; 
-          serverFileExist = ETrue;   
+          
+          serverFile.Close();
           }
       aMessage.WriteL(0, serverPckg);
       
-      if ( serverFileExist )
-          CleanupStack::PopAndDestroy(fileData);
-      
       CleanupStack::PopAndDestroy(serverList);
       
       aMessage.Complete(KErrNone);
@@ -800,62 +855,55 @@
     TAgileProvisionPolicy* policy = new (ELeave) TAgileProvisionPolicy();
     CleanupStack::PushL(policy);
     TPckg<TAgileProvisionPolicy> serverPckg(*policy);
-    
-    _LIT8(KCRLF, "\r\n");
-    
+          
     TFileName serverFilePath;
     User::LeaveIfError(iFs.PrivatePath(serverFilePath));
     serverFilePath.Append(KProvisionServerSettings);  
     
-    HBufC8* fileData(NULL);
-         
-    const TInt KEolLen = 2;
-    TBool serverFileExist = EFalse;
-    
     if ( iFileUtil.FileExists(serverFilePath) )
        {
-        fileData=iFileUtil.LoadFileDataL(serverFilePath);
-        CleanupStack::PushL(fileData);   
-        TInt endOfLine=fileData->Find(KCRLF);
-        if (endOfLine<=0)
-            User::Leave(KErrArgument);
+        RFile serverFile;
+        User::LeaveIfError(serverFile.Open(iFs,serverFilePath, EFileRead));
+                                       
+        TFileText tx;
+        tx.Set(serverFile);
+
+        TInt fileSize;
+        User::LeaveIfError(serverFile.Size(fileSize));
+
+        HBufC* serverUrlBuf = HBufC::NewLC(fileSize);
+                                  
+        TPtr serverUrlPtr=serverUrlBuf->Des();
+                                  
+        User::LeaveIfError(tx.Read(serverUrlPtr));
+                                   
+        HBufC* serverNameBuf = HBufC::NewLC(fileSize);
+        TPtr serverNamePtr=serverNameBuf->Des();
+                                   
+        User::LeaveIfError(tx.Read(serverNamePtr));
+                                   
+        TBuf<KMaxIapLength> iapIdData;
+        User::LeaveIfError(tx.Read(iapIdData));
                         
-        TInt startOfLine(endOfLine + KEolLen);
-        TPtrC8 nameData=fileData->Right(fileData->Length()-startOfLine);
-        endOfLine=nameData.Find(KCRLF);      
-        if (endOfLine<=0)
-            User::Leave(KErrArgument);      
-                
-        startOfLine = endOfLine + KEolLen;
-        TPtrC8 iapIdData=nameData.Right(nameData.Length()-startOfLine);
-        endOfLine=iapIdData.Find(KCRLF);
-        if (endOfLine<=0)
-            User::Leave(KErrArgument);      
-           
-        startOfLine = endOfLine + KEolLen;
-        TPtrC8 iapModeData=iapIdData.Right(iapIdData.Length()-startOfLine);
-        endOfLine=iapModeData.Find(KCRLF);
-        if (endOfLine<=0)
-            User::Leave(KErrArgument);      
+        TBuf<KMaxIapLength> iapModeData;
+        User::LeaveIfError(tx.Read(iapModeData));
+                                           
+        TBuf<KMaxIapLength> iapIdBuf;
+               
+        HBufC* policyFileNameBuf = HBufC::NewLC(fileSize);
+        TPtr policyFileNamePtr = policyFileNameBuf->Des();
+               
+        User::LeaveIfError(tx.Read(policyFileNamePtr));
+        policy->iPolicyName = policyFileNamePtr;
+        CleanupStack::PopAndDestroy(policyFileNameBuf);
+        serverFile.Close();
         
-        startOfLine = endOfLine + KEolLen;
-        TPtrC8 policyData=iapModeData.Right(iapModeData.Length()-startOfLine);
-        endOfLine=policyData.Find(KCRLF);
-        if (endOfLine<=0)
-            User::Leave(KErrArgument);      
-        
-        HBufC16* policyName = iFileUtil.To16BitL(policyData.Left(endOfLine));
-        policy->iPolicyName = *policyName;
-        delete policyName;
-        policyName=NULL;
-        serverFileExist = ETrue;
+        CleanupStack::PopAndDestroy(serverNameBuf);
+        CleanupStack::PopAndDestroy(serverUrlBuf);
         }
 
     aMessage.WriteL(0, serverPckg);
-    
-    if ( serverFileExist )
-        CleanupStack::PopAndDestroy(fileData);
-    
+           
     CleanupStack::PopAndDestroy(policy);
     
     aMessage.Complete(KErrNone);