Rethinking of this class:
- private static Config object - Designated methods for providing fields of said Config object - Config info isn't fetched from the file all the time, but rather only once in the Init() method. After that, data is fetched from the Configuration object
This commit is contained in:
@@ -4,26 +4,28 @@ namespace Password_Manager
|
||||
{
|
||||
static class ConfigFileManager
|
||||
{
|
||||
private static string configPath = SpecialDirectories.CurrentUserApplicationData + "\\config.cfg";
|
||||
|
||||
#region Config flags
|
||||
/*Configuration: (format: fieldname=value)
|
||||
|
||||
pwdStorePath: path to the folder which contains the .gpg files
|
||||
password_store_path: path to the folder which contains the .gpg files
|
||||
recipient: whose public key to use for encryption when a new password is created
|
||||
*/
|
||||
private const char DELIMETER = '=';
|
||||
private const string RECIPIENT = "recipient";
|
||||
private const string PATH = "pwdStorePath";
|
||||
|
||||
private static const string CONFIGPATH = SpecialDirectories.CurrentUserApplicationData + "\\config.cfg";
|
||||
private static const char DELIMETER = '=';
|
||||
private static const string RECIPIENT = "recipient";
|
||||
private static const string PATH = "password_store_path";
|
||||
#endregion
|
||||
public static string GetPath()
|
||||
|
||||
private static Config Configuration;
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
try
|
||||
{
|
||||
StreamReader sr = new StreamReader(configPath);
|
||||
StreamReader sr = new StreamReader(CONFIGPATH);
|
||||
if (sr != null)
|
||||
{
|
||||
string? path, recipient;
|
||||
while (!sr.EndOfStream)
|
||||
{
|
||||
string[]? fields = sr.ReadLine().Split(DELIMETER);
|
||||
@@ -31,14 +33,27 @@ namespace Password_Manager
|
||||
{
|
||||
if (fields[0] == PATH)
|
||||
{
|
||||
return fields[1];
|
||||
path = fields[0];
|
||||
}
|
||||
else if (fields[0] == RECIPIENT)
|
||||
{
|
||||
recipient = fields[0];
|
||||
}
|
||||
}
|
||||
else
|
||||
else //probably an empty line or something
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (path != null && recipient != null)
|
||||
{
|
||||
Configuration = new Config(path, recipient);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidConfigurationException("One or more required fileds were missing from the configuration file.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -53,15 +68,23 @@ namespace Password_Manager
|
||||
{
|
||||
MessageBox.Show(e.ToString(), "IO Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
return @"C:\Users\Typo\pass"; //TODO: temporary default value
|
||||
public static string GetPath()
|
||||
{
|
||||
return Configuration.PasswordStorePath;
|
||||
}
|
||||
|
||||
public static string GetRecipient()
|
||||
{
|
||||
return Configuration.Recipient;
|
||||
}
|
||||
|
||||
private static void CreateDefaultConfig()
|
||||
{
|
||||
try
|
||||
{
|
||||
StreamWriter sw = new StreamWriter(configPath);
|
||||
StreamWriter sw = new StreamWriter(CONFIGPATH);
|
||||
sw.WriteLine(RECIPIENT + DELIMETER + "typo");
|
||||
sw.WriteLine(PATH + DELIMETER + @"C:\Users\Typo\pass");
|
||||
sw.Close();
|
||||
|
||||
Reference in New Issue
Block a user