/***********************************************************************
 *
 *  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; version 2.1
 *  of the License.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Library Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, Novell, Inc.
 *
 *  To contact Novell about this file by physical or electronic mail,
 *  you may find current contact information at www.novell.com.
 *
 ***********************************************************************/

// SignonManager.h: interface for the SignonManager class.
//
//////////////////////////////////////////////////////////////////////

#ifndef __FPM_SIGNON_MANAGER_H__
#define __FPM_SIGNON_MANAGER_H__



#include "FirefoxPasswordManager.h"
#include "Common.h"
#include "DataManager.h"
#include "CryptManager.h"


class SignonManager  
{

	DataManager dataManager;
	CryptManager cryptManager;
	FILE *signonFile;
	
public:
	SignonManager();
	virtual ~SignonManager();

	int OpenSignonFile(char *firefoxProfileDir, char *fileName, char *accessType );
	int CloseSignonFile();

	int ReadLine(char *buffer, int size);
	char ReadChar();
	Unichar ReadCharUTF8();
	int WriteCharUTF8(Unichar c);
	int WriteLine(char *line); 


	int LoadSignonData(char *firefoxProfileDir);
	int WriteSignonData(char *firefoxProfileDir);
	int RemoveSignonData();

	int AddUser(char *host, char *userName, char *password);
	int RemoveHost(char *hostName);
	int ModifyHost(struct Host *host);
	int AddHost(struct Host *host);

	
	struct Host* GetHostInfo();
	void SetupFunctions(void *funList[]);


	int CheckSignonPref();

};

#endif