Compare commits

...

58 Commits

Author SHA1 Message Date
f4adcc5cec Merge pull request 'Fixed a new memory leak' (#47) from Analyzer into main
Reviewed-on: #47
2025-04-14 11:58:52 +00:00
b1ddbd0f99 Merge branch 'main' into Analyzer 2025-04-14 11:57:46 +00:00
291c65ac02 Fixed a new memory leak 2025-04-14 13:56:57 +02:00
ebf5c11fdf Merge pull request 'Analyzer' (#46) from Analyzer into main
Reviewed-on: #46
2025-04-05 09:30:20 +00:00
c7fcc3297f Reduced the memory usage, as well as hopefully fixing the memory leak. Also implemented database compression across rows, including Brotli compression and bitshifting. 2025-04-05 11:28:54 +02:00
b0318b7759 Removed .txt 2025-02-16 09:38:57 +01:00
c70b42c9d7 Made a lot of changes. Enhanced memory usage. 2025-02-16 09:38:00 +01:00
8d659d4261 Implement autosave 2025-02-08 13:02:18 +01:00
45b6d8ecab Preparing for multithreaded content filter 2025-02-07 23:30:25 +01:00
83897c72cf Way too much happened for me to create a commit message 2025-02-07 18:44:22 +01:00
680b295f9e Update gitignore 2025-01-16 12:27:23 +01:00
03e7ebe421 Merge pull request 'SearchFunction' (#45) from SearchFunction into main
Reviewed-on: #45
2025-01-16 10:12:41 +00:00
41dfb5809a Add stuff 2025-01-16 11:10:43 +01:00
7abe904997 Testing search query 2025-01-05 15:37:18 +01:00
8256d6a681 Merge pull request 'CompressDatabase' (#43) from CompressDatabase into main
Reviewed-on: #43
2024-12-30 17:47:33 +00:00
a6804be9f1 Implement database compression 2024-12-30 18:36:04 +01:00
0cfbcea252 Testing database compression. 2024-12-24 14:23:23 +01:00
3f647a3e68 Merge pull request 'Add search page' (#41) from CreateSearchPage into main
Reviewed-on: #41
2024-12-24 10:11:15 +00:00
53289db102 Add search page 2024-12-24 11:10:38 +01:00
f4d94a3336 Merge pull request 'Title and description extraction now only look in the head section of the HTML document' (#40) from OptimizeTitleAndDescriptionExtraction into main
Reviewed-on: #40
2024-12-23 13:10:49 +00:00
e9fd738f1f Title and description extraction now only look in the head section of the HTML document 2024-12-23 14:09:51 +01:00
e581d947f8 Merge pull request 'Add user-agent' (#39) from AddUserAgent into main
Reviewed-on: #39
2024-12-21 21:19:28 +00:00
580d687f62 Add user-agent 2024-12-21 21:57:01 +01:00
af7b385641 Merge pull request 'Add cached progress response' (#36) from ImplementAPICache into main
Reviewed-on: #36
2024-12-19 17:37:01 +00:00
7562bbf7d1 Add cached progress response 2024-12-19 18:36:13 +01:00
ac645b01b9 Merge pull request 'OptimiseFrontend' (#35) from OptimiseFrontend into main
Reviewed-on: #35
2024-12-18 13:28:03 +00:00
97321492ba Add headers 2024-12-18 14:27:31 +01:00
8628d31bec Add nuxt-purgecss to further minimize bundle size. 2024-12-18 12:02:35 +01:00
23d0a8b978 Merge pull request 'UseDictionary' (#34) from UseDictionary into main
Reviewed-on: #34
2024-12-17 20:33:08 +00:00
8b55cf7bb6 Reworked the /progress page 2024-12-17 13:15:47 +01:00
3822339dd9 Add a time-based cache for the progress result from the API 2024-12-17 10:46:10 +01:00
1c74ae9de5 Added frontend and working fetching. 2024-12-14 13:26:21 +01:00
bab8fa6c25 Added frontend project with some basic api fetching implemented. 2024-12-06 12:33:48 +01:00
cd49d32dd7 Merge pull request 'Misc changes such as performance tuning, added support for more than 64 threads for the scanner.' (#24) from UseForeignKeys into main
Reviewed-on: #24
2024-12-04 12:24:34 +00:00
5fe35192c6 Misc changes such as performance tuning, added support for more than 64 threads for the scanner. 2024-12-04 13:20:45 +01:00
a1f5b08ac3 Merge pull request 'Make it so the filter does not iterate over already filtered IPs.' (#22) from OptimizeContentFilter into main
Reviewed-on: #22
2024-11-29 18:18:00 +00:00
2cff817044 Make it so the filter does not iterate over already filtered IPs. 2024-11-29 19:13:27 +01:00
407bbc1556 Merge pull request 'Reworked the queue items.' (#21) from SplitUpQueueItem into main
Reviewed-on: #21
2024-11-29 13:21:44 +00:00
f2ace6f571 Reworked the queue items. 2024-11-29 12:59:07 +01:00
3034e66126 Changed GET to HEAD for checking robots txt. 2024-11-29 11:02:51 +01:00
701ffff27e Merge pull request 'Duscarded object is now a struct.' (#17) from ConvertDiscardedToStruct into main
Reviewed-on: #17
2024-11-28 13:37:01 +00:00
ec9cca59da Duscarded object is now a struct. 2024-11-28 14:36:36 +01:00
90d1d6b429 Merge pull request 'Unfiltered object is now a struct.' (#15) from ReworkUnfilteredObject into main
Reviewed-on: #15
2024-11-28 13:25:35 +00:00
3d8f903d30 Unfiltered object is now a struct. 2024-11-28 14:24:33 +01:00
eedca27a11 Merge pull request 'Fixed.' (#14) from FixGetProgress into main
Reviewed-on: #14
2024-11-28 10:32:39 +00:00
69a22fb3eb Fixed. 2024-11-28 10:26:44 +01:00
d3270d3117 Merge pull request 'Fixed duplicate insertions into the filtered database.' (#11) from IgnoreAlreadySavedIpInTheFilteredDatabaseAfterResuming into main
Reviewed-on: #11
2024-11-27 15:09:13 +00:00
f02203c14c Fixed duplicate insertions into the filtered database. 2024-11-27 15:53:00 +01:00
7ad691c439 Merge pull request 'CreateRuntimeVariable' (#8) from CreateRuntimeVariable into main
Reviewed-on: #8
2024-11-27 10:40:12 +00:00
4eaaf0f244 Fix communication between applications. 2024-11-27 11:33:53 +01:00
a160992c08 Remove random sqlite file. 2024-11-26 19:44:55 +01:00
1a361a9524 Create runtime variables and remove MessagePack. 2024-11-26 19:41:12 +01:00
be07cdb13e Create runtime variables and remove MessagePack. 2024-11-26 19:40:27 +01:00
28c5918a83 Update README.md 2024-11-25 18:32:32 +00:00
032ce539c3 Update gitignore 2024-11-25 19:21:45 +01:00
9297cf4358 Remove obj folder from GIT. 2024-11-25 19:21:15 +01:00
9afddf803a Remove redundant comment. 2024-11-25 19:20:08 +01:00
b60cda90b5 Merge pull request 'Fix NetMQ not stopping.' (#3) from CleanUpCommunicationLogic into main
Reviewed-on: #3
2024-11-25 18:16:35 +00:00
358 changed files with 13332 additions and 10706 deletions

5
.gitignore vendored
View File

@ -5,8 +5,9 @@
**/bin/* **/bin/*
**/**/bin/* **/**/bin/*
**/opt/* **/obj/*
**/**/opt/* **/**/obj/*
*.gz
# User-specific stuff # User-specific stuff
.idea/**/workspace.xml .idea/**/workspace.xml

View File

@ -1,9 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Folder Include="CompressedDatabases\" />
</ItemGroup>
</Project> </Project>

3
Analyze/Program.cs Normal file
View File

@ -0,0 +1,3 @@
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

View File

@ -1,8 +0,0 @@
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 192.3.147.62:443...
* connect to 192.3.147.62 port 443 from 192.168.80.132 port 41070 failed: Connection refused
* Failed to connect to 192.3.147.62 port 443 after 117 ms: Could not connect to server
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
* closing connection #0
curl: (7) Failed to connect to 192.3.147.62 port 443 after 117 ms: Could not connect to server

View File

@ -1,10 +0,0 @@
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 192.3.147.66:80...
* Connected to 192.3.147.66 (192.3.147.66) port 80
> HEAD / HTTP/1.1
> Host: 192.3.147.66
> User-Agent: curl/8.9.1
> Accept: */*
>
* Request completely sent off

View File

@ -2,27 +2,15 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<PublishAot>false</PublishAot>
<Platform>x64</Platform> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Optimize>true</Optimize>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Models\Models.csproj" /> <ProjectReference Include="..\Models\Models.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="FuzzySharp" Version="2.0.2" />
<PackageReference Include="MessagePack" Version="3.0.238-rc.1" />
<PackageReference Include="MessagePack.Annotations" Version="3.0.238-rc.1" />
<PackageReference Include="MessagePackAnalyzer" Version="3.0.238-rc.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="NetMQ" Version="4.0.1.13" />
</ItemGroup>
</Project> </Project>

View File

@ -1,37 +0,0 @@
VACUUM;
DROP TABLE Filtered;
CREATE TABLE "Filtered" (
"Id" INTEGER NOT NULL,
"Ip" TEXT NOT NULL,
"Port1" INTEGER NOT NULL,
"Port2" INTEGER NOT NULL,
"Title1" TEXT NOT NULL,
"Title2" TEXT NOT NULL,
"Description1" TEXT NOT NULL,
"Description2" TEXT NOT NULL,
"Url1" TEXT NOT NULL,
"Url2" TEXT NOT NULL,
"ServerType1" TEXT NOT NULL,
"ServerType2" TEXT NOT NULL,
"RobotsTXT1" TEXT NOT NULL,
"RobotsTXT2" TEXT NOT NULL,
"HttpVersion1" TEXT NOT NULL,
"HttpVersion2" TEXT NOT NULL,
"CertificateIssuerCountry" TEXT NOT NULL,
"CertificateOrganizationName" TEXT NOT NULL,
"IpV6" TEXT NOT NULL,
"TlsVersion" TEXT NOT NULL,
"CipherSuite" TEXT NOT NULL,
"KeyExchangeAlgorithm" TEXT NOT NULL,
"PublicKeyType1" TEXT NOT NULL,
"PublicKeyType2" TEXT NOT NULL,
"PublicKeyType3" TEXT NOT NULL,
"AcceptEncoding1" TEXT NOT NULL,
"AcceptEncoding2" TEXT NOT NULL,
"ALPN" TEXT NOT NULL,
"Connection1" TEXT NOT NULL,
"Connection2" TEXT NOT NULL,
PRIMARY KEY("Id" AUTOINCREMENT)
)

View File

@ -1,19 +0,0 @@
DROP TABLE Unfiltered;
DROP TABLE Runtimes;
CREATE TABLE "Unfiltered" (
"Id" INTEGER NOT NULL,
"Ip" TEXT NOT NULL,
"ResponseCode" INTEGER NOT NULL,
"Port1" INTEGER NOT NULL,
"Port2" INTEGER NOT NULL,
"Filtered" INTEGER NOT NULL,
CONSTRAINT "PK_Unfiltered" PRIMARY KEY("Id" AUTOINCREMENT)
);
CREATE TABLE "Runtimes" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_Runtimes" PRIMARY KEY AUTOINCREMENT,
"StartTime" TEXT NOT NULL,
"EndTime" TEXT NOT NULL,
"ThreadNumber" INTEGER NOT NULL
);

View File

@ -1,172 +0,0 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using Backend.Helper;
using MessagePack;
using Models.Handler;
using Models.Model.Backend;
using Models.Model.External;
using NetMQ;
using NetMQ.Sockets;
namespace Backend.Handler;
public class Communication
{
private readonly DbHandler _dbHandler;
private readonly ThreadHandler _threadHandler;
private bool _isRunning = true;
public Communication(DbHandler dbHandler, ThreadHandler threadHandler)
{
_dbHandler = dbHandler;
_threadHandler = threadHandler;
}
public WaitHandle[] Start()
{
WaitHandle[] waitHandles = new WaitHandle[1];
EventWaitHandle handle = new(false, EventResetMode.ManualReset);
waitHandles[0] = handle;
Thread thread = new(Server!);
thread.Start(handle);
return waitHandles;
}
/*private void Server(object obj)
{
using ResponseSocket server = new();
server.Bind("tcp://*:5556");
server.ReceiveReady += OnServerOnReceiveReady;
_poller.Add(server);
Console.WriteLine("Server is running and waiting for client requests...");
_poller.Run();
Console.WriteLine("Communication stopped.");
((EventWaitHandle) obj).Set();
}*/
private void Server(object obj)
{
using ResponseSocket rep = new();
rep.Bind("tcp://127.0.0.1:5556");
while (_isRunning)
{
byte[] message = rep.ReceiveFrameBytes();
CommunicationObject communicationObject = MessagePackSerializer.Deserialize<CommunicationObject>(message);
OnServerOnReceiveReady(communicationObject, rep);
}
((EventWaitHandle) obj).Set();
}
[RequiresDynamicCode("Calls System.Text.Json.JsonSerializer.Serialize<TValue>(TValue, JsonSerializerOptions)")]
[RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize<TValue>(TValue, JsonSerializerOptions)")]
private void OnServerOnReceiveReady(CommunicationObject communicationObject, ResponseSocket rep)
{
switch (communicationObject.Command)
{
case CommunicationCommand.GetScanningProgress:
{
DatabaseSizes databaseSizes = FilesystemHelper.GetDatabaseSizes();
long discardedIndexes = _dbHandler.GetDiscardedIndexes();
ScanningStatus status = new();
// 4294967296 is all Ipv4 addresses.
if (discardedIndexes != 0)
{
status.PercentageOfIpv4Scanned = (float)discardedIndexes / 4294967296 * 100;
}
else
{
status.PercentageOfIpv4Scanned = 0.0000000001f;
}
status.AmountOfIpv4Left = 4294967296 - discardedIndexes;
status.TotalFiltered = DbHandler.GetFilteredIndexes();
status.TotalDiscarded = discardedIndexes;
status.MyDbSize = databaseSizes.MyDbSize;
status.FilteredDbSize = databaseSizes.FilteredDbSize;
status.DiscardedDbSize = databaseSizes.DiscardedDbSize;
byte[] serializedResult = MessagePackSerializer.Serialize(status, MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray));
rep.SendFrame(serializedResult);
break;
}
case CommunicationCommand.DbReindex:
{
_dbHandler.ReIndex();
SendStringResponse(rep, "All Dbs have been reindexed.");
break;
}
case CommunicationCommand.DbVacuum:
{
_dbHandler.Vacuum();
SendStringResponse(rep, "All Dbs have been vacuumed.");
break;
}
case CommunicationCommand.GetSearches:
{
if (!string.IsNullOrWhiteSpace(communicationObject.SearchTerm))
{
SendSearchResponse(rep, communicationObject.SearchTerm);
}
break;
}
case CommunicationCommand.StopScanning:
{
_isRunning = false;
break;
}
}
}
private static void SendStringResponse(ResponseSocket rep, string response)
{
MessagePackSerializerOptions withCompression = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
byte[] serializedResult = MessagePackSerializer.Serialize(response, withCompression);
rep.SendFrame(serializedResult);
}
private static void SendSearchResponse(ResponseSocket rep, string searchTerm)
{
//SearchResults result = SearchHelper.Search(communicationObject.SearchTerm!, _dbHandler);
SearchResults result = new()
{
Results = []
};
SearchResult lol = new()
{
Url = "Remember to use an actual search tearm. Like 'dotnet 9.0'",
Title = "Remember to use an actual search tearm. Like 'dotnet 9.0'",
};
result.Results.Add(lol);
string serializedResult = JsonSerializer.Serialize(result);
rep.SendFrame(serializedResult);
}
}

View File

@ -1,24 +1,55 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Diagnostics; using System.Diagnostics;
using System.Text;
using Backend.Helper; using Backend.Helper;
using Models.Handler; using Models.Handler;
using Models.Model.Backend; using Models.Model.Backend;
namespace Backend.Handler; namespace Backend.Handler;
public class Content
{
public int Port1 { get; set; }
public int Port2 { get; set; }
public Ip Ip { get; set; }
}
public class ContentThread
{
public int ThreadId { get; set; }
public EventWaitHandle? EventWaitHandle { get; set; }
}
public class ContentFilter public class ContentFilter
{ {
private readonly ConcurrentQueue<QueueItem> _queue; private readonly ConcurrentQueue<Filtered> _queue;
private readonly ConcurrentQueue<UnfilteredQueueItem> _unfilteredQueue;
private readonly ConcurrentQueue<Content?> _contentQueue = new();
private readonly DbHandler _dbHandler; private readonly DbHandler _dbHandler;
private const string GetDomainPort80 = "/home/skingging/Documents/Projects/CSharp/RSE/Backend/Scripts/GetDomainNamePort80.sh"; private readonly ThreadHandler _threadHandler;
private const string GetDomainPort443 = "/home/skingging/Documents/Projects/CSharp/RSE/Backend/Scripts/GetDomainNamePort443.sh"; private readonly string _getDomainPort80;
private readonly string _getDomainPort443;
private bool _stop; private bool _stop;
private int _timeOut;
public ContentFilter(ConcurrentQueue<QueueItem> queue, DbHandler dbHandler) private readonly string _basePath;
public ContentFilter(ConcurrentQueue<Filtered> queue, ConcurrentQueue<UnfilteredQueueItem> unfilteredQueue, DbHandler dbHandler, string basePath, ThreadHandler threadHandler)
{ {
_queue = queue; _queue = queue;
_dbHandler = dbHandler; _dbHandler = dbHandler;
_basePath = basePath;
_threadHandler = threadHandler;
_unfilteredQueue = unfilteredQueue;
_getDomainPort80 = $"{basePath}/Backend/Scripts/GetDomainNamePort80.sh";
_getDomainPort443 = $"{basePath}/Backend/Scripts/GetDomainNamePort443.sh";
SetTimeout(3000);
}
public void SetTimeout(int timeOut)
{
_timeOut = timeOut;
} }
public WaitHandle[] Start() public WaitHandle[] Start()
@ -26,6 +57,7 @@ public class ContentFilter
WaitHandle[] waitHandles = new WaitHandle[1]; WaitHandle[] waitHandles = new WaitHandle[1];
EventWaitHandle handle = new(false, EventResetMode.ManualReset); EventWaitHandle handle = new(false, EventResetMode.ManualReset);
waitHandles[0] = handle; waitHandles[0] = handle;
Thread f = new (Filter!); Thread f = new (Filter!);
f.Start(handle); f.Start(handle);
@ -34,59 +66,119 @@ public class ContentFilter
private void Filter(object obj) private void Filter(object obj)
{ {
long indexes = DbHandler.GetUnfilteredIndexes(); while (!_stop)
for (long i = 0; i < indexes; i++)
{ {
if (_stop) break; List<long> indexes = _dbHandler.GetUnfilteredIndexes();
Unfiltered? unfiltered = DbHandler.ReadUnfilteredWithId(i); if (indexes.Count == 0)
if (unfiltered is null || unfiltered.Filtered == 1) continue;
unfiltered.Filtered = 1;
QueueItem superUnfilteredObject = new()
{ {
Unfiltered = unfiltered, _stop = true;
Operations = Operations.Update _threadHandler.Stop();
}; break;
_queue.Enqueue(superUnfilteredObject);
if (_dbHandler.GetFilteredIp(unfiltered.Ip))
{
continue;
} }
Filtered filtered = GetSiteData(unfiltered.Ip); for (int i = 0; i < indexes.Count; i++)
filtered.Port1 = unfiltered.Port1;
filtered.Port2 = unfiltered.Port2;
QueueItem superFilteredObject = new()
{ {
Filtered = filtered, if (_stop) break;
Operations = Operations.Insert
}; if (_contentQueue.Count >= 500)
{
Thread.Sleep(1000);
}
Unfiltered unfiltered = _dbHandler.ReadUnfilteredWithId(indexes[i]);
if (unfiltered.Filtered) continue;
Ip ip = unfiltered.Ip;
unfiltered.Filtered = true;
UnfilteredQueueItem superUnfilteredObject = new()
{
Unfiltered = unfiltered,
Operations = Operations.Update
};
_unfilteredQueue.Enqueue(superUnfilteredObject);
if (_dbHandler.FilteredIpExists(unfiltered.Ip))
{
continue;
}
Content content = new();
content.Ip = ip;
content.Port1 = unfiltered.Port1;
content.Port2 = unfiltered.Port2;
_contentQueue.Enqueue(content);
}
_queue.Enqueue(superFilteredObject); Thread.Sleep(_timeOut);
} }
((EventWaitHandle) obj).Set(); ((EventWaitHandle) obj).Set();
} }
private static Filtered GetSiteData(string ip) public WaitHandle[] StartFilterThread(int threads)
{ {
StartProcess(ip, 80); WaitHandle[] waitHandle = new WaitHandle[threads];
StartProcess(ip, 443);
for (int i = 0; i < threads; i++)
{
EventWaitHandle handle = new(false, EventResetMode.ManualReset);
ContentThread contentThread = new();
contentThread.ThreadId = i;
contentThread.EventWaitHandle = handle;
waitHandle[i] = handle;
Thread thread = new(FilterThread!);
thread.Start(contentThread);
Thread.Sleep(8);
}
return waitHandle;
}
private void FilterThread(object obj)
{
Console.WriteLine("Filter Thread started.");
ContentThread thread = (ContentThread) obj;
while (!_stop)
{
if (_contentQueue.IsEmpty)
{
Thread.Sleep(1000);
}
_contentQueue.TryDequeue(out Content? content);
if (content is null)
{
continue;
}
Filtered filtered = GetSiteData(content.Ip, thread.ThreadId);
filtered.Port1 = content.Port1;
filtered.Port2 = content.Port2;
_queue.Enqueue(filtered);
}
thread.EventWaitHandle!.Set();
}
private Filtered GetSiteData(Ip ip, int threadId)
{
StartProcess(ip, 80, threadId);
StartProcess(ip, 443, threadId);
string url1 = ""; string url1 = "";
string url2 = ""; string url2 = "";
string title1 = "";
string title2 = "";
string description1 = "";
string description2 = "";
bool robotsTxt1 = false; bool robotsTxt1 = false;
bool robotsTxt2 = false; bool robotsTxt2 = false;
string serverType1 = ""; string serverType1 = "";
@ -112,7 +204,7 @@ public class ContentFilter
for (int i = 0; i < ports.Length; i++) for (int i = 0; i < ports.Length; i++)
{ {
using StreamReader streamReader = new($"{ports[i]}Header.txt"); using StreamReader streamReader = new($"{_basePath}/Backend/Scripts/{ports[i]}Header{threadId}.txt");
while (streamReader.Peek() != -1) while (streamReader.Peek() != -1)
{ {
@ -145,29 +237,8 @@ public class ContentFilter
for (int i = 0; i < ports.Length; i++) for (int i = 0; i < ports.Length; i++)
{ {
string? html; if (ports[i] == 80 && !robotsTxt1) { robotsTxt1 = HttpClientHelper.HasRobotsTxt(url1, 80).GetAwaiter().GetResult(); }
if (ports[i] == 443 && !robotsTxt2) { robotsTxt2 = HttpClientHelper.HasRobotsTxt(url2, 443).GetAwaiter().GetResult(); }
if (ports[i] == 80)
{
if (string.IsNullOrWhiteSpace(url1)) continue;
html = Task.Run(() => HttpClientHelper.GetHtml(url1, 80).Result).Result;
}
else
{
if (string.IsNullOrWhiteSpace(url2)) continue;
html = Task.Run(() => HttpClientHelper.GetHtml(url2, 443).Result).Result;
}
if (string.IsNullOrWhiteSpace(html)) continue;
if (ports[i] == 80 && string.IsNullOrWhiteSpace(title1)) { FilterHelper.GetTitle(html, out title1); }
if (ports[i] == 443 && string.IsNullOrWhiteSpace(title2)) { FilterHelper.GetTitle(html ,out title2); }
if (ports[i] == 80 && string.IsNullOrWhiteSpace(description1)) { FilterHelper.GetDescription(html, out description1); }
if (ports[i] == 443 && string.IsNullOrWhiteSpace(description2)) { FilterHelper.GetDescription(html, out description2); }
if (ports[i] == 80 && !robotsTxt1) { robotsTxt1 = Task.Run(() => HttpClientHelper.HasRobotsTxt(url1, 80).Result).Result; }
if (ports[i] == 443 && !robotsTxt2) { robotsTxt2 = Task.Run(() => HttpClientHelper.HasRobotsTxt(url2, 443).Result).Result; }
} }
Filtered siteData = new() Filtered siteData = new()
@ -175,10 +246,6 @@ public class ContentFilter
Ip = ip, Ip = ip,
Url1 = url1, Url1 = url1,
Url2 = url2, Url2 = url2,
Title1 = title1,
Title2 = title2,
Description1 = description1,
Description2 = description2,
ServerType1 = serverType1, ServerType1 = serverType1,
ServerType2 = serverType2, ServerType2 = serverType2,
RobotsTXT1 = robotsTxt1, RobotsTXT1 = robotsTxt1,
@ -204,19 +271,18 @@ public class ContentFilter
return siteData; return siteData;
} }
private static void StartProcess(string ip, int port) private void StartProcess(Ip ip, int port, int threadId)
{ {
string fileName = port == 80 ? GetDomainPort80 : GetDomainPort443; string fileName = port == 80 ? _getDomainPort80 : _getDomainPort443;
Process proc = new(); Process proc = new();
proc.StartInfo = new() proc.StartInfo = new()
{ {
FileName = fileName, FileName = "/bin/bash",
Arguments = $"{ip}", Arguments = $"{fileName} {ip.Ip1}.{ip.Ip2}.{ip.Ip3}.{ip.Ip4} {_basePath}/Backend/Scripts/{port}Header{threadId}.txt",
UseShellExecute = false, UseShellExecute = false,
RedirectStandardOutput = false, RedirectStandardOutput = false,
RedirectStandardError = false, RedirectStandardError = false,
RedirectStandardInput = false,
CreateNoWindow = true CreateNoWindow = true
}; };

View File

@ -0,0 +1,131 @@
using System.Collections.Concurrent;
using Backend.Helper;
using Models.Model.Backend;
namespace Backend.Handler;
public class IpFilterHandler
{
private readonly ConcurrentQueue<Discarded> _discardedQueue;
private readonly ConcurrentQueue<UnfilteredQueueItem> _unfilteredQueue;
private readonly ConcurrentQueue<Ip> _preFilteredQueue;
private ThreadHandler _threadHandler;
private bool _stop;
private bool _done;
private bool _stopAutoscaledThreads;
private int _timeout;
public IpFilterHandler(ConcurrentQueue<Discarded> discardedQueue,
ConcurrentQueue<UnfilteredQueueItem> unfilteredQueue,
ConcurrentQueue<Ip> preFilteredQueue, ThreadHandler threadHandler)
{
_discardedQueue = discardedQueue;
_unfilteredQueue = unfilteredQueue;
_preFilteredQueue = preFilteredQueue;
_threadHandler = threadHandler;
_timeout = 16;
}
public List<WaitHandle[]> Start(int threadCount)
{
WaitHandle[] waitHandle = new WaitHandle[64];
int counter = 0;
List<WaitHandle[]> waitHandles = [];
for (int i = 0; i < threadCount; i++)
{
EventWaitHandle handle = new(false, EventResetMode.ManualReset);
if (counter < 64)
{
waitHandle[counter] = handle;
counter++;
Thread f = new (Filter!);
f.Start(handle);
Console.WriteLine($"Filter thread ({i}) started");
Thread.Sleep(16);
continue;
}
counter = 0;
waitHandles.Add(waitHandle);
waitHandle = new WaitHandle[64];
}
return waitHandles;
}
private void Filter(object obj)
{
int counter = 0;
while (!_stop)
{
if (_preFilteredQueue.IsEmpty)
{
if (counter == 30_000)
{
_threadHandler.Stop();
_stop = true;
}
counter++;
Thread.Sleep(128);
continue;
}
_preFilteredQueue.TryDequeue(out Ip item);
(int, int) ports = TcpClientHelper.CheckPort(item, 80, 443);
if (ports is { Item1: 0, Item2: 0 })
{
_discardedQueue.Enqueue(CreateDiscardedQueueItem(item, item.ResponseCode));
continue;
}
_unfilteredQueue.Enqueue(CreateUnfilteredQueueItem(item, ports));
}
((EventWaitHandle) obj).Set();
}
private static Discarded CreateDiscardedQueueItem(Ip ip, int responseCode)
{
return new()
{
Ip = ip,
ResponseCode = responseCode
};
}
private static UnfilteredQueueItem CreateUnfilteredQueueItem(Ip ip, (int, int) ports)
{
Unfiltered unfiltered = new()
{
Ip = ip,
Port1 = ports.Item1,
Port2 = ports.Item2,
Filtered = false
};
return new()
{
Unfiltered = unfiltered,
Operations = Operations.Insert
};
}
public void Stop()
{
_stop = true;
}
}

View File

@ -1,8 +1,11 @@
using System.Buffers.Binary;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Globalization;
using System.Net; using System.Net;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using System.Numerics;
using System.Runtime.InteropServices;
using Backend.Helper; using Backend.Helper;
using Models.Experimental;
using Models.Handler; using Models.Handler;
using Models.Model.Backend; using Models.Model.Backend;
@ -18,27 +21,38 @@ public class ScanSettings
public class IpScanner public class IpScanner
{ {
private readonly ConcurrentQueue<QueueItem> _queue;
private readonly ConcurrentQueue<Discarded> _discardedQueue; private readonly ConcurrentQueue<Discarded> _discardedQueue;
private readonly ConcurrentQueue<Ip> _preFilteredQueue;
private readonly ConcurrentQueue<ScannerResumeObject> _resumeQueue;
private readonly DbHandler _dbHandler; private readonly DbHandler _dbHandler;
private bool _stop; private bool _stop;
private readonly int _timeout;
public IpScanner(ConcurrentQueue<QueueItem> queue, DbHandler dbHandler, ConcurrentQueue<Discarded> discardedQueue) public IpScanner(ConcurrentQueue<Discarded> discardedQueue,
ConcurrentQueue<ScannerResumeObject> resumeQueue, DbHandler dbHandler,
ConcurrentQueue<Ip> preFilteredQueue)
{ {
_queue = queue;
_dbHandler = dbHandler; _dbHandler = dbHandler;
_preFilteredQueue = preFilteredQueue;
_discardedQueue = discardedQueue; _discardedQueue = discardedQueue;
_resumeQueue = resumeQueue;
_timeout = 32;
} }
public WaitHandle[] Start(int threads) public List<WaitHandle[]> Start(int threads)
{ {
int threadsAmount = 0; int threadsAmount = 0;
if (threads % 2 == 0) if (threads % 2 == 0)
{ {
threadsAmount = 256 / threads; threadsAmount = 256 / threads;
} }
WaitHandle[] waitHandle = new WaitHandle[64];
WaitHandle[] waitHandles = new WaitHandle[threads]; int counter = 0;
List<WaitHandle[]> waitHandles = [];
for (int i = 0; i < threads; i++) for (int i = 0; i < threads; i++)
{ {
@ -52,13 +66,25 @@ public class IpScanner
Handle = handle Handle = handle
}; };
waitHandles[i] = handle; if (counter < 64)
{
waitHandle[counter] = handle;
counter++;
Thread f = new (Scan!);
f.Start(scanSettings);
Console.WriteLine($"Scanner thread ({i}) started");
Thread.Sleep(128);
continue;
}
Thread f = new (Scan!); counter = 0;
f.Start(scanSettings);
Console.WriteLine($"Scanner thread ({i}) started"); waitHandles.Add(waitHandle);
Thread.Sleep(1000);
waitHandle = new WaitHandle[64];
} }
return waitHandles; return waitHandles;
@ -81,15 +107,26 @@ public class IpScanner
if (resumeNow is not null) if (resumeNow is not null)
{ {
if (resumeNow.Completed)
{
return;
}
scanSettings.Start = resumeNow.FirstByte; scanSettings.Start = resumeNow.FirstByte;
scanSettings.End = resumeNow.EndRange; scanSettings.End = resumeNow.EndRange;
secondByte = resumeNow.SecondByte; secondByte = resumeNow.SecondByte;
thirdByte = resumeNow.ThirdByte; thirdByte = resumeNow.ThirdByte;
fourthByte = resumeNow.FourthByte; fourthByte = resumeNow.FourthByte;
} }
else
{
CreateResumeObject(scanSettings.ThreadNumber, scanSettings.Start, scanSettings.End, scanSettings.Start, secondByte, thirdByte, fourthByte, false, false, Operations.Insert);
}
// Empty buffer so we use the lowest abstracted ping.Send() method.
byte[] buf = []; byte[] buf = [];
using Ping ping = new(); using Ping ping = new();
int x = 0;
for (int i = scanSettings.Start; i < scanSettings.End; i++) for (int i = scanSettings.Start; i < scanSettings.End; i++)
{ {
@ -108,21 +145,41 @@ public class IpScanner
if (i == 192 && k == 2) continue; if (i == 192 && k == 2) continue;
if (i == 192 && j == 88 && k == 99) continue; if (i == 192 && j == 88 && k == 99) continue;
if (_discardedQueue.Count >= 2000) if (_discardedQueue.Count >= 20_000)
{ {
Console.WriteLine("loooooooooooooooooooooooooooool"); Thread.Sleep(1000);
Thread.Sleep(500); }
if (_preFilteredQueue.Count >= 20_000)
{
Thread.Sleep(1000);
} }
for (int l = fourthByte; l < 256; l++) for (int l = fourthByte; l < 256; l++)
{ {
if (x == 75_000)
{
CreateResumeObject(scanSettings.ThreadNumber, scanSettings.Start, scanSettings.End, i, j, k, l, false, false, Operations.Update);
x = 0;
}
x++;
if (_stop) if (_stop)
{ {
resumeObject.FourthByte = l; resumeObject.FourthByte = l;
break; break;
} }
string ip = $"{i}.{j}.{k}.{l}";
Ip ip = new()
{
Ip1 = i,
Ip2 = j,
Ip3 = k,
Ip4 = l
};
IPStatus responseCode = IPStatus.Unknown; IPStatus responseCode = IPStatus.Unknown;
@ -130,15 +187,26 @@ public class IpScanner
{ {
// Sometimes, if the pinger gets a Destination Unreachable Communication administratively prohibited response, the pinger will throw an exception. // Sometimes, if the pinger gets a Destination Unreachable Communication administratively prohibited response, the pinger will throw an exception.
// https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol?useskin=vector#Control_messages // https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol?useskin=vector#Control_messages
_ = IPAddress.TryParse(ip, out IPAddress? address); //_ = IPAddress.TryParse(ip.ToString(), out IPAddress? address);
if (address is not null)
responseCode = CustomPing.SendIcmpEchoRequestOverRawSocket(Parse(ip.ToString()), _timeout);
/*if (l % 2 == 0)
{ {
responseCode = ping.Send(address, 512, buf, null).Status; responseCode = IPStatus.Success;
} }
else
{
responseCode = IPStatus.TimedOut;
}*/
//responseCode = IPStatus.TimedOut;
//Thread.Sleep(0);
} }
catch (Exception e) catch
{ {
Console.WriteLine(e); //
} }
if (responseCode != IPStatus.Success) if (responseCode != IPStatus.Success)
@ -147,15 +215,7 @@ public class IpScanner
continue; continue;
} }
(int, int) ports = TcpClientHelper.CheckPort(ip, 80, 443); _preFilteredQueue.Enqueue(CreateUnfilteredQueueItem(ip, (int)responseCode));
if (ports is { Item1: 0, Item2: 0 })
{
_discardedQueue.Enqueue(CreateDiscardedQueueItem(ip, (int)responseCode));
continue;
}
_queue.Enqueue(CreateUnfilteredQueueItem(ip, (int)responseCode, ports));
} }
if (_stop) if (_stop)
@ -177,53 +237,156 @@ public class IpScanner
resumeObject.FirstByte = i; resumeObject.FirstByte = i;
break; break;
} }
//Console.WriteLine($"Thread ({scanSettings.ThreadNumber}) is at index ({i}) out of ({scanSettings.End}). Remaining ({scanSettings.End - i})");
} }
QueueItem resume = new() Console.WriteLine($"Thread ({scanSettings.ThreadNumber}) stopped.");
{
ResumeObject = resumeObject,
Operations = Operations.Insert
};
_queue.Enqueue(resume); if (_stop)
{
resumeObject.Paused = true;
}
else
{
resumeObject.Completed = true;
}
resumeObject.Operation = Operations.Update;
_resumeQueue.Enqueue(resumeObject);
scanSettings.Handle!.Set(); scanSettings.Handle!.Set();
} }
private static Discarded CreateDiscardedQueueItem(string ip, int responseCode) private void CreateResumeObject(int threadNumber, int startRange, int endRange, int firstByte, int secondByte, int thirdByte, int fourthByte, bool paused, bool completed, Operations operation)
{ {
Discarded discarded = new() ScannerResumeObject resumeObject = new();
resumeObject.ThreadNumber = threadNumber;
resumeObject.StartRange = startRange;
resumeObject.EndRange = endRange;
resumeObject.FirstByte = firstByte;
resumeObject.SecondByte = secondByte;
resumeObject.ThirdByte = thirdByte;
resumeObject.FourthByte = fourthByte;
resumeObject.Paused = paused;
resumeObject.Completed = completed;
resumeObject.Operation = operation;
_resumeQueue.Enqueue(resumeObject);
}
private static Discarded CreateDiscardedQueueItem(Ip ip, int responseCode)
{
return new()
{ {
Ip = ip, Ip = ip,
ResponseCode = responseCode ResponseCode = responseCode
}; };
return discarded;
} }
private static QueueItem CreateUnfilteredQueueItem(string ip, int responseCode, (int, int) ports) private static Ip CreateUnfilteredQueueItem(Ip ip, int responseCode)
{ {
Unfiltered unfiltered = new() ip.ResponseCode = responseCode;
{
Ip = ip,
ResponseCode = responseCode,
Port1 = ports.Item1,
Port2 = ports.Item2,
Filtered = 0
};
QueueItem superUnfilteredObject = new() return ip;
{
Unfiltered = unfiltered,
Operations = Operations.Insert
};
return superUnfilteredObject;
} }
public void Stop() public void Stop()
{ {
_stop = true; _stop = true;
} }
private static unsafe IPAddress Parse(ReadOnlySpan<char> ipSpan)
{
int length = ipSpan.Length;
long nonCanonical;
fixed (char* name = &MemoryMarshal.GetReference<char>(ipSpan))
nonCanonical = ParseNonCanonical(name, 0, ref length, true);
return new IPAddress(BitOperations.RotateRight((uint)nonCanonical & 16711935U, 8) + BitOperations.RotateLeft((uint)nonCanonical & 4278255360U, 8));
}
private static unsafe long ParseNonCanonical(char* name, int start, ref int end, bool notImplicitFile)
{
long* numPtr = stackalloc long[4];
long num1 = 0;
bool flag = false;
int index1 = 0;
int index2;
for (index2 = start; index2 < end; ++index2)
{
char ch = name[index2];
num1 = 0L;
int num2 = 10;
if (ch == '0')
{
num2 = 8;
++index2;
flag = true;
if (index2 < end)
{
switch (name[index2])
{
case 'X':
case 'x':
num2 = 16;
++index2;
flag = false;
break;
}
}
}
for (; index2 < end; ++index2)
{
char c = name[index2];
int num3;
if ((num2 == 10 || num2 == 16) && char.IsAsciiDigit(c))
num3 = (int) c - 48;
else if (num2 == 8 && '0' <= c && c <= '7')
num3 = (int) c - 48;
else if (num2 == 16 && 'a' <= c && c <= 'f')
num3 = (int) c + 10 - 97;
else if (num2 == 16 && 'A' <= c && c <= 'F')
num3 = (int) c + 10 - 65;
else
break;
num1 = num1 * (long) num2 + (long) num3;
if (num1 > (long) uint.MaxValue)
return -1;
flag = true;
}
if (index2 < end && name[index2] == '.')
{
if (index1 >= 3 || !flag || num1 > (long) byte.MaxValue)
return -1;
numPtr[index1] = num1;
++index1;
flag = false;
}
else
break;
}
if (!flag)
return -1;
if (index2 < end)
{
char ch;
if ((ch = name[index2]) != '/' && ch != '\\' && (!notImplicitFile || ch != ':' && ch != '?' && ch != '#'))
return -1;
end = index2;
}
numPtr[index1] = num1;
switch (index1)
{
case 0:
return numPtr[0] > (long) uint.MaxValue ? -1L : numPtr[0];
case 1:
return numPtr[1] > 16777215L ? -1L : numPtr[0] << 24 | numPtr[1] & 16777215L;
case 2:
return numPtr[2] > (long) ushort.MaxValue ? -1L : numPtr[0] << 24 | (numPtr[1] & (long) byte.MaxValue) << 16 | numPtr[2] & (long) ushort.MaxValue;
case 3:
return numPtr[3] > (long) byte.MaxValue ? -1L : numPtr[0] << 24 | (numPtr[1] & (long) byte.MaxValue) << 16 | (numPtr[2] & (long) byte.MaxValue) << 8 | numPtr[3] & (long) byte.MaxValue;
default:
return -1;
}
}
} }

View File

@ -7,127 +7,203 @@ namespace Backend.Handler;
public class ThreadHandler public class ThreadHandler
{ {
private readonly DbHandler _dbHandler; private readonly DbHandler _dbHandler;
private readonly Communication _communication;
private readonly IpScanner _ipScanner; private readonly IpScanner _ipScanner;
private readonly ContentFilter _contentFilter; private readonly ContentFilter _contentFilter;
private readonly IpFilterHandler _ipFilterHandler;
private bool _communicationStopped;
private bool _ipScannerStopped; private bool _ipScannerStopped;
private bool _contentFilterStopped; private bool _contentFilterStopped;
private bool _stopSignal; private bool _ipFilterStopped;
private bool _stage1 = false;
private bool _stage2 = true;
private bool _stage3 = false;
public ThreadHandler() ConcurrentQueue<Filtered> filteredQueue = new();
ConcurrentQueue<Discarded> discardedQueue = new();
ConcurrentQueue<UnfilteredQueueItem> unfilteredQueue = new();
ConcurrentQueue<ScannerResumeObject> scannerResumeQueue = new();
ConcurrentQueue<Ip> preFilteredQueue = new();
public ThreadHandler(string path)
{ {
ConcurrentQueue<QueueItem> contentQueue = new(); _dbHandler = new(filteredQueue, discardedQueue, unfilteredQueue, scannerResumeQueue, preFilteredQueue, path);
ConcurrentQueue<Discarded> discardedQueue = new(); _ipScanner = new(discardedQueue, scannerResumeQueue, _dbHandler, preFilteredQueue);
_contentFilter = new(filteredQueue, unfilteredQueue, _dbHandler, path, this);
_dbHandler = new(contentQueue, discardedQueue); _ipFilterHandler = new(discardedQueue, unfilteredQueue, preFilteredQueue, this);
_communication = new(_dbHandler, this);
_ipScanner = new(contentQueue, _dbHandler, discardedQueue);
_contentFilter = new(contentQueue, _dbHandler);
} }
public void Start() public void Start()
{ {
Thread scanner = new(StartScanner); Thread scanner = new(StartScanner);
Thread indexer = new(StartIndexer); Thread ipFilter = new(StartIpFilter);
Thread indexer = new(StartContentFilter);
Thread database = new(StartDbHandler); Thread database = new(StartDbHandler);
Thread discarded = new(StartDiscardedDbHandler); Thread discarded = new(StartDiscardedDbHandler);
Thread communication = new(StartCommunicationHandler); Thread filtered = new(StartFilteredDbHandler);
Thread resume = new(StartResumeDbHandler);
Thread contentFilterThread = new(StartContentFilterThread);
Thread prefilterDb = new(StartPreFilterDbHandler);
Thread fillIpFilterQueue = new(StartFillIpFilterQueue);
//Thread check = new(CheckQueue);
scanner.Start(); //check.Start();
indexer.Start();
database.Start();
discarded.Start();
communication.Start();
scanner.Join(); if (_stage1)
indexer.Join(); {
database.Join(); discarded.Start(); // de-queues from discardedQueue
discarded.Join(); prefilterDb.Start(); // de-queues from preFilteredQueue
communication.Join(); scanner.Start(); // en-queues to discardedQueue and preFilteredQueue
resume.Start(); // de-queues from resumeQueue
scanner.Join();
Stop();
discarded.Join();
prefilterDb.Join();
resume.Join();
}
if (_stage2)
{
database.Start(); // de-queues from unfilteredQueue
discarded.Start(); // de-queues from discardedQueue
ipFilter.Start(); // en-queues to discardedQueue and unfilteredQueue
fillIpFilterQueue.Start(); // reads from preFiltered database, en-queues to preFilteredQueue
ipFilter.Join();
Stop();
database.Join();
discarded.Join();
fillIpFilterQueue.Join();
}
if (_stage3)
{
filtered.Start(); // de-queues from filteredQueue
database.Start(); // de-queues from unfilteredQueue
indexer.Start(); // en-queues to unfilteredQueue and contentQueue
contentFilterThread.Start(); // de-queues from contentQueue, en-queues to filteredQueue
contentFilterThread.Join();
filtered.Join();
database.Join();
indexer.Join();
}
} }
public static void ManualGc() private void CheckQueue()
{ {
GC.Collect(); while (true)
GC.WaitForPendingFinalizers(); {
GC.Collect(); Console.Clear();
Console.WriteLine($"filteredQueue.Count: {filteredQueue.Count}");
Console.WriteLine($"discardedQueue.Count: {discardedQueue.Count}");
Console.WriteLine($"unfilteredQueue.Count: {unfilteredQueue.Count}");
Console.WriteLine($"scannerResumeQueue.Count: {scannerResumeQueue.Count}");
Console.WriteLine($"preFilteredQueue.Count: {preFilteredQueue.Count}");
Thread.Sleep(5);
}
} }
private void StartScanner() private void StartScanner()
{ {
Thread.Sleep(10000); // Let the database handler instantiate and warm up first. Thread.Sleep(15000); // Let the database handler instantiate and warm up first.
WaitHandle[] wait = _ipScanner.Start(4); List<WaitHandle[]> wait = _ipScanner.Start(256);
for (int i = 0; i < wait.Count; i++)
{
WaitHandle.WaitAll(wait[i]);
}
Console.WriteLine("Scanner finished");
}
private void StartContentFilter()
{
Thread.Sleep(5000);
WaitHandle[] wait = _contentFilter.Start();
WaitHandle.WaitAll(wait); WaitHandle.WaitAll(wait);
Console.WriteLine("Scanner finished"); Console.WriteLine("Content filter finished");
_ipScannerStopped = true;
}
private void StartIndexer()
{
while (!_stopSignal)
{
WaitHandle[] wait = _contentFilter.Start();
WaitHandle.WaitAll(wait);
Thread.Sleep(300000); // 5 minutes
}
Console.WriteLine("Indexer finished");
_contentFilterStopped = true; _contentFilterStopped = true;
} }
private void StartContentFilterThread()
{
WaitHandle[] wait = _contentFilter.StartFilterThread(8);
WaitHandle.WaitAll(wait);
}
private void StartFillIpFilterQueue()
{
_dbHandler.GetPreFilterQueueItem();
}
private void StartIpFilter()
{
Thread.Sleep(1000);
List<WaitHandle[]> wait = _ipFilterHandler.Start(1024);
for (int i = 0; i < wait.Count; i++)
{
WaitHandle.WaitAll(wait[i]);
}
Console.WriteLine("Ip filter finished");
_ipFilterStopped = true;
}
private void StartDbHandler() private void StartDbHandler()
{ {
_dbHandler.StartContent(); _dbHandler.UnfilteredDbHandler();
}
private void StartFilteredDbHandler()
{
_dbHandler.FilteredDbHandler();
}
private void StartPreFilterDbHandler()
{
_dbHandler.PrefilteredDbHandler();
}
private void StartResumeDbHandler()
{
_dbHandler.ResumeDbHandler();
} }
private void StartDiscardedDbHandler() private void StartDiscardedDbHandler()
{ {
WaitHandle[] wait = _dbHandler.Start(2); WaitHandle[] wait = _dbHandler.Start(4);
WaitHandle.WaitAll(wait); WaitHandle.WaitAll(wait);
Console.WriteLine("Discarded DbHandler finished"); Console.WriteLine("Discarded DbHandler finished");
} }
private void StartCommunicationHandler() public void Stop()
{ {
WaitHandle[] wait = _communication.Start(); Console.WriteLine("Stopping...");
WaitHandle.WaitAll(wait);
Console.WriteLine("Communicator finished");
_communicationStopped = true;
Stop();
}
private void Stop()
{
_stopSignal = true;
_ipScanner.Stop(); _ipScanner.Stop();
_contentFilter.Stop(); _contentFilter.Stop();
_ipFilterHandler.Stop();
Console.WriteLine("Stopping Extra...");
bool stopping = true; Thread.Sleep(30_000);
while (stopping) Console.WriteLine("Stopping Super Extra...");
{ _dbHandler.Stop();
if (_communicationStopped && _ipScannerStopped && _contentFilterStopped)
{ Console.WriteLine("Stopped.");
_dbHandler.Stop();
stopping = false;
}
Thread.Sleep(3000);
}
} }
} }

View File

@ -1,43 +0,0 @@
using Models.Model.Backend;
namespace Backend.Helper;
public static class FilesystemHelper
{
public static DatabaseSizes GetDatabaseSizes()
{
DatabaseSizes databaseSizes = new();
FileInfo fileInfo = new("../../../../Models/mydb.db");
databaseSizes.MyDbSize = fileInfo.Length.ToSize(SizeUnits.KB);
databaseSizes.DiscardedDbSize = GetDiscardedDbSizes().ToSize(SizeUnits.KB);
fileInfo = new("../../../../Models/Filtered.db");
databaseSizes.FilteredDbSize = fileInfo.Length.ToSize(SizeUnits.KB);
return databaseSizes;
}
private static long GetDiscardedDbSizes()
{
const string folder = "../../../../Models";
string[] files = Directory.GetFiles(folder, "*.db");
long size = 0;
for (int i = 0; i < files.Length; i++)
{
if (!files[i].Contains("Discarded")) continue;
FileInfo fileInfo = new(files[i]);
size += fileInfo.Length;
}
return size;
}
private static double ToSize(this long value, SizeUnits unit)
{
return double.Parse((value / Math.Pow(1024, (long)unit)).ToString("0.00"));
}
}

View File

@ -2,12 +2,10 @@ using System.Text.RegularExpressions;
namespace Backend.Helper; namespace Backend.Helper;
public static partial class FilterHelper public static class FilterHelper
{ {
// https://stackoverflow.com/a/56116499 // https://stackoverflow.com/a/56116499
private const string DomainPattern = @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$"; private const string DomainPattern = @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$";
private const string TitlePattern = "<title>(.*)</title>";
private const string DescriptionPattern = "<meta name=\"description\" content=\"(.*?)\"";
public static void GetDomain(string data, out string result) public static void GetDomain(string data, out string result)
{ {
@ -42,32 +40,6 @@ public static partial class FilterHelper
result = GetSubstring(data, start, end); result = GetSubstring(data, start, end);
} }
public static void GetTitle(string data, out string result)
{
result = "";
Regex titleRegex = MyRegex1();
Match match = titleRegex.Match(data);
if (match.Success)
{
result = match.Groups[1].Value;
}
}
public static void GetDescription(string data, out string result)
{
result = "";
Regex titleRegex = MyRegex2();
Match match = titleRegex.Match(data);
if (match.Success)
{
result = match.Groups[1].Value;
}
}
public static void GetHttpVersion(string data, out string result) public static void GetHttpVersion(string data, out string result)
{ {
result = ""; result = "";
@ -198,7 +170,7 @@ public static partial class FilterHelper
case 0: case 0:
return; return;
case 2: case 2:
result = $"{temp[1].Trim()} UUHHHMMM"; result = $"{temp[1].Trim()}";
return; return;
default: default:
result = temp[2].Trim(); result = temp[2].Trim();
@ -241,17 +213,7 @@ public static partial class FilterHelper
private static bool ValidateUrl(string url) private static bool ValidateUrl(string url)
{ {
Regex rgx = MyRegex(); Regex rgx = new(DomainPattern);
return rgx.IsMatch(url); return rgx.IsMatch(url);
} }
//Generate the RegEx at compile time.
[GeneratedRegex(DomainPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled, "en-US")]
private static partial Regex MyRegex();
[GeneratedRegex(TitlePattern)]
private static partial Regex MyRegex1();
[GeneratedRegex(DescriptionPattern)]
private static partial Regex MyRegex2();
} }

View File

@ -1,65 +1,52 @@
using System.Text.RegularExpressions;
namespace Backend.Helper; namespace Backend.Helper;
public static class HttpClientHelper public static partial class HttpClientHelper
{ {
public static async Task<string> GetHtml(string url, int port) // Reddit, for example, will block the GET request if you don't have a user agent.
{ private const string UserAgentHeader = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
using HttpClient client = new();
if (port == 80)
{
client.BaseAddress = new($"http://{url}");
}
else
{
client.BaseAddress = new($"https://{url}");
}
client.DefaultRequestHeaders.Accept.Clear();
HttpResponseMessage? response = null;
try
{
response = await client.GetAsync("/");
}
catch (Exception e)
{
Console.WriteLine(e);
}
if (response is null || !response.IsSuccessStatusCode)
{
return "";
}
return await response.Content.ReadAsStringAsync();
}
public static async Task<bool> HasRobotsTxt(string url, int port) public static async Task<bool> HasRobotsTxt(string url, int port)
{ {
using HttpClient client = new(); using HttpClient client = new();
if (port == 80) if (port == 80)
{ {
client.BaseAddress = new($"http://{url}"); try
{
client.BaseAddress = new($"http://{url}");
}
catch
{
//
}
} }
else else
{ {
client.BaseAddress = new($"https://{url}"); try
{
client.BaseAddress = new($"https://{url}");
}
catch
{
//
}
} }
client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.UserAgent.ParseAdd(UserAgentHeader);
client.Timeout = TimeSpan.FromSeconds(30);
HttpResponseMessage? response = null; HttpResponseMessage? response = null;
try try
{ {
response = await client.GetAsync("/robots.txt"); response = await client.SendAsync(new(HttpMethod.Head, "/robots.txt"));
} }
catch (Exception e) catch
{ {
Console.WriteLine(e); //
} }
return response is not null && response.IsSuccessStatusCode; return response is not null && response.IsSuccessStatusCode;

View File

@ -0,0 +1,9 @@
namespace Backend.Helper;
public static class ProjectPathHelper
{
public static string GetProjectPath()
{
return new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).Parent!.Parent!.Parent!.Parent!.FullName;
}
}

View File

@ -1,44 +0,0 @@
using FuzzySharp;
using Models.Handler;
using Models.Model.External;
namespace Backend.Helper;
public static class SearchHelper
{
public static SearchResults Search(string searchText, DbHandler dbHandler)
{
if (string.IsNullOrWhiteSpace(searchText))
{
SearchResult searchResult = new();
searchResult.Description = "asd";
searchResult.Title = "asd";
searchResult.Url = "asd";
SearchResults searchResults = new();
searchResults.Results =
[
searchResult
];
return searchResults;
}
List<SearchResult?> temp = dbHandler.GetSearchResults();
SearchResults searchResultsList = new();
for (int i = 0; i < temp.Count; i++)
{
if (temp[i] is null) continue;
SearchResult result = new();
if (Fuzz.Ratio(searchText, temp[i]!.Url) <= 50 && Fuzz.Ratio(searchText, temp[i]!.Title) <= 50) continue;
result.Url = temp[i]?.Url;
result.Title = temp[i]?.Title;
searchResultsList.Results.Add(result);
}
return searchResultsList;
}
}

View File

@ -1,20 +1,24 @@
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using Models.Model.Backend;
namespace Backend.Helper; namespace Backend.Helper;
public static class TcpClientHelper public static class TcpClientHelper
{ {
public static (int, int) CheckPort(string ip, params int[] ports) public static (int, int) CheckPort(Ip ip, params int[] ports)
{ {
// This would be way cleaner if the TcpClient didn't throw an exception if the destination couldn't be reached, // This would be way cleaner if the TcpClient didn't throw an exception if the destination couldn't be reached,
// and it would just return a result.error, for example. // and it would just return a result.error, for example.
for (int i = 0; i < ports.Length; i++) { for (int i = 0; i < ports.Length; i++) {
using Socket socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SendTimeout = 250;
try try
{ {
using TcpClient client = new(); socket.Connect(new IPEndPoint(IPAddress.Parse(ip.ToString()), ports[i]));
client.Connect(ip, ports[i]); socket.Close();
// If the connection is successful, update the result array with the port number // If the connection is not successful, update the ports array with 0.
} }
catch catch
{ {

View File

@ -1,8 +1,9 @@
using Backend.Handler; using Backend.Handler;
using Backend.Helper;
Console.WriteLine("Program started"); Console.WriteLine("Program started");
ThreadHandler threadHandler = new(); ThreadHandler threadHandler = new(ProjectPathHelper.GetProjectPath());
threadHandler.Start(); threadHandler.Start();
Console.WriteLine("Done"); Console.WriteLine("Done");

View File

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
curl -k -vvI -m 10 https://"$1" &> 443Header.txt curl -k -vvI -m 10 https://"$1" &> "$2"

View File

@ -1,3 +1,4 @@
#!/bin/bash #!/bin/bash
curl -k -vvI -m 10 http://"$1" &> 80Header.txt curl -k -vvI -m 10 http://"$1" &> "$2"
#80Header.txt

View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="GetEFProjectMetadata">
<MSBuild Condition=" '$(TargetFramework)' == '' "
Projects="$(MSBuildProjectFile)"
Targets="GetEFProjectMetadata"
Properties="TargetFramework=$(TargetFrameworks.Split(';')[0]);EFProjectMetadataFile=$(EFProjectMetadataFile)" />
<ItemGroup Condition=" '$(TargetFramework)' != '' ">
<EFProjectMetadata Include="AssemblyName: $(AssemblyName)" />
<EFProjectMetadata Include="Language: $(Language)" />
<EFProjectMetadata Include="OutputPath: $(OutputPath)" />
<EFProjectMetadata Include="Platform: $(Platform)" />
<EFProjectMetadata Include="PlatformTarget: $(PlatformTarget)" />
<EFProjectMetadata Include="ProjectAssetsFile: $(ProjectAssetsFile)" />
<EFProjectMetadata Include="ProjectDir: $(ProjectDir)" />
<EFProjectMetadata Include="RootNamespace: $(RootNamespace)" />
<EFProjectMetadata Include="RuntimeFrameworkVersion: $(RuntimeFrameworkVersion)" />
<EFProjectMetadata Include="TargetFileName: $(TargetFileName)" />
<EFProjectMetadata Include="TargetFrameworkMoniker: $(TargetFrameworkMoniker)" />
<EFProjectMetadata Include="Nullable: $(Nullable)" />
<EFProjectMetadata Include="TargetFramework: $(TargetFramework)" />
<EFProjectMetadata Include="TargetPlatformIdentifier: $(TargetPlatformIdentifier)" />
</ItemGroup>
<WriteLinesToFile Condition=" '$(TargetFramework)' != '' "
File="$(EFProjectMetadataFile)"
Lines="@(EFProjectMetadata)" />
</Target>
</Project>

View File

@ -1,200 +0,0 @@
{
"format": 1,
"restore": {
"/home/skingging/Documents/Projects/CSharp/RSE/Backend/Backend.csproj": {}
},
"projects": {
"/home/skingging/Documents/Projects/CSharp/RSE/Backend/Backend.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/skingging/Documents/Projects/CSharp/RSE/Backend/Backend.csproj",
"projectName": "Backend",
"projectPath": "/home/skingging/Documents/Projects/CSharp/RSE/Backend/Backend.csproj",
"packagesPath": "/home/skingging/.nuget/packages/",
"outputPath": "/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/skingging/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/home/skingging/Documents/Projects/CSharp/RSE/Models/Models.csproj": {
"projectPath": "/home/skingging/Documents/Projects/CSharp/RSE/Models/Models.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "all"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"FuzzySharp": {
"target": "Package",
"version": "[2.0.2, )"
},
"MessagePack": {
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"MessagePack.Annotations": {
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"MessagePackAnalyzer": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"NetMQ": {
"target": "Package",
"version": "[4.0.1.13, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[8.0.5, 8.0.5]"
},
{
"name": "Microsoft.NETCore.App.Host.linux-x64",
"version": "[8.0.5, 8.0.5]"
},
{
"name": "Microsoft.NETCore.App.Ref",
"version": "[8.0.5, 8.0.5]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/home/skingging/.dotnet/sdk/9.0.100-preview.6.24328.19/PortableRuntimeIdentifierGraph.json"
}
}
},
"/home/skingging/Documents/Projects/CSharp/RSE/Models/Models.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/skingging/Documents/Projects/CSharp/RSE/Models/Models.csproj",
"projectName": "Models",
"projectPath": "/home/skingging/Documents/Projects/CSharp/RSE/Models/Models.csproj",
"packagesPath": "/home/skingging/.nuget/packages/",
"outputPath": "/home/skingging/Documents/Projects/CSharp/RSE/Models/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/skingging/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "all"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"MessagePack": {
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"MessagePack.Annotations": {
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"MessagePackAnalyzer": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[3.0.238-rc.1, )"
},
"Microsoft.Data.Sqlite": {
"target": "Package",
"version": "[8.0.10, )"
},
"SQLite": {
"target": "Package",
"version": "[3.13.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[8.0.5, 8.0.5]"
},
{
"name": "Microsoft.NETCore.App.Ref",
"version": "[8.0.5, 8.0.5]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/home/skingging/.dotnet/sdk/9.0.100-preview.6.24328.19/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/skingging/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/skingging/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/skingging/.nuget/packages/" />
</ItemGroup>
</Project>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3/2.1.6/buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3/2.1.6/buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets')" />
<Import Project="$(NuGetPackageRoot)messagepackanalyzer/3.0.238-rc.1/build/MessagePackAnalyzer.targets" Condition="Exists('$(NuGetPackageRoot)messagepackanalyzer/3.0.238-rc.1/build/MessagePackAnalyzer.targets')" />
</ImportGroup>
</Project>

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f3c6338a6ae57d4e839090fca125bc38f764d016")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
5e46353062a73d293516ee43511f79696b25ea1a0227ab06137d80abd08b8286

View File

@ -1,14 +0,0 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1 +0,0 @@
d4d583d1f9305bfe4b6166eebe3363e92c16e51e5883f78a57c65c482ecf9a6c

View File

@ -1,82 +0,0 @@
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Backend
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Backend.deps.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Backend.runtimeconfig.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Models.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Models.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.csproj.AssemblyReference.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.GeneratedMSBuildEditorConfig.editorconfig
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.AssemblyInfoInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.AssemblyInfo.cs
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.csproj.CoreCompileInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/refint/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.genruntimeconfig.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/ref/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Microsoft.Data.Sqlite.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/SQLitePCLRaw.batteries_v2.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/SQLitePCLRaw.core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/SQLitePCLRaw.provider.e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-arm/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-arm64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-armel/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-mips64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-musl-arm/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-musl-arm64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-musl-x64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-ppc64le/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-s390x/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-x64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-x86/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/maccatalyst-x64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/osx-arm64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/osx-x64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win-arm/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win-arm64/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win-x64/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win-x86/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/linux-x64/native/libsqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/osx-x64/native/libsqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win7-x64/native/sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win7-x86/native/sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/AsyncIO.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Microsoft.Extensions.ObjectPool.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/NaCl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/NetMQ.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Private.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Security.Cryptography.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Security.Permissions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.ServiceModel.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/cs/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/de/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/es/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/fr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/it/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/ja/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/ko/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/pl/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/pt-BR/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/ru/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/tr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/zh-Hans/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/zh-Hant/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/FuzzySharp.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/MessagePack.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/MessagePack.Annotations.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/Microsoft.NET.StringTools.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/Backend.csproj.Up2Date

Binary file not shown.

View File

@ -1 +0,0 @@
4ae99fa15b198bb9214533e1fedf5a1e40165b14a6ff445e8657afc57890c853

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
9371234864fbc6630f90d88b86a9165d6bf6b07556d735c0a3bcf7b4cfc5fd84

View File

@ -1,14 +0,0 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1 +0,0 @@
fd3824608fd94d5a6ca4c7e65b7b3b8908871d218ed2a606e6da4c37de80f21d

View File

@ -1,51 +0,0 @@
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Backend
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Backend.deps.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Backend.runtimeconfig.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Microsoft.Data.Sqlite.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/SQLitePCLRaw.batteries_v2.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/SQLitePCLRaw.core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/SQLitePCLRaw.provider.e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/libsqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Models.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Models.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.csproj.AssemblyReference.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.GeneratedMSBuildEditorConfig.editorconfig
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.AssemblyInfoInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.AssemblyInfo.cs
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.csproj.CoreCompileInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.csproj.Up2Date
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/refint/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/Backend.genruntimeconfig.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Debug/net8.0/linux-x64/ref/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/AsyncIO.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Microsoft.Bcl.AsyncInterfaces.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Microsoft.Extensions.ObjectPool.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/NaCl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/NetMQ.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Private.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Security.Cryptography.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Security.Permissions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.ServiceModel.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/cs/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/de/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/es/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/fr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/it/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/ja/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/ko/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/pl/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/pt-BR/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/ru/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/tr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/zh-Hans/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Debug/net8.0/linux-x64/zh-Hant/System.Private.ServiceModel.resources.dll

View File

@ -1 +0,0 @@
a6028093686ad8ada04d4f48d5cf0f5281c16246ab92de50a4b16c2ef86d3719

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
9371234864fbc6630f90d88b86a9165d6bf6b07556d735c0a3bcf7b4cfc5fd84

View File

@ -1,14 +0,0 @@
is_global = true
build_property.TargetFramework = net9.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 9.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
9371234864fbc6630f90d88b86a9165d6bf6b07556d735c0a3bcf7b4cfc5fd84

View File

@ -1,18 +0,0 @@
is_global = true
build_property.EnableAotAnalyzer =
build_property.EnableSingleFileAnalyzer =
build_property.EnableTrimAnalyzer =
build_property.IncludeAllContentForSelfExtract =
build_property.TargetFramework = net9.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 9.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f3c6338a6ae57d4e839090fca125bc38f764d016")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
ffe56baf943e027152af8f421cec2146e64a2c69fab0778620c627d36d497988

View File

@ -1,14 +0,0 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1 +0,0 @@
493a163160bdbc6e8e87f2ed6c5ee9a200739324e6f660fe040858ad1f69ffae

View File

@ -1,82 +0,0 @@
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Backend
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Backend.deps.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Backend.runtimeconfig.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/AsyncIO.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/FuzzySharp.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Microsoft.Data.Sqlite.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Microsoft.Extensions.ObjectPool.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/NaCl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/NetMQ.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/SQLitePCLRaw.batteries_v2.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/SQLitePCLRaw.core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/SQLitePCLRaw.provider.e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Private.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Security.Cryptography.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Security.Permissions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.ServiceModel.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/cs/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/de/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/es/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/fr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/it/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/ja/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/ko/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/pl/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/pt-BR/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/ru/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/tr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/zh-Hans/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/zh-Hant/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-x64/native/libsqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/osx-x64/native/libsqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win7-x64/native/sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win7-x86/native/sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-arm/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-arm64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-armel/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-mips64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-musl-arm/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-musl-arm64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-musl-x64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-ppc64le/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-s390x/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-x64/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/linux-x86/native/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/maccatalyst-x64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/osx-arm64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/osx-x64/native/libe_sqlite3.dylib
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win-arm/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win-arm64/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win-x64/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win-x86/native/e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Models.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Models.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.csproj.AssemblyReference.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.GeneratedMSBuildEditorConfig.editorconfig
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.AssemblyInfoInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.AssemblyInfo.cs
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.csproj.CoreCompileInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.csproj.Up2Date
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/refint/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/Backend.genruntimeconfig.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/ref/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/MessagePack.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/MessagePack.Annotations.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/Microsoft.NET.StringTools.dll

View File

@ -1 +0,0 @@
01e015f736467317e5c5ea662b02af6b2459e13eaa954f0d7563836369668286

Binary file not shown.

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Backend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Backend")]
[assembly: System.Reflection.AssemblyTitleAttribute("Backend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -1 +0,0 @@
f6374ce8e27deb7d389612c875bb24368cf0c20220a76d7c26faa95a09317bab

View File

@ -1,18 +0,0 @@
is_global = true
build_property.EnableAotAnalyzer = true
build_property.EnableSingleFileAnalyzer = true
build_property.EnableTrimAnalyzer = true
build_property.IncludeAllContentForSelfExtract =
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization = true
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Backend
build_property.ProjectDir = /home/skingging/Documents/Projects/CSharp/RSE/Backend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop = false
build_property.EffectiveAnalysisLevelStyle = 8.0

View File

@ -1,8 +0,0 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -1 +0,0 @@
80eb10c72da2229692efe6478d363aa514ff844afa60d5afbfce29a0dc6c1e90

View File

@ -1,234 +0,0 @@
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Backend
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Backend.deps.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Backend.runtimeconfig.json
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Data.Sqlite.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/SQLitePCLRaw.batteries_v2.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/SQLitePCLRaw.core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/SQLitePCLRaw.provider.e_sqlite3.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libsqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libe_sqlite3.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Models.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Models.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.csproj.AssemblyReference.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.GeneratedMSBuildEditorConfig.editorconfig
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.AssemblyInfoInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.AssemblyInfo.cs
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.csproj.CoreCompileInputs.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.csproj.Up2Date
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/refint/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.pdb
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/Backend.genruntimeconfig.cache
/home/skingging/Documents/Projects/CSharp/RSE/Backend/obj/Release/net8.0/linux-x64/ref/Backend.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/AsyncIO.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Bcl.AsyncInterfaces.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Extensions.ObjectPool.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Win32.SystemEvents.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/NaCl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/NetMQ.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Drawing.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Pkcs.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Permissions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ServiceModel.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ServiceModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Windows.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/cs/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/de/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/es/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/fr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/it/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/ja/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/ko/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/pl/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/pt-BR/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/ru/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/tr/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/zh-Hans/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/zh-Hant/System.Private.ServiceModel.resources.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/FuzzySharp.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.CSharp.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.VisualBasic.Core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.VisualBasic.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Win32.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/Microsoft.Win32.Registry.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.AppContext.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Buffers.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Collections.Concurrent.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Collections.Immutable.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Collections.NonGeneric.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Collections.Specialized.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Collections.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.Annotations.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.DataAnnotations.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.EventBasedAsync.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.TypeConverter.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ComponentModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Configuration.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Console.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Core.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Data.Common.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Data.DataSetExtensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Data.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.Contracts.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.Debug.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.DiagnosticSource.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.FileVersionInfo.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.Process.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.StackTrace.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.TextWriterTraceListener.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.Tools.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.TraceSource.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Diagnostics.Tracing.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Drawing.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Drawing.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Dynamic.Runtime.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Formats.Asn1.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Formats.Tar.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Globalization.Calendars.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Globalization.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Globalization.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Compression.Brotli.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Compression.FileSystem.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Compression.ZipFile.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Compression.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.FileSystem.AccessControl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.FileSystem.DriveInfo.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.FileSystem.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.FileSystem.Watcher.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.FileSystem.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.IsolatedStorage.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.MemoryMappedFiles.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Pipes.AccessControl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.Pipes.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.UnmanagedMemoryStream.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.IO.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Linq.Expressions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Linq.Parallel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Linq.Queryable.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Linq.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Memory.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Http.Json.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Http.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.HttpListener.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Mail.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.NameResolution.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.NetworkInformation.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Ping.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Quic.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Requests.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Security.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.ServicePoint.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.Sockets.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.WebClient.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.WebHeaderCollection.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.WebProxy.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.WebSockets.Client.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.WebSockets.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Net.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Numerics.Vectors.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Numerics.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ObjectModel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.CoreLib.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.DataContractSerialization.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.Uri.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.Xml.Linq.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Private.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.DispatchProxy.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Emit.ILGeneration.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Emit.Lightweight.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Emit.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Metadata.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.TypeExtensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Reflection.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Resources.Reader.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Resources.ResourceManager.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Resources.Writer.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.CompilerServices.Unsafe.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.CompilerServices.VisualC.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Handles.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.InteropServices.JavaScript.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.InteropServices.RuntimeInformation.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.InteropServices.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Intrinsics.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Loader.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Numerics.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Serialization.Formatters.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Serialization.Json.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Serialization.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Serialization.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.Serialization.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Runtime.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.AccessControl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Claims.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Algorithms.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Cng.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Csp.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Encoding.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.OpenSsl.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.Primitives.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.X509Certificates.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Cryptography.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Principal.Windows.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.Principal.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.SecureString.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Security.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ServiceModel.Web.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ServiceProcess.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.Encoding.CodePages.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.Encoding.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.Encoding.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.Encodings.Web.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.Json.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Text.RegularExpressions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Channels.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Overlapped.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Tasks.Dataflow.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Tasks.Extensions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Tasks.Parallel.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Tasks.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Thread.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.ThreadPool.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.Timer.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Threading.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Transactions.Local.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Transactions.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.ValueTuple.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Web.HttpUtility.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Web.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Windows.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.Linq.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.ReaderWriter.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.Serialization.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.XDocument.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.XPath.XDocument.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.XPath.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.XmlDocument.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.XmlSerializer.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.Xml.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/System.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/WindowsBase.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/mscorlib.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/netstandard.dll
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/createdump
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libSystem.Globalization.Native.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libSystem.IO.Compression.Native.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libSystem.Native.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libSystem.Net.Security.Native.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libSystem.Security.Cryptography.Native.OpenSsl.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libclrgc.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libclrjit.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libcoreclr.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libcoreclrtraceptprovider.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libhostfxr.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libhostpolicy.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libmscordaccore.so
/home/skingging/Documents/Projects/CSharp/RSE/Backend/bin/Release/net8.0/linux-x64/libmscordbi.so

View File

@ -1 +0,0 @@
2b5b5a064188d1d76b38421672b36b929cfe2bb718214adf31a9fa3bc7fd4059

Some files were not shown because too many files have changed in this diff Show More