Quasar/Server/Forms/FrmKeylogger.cs

123 lines
3.7 KiB
C#

using System;
using System.IO;
using System.Windows.Forms;
using xServer.Core.Helper;
using xServer.Core.Networking;
using xServer.Core.Utilities;
namespace xServer.Forms
{
public partial class FrmKeylogger : Form
{
private readonly Client _connectClient;
private readonly ListViewColumnSorter _lvwColumnSorter;
private readonly string _path;
public FrmKeylogger(Client c)
{
_connectClient = c;
_connectClient.Value.FrmKl = this;
_path = Path.Combine(_connectClient.Value.DownloadDirectory, "Logs\\");
InitializeComponent();
_lvwColumnSorter = new ListViewColumnSorter();
lstLogs.ListViewItemSorter = _lvwColumnSorter;
}
private void FrmKeylogger_Load(object sender, EventArgs e)
{
if (_connectClient != null)
{
this.Text = WindowHelper.GetWindowTitle("Keylogger", _connectClient);
if (!Directory.Exists(_path))
{
Directory.CreateDirectory(_path);
return;
}
DirectoryInfo dicInfo = new DirectoryInfo(_path);
FileInfo[] iFiles = dicInfo.GetFiles();
foreach (FileInfo file in iFiles)
{
lstLogs.Items.Add(new ListViewItem() { Text = file.Name });
}
}
}
private void btnGetLogs_Click(object sender, EventArgs e)
{
btnGetLogs.Enabled = false;
lstLogs.Items.Clear();
new Core.Packets.ServerPackets.GetKeyloggerLogs().Execute(_connectClient);
}
private void lstLogs_ItemActivate(object sender, EventArgs e)
{
if (lstLogs.SelectedItems.Count > 0)
{
wLogViewer.Navigate(Path.Combine(_path, lstLogs.SelectedItems[0].Text));
}
}
private void FrmKeylogger_FormClosing(object sender, FormClosingEventArgs e)
{
if (_connectClient.Value != null)
_connectClient.Value.FrmKl = null;
}
public void AddLogToListview(string logName)
{
try
{
lstLogs.Invoke((MethodInvoker) delegate
{
lstLogs.Items.Add(new ListViewItem {Text = logName});
});
}
catch (InvalidOperationException)
{
}
}
public void SetGetLogsEnabled(bool enabled)
{
try
{
btnGetLogs.Invoke((MethodInvoker) delegate
{
btnGetLogs.Enabled = enabled;
});
}
catch (InvalidOperationException)
{
}
}
private void lstLogs_ColumnClick(object sender, ColumnClickEventArgs e)
{
// Determine if clicked column is already the column that is being sorted.
if (e.Column == _lvwColumnSorter.SortColumn)
{
// Reverse the current sort direction for this column.
if (_lvwColumnSorter.Order == SortOrder.Ascending)
_lvwColumnSorter.Order = SortOrder.Descending;
else
_lvwColumnSorter.Order = SortOrder.Ascending;
}
else
{
// Set the column number that is to be sorted; default to ascending.
_lvwColumnSorter.SortColumn = e.Column;
_lvwColumnSorter.Order = SortOrder.Ascending;
}
// Perform the sort with these new sort options.
lstLogs.Sort();
}
}
}