SearchFunction #45

Merged
owner merged 2 commits from SearchFunction into main 2025-01-16 10:12:41 +00:00
10 changed files with 138 additions and 69 deletions

View File

@ -32,7 +32,7 @@ public class IpScanner
_discardedQueue = discardedQueue;
_unfilteredQueue = unfilteredQueue;
_resumeQueue = resumeQueue;
SetTimeout(64);
}
@ -48,24 +48,12 @@ public class IpScanner
{
threadsAmount = 256 / threads;
}
WaitHandle[] waitHandle1;
WaitHandle[] waitHandle2;
// This is jank. But it was to get it production ready.
if (threads <= 64)
{
waitHandle1 = new WaitHandle[threads];
waitHandle2 = new WaitHandle[threads];
}
else
{
waitHandle1 = new WaitHandle[64];
waitHandle2 = new WaitHandle[64];
}
WaitHandle[] waitHandle = new WaitHandle[64];
int counter = 0;
int counter2 = 0;
List<WaitHandle[]> waitHandles = [];
for (int i = 0; i < threads; i++)
{
@ -79,32 +67,27 @@ public class IpScanner
Handle = handle
};
if (i < 64)
if (counter < 64)
{
waitHandle1[counter] = handle;
waitHandle[counter] = handle;
counter++;
}
else
{
waitHandle2[counter2] = handle;
counter2++;
Thread f = new (Scan!);
f.Start(scanSettings);
Console.WriteLine($"Scanner thread ({i}) started");
Thread.Sleep(100);
continue;
}
Thread f = new (Scan!);
f.Start(scanSettings);
counter = 0;
Console.WriteLine($"Scanner thread ({i}) started");
Thread.Sleep(100);
waitHandles.Add(waitHandle);
waitHandle = new WaitHandle[64];
}
List<WaitHandle[]> waitHandles = new();
Console.WriteLine("Waithandle 1 count = " + waitHandle1.Length);
Console.WriteLine("Waithandle 2 count = " + waitHandle2.Length);
waitHandles.Add(waitHandle1);
waitHandles.Add(waitHandle2);
return waitHandles;
}
@ -183,7 +166,8 @@ public class IpScanner
_ = IPAddress.TryParse(ip.ToString(), out IPAddress? address);
if (address is not null)
{
responseCode = ping.Send(address, _timeout, buf, null).Status;
responseCode = IPStatus.TimedOut; //ping.Send(address, _timeout, buf, null).Status;
Thread.Sleep(_timeout);
}
}
catch

View File

@ -59,7 +59,7 @@ public class ThreadHandler
{
Thread.Sleep(5000); // Let the database handler instantiate and warm up first.
List<WaitHandle[]> wait = _ipScanner.Start(128);
List<WaitHandle[]> wait = _ipScanner.Start(256);
for (int i = 0; i < wait.Count; i++)
{
@ -101,7 +101,7 @@ public class ThreadHandler
private void StartDiscardedDbHandler()
{
WaitHandle[] wait = _dbHandler.Start(4);
WaitHandle[] wait = _dbHandler.Start(5);
WaitHandle.WaitAll(wait);

View File

@ -18,11 +18,25 @@ public static partial class HttpClientHelper
if (port == 80)
{
client.BaseAddress = new($"http://{url}");
try
{
client.BaseAddress = new($"http://{url}");
}
catch
{
//
}
}
else
{
client.BaseAddress = new($"https://{url}");
try
{
client.BaseAddress = new($"https://{url}");
}
catch
{
//
}
}
client.DefaultRequestHeaders.Accept.Clear();
@ -87,11 +101,25 @@ public static partial class HttpClientHelper
if (port == 80)
{
client.BaseAddress = new($"http://{url}");
try
{
client.BaseAddress = new($"http://{url}");
}
catch
{
//
}
}
else
{
client.BaseAddress = new($"https://{url}");
try
{
client.BaseAddress = new($"https://{url}");
}
catch
{
//
}
}
client.DefaultRequestHeaders.Accept.Clear();

View File

@ -60,7 +60,7 @@ progressApi.MapGet("/", (IMemoryCache memoryCache) =>
return scanningStatus;
});
/*
RouteGroupBuilder searchApi = app.MapGroup("/search");
searchApi.MapGet("/{term}", (string term) =>
{
@ -78,7 +78,7 @@ searchApi.MapGet("/{term}", (string term) =>
return JsonSerializer.Deserialize<SearchResults?>(msg);
});
*/
app.Run();
[JsonSerializable(typeof(ScanningStatus))]

View File

@ -9,8 +9,12 @@ useHead({
</script>
<template>
<NuxtLayout>
<NuxtPage page-key="static" />
</NuxtLayout>
<div class="navbar navbar-expand-md navbar-dark bg-dark">
<ul>
<li><nuxt-link to="/">Search</nuxt-link></li>
<li><nuxt-link to="/progress">Progress</nuxt-link></li>
</ul>
</div>
<NuxtPage page-key="static" />
</template>

View File

@ -13,5 +13,9 @@ export default defineNuxtConfig({
},
},
nitro: {
static: true,
},
modules: ['@nuxtjs/tailwindcss', 'nuxt-purgecss'],
});

View File

@ -1,12 +1,15 @@
<script setup lang="ts">
const route = useRoute()
const value = ref<string | null>(null)
// https://nuxt.com/docs/api/components/nuxt-link#nuxtlink
</script>
<template>
<div class="h-screen flex items-center justify-center">
<div class="flex space-x-2">
<input placeholder=".NET C#" class="text-center bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 w-192"/>
<button class="text-gray-900 bg-gray-50 border border-gray-300 px-4 py-2 rounded-lg">Search</button>
<input v-model="value" placeholder=".NET C#" class="text-center bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 w-192"/>
<nuxt-link :to="`/searchResult?search=${value}`" class="text-gray-900 bg-gray-50 border border-gray-300 px-4 py-2 rounded-lg">Search</nuxt-link>
</div>
</div>
</template>

View File

@ -39,23 +39,51 @@ fetchMyData();
<template>
<div class="h-screen grid place-items-center">
<div v-if="dict">
<table class="table-auto border-gray-300">
<thead>
<tr>
<th class="px-4 py-2">Metric</th>
<th class="px-4 py-2">Value</th>
</tr>
</thead>
<table class="table-auto border-gray-300">
<thead>
<tr>
<th class="px-4 py-2">Metric</th>
<th class="px-4 py-2">Value</th>
</tr>
</thead>
<tbody>
<tr v-for="d in dict">
<td class="px-4 py-2">{{d.description}}</td>
<td class="px-4 py-2">{{d.value}}</td>
</tr>
</tbody>
</table>
</div>
<tbody v-if="dict">
<tr v-for="d in dict">
<td class="px-4 py-2">{{d.description}}</td>
<td class="px-4 py-2">{{d.value}}</td>
</tr>
</tbody>
<tbody v-else>
<tr>
<td class="px-4 py-2">Percentage of Ipv4 scanned</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Total filtered</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Total Discarded</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Amount of Ipv4 left</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Discarded db size</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Filtered db size</td>
<td class="px-4 py-2"></td>
</tr>
<tr>
<td class="px-4 py-2">Unfiltered db size</td>
<td class="px-4 py-2"></td>
</tr>
</tbody>
</table>
</div>
</template>

View File

@ -0,0 +1,8 @@
<script setup lang="ts">
const route = useRoute();
console.log(route.query);
</script>
<template>
</template>

View File

@ -6,12 +6,22 @@ interface ProgressType {
discardedDbSize: bigint;
filteredDbSize: bigint;
myDbSize: bigint;
}
};
interface ProgressDictionary {
description: string;
value: string;
}
};
interface SearchResult {
title: string;
description: string;
url: string;
};
interface SearchResults {
results: SearchResult[];
};
type CacheEntry<T> = {
data: T;