diff --git a/back/api/api.go b/back/api/api.go index a9bf424..b04d4b2 100644 --- a/back/api/api.go +++ b/back/api/api.go @@ -51,29 +51,13 @@ func routes(s *server.Server, cache *map[string]*search.Result, searchQueue chan }) s.Router.GET("/history", func(c *gin.Context) { - type historyItem struct { - Id string - Status string - Date time.Time - Query search.Query - Results int - } - var history []historyItem + var history []search.Result s.Mu.RLock() for _, r := range *cache { - resultsCount := 0 - if r.LeakResult.Rows != nil { - resultsCount = len(r.LeakResult.Rows) - } - history = append(history, historyItem{ - Id: r.Id, - Status: r.Status, - Date: r.Date, - Query: r.Query, - Results: resultsCount, - }) + history = append(history, *r) } s.Mu.RUnlock() + // Sort by date (newest first) for i := 0; i < len(history)-1; i++ { for j := 0; j < len(history)-i-1; j++ { if history[j].Date.Before(history[j+1].Date) { diff --git a/back/search/search.go b/back/search/search.go index 9f924e1..7163a6e 100644 --- a/back/search/search.go +++ b/back/search/search.go @@ -25,10 +25,11 @@ type Query struct { } type Result struct { - Id string - Date time.Time - Status string // "queued", "pending", "completed" - Query Query + Id string + Date time.Time + Status string // "queued", "pending", "completed", "error" + Query Query + ResultsCount int // Total number of results found across all services LeakResult dataleak.LeakResult GithubResult osint.GithubResult @@ -40,6 +41,7 @@ func Search(s *server.Server, q Query, r *Result, mu *sync.RWMutex) { mu.Lock() r.Status = "pending" + r.ResultsCount = 0 mu.Unlock() wg.Add(3) @@ -54,6 +56,7 @@ func Search(s *server.Server, q Query, r *Result, mu *sync.RWMutex) { leakResult := dataleak.Search(s, q.Text, q.Column, q.ExactMatch) mu.Lock() r.LeakResult = leakResult + r.ResultsCount += len(leakResult.Rows) mu.Unlock() wg.Done() }() @@ -89,6 +92,15 @@ func Search(s *server.Server, q Query, r *Result, mu *sync.RWMutex) { } mu.Lock() r.GithubResult = githubResult + if githubResult.EmailResult != nil && githubResult.EmailResult.Commits != nil { + r.ResultsCount += len(githubResult.EmailResult.Commits) + } + if githubResult.EmailResult != nil && githubResult.EmailResult.Spoofing != nil && githubResult.EmailResult.Spoofing.Username != "" { + r.ResultsCount += 1 + } + if githubResult.UsernameResult != nil && githubResult.UsernameResult.Commits != nil { + r.ResultsCount += len(githubResult.UsernameResult.Commits) + } mu.Unlock() wg.Done() }() @@ -104,6 +116,9 @@ func Search(s *server.Server, q Query, r *Result, mu *sync.RWMutex) { gravatarResult := osint.GravatarSearch(s, cleanQueryText) mu.Lock() r.GravatarResult = gravatarResult + if gravatarResult.Results != nil { + r.ResultsCount += len(gravatarResult.Results) + } mu.Unlock() wg.Done() }() diff --git a/front/src/lib/components/index/search/history.svelte b/front/src/lib/components/index/search/history.svelte index 2ec3472..3437eca 100644 --- a/front/src/lib/components/index/search/history.svelte +++ b/front/src/lib/components/index/search/history.svelte @@ -82,13 +82,14 @@ {item.Query.Text} - {item.Results} + {item.ResultsCount}
{item.Status}
{ - const r = [ - result.LeakResult.Rows?.length | 0, - result.GithubResult.EmailResult?.Commits?.length | 0, - result.GithubResult.EmailResult?.Spoofing ? 1 : 0, - result.GithubResult.UsernameResult?.Commits?.length | 0, - result.GravatarResult.Results?.length | 0, - ]; - nresult = r.reduce((a, b) => a + b, 0); - });
@@ -25,7 +13,7 @@
Results
- {nresult.toLocaleString("fr")} + {result.ResultsCount.toLocaleString("fr")} {#if result.Status === "pending"} {/if} @@ -49,9 +37,9 @@ {#if result.Status === "pending"} Pending - {:else if result.Status === "completed" && nresult === 0} + {:else if result.Status === "completed" && result.ResultsCount === 0} No results - {:else if result.Status === "completed" && nresult > 0} + {:else if result.Status === "completed"} Completed {:else} {result.Status} diff --git a/front/src/lib/types.ts b/front/src/lib/types.ts index 23ec3bd..9293382 100644 --- a/front/src/lib/types.ts +++ b/front/src/lib/types.ts @@ -36,23 +36,17 @@ export type GravatarResult = { export type Result = { Id: string; - Status: "queued" | "pending" | "completed"; + Status: "queued" | "pending" | "completed" | "error"; Date: string; Query: Query; + ResultsCount: number; + LeakResult: LeakResult; GithubResult: GithubResult; GravatarResult: GravatarResult; }; -export type HistoryItem = { - Id: string; - Status: "queued" | "pending" | "completed"; - Date: string; - Query: Query; - Results: number; -}; - -export type History = HistoryItem[]; +export type History = Result[]; export type ServerSettings = { Folders: string[];