vpnengine/vpnmanager/inc/policystore.h
changeset 0 33413c0669b9
equal deleted inserted replaced
-1:000000000000 0:33413c0669b9
       
     1 /*
       
     2 * Copyright (c) 2003-2007 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 "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:   Policy store
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef __POLICYSTORE_H__
       
    21 #define __POLICYSTORE_H__
       
    22 
       
    23 #include <e32std.h>
       
    24 #include <e32base.h>
       
    25 #include <es_sock.h>
       
    26 #include <es_enum.h>
       
    27 #include <cmmanager.h>
       
    28 
       
    29 #include "fileutil.h"
       
    30 #include "vpnapidefs.h"
       
    31 #include "pkiutil.h"
       
    32 
       
    33 const TInt KUnfoundIndex( KErrNotFound );
       
    34 
       
    35 class RConnection;
       
    36 class CVpnApiServant;
       
    37 class CIkeData;
       
    38 class RPKIServiceAPI;
       
    39 
       
    40  /**
       
    41  *  Maintains the VPN policy store.
       
    42  *
       
    43  *  @lib internal (vpnmanager.exe)
       
    44  *  @since S60 3.0
       
    45  */
       
    46 class CPolicyStore : public CBase
       
    47     {
       
    48 public:
       
    49     static CPolicyStore* NewL(RFs& aFs);
       
    50     ~CPolicyStore();
       
    51 
       
    52     void ImportPolicyL(const TFileName& aPinFile, const TFileName& aPolFile,
       
    53                        TVpnPolicyId* aNewPolicyId = NULL);
       
    54     TInt DeletePolicyL(const TVpnPolicyId& aPolicyId);
       
    55     void ReplacePolicyL(const TVpnPolicyId& aPolicyToReplace,
       
    56                         const TVpnPolicyId& aReplacingPolicy);
       
    57     TInt PolicyCount();
       
    58     TInt GetPolicyInfo(const TVpnPolicyId& aPolicyId, 
       
    59                        TVpnPolicyInfo& aPolicyInfo);
       
    60     TInt GetPolicyDetailsL(const TVpnPolicyId& aPolicyId, 
       
    61                            TVpnPolicyDetails& aPolicyDetails);
       
    62                            
       
    63                            
       
    64     TInt LoadPolicyDataL(const TVpnPolicyId& aPolicyId, HBufC8*& aPolicyData);
       
    65     
       
    66     TUint8* RawPolicyData();
       
    67 
       
    68     void AddNewPolicyL(TVpnPolicyDetails& aPolicyDetails, const TDesC8& aPolicyData);
       
    69     void UpdatePolicyDetailsL(TVpnPolicyDetails& aPolicyDetails);
       
    70     void UpdatePolicyDataL(const TVpnPolicyId& aPolicyId, const TDesC8& aPolicyData);
       
    71     
       
    72 private: // C'tor
       
    73     CPolicyStore(RFs& aFs);
       
    74     void ConstructL();
       
    75 
       
    76     void ConstructPolicyListL();
       
    77 
       
    78 private: // implementation
       
    79     void AddPolicyL(const TVpnPolicyId& aPolicyId);
       
    80     TVpnPolicyId NewPolicyIdL();
       
    81     TVpnPolicyInfo* PolicyInfo(const TVpnPolicyId& aPolicyId);
       
    82     TInt PolicyIndex(const TVpnPolicyId& aPolicyId);
       
    83     TInt PolicyIndexVisible(const TVpnPolicyId& aPolicyId);
       
    84     TPolicyUsageStatus PolicyUsageStatusL(const TVpnPolicyId& aPolicyId );
       
    85     TBool PolicyAssignedToIapL(RCmManager& aCmManager,
       
    86                                const TVpnPolicyId& aPolicyId,
       
    87                                TBool& aPolicyActive);
       
    88     void ConnectionMethodsLC(RArray<TUint32>& aVpnConnections,
       
    89                              RCmManager& aCmManager,
       
    90                              const TVpnPolicyId& aPolicyId,
       
    91                              TBool& aPolicyActive);
       
    92     TPolicyPkiStatus PolicyPkiStatusL(const TVpnPolicyId& aPolicyId);
       
    93  
       
    94     TCertStatus PolicyCertificateStatusL(CIkeData* aIkeData) const;
       
    95     
       
    96     void EnsureUniquePolicyNameL(const TFileName& aPinFile);
       
    97     TBool DoEnsureUniquePolicyNameL(TVpnPolicyDetails& aPolicyDetails);    
       
    98     TBool PolicyNameExists(const TDesC& aPolicyName);
       
    99     HBufC* MakeNewPolicyNameL(const TDes& aOriginalPolicyName, TInt aSequenceNumber);
       
   100     TBool IsHiddenPolicyL(const TVpnPolicyId& aPolicyId);
       
   101     void UpdateVisiblePolicyInfoL(const TVpnPolicyDetails& aPolicyDetails);    
       
   102     
       
   103 private: // data 
       
   104     RFs& iFs;
       
   105     TFileUtil iFileUtil;
       
   106     /// Own: Policy list
       
   107     CArrayFixFlat<TVpnPolicyInfo>* iPolicyListAll;
       
   108     /// Own: List of visible policies
       
   109     CArrayFixFlat<TVpnPolicyInfo>* iPolicyListVisible;
       
   110     };
       
   111 
       
   112  /**
       
   113  *  Internal helper class
       
   114  *
       
   115  *  @lib internal (vpnmanager.exe)
       
   116  *  @since S60 3.0
       
   117  */
       
   118 class CFileInfoContainer : public CBase
       
   119     {
       
   120 public:
       
   121     ~CFileInfoContainer() 
       
   122         {
       
   123         delete iPinFileToReplace;
       
   124         delete iPolFileToReplace;
       
   125         delete iReplacingPinFile;
       
   126         delete iReplacingPolFile;
       
   127         };
       
   128 
       
   129     HBufC* iPinFileToReplace;
       
   130     HBufC* iPolFileToReplace;
       
   131     HBufC* iReplacingPinFile;
       
   132     HBufC* iReplacingPolFile;
       
   133     TVpnPolicyDetails iOldPolicyDetails;
       
   134     TVpnPolicyDetails iNewPolicyDetails;
       
   135     };
       
   136 
       
   137 #endif // __POLICYSTORE_H__