Fix minor issues for Firefox on Windows.
This commit is contained in:
parent
665c251e3b
commit
6655817073
@ -145,6 +145,22 @@ namespace Novell.CASA.DataEngines
|
|||||||
Logger.DbgLog("A-D Lib:Failed to Connect to miCASA");
|
Logger.DbgLog("A-D Lib:Failed to Connect to miCASA");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
if (ffEngine != null)
|
||||||
|
{
|
||||||
|
XmlNode ffSecrets = ffEngine.Aggregate();
|
||||||
|
if( null != ffSecrets )
|
||||||
|
{
|
||||||
|
XmlNode ffImportedNode = ccf.ImportNode(ffSecrets,true);
|
||||||
|
ccf.DocumentElement.AppendChild(ffImportedNode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if LINUX
|
||||||
|
Logger.DbgLog("A-D Lib:Failed to Connect to Gnome FireFox");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if LINUX
|
#if LINUX
|
||||||
if (gkEngine != null)
|
if (gkEngine != null)
|
||||||
@ -178,20 +194,6 @@ namespace Novell.CASA.DataEngines
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ffEngine != null)
|
|
||||||
{
|
|
||||||
XmlNode ffSecrets = ffEngine.Aggregate();
|
|
||||||
if( null != ffSecrets )
|
|
||||||
{
|
|
||||||
XmlNode ffImportedNode = ccf.ImportNode(ffSecrets,true);
|
|
||||||
ccf.DocumentElement.AppendChild(ffImportedNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Logger.DbgLog("A-D Lib:Failed to Connect to Gnome FireFox");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
Logger.DbgLog("A-D Lib:Could not aggregate Gnome FireFox since FireFoxEngine not instantiated");
|
Logger.DbgLog("A-D Lib:Could not aggregate Gnome FireFox since FireFoxEngine not instantiated");
|
||||||
|
|
||||||
@ -362,14 +364,15 @@ namespace Novell.CASA.DataEngines
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
if (StoreID == ConstStrings.CASA_STORE_MICASA)
|
||||||
return micasaengine.Remove(secret);
|
return micasaengine.Remove(secret);
|
||||||
|
if (StoreID == ConstStrings.CASA_STORE_FFOX)
|
||||||
|
return ffEngine.Remove(secret);
|
||||||
#if LINUX
|
#if LINUX
|
||||||
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
if (StoreID == ConstStrings.CASA_STORE_KWALLET)
|
||||||
return kwEngine.Remove(secret);
|
return kwEngine.Remove(secret);
|
||||||
if (StoreID == ConstStrings.CASA_STORE_GK)
|
if (StoreID == ConstStrings.CASA_STORE_GK)
|
||||||
return gkEngine.Remove(secret);
|
return gkEngine.Remove(secret);
|
||||||
if (StoreID == ConstStrings.CASA_STORE_FFOX)
|
|
||||||
return ffEngine.Remove(secret);
|
|
||||||
#endif
|
#endif
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -142,6 +142,7 @@ namespace Novell.CASA.DataEngines.FF
|
|||||||
{
|
{
|
||||||
private static int MAX_PROFILES = 5; //FIXME:Maximum Profiles for Firefox - To be removed when done dynamically via a native api
|
private static int MAX_PROFILES = 5; //FIXME:Maximum Profiles for Firefox - To be removed when done dynamically via a native api
|
||||||
private static int LOAD_PROFILE_ALWAYSFROM_FILE = 1;
|
private static int LOAD_PROFILE_ALWAYSFROM_FILE = 1;
|
||||||
|
private static int MAX_PROFILE_LEN = 260;
|
||||||
|
|
||||||
#if WIN32
|
#if WIN32
|
||||||
private const string FF_LIB = "ad_ff.dll";
|
private const string FF_LIB = "ad_ff.dll";
|
||||||
@ -152,6 +153,10 @@ namespace Novell.CASA.DataEngines.FF
|
|||||||
|
|
||||||
|
|
||||||
//Initialization functions
|
//Initialization functions
|
||||||
|
[DllImport(FF_LIB)]
|
||||||
|
public static extern int FPM_GetDefaultProfileName([In, Out] byte[] profileName);
|
||||||
|
|
||||||
|
|
||||||
[DllImport(FF_LIB)]
|
[DllImport(FF_LIB)]
|
||||||
public static extern int FPM_GetProfileList(out IntPtr[] profileList, out IntPtr[] profileFlag);
|
public static extern int FPM_GetProfileList(out IntPtr[] profileList, out IntPtr[] profileFlag);
|
||||||
|
|
||||||
@ -216,6 +221,31 @@ namespace Novell.CASA.DataEngines.FF
|
|||||||
// else null if not retrivable
|
// else null if not retrivable
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
public static String GetDefaultProfileName()
|
public static String GetDefaultProfileName()
|
||||||
|
{
|
||||||
|
byte[] baProfileName = new byte[MAX_PROFILE_LEN];
|
||||||
|
|
||||||
|
int profCount = FPM_GetDefaultProfileName(baProfileName);
|
||||||
|
|
||||||
|
if (profCount == 0)
|
||||||
|
return null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
string sName = System.Text.Encoding.Default.GetString(baProfileName);
|
||||||
|
char[] NullChars = new char[1];
|
||||||
|
NullChars[0] = '\0';
|
||||||
|
|
||||||
|
return sName.TrimEnd(NullChars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
//GetDefaultProfileName
|
||||||
|
//@param None
|
||||||
|
//@return Default ProfileName on success
|
||||||
|
// else null if not retrivable
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
public static String GetDefaultProfileNameEx()
|
||||||
{
|
{
|
||||||
|
|
||||||
IntPtr[] profileListIntPtr=new IntPtr[MAX_PROFILES];;
|
IntPtr[] profileListIntPtr=new IntPtr[MAX_PROFILES];;
|
||||||
|
@ -137,7 +137,36 @@ int CreateNewProfile(char *profilePath, char *profileDir)
|
|||||||
return FPM_TRUE;
|
return FPM_TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
extern "C" APIEXPORT int FPM_GetProfileList(char **profileList[], int *profileFlag[])
|
|
||||||
|
extern "C" APIEXPORT int FPM_GetDefaultProfileName(char *defaultProfileName)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
int profCount = MAX_PROFILE_COUNT;
|
||||||
|
Profile *profiles;
|
||||||
|
|
||||||
|
profiles = (Profile*)malloc(MAX_PROFILE_COUNT * sizeof(Profile));
|
||||||
|
|
||||||
|
profCount = FPM_GetProfileList(profiles, &profCount);
|
||||||
|
|
||||||
|
if (profCount > 0)
|
||||||
|
{
|
||||||
|
// find the default profile
|
||||||
|
for(i=0; i< profCount; i++)
|
||||||
|
{
|
||||||
|
if (profiles[i].isDefault == 1)
|
||||||
|
{
|
||||||
|
memcpy(defaultProfileName, profiles[i].profileName, profiles[i].nameLen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// free the list
|
||||||
|
free(profiles);
|
||||||
|
|
||||||
|
return profCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" APIEXPORT int FPM_GetProfileList(Profile *profiles, int *count)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
@ -288,91 +317,49 @@ extern "C" APIEXPORT int FPM_GetProfileList(char **profileList[], int *profileFl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( strstr(line, "name=") != NULL )
|
if( strstr(line, "name=") != NULL )
|
||||||
profileCount++;
|
{
|
||||||
|
// found one, copy it
|
||||||
|
char *temp = strchr(line,'=') + 1;
|
||||||
|
int len = strlen(temp) + 1;
|
||||||
|
|
||||||
|
// make sure the profile name length is not too long.
|
||||||
|
if (len < MAX_PATH)
|
||||||
|
{
|
||||||
|
// make sure we have room
|
||||||
|
if (*count > profileCount)
|
||||||
|
{
|
||||||
|
profiles[profileCount].nameLen = len;
|
||||||
|
memcpy(profiles[profileCount].profileName, temp,len);
|
||||||
|
profiles[profileCount].isDefault = 0;
|
||||||
|
}
|
||||||
|
profileCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if the current profile is default
|
||||||
|
if( strstr(line, "default=1") != NULL )
|
||||||
|
{
|
||||||
|
if (*count > profileCount-1)
|
||||||
|
{
|
||||||
|
profiles[profileCount-1].isDefault = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if only one profile, set it default
|
||||||
|
if (profileCount == 1)
|
||||||
|
{
|
||||||
|
profiles[0].isDefault = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintMessage(MESG_DEBUG, "\n GetProfileList : Total profiles found = %d ", profileCount);
|
PrintMessage(MESG_DEBUG, "\n GetProfileList : Total profiles found = %d ", profileCount);
|
||||||
|
|
||||||
if( profileCount == 0 )
|
// all done
|
||||||
{
|
|
||||||
fclose(profile);
|
|
||||||
return FPM_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
*profileList = ( char**) malloc(profileCount * sizeof (char *));
|
|
||||||
*profileFlag = ( int * ) malloc(profileCount * sizeof(int));
|
|
||||||
|
|
||||||
if( *profileList == NULL || *profileFlag == NULL )
|
|
||||||
{
|
|
||||||
PrintMessage(MESG_ERROR, "\n GetProfileList : Insufficient memory ");
|
|
||||||
fclose(profile);
|
|
||||||
return FPM_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
char **profList = *profileList;
|
|
||||||
int *profFlag = *profileFlag;
|
|
||||||
|
|
||||||
// Now read the profile names and store it..
|
|
||||||
fseek(profile, 0, SEEK_SET);
|
|
||||||
|
|
||||||
profileCount = 0;
|
|
||||||
while(fgets(line, 1024, profile))
|
|
||||||
{
|
|
||||||
// Remove trailing end of line character
|
|
||||||
line[strlen(line)-1]= 0;
|
|
||||||
|
|
||||||
// Convert to smaller case until "=" found....
|
|
||||||
for(i=0; i<strlen(line); i++)
|
|
||||||
{
|
|
||||||
if( line[i] == '=' )
|
|
||||||
break;
|
|
||||||
|
|
||||||
if( line[i] >=65 && line[i]<=90 )
|
|
||||||
line[i]+=32;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( strstr(line, "name=") != NULL )
|
|
||||||
{
|
|
||||||
char *temp = strchr(line,'=') + 1;
|
|
||||||
profList[profileCount] = (char*) malloc(strlen(temp)+1);
|
|
||||||
|
|
||||||
if( profList[profileCount] == NULL )
|
|
||||||
{
|
|
||||||
PrintMessage(MESG_ERROR, "\n GetProfileList : Insufficient memory ");
|
|
||||||
fclose(profile);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(profList[profileCount],temp);
|
|
||||||
profFlag[profileCount] = 0;
|
|
||||||
|
|
||||||
PrintMessage(MESG_DEBUG, "\n GetProfileList : Found profile = [%s]", profList[profileCount]);
|
|
||||||
profileCount++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the current profile is default
|
|
||||||
if( strstr(line, "default=1") != NULL )
|
|
||||||
{
|
|
||||||
profFlag[profileCount-1] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(profile);
|
fclose(profile);
|
||||||
|
|
||||||
// if there is only one profile then set it default profile
|
|
||||||
if( profileCount == 1 )
|
|
||||||
{
|
|
||||||
**profileFlag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return profileCount;
|
return profileCount;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the firefox library with the specified profile
|
* Initializes the firefox library with the specified profile
|
||||||
*
|
*
|
||||||
|
@ -110,6 +110,13 @@ typedef enum SECItemType
|
|||||||
siGeneralizedTime = 12
|
siGeneralizedTime = 12
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _profile
|
||||||
|
{
|
||||||
|
int nameLen;
|
||||||
|
char profileName[MAX_PATH];
|
||||||
|
int isDefault;
|
||||||
|
} Profile;
|
||||||
|
|
||||||
//typedef struct SECItemStr SECItem;
|
//typedef struct SECItemStr SECItem;
|
||||||
|
|
||||||
struct SECItem
|
struct SECItem
|
||||||
@ -170,7 +177,7 @@ int CreateDirectory( char *path );
|
|||||||
|
|
||||||
// Profile initiliazation functions
|
// Profile initiliazation functions
|
||||||
extern "C" APIEXPORT int FPM_IsStoreAvailable();
|
extern "C" APIEXPORT int FPM_IsStoreAvailable();
|
||||||
extern "C" APIEXPORT int FPM_GetProfileList(char **profileList[], int **profileFlag);
|
extern "C" APIEXPORT int FPM_GetProfileList(Profile *profiles, int *count);
|
||||||
extern "C" APIEXPORT int FPM_FirefoxProfileInit(char *profileName);
|
extern "C" APIEXPORT int FPM_FirefoxProfileInit(char *profileName);
|
||||||
extern "C" APIEXPORT int FPM_FirefoxProfileExit(char *profileName);
|
extern "C" APIEXPORT int FPM_FirefoxProfileExit(char *profileName);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user