Hopp til hovedinnholdet
Versjon: Neste

Pakke (Package)

Package.toml-fil

Pakken inneholder alltid en package.toml-fil, som definerer pakken og måten den er pakket inn på. Dette er et eksempel på package.toml-filen:

[package]
name = "debian11"
description = "Debian 11.4.0 minimal CLI."
version = "1.3.0"
authors = ["Developer developers@cyber-range.nei"]
license = "MIT"
readme = "src/readme.md"
categories = ["exercise", "testing"]

[content]
type = "vm"

[virtual-machine]
operating_system = "Debian"
architecture = "amd64"
type = "OVA"
file_path = "src/debian11.ova"
accounts = [{name = "root", password = "password"}, {name = "user", password ="password"}]

Filen inneholder for øyeblikket tre seksjoner: [package], [content] og en seksjon avhengig av pakke typen, for eksempel [virtual-machine].

First seksjon – Pakke (Package)

Seksjonen [package] definerer følgende:

  • Name – pakkenavn, som brukes når du søker etter pakken. Trenger ikke å være det samme som pakkefilens faktiske navn.
  • Description – pakkebeskrivelse, kan være hva som helst.
  • Version – versjon av pakken, bruker de semantiske versjoneringsreglene. Når vi laster opp en pakke, sjekker vi om samme versjon av pakken allerede eksisterer.
  • Authors – pakke forfattere, kan være hva som helst.
  • License – navnet på programvarelisensen som pakken er utgitt under. Lisensfeltet tolker SPDX 2.1 lisensuttrykk og lisensnavnet må være en kjent lisens fra SPDX lisenslisten. Flere lisenser kan brukes sammen med lisensuttrykk. Se SPDX-spesifikasjonen for mer informasjon.
  • Readme – definerer plasseringen av readme-filen i pakken
  • Category – en liste over kategorier pakken tilhører
  • Assets – inneholder alle filene som vil bli kopiert til gjeste-OS. Array-medlemmer inneholder arrays som spesifiserer filen som skal kopieres, plasseringen på målet og filrettighetene som skal settes på den kopierte filen. Pakke type for hvilken det er obligatorisk: feature, condition, inject, event, malware
[package]
name = "debian11"
description = "Debian 11.4.0 minimal CLI."
version = "1.3.0"
authors = ["Developer developers@cyber-range.nei", "Someone someone@cyber-range.nei"]
license = "MIT"
readme = "src/readme.md"
categories = ["exercise", "testing"]
assets = [ ["src/configs/my-cool-config1.yml", "/var/opt/my-cool-service1", "744", ], ]
VariabelObligatoriskType
namejastring
descriptionjastring
versionjastring
authorsneiarray of strings
licensejastring
readmejastring
categoryneiarray of strings
assetsneiarray of arrays

Andre seksjon – Innhold (Content)

Seksjonen [content] spesifiserer pakke typen og innholdets forhåndsvisning hvis aktuelt:

  • Type – spesifiserer typen av pakken, mulige typer: vm, condition, feature, inject, event, malware, exercise, other. Flere innholdstyper per pakke støttes ikke.
  • Preview – lister forhåndsvisningsinnholdet ved å bruke type:value format. Forhåndsvisning gyldige typer er picture, video, code. Value er en liste over filbaner til forhåndsvisningsfilene.
[content]
type = "vm"
preview = [
{type = "picture", value = ["pic.jpg", "src/pic2.jpg"]},
]
VariabelObligatoriskType
typejastring
previewneiarray of hashmaps

Tredje seksjon

Den tredje seksjonen avhenger av pakke typen og er obligatorisk.

Virtuell maskin (Virtual Machine)

[virtual-machine]

  • accounts – spesifiserer kontoene knyttet til VM-en.
  • Operating_system – operativsystemet til VM-en. Vi sjekker om det gitte operativsystemet finnes i vår forhåndsdefinerte enum; hvis ikke, blir det tildelt "unknown" type. Liste over støttede operativsystemer:
AlmaLinux,
AmazonLinux,
Asianux,
CentOS,
Debian,
DebianGNULinux,
EComStation,
Fedora,
Flatcar,
FreeBSD,
KylinLinuxAdvancedServer,
MacOs,
MiracleLinux,
NeoKylinLinuxAdvancedServer,
OpenSuse,
OracleLinux,
OSX,
Pardus,
Photon,
RedHatEnterpriseLinux,
RockyLinux,
SCOOpenServer,
SCOUnixWare,
Solaris,
SUSELinuxEnterprise,
Ubuntu,
Windows10,
Windows11,
Windows2000,
Windows7,
Windows8,
WindowsServer2003,
WindowsServer2008,
WindowsServer2012,
WindowsServer2016,
WindowsServer2019,
WindowsServer2022,
WindowsVista,
WindowsXP
  • Architecture – arkitekturen til VM-en. Vi sjekker om den gitte arkitekturen finnes i vår forhåndsdefinerte enum; hvis ikke, blir det tildelt "unknown" type. Liste over støttede operativsystemer:
amd64,
arm64,
armhf,
i386
  • Type – filtypen til VM-en. Foreløpig støttes kun "OVA" type.
  • File_path – definerer plasseringen av filen i pakken.
[virtual-machine]
accounts = [{name = "user1", password = "password1"},{name = "user2", password = "password2"}]
operating_system = "Debian"
architecture = "amd64"
type = "OVA"
file_path = "src/some-image.ova"
VariabelObligatoriskType
accountsneien rekke kontoer som består av strengverdier for navn og passord
operating_systemneistring
architectureneistring
typejastring
file_pathjastring

Betingelse (Condition)

[condition]

  • Action – bane til den kjørbare filen.
  • Interval – intervallet mellom kommando utførelser i sekunder.
[condition]
action = "executable/path.sh"
interval = 30
VariabelObligatoriskType
actionjastring
intervaljainteger

Funksjon (Feature)

[feature]

  • Type – definerer funksjonstypen, kan være service, configuration eller artifact. Hvis type = service, er også action feltet definert, ellers er feltet ikke definert.
  • Action – kommando å utføre, eller bane til en kjørbar fil.
  • Restarts – boolsk som bestemmer om en maskin starter på nytt etter filkopiering eller utførelsesoperasjoner. Hvis en maskin må starte på nytt etter en tidligere nevnt operasjon, sett verdien til true.
[feature]
type = "service"
action = "ping google.com"
restarts = true
VariabelObligatoriskType
typejastring
actionneistring
restartsjabool, default false

Injiser (Inject)

[inject]

  • Action – kommando å utføre, eller bane til en kjørbar fil.
  • Restarts – boolsk som bestemmer om en maskin starter på nytt etter filkopiering eller utførelsesoperasjoner. Hvis en maskin må starte på nytt etter en tidligere nevnt operasjon, sett verdien til true.
[inject]
action = "ping google.com"
restarts = true
VariabelObligatoriskType
actionneistring
restartsjabool, default false

Hendelse (Event)

[event]

  • File_path – definerer plasseringen av filen i pakken.
[event]
file_path = "event.md"
VariabelObligatoriskType
file_pathjastring

Skadelig programvare (Malware)

[malware]

  • Action – bane til den kjørbare filen.
[malware]
action = "installer/install_something.sh"
VariabelObligatoriskType
actionjastring

Øvelse (Exercise)

[exercise]

  • File_path – definerer plasseringen av filen i pakken.
[exercise]
file_path = file_path = "exercise.yml"
VariabelObligatoriskType
file_pathjastring

Annet (Other)

[other]

  • Ingen felt under other pakke type, men det er obligatorisk å definere seksjonen.