Bug 133386 fixes
This commit is contained in:
parent
96b2637e43
commit
72c87b8e2e
@ -20,415 +20,446 @@
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using System.Collections.Specialized;
|
||||
using Novell.CASA.DataEngines.Common;
|
||||
using Novell.CASA.CASAPolicy;
|
||||
#if LINUX
|
||||
using Novell.CASA.GUI;
|
||||
#endif
|
||||
|
||||
namespace Novell.CASA.DataEngines
|
||||
{
|
||||
|
||||
public class AD
|
||||
{
|
||||
|
||||
private miCASAEngine micasaengine;
|
||||
#if LINUX
|
||||
private GKEngine gkEngine = null;
|
||||
private KWalletEngine kwEngine = null;
|
||||
#endif
|
||||
private AggregationPol aggPol;
|
||||
|
||||
|
||||
public AD()
|
||||
{
|
||||
// Always Aggregate miCASA.
|
||||
micasaengine = new miCASAEngine();
|
||||
#if LINUX
|
||||
kwEngine = new KWalletEngine();
|
||||
gkEngine = new GKEngine();
|
||||
#endif
|
||||
/*
|
||||
|
||||
// Reading Policy to see what else needs to be Aggregated.
|
||||
aggPol = (AggregationPol) ICASAPol.GetPolicy(CASAPolType.AGGREGATION_POL);
|
||||
if (aggPol != null )
|
||||
{
|
||||
ArrayList stores = aggPol.StoreList;
|
||||
IEnumerator enumerator = stores.GetEnumerator();
|
||||
|
||||
while(enumerator.MoveNext())
|
||||
{
|
||||
string storeID = (((Store)(enumerator.Current)).StoreName);
|
||||
|
||||
if(storeID.Equals(ConstStrings.KW))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib: KWallet Set up for Aggregation");
|
||||
kwEngine = new KWalletEngine();
|
||||
}
|
||||
else if(storeID.Equals(ConstStrings.GK))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Gnome Keyring Set up for Aggregation");
|
||||
gkEngine = new GKEngine();
|
||||
}
|
||||
// Console.WriteLine("StoreName = " + ((Store)(enumerator.Current)).StoreName + "StoreId = " + ((Store)(enumerator.Current)).StoreId);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
public XmlDocument Aggregate()
|
||||
{
|
||||
#if LINUX
|
||||
gkEngine = null;
|
||||
kwEngine = null;
|
||||
#endif
|
||||
//Read the Policy Just before you aggregate
|
||||
|
||||
// Reading Policy to see what else needs to be Aggregated.
|
||||
aggPol = (AggregationPol) ICASAPol.GetPolicy(CASAPolType.AGGREGATION_POL);
|
||||
if (aggPol != null )
|
||||
{
|
||||
ArrayList stores = aggPol.StoreList;
|
||||
IEnumerator enumerator = stores.GetEnumerator();
|
||||
|
||||
while(enumerator.MoveNext())
|
||||
{
|
||||
string storeID = (((Store)(enumerator.Current)).StoreName);
|
||||
|
||||
#if LINUX
|
||||
if(storeID.Equals(ConstStrings.KW))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib: KWallet Set up for Aggregation");
|
||||
kwEngine = new KWalletEngine();
|
||||
}
|
||||
else if(storeID.Equals(ConstStrings.GK))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Gnome Keyring Set up for Aggregation");
|
||||
gkEngine = new GKEngine();
|
||||
}
|
||||
#endif
|
||||
// Console.WriteLine("StoreName = " + ((Store)(enumerator.Current)).StoreName + "StoreId = " + ((Store)(enumerator.Current)).StoreId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
XmlDocument ccf = new XmlDocument();
|
||||
XmlElement elem = ccf.CreateElement("CCF");
|
||||
ccf.AppendChild(elem);
|
||||
|
||||
// TBD: Lookup Policy here and maybe send it via constructors
|
||||
XmlNode micasaEnum = micasaengine.Aggregate();
|
||||
if (micasaEnum != null) //Atleast <miCASA> should come incase of no secrets
|
||||
{
|
||||
XmlNode gotit = ccf.ImportNode(micasaEnum,true);
|
||||
ccf.DocumentElement.AppendChild(gotit);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Null comes only when it failed to talk to miCASA.
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to miCASA");
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LINUX
|
||||
if (gkEngine != null)
|
||||
{
|
||||
XmlNode gkSecrets = gkEngine.Aggregate();
|
||||
if( null != gkSecrets )
|
||||
{
|
||||
XmlNode gkImportedNode = ccf.ImportNode(gkSecrets,true);
|
||||
ccf.DocumentElement.AppendChild(gkImportedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to Gnome Keyring");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(kwEngine != null )
|
||||
{
|
||||
XmlNode KwEnum = kwEngine.Aggregate();
|
||||
if (KwEnum != null) //Atleast <KWallet> should come incase of no secrets
|
||||
{
|
||||
XmlNode kwImported = ccf.ImportNode(KwEnum,true);
|
||||
ccf.DocumentElement.AppendChild(kwImported);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Null comes only when it failed to talk to Kwallet.
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to KWallet");
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
return ccf;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
Modifying a Secret
|
||||
|
||||
SetSecret will modify the Value(s) of a Key(s) for an existing secret
|
||||
SetSecret will also add new secrets
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XMLNode
|
||||
1. If a Key node of a secret is missing then that key will be deleted
|
||||
2. For Gnome keyring, Key having Id "GkPassword" cannot be deleted as
|
||||
Gnome Api's do not allow it.
|
||||
3. All Time nodes for a Secret need not be passed as they cannot be set.
|
||||
4. Keyring attributes have a fixed datatype of Int and String.
|
||||
Currently we support only String types. To support int types CCF needs to be modified accordingly.
|
||||
5. SetSecret overloaded method, without the opnType parameter, is not supported for GnomeKeyring
|
||||
|
||||
opnType : Operation Type
|
||||
ConstStrings.OPERATION_ADD_SECRET
|
||||
ConstStrings.OPERATION_MODIFY_SECRET
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
*********************************************************************************/
|
||||
|
||||
public int SetSecret(XmlNode secret, int opnType, int StoreID)
|
||||
{
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.SetSecret(secret, opnType);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.SetSecret(secret, opnType);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.SetSecret(secret, opnType);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Set Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
Modifying a Secret
|
||||
|
||||
SetSecret will modify the Value(s) of a Key(s) for an existing secret
|
||||
SetSecret will also add new secrets
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XMLNode
|
||||
1. If a Key node of a secret is missing then that key will be deleted
|
||||
2. For Gnome keyring, Key having Id "GkPassword" cannot be deleted as
|
||||
Gnome Api's do not allow it.
|
||||
3. All Time nodes for a Secret need not be passed as they cannot be set.
|
||||
4. Keyring attributes have a fixed datatype of Int and String.
|
||||
Currently we support only String types. To support int types CCF needs to be modified accordingly.
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
*********************************************************************************/
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
{
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.SetSecret(secret);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.SetSecret(secret);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.SetSecret(secret);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Set Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int GetSecret(XmlNode secret, int StoreID)
|
||||
{
|
||||
|
||||
//TBD: Check for Store ID and call the right DataEngine.
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.GetSecret(secret);
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib: Failed to Get Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Remove will delete a Secret.
|
||||
|
||||
public int Remove(XmlNode secret, int StoreID)
|
||||
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XmlNode
|
||||
1. This node will be deleted from its parent.
|
||||
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
|
||||
*********************************************************************************/
|
||||
|
||||
public int Remove(XmlNode secret, int StoreID)
|
||||
{
|
||||
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.Remove(secret);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.Remove(secret);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.Remove(secret);
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int AggregateStore(XmlDocument outDoc, int StoreID)
|
||||
{
|
||||
// This need not be policy aware. GUI knows what its doing.
|
||||
|
||||
XmlNode secEnum;
|
||||
DataEngine engine;
|
||||
|
||||
XmlNode toproot = outDoc.DocumentElement;
|
||||
if (toproot == null)
|
||||
{
|
||||
XmlElement elem = outDoc.CreateElement("CCF");
|
||||
outDoc.AppendChild(elem);
|
||||
}
|
||||
|
||||
if ( StoreID == ConstStrings.CASA_STORE_MICASA ) // If its miCASA
|
||||
{
|
||||
engine = micasaengine;
|
||||
secEnum = engine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList miCASANodes = root.SelectNodes("descendant::miCASA");
|
||||
// Console.WriteLine("ADLIB: Count is " + miCASANodes.Count);
|
||||
if (miCASANodes.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(miCASANodes[0]);
|
||||
}
|
||||
XmlNode gotit = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(gotit);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
}
|
||||
#if LINUX
|
||||
else if( StoreID == ConstStrings.CASA_STORE_GK )
|
||||
{
|
||||
gkEngine = new GKEngine();
|
||||
secEnum = gkEngine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList gkNode = root.SelectNodes("descendant::GK");
|
||||
if (gkNode.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(gkNode[0]);
|
||||
}
|
||||
XmlNode gkImportNode = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(gkImportNode);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
|
||||
}
|
||||
else if(StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
{
|
||||
kwEngine = new KWalletEngine();
|
||||
secEnum = kwEngine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList gkNode = root.SelectNodes("descendant::KWallet");
|
||||
if (gkNode.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(gkNode[0]);
|
||||
}
|
||||
XmlNode kwImportNode = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(kwImportNode);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Console.WriteLine("KWallet some issue");
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Logger.DbgLog("A-D Lib: Unknown Operation Requested");
|
||||
#endif
|
||||
return ConstStrings.CASA_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
public int InitAD()
|
||||
{
|
||||
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
public int CleanUP_AD()
|
||||
{
|
||||
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using System.Collections.Specialized;
|
||||
using Novell.CASA.DataEngines.Common;
|
||||
using Novell.CASA.CASAPolicy;
|
||||
#if LINUX
|
||||
using Novell.CASA.GUI;
|
||||
#endif
|
||||
|
||||
namespace Novell.CASA.DataEngines
|
||||
{
|
||||
|
||||
public class AD
|
||||
{
|
||||
|
||||
private miCASAEngine micasaengine;
|
||||
#if LINUX
|
||||
private GKEngine gkEngine = null;
|
||||
private KWalletEngine kwEngine = null;
|
||||
#endif
|
||||
private AggregationPol aggPol;
|
||||
|
||||
|
||||
public AD()
|
||||
{
|
||||
// Always Aggregate miCASA.
|
||||
micasaengine = new miCASAEngine();
|
||||
#if LINUX
|
||||
kwEngine = new KWalletEngine();
|
||||
gkEngine = new GKEngine();
|
||||
#endif
|
||||
/*
|
||||
|
||||
// Reading Policy to see what else needs to be Aggregated.
|
||||
aggPol = (AggregationPol) ICASAPol.GetPolicy(CASAPolType.AGGREGATION_POL);
|
||||
if (aggPol != null )
|
||||
{
|
||||
ArrayList stores = aggPol.StoreList;
|
||||
IEnumerator enumerator = stores.GetEnumerator();
|
||||
|
||||
while(enumerator.MoveNext())
|
||||
{
|
||||
string storeID = (((Store)(enumerator.Current)).StoreName);
|
||||
|
||||
if(storeID.Equals(ConstStrings.KW))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib: KWallet Set up for Aggregation");
|
||||
kwEngine = new KWalletEngine();
|
||||
}
|
||||
else if(storeID.Equals(ConstStrings.GK))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Gnome Keyring Set up for Aggregation");
|
||||
gkEngine = new GKEngine();
|
||||
}
|
||||
// Console.WriteLine("StoreName = " + ((Store)(enumerator.Current)).StoreName + "StoreId = " + ((Store)(enumerator.Current)).StoreId);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
public XmlDocument Aggregate()
|
||||
{
|
||||
#if LINUX
|
||||
gkEngine = null;
|
||||
kwEngine = null;
|
||||
#endif
|
||||
//Read the Policy Just before you aggregate
|
||||
|
||||
// Reading Policy to see what else needs to be Aggregated.
|
||||
aggPol = (AggregationPol) ICASAPol.GetPolicy(CASAPolType.AGGREGATION_POL);
|
||||
if (aggPol != null )
|
||||
{
|
||||
ArrayList stores = aggPol.StoreList;
|
||||
IEnumerator enumerator = stores.GetEnumerator();
|
||||
|
||||
while(enumerator.MoveNext())
|
||||
{
|
||||
string storeID = (((Store)(enumerator.Current)).StoreName);
|
||||
|
||||
#if LINUX
|
||||
if(storeID.Equals(ConstStrings.KW))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib: KWallet Set up for Aggregation");
|
||||
kwEngine = new KWalletEngine();
|
||||
}
|
||||
else if(storeID.Equals(ConstStrings.GK))
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Gnome Keyring Set up for Aggregation");
|
||||
gkEngine = new GKEngine();
|
||||
}
|
||||
#endif
|
||||
// Console.WriteLine("StoreName = " + ((Store)(enumerator.Current)).StoreName + "StoreId = " + ((Store)(enumerator.Current)).StoreId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
XmlDocument ccf = new XmlDocument();
|
||||
XmlElement elem = ccf.CreateElement("CCF");
|
||||
ccf.AppendChild(elem);
|
||||
|
||||
// TBD: Lookup Policy here and maybe send it via constructors
|
||||
XmlNode micasaEnum = micasaengine.Aggregate();
|
||||
if (micasaEnum != null) //Atleast <miCASA> should come incase of no secrets
|
||||
{
|
||||
XmlNode gotit = ccf.ImportNode(micasaEnum,true);
|
||||
ccf.DocumentElement.AppendChild(gotit);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Null comes only when it failed to talk to miCASA.
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to miCASA");
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LINUX
|
||||
if (gkEngine != null)
|
||||
{
|
||||
XmlNode gkSecrets = gkEngine.Aggregate();
|
||||
if( null != gkSecrets )
|
||||
{
|
||||
XmlNode gkImportedNode = ccf.ImportNode(gkSecrets,true);
|
||||
ccf.DocumentElement.AppendChild(gkImportedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to Gnome Keyring");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(kwEngine != null )
|
||||
{
|
||||
XmlNode KwEnum = kwEngine.Aggregate();
|
||||
if (KwEnum != null) //Atleast <KWallet> should come incase of no secrets
|
||||
{
|
||||
XmlNode kwImported = ccf.ImportNode(KwEnum,true);
|
||||
ccf.DocumentElement.AppendChild(kwImported);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Null comes only when it failed to talk to Kwallet.
|
||||
Logger.DbgLog("A-D Lib:Failed to Connect to KWallet");
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
return ccf;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
Modifying a Secret
|
||||
|
||||
SetSecret will modify the Value(s) of a Key(s) for an existing secret
|
||||
SetSecret will also add new secrets
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XMLNode
|
||||
1. If a Key node of a secret is missing then that key will be deleted
|
||||
2. For Gnome keyring, Key having Id "GkPassword" cannot be deleted as
|
||||
Gnome Api's do not allow it.
|
||||
3. All Time nodes for a Secret need not be passed as they cannot be set.
|
||||
4. Keyring attributes have a fixed datatype of Int and String.
|
||||
Currently we support only String types. To support int types CCF needs to be modified accordingly.
|
||||
5. SetSecret overloaded method, without the opnType parameter, is not supported for GnomeKeyring
|
||||
|
||||
opnType : Operation Type
|
||||
ConstStrings.OPERATION_ADD_SECRET
|
||||
ConstStrings.OPERATION_MODIFY_SECRET
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
*********************************************************************************/
|
||||
|
||||
public int SetSecret(XmlNode secret, int opnType, int StoreID)
|
||||
{
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.SetSecret(secret, opnType);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.SetSecret(secret, opnType);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.SetSecret(secret, opnType);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Set Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************************************************************************
|
||||
Modifying a Secret
|
||||
|
||||
SetSecret will modify the Value(s) of a Key(s) for an existing secret
|
||||
SetSecret will also add new secrets
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XMLNode
|
||||
1. If a Key node of a secret is missing then that key will be deleted
|
||||
2. For Gnome keyring, Key having Id "GkPassword" cannot be deleted as
|
||||
Gnome Api's do not allow it.
|
||||
3. All Time nodes for a Secret need not be passed as they cannot be set.
|
||||
4. Keyring attributes have a fixed datatype of Int and String.
|
||||
Currently we support only String types. To support int types CCF needs to be modified accordingly.
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
*********************************************************************************/
|
||||
|
||||
public int SetSecret(XmlNode secret, int StoreID)
|
||||
{
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.SetSecret(secret);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.SetSecret(secret);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.SetSecret(secret);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib:Failed to Set Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int GetSecret(XmlNode secret, int StoreID)
|
||||
{
|
||||
|
||||
//TBD: Check for Store ID and call the right DataEngine.
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.GetSecret(secret);
|
||||
else
|
||||
{
|
||||
#if LINUX
|
||||
Logger.DbgLog("A-D Lib: Failed to Get Secret in to miCASA");
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Remove will delete a Secret.
|
||||
|
||||
public int Remove(XmlNode secret, int StoreID)
|
||||
|
||||
|
||||
Parameters
|
||||
|
||||
secret : Secrets XmlNode
|
||||
1. This node will be deleted from its parent.
|
||||
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
|
||||
Returns
|
||||
An Error code or 0 if operation is successfull.
|
||||
|
||||
*********************************************************************************/
|
||||
|
||||
public int Remove(XmlNode secret, int StoreID)
|
||||
{
|
||||
|
||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||
return micasaengine.Remove(secret);
|
||||
#if LINUX
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return kwEngine.Remove(secret);
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return gkEngine.Remove(secret);
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int AggregateStore(XmlDocument outDoc, int StoreID)
|
||||
{
|
||||
// This need not be policy aware. GUI knows what its doing.
|
||||
|
||||
XmlNode secEnum;
|
||||
DataEngine engine;
|
||||
|
||||
XmlNode toproot = outDoc.DocumentElement;
|
||||
if (toproot == null)
|
||||
{
|
||||
XmlElement elem = outDoc.CreateElement("CCF");
|
||||
outDoc.AppendChild(elem);
|
||||
}
|
||||
|
||||
if ( StoreID == ConstStrings.CASA_STORE_MICASA ) // If its miCASA
|
||||
{
|
||||
engine = micasaengine;
|
||||
secEnum = engine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList miCASANodes = root.SelectNodes("descendant::miCASA");
|
||||
// Console.WriteLine("ADLIB: Count is " + miCASANodes.Count);
|
||||
if (miCASANodes.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(miCASANodes[0]);
|
||||
}
|
||||
XmlNode gotit = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(gotit);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
}
|
||||
#if LINUX
|
||||
else if( StoreID == ConstStrings.CASA_STORE_GK )
|
||||
{
|
||||
gkEngine = new GKEngine();
|
||||
secEnum = gkEngine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList gkNode = root.SelectNodes("descendant::GK");
|
||||
if (gkNode.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(gkNode[0]);
|
||||
}
|
||||
XmlNode gkImportNode = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(gkImportNode);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
|
||||
}
|
||||
else if(StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
{
|
||||
kwEngine = new KWalletEngine();
|
||||
secEnum = kwEngine.Aggregate();
|
||||
if (secEnum != null )
|
||||
{
|
||||
XmlNode root = outDoc.DocumentElement;
|
||||
XmlNodeList gkNode = root.SelectNodes("descendant::KWallet");
|
||||
if (gkNode.Count != 0) // If there is something remove it
|
||||
{
|
||||
root.RemoveChild(gkNode[0]);
|
||||
}
|
||||
XmlNode kwImportNode = outDoc.ImportNode(secEnum,true);
|
||||
root.AppendChild(kwImportNode);
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Console.WriteLine("KWallet some issue");
|
||||
return ConstStrings.CASA_STORE_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Logger.DbgLog("A-D Lib: Unknown Operation Requested");
|
||||
#endif
|
||||
return ConstStrings.CASA_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
public int InitAD()
|
||||
{
|
||||
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
public int CleanUP_AD()
|
||||
{
|
||||
|
||||
return ConstStrings.CASA_SUCCESS;
|
||||
}
|
||||
/***********************************************************************************************
|
||||
IsStoreAvailable : Checks If Store Is Available
|
||||
It loads the required dlls for a particular store and returns true if
|
||||
all required dll/.so are present.
|
||||
|
||||
public static Boolean IsStoreAvailable(int StoreID);
|
||||
|
||||
Parameters
|
||||
|
||||
StoreID : int value
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_KWALLET = 3;
|
||||
Novell.CASA.DataEngines.Common.ConstStrings.CASA_STORE_GK = 4
|
||||
|
||||
Remarks
|
||||
1. This API needs to be called before any other API of the particular store is called.
|
||||
2. This API needs to be called before Aggregate() and AD_Facade constructor is called
|
||||
as these initializes the Datangines based on the Aggregate Policy set.
|
||||
3. The Aggregate Policy needs to be reset appropriately based on the return value of this call.
|
||||
***********************************************************************************************/
|
||||
|
||||
|
||||
|
||||
public static Boolean IsStoreAvailable(int StoreID)
|
||||
{
|
||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||
return GKEngine.IsStoreAvailable();
|
||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||
return KWalletEngine.IsStoreAvailable();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -52,11 +52,11 @@ namespace Novell.CASA.DataEngines
|
||||
public GKEngine()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
~GKEngine()
|
||||
{
|
||||
GnomeKeyring.ReleaseGnomeKeyringLib();
|
||||
}
|
||||
|
||||
~GKEngine()
|
||||
{
|
||||
//GnomeKeyring.ReleaseGnomeKeyringLib();
|
||||
}
|
||||
|
||||
public XmlNode Aggregate()
|
||||
@ -297,11 +297,11 @@ namespace Novell.CASA.DataEngines
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Runtime.InteropServices.Marshal.PrelinkAll(typeof(GnomeKeyring));
|
||||
if (GnomeKeyring.IsGnomeKeyringInstalled())
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
System.Runtime.InteropServices.Marshal.PrelinkAll(typeof(GnomeKeyring));
|
||||
//if (GnomeKeyring.IsGnomeKeyringInstalled())
|
||||
return true;
|
||||
//else
|
||||
// return false;
|
||||
}
|
||||
catch(DllNotFoundException d)
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -110,23 +110,23 @@ namespace Novell.CASA.DataEngines.GK
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int CreateItem(string keyringName, int itemType, string displayName, string password, IntPtr[] arrptr, int attrCount);
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int UnlockRing(string sKeyringName, string sPassword);
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int LoadGnomeKeyringLibrary();
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int ReleaseGnomeKeyringLibrary();
|
||||
|
||||
public static bool IsGnomeKeyringInstalled()
|
||||
{
|
||||
if (0 == LoadGnomeKeyringLibrary())
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ReleaseGnomeKeyringLib()
|
||||
{
|
||||
ReleaseGnomeKeyringLibrary();
|
||||
public static extern int UnlockRing(string sKeyringName, string sPassword);
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int LoadGnomeKeyringLibrary();
|
||||
[DllImport("libad_gk.so")]
|
||||
public static extern int ReleaseGnomeKeyringLibrary();
|
||||
|
||||
public static bool IsGnomeKeyringInstalled()
|
||||
{
|
||||
if (0 == LoadGnomeKeyringLibrary())
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ReleaseGnomeKeyringLib()
|
||||
{
|
||||
ReleaseGnomeKeyringLibrary();
|
||||
}
|
||||
|
||||
public static void AttemptGKUnlock(string sPassword)
|
||||
|
Loading…
Reference in New Issue
Block a user