Skip to content

Commit 1d65000

Browse files
Add virustotal results to version screen (#192)
* feat: added virustotal results to versions screen * fix: remove canedit from vt results * fix: update to virustotal_results * fix: move thead to tbody/make text translatable --------- Co-authored-by: Rob B <computerguy440+gh@gmail.com>
1 parent 8a6afe6 commit 1d65000

File tree

4 files changed

+77
-0
lines changed

4 files changed

+77
-0
lines changed

src/gql/mods/versions.graphql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@ query GetModVersions($mod: ModID!, $limit: Int!, $offset: Int!) {
1919
hash
2020
size
2121
}
22+
virustotal_results {
23+
created_at
24+
file_name
25+
hash
26+
id
27+
safe
28+
updated_at
29+
version_id
30+
}
2231
}
2332
}
2433
}

src/gql/versions/mod_version.graphql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,14 @@ query GetModVersion($version: VersionID!) {
3131
optional
3232
condition
3333
}
34+
virustotal_results {
35+
created_at
36+
file_name
37+
hash
38+
id
39+
safe
40+
updated_at
41+
version_id
42+
}
3443
}
3544
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<script lang="ts">
2+
import type { VirustotalResult } from '$lib/generated';
3+
import { getTranslate } from '@tolgee/svelte';
4+
5+
export let results!: Array<VirustotalResult>;
6+
export const { t } = getTranslate();
7+
</script>
8+
9+
<div class="grid grid-flow-row">
10+
<h3 class="my-4 text-2xl font-bold">{$t('virustotal.table.title')}</h3>
11+
<table aria-label={$t('virustotal.table.title')} class="max-w-auto table table-hover !overflow-visible">
12+
<tbody>
13+
<tr class="rounded border !border-surface-500">
14+
<td style="width: 25%;"
15+
><div title={$t('virustotal.table.file_name')}>
16+
{$t('virustotal.table.file_name')}
17+
</div></td>
18+
<td style="width: 25%;"
19+
><div class="text-center" title={$t('virustotal.table.results')}>{$t('virustotal.table.results')}</div></td>
20+
<td style="width: 25%;"
21+
><div class="text-center" title={$t('virustotal.table.safe')}>{$t('virustotal.table.safe')}</div></td>
22+
</tr>
23+
{#each results as result}
24+
<tr class="rounded border !border-surface-500">
25+
<td>
26+
<div>{result.file_name}</div>
27+
</td>
28+
<td>
29+
<div class="text-center">
30+
<a
31+
title={$t('version.virustotal.result')}
32+
href={`https://www.virustotal.com/gui/file/${result.hash}`}
33+
target="_blank"
34+
class="text-white">
35+
<span class="material-icons text-center" style="width: 20px" title={$t('version.virustotal.result')}>
36+
policy
37+
</span>
38+
</a>
39+
</div>
40+
</td>
41+
<td
42+
><div class="text-center">
43+
<span
44+
class="material-icons text-center"
45+
style="width: 20px"
46+
title={result.safe ? $t('version.virustotal.safe') : $t('version.virustotal.not_safe')}>
47+
{result.safe ? 'checkmark' : 'cancel'}
48+
</span>
49+
</div>
50+
</td>
51+
</tr>
52+
{/each}
53+
</tbody>
54+
</table>
55+
</div>

src/routes/mod/[modId]/version/[versionId]/+page.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import { getModalStore, getToastStore, type ModalSettings, popup } from '@skeletonlabs/skeleton';
1717
import Page404 from '$lib/components/general/Page404.svelte';
1818
import { getTranslate } from '@tolgee/svelte';
19+
import VirustotalResults from '$lib/components/versions/VirustotalResults.svelte';
1920
2021
export const { t } = getTranslate();
2122
@@ -164,6 +165,9 @@
164165
<VersionInfo version={$version.data.getVersion} />
165166
<VersionTargetSupportGrid targets={$version.data.getVersion.targets} />
166167
<VersionDependenciesGrid dependencies={$version.data.getVersion.dependencies} />
168+
{#if $version.data.getVersion.virustotal_results.length != 0}
169+
<VirustotalResults results={$version.data.getVersion.virustotal_results} />
170+
{/if}
167171
</div>
168172
</div>
169173
</div>

0 commit comments

Comments
 (0)