Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 35 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,45 @@ De ulike sidene har litt ulik layout. Dette er fordi vi var litt usikre på nøy
## KI deklarasjon
KI har blitt brukt til veiledning i store deler av prosjektet. Ofte har ideer om implementasjon, definisjon av navn og oppførsel samt forslag til forbedringer blitt gjort av oss, mens KI har lettet arbeidslasten med å foreslå kode som samsvarer med det vi la frem. Vi har lagt fokus på å se gjennom koden og nettsiden for å kvalitetsikre, og har manuelt rettet opp der vi ikke er fornøyde.

---

## Kjøre prosjektet lokalt

For å kjøre koden, kjør:
## 1.Dependencies

Installer dependencies, fra Rooten:

```bash
pnpm install
```

## 2.Database

**Følg guiden : `docs/local-database-setup.md`**

`Resultat`: Kjørende CyberDB database lokalt på maskinen

## 3.Backend

pnpm install i rotmappen, deretter:
Opprett en ny `Terminal 1`:

```bash
cd backend
pnpm run dev
```
`Resultat`: Kjørende Backend med Apollo GraphQL Server kjører på http://localhost:3001/.

## 4.Frontend

Opprett en ny `Terminal 2`:

```bash
cd frontend
pnpm run dev
```

`Resultat`: Kjørende Frontend på http://localhost:5173/project2 eller noe sånt.



fordi vi har kun satt opp prosjektet til å kjøre frontend hittil. Deretter:
pnpm run for å kjøre nettsiden.

Binary file added StrukturMinneLap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 15 additions & 9 deletions backend/src/graphql/resolvers/threatActorResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,31 @@
* GraphQL -> Resolver -> Repository -> Drizzle -> MySQL
*/

import {getAllThreatActors,getThreatActorByMitreId} from "../../repositories/threatActorRepository.js";
import {getAllThreatActorsGrid, getThreatActorByMitreId, getThreatActorSoftwares, getThreatActorTechniques} from "../../repositories/threatActorRepository.js";

export const threatActorResolvers = {
Query: {
/**
* Henter alle ThreatActors.
* Henter alle ThreatActors for Grid i front end.
*/
allThreatActors: async () => {
return getAllThreatActors();
allThreatActorsGrid: async (_parent: unknown, args: {limit: number; offset: number}) => {
return getAllThreatActorsGrid(args.limit, args.offset);
},

/**
* Henter én ThreatActor basert på MITRE-ID.
*
* Eksempel:
* G0016 -> APT3
* Henter én Threat Actor med tilhørende detaljer,
* aliaser, sektorer, teknikker og programvare.
*/
threatActorByMitreId: async (_parent: unknown,args: { mitreId: string }) => {
getThreatActorByMitreId: async (_parent: unknown, args: {mitreId: string}) => {
return getThreatActorByMitreId(args.mitreId);
},

getThreatActorTechniques: async (_parent: unknown, args: {mitreId: string; limit: number; offset: number}) => {
return getThreatActorTechniques(args.mitreId, args.limit, args.offset);
},

getThreatActorSoftwares: async (_parent: unknown, args: {mitreId: string; limit: number; offset: number}) => {
return getThreatActorSoftwares(args.mitreId, args.limit, args.offset);
},
},
};
68 changes: 59 additions & 9 deletions backend/src/graphql/typeDefs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,47 @@
export const typeDefs = `#graphql
# Beskriver hvordan et ThreatActor-objekt ser ut
type ThreatActor {
mitreId: String!
type ThreatActorGrid {
name: String!
description: String!
mitreId: String!
alias: String!
status: String!
country: String!
motivation: String!
}
# Operasjoner frontend kan spørre API-et om
type Query {
type ThreatActorGridInfo {
items: [ThreatActorGrid!]!
totalCount: Int!
}
type AssociatedItem {
mitreId: String!
name: String!
}
# Henter alle threat actors
allThreatActors: [ThreatActor!]!
type AssociatedItemsPage {
items: [AssociatedItem!]!
totalCount: Int!
}
type ThreatActorDetailed {
threatId: String!
mitreId: String!
name: String!
description: String!
threatEntryCreated: String!
country: String!
motivation: String!
region: String!
firstSeen: String!
lastSeen: String!
status: String!
dangerLevel: String!
xMitreDeprecated: Boolean!
# Henter én threat actor basert på MITRE-ID
threatActorByMitreId(mitreId: String!): ThreatActor
aliases: [String!]!
sectors: [String!]!
}
type Technique {
Expand All @@ -33,11 +60,34 @@ export const typeDefs = `#graphql
}
type Query {
######################################## ThreatActors vvvv
# Henter alle threat actors som trengs i grid
allThreatActorsGrid(limit: Int!, offset: Int!): ThreatActorGridInfo!
# Henter alt nødvending info for ThreatActorDetailed i frontend
getThreatActorByMitreId(mitreId: String!): ThreatActorDetailed
getThreatActorTechniques(mitreId: String!, limit: Int!, offset: Int!): AssociatedItemsPage!
getThreatActorSoftwares(mitreId: String!, limit: Int!, offset: Int!): AssociatedItemsPage!
######################################## Techinques vvvv
# Henter alle Techniques
allTechniques: [Technique!]!
# Henter én Technique basert på MITRE-ID
techniqueByMitreId(mitreId: String!): Technique
######################################## Software vvvv
######################################## Tactics vvvv
}
`;
Loading