challenge-sync-airbus: Refactor and prefer calling it cyberrange
This commit is contained in:
parent
98d9f2daf3
commit
cb4ceecbf5
26
libfic/cyberrange.go
Normal file
26
libfic/cyberrange.go
Normal file
@ -0,0 +1,26 @@
|
||||
package fic
|
||||
|
||||
import ()
|
||||
|
||||
type CyberrangeAPIResponse struct {
|
||||
Data interface{}
|
||||
CurrentPage int `json:"current_page"`
|
||||
PerPage int `json:"per_page"`
|
||||
LastPage int `json:"last_page"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
type CyberrangeTeam struct {
|
||||
UUID string `json:"session_uuid"`
|
||||
Members []CyberrangeTeamMember `json:"members"`
|
||||
Name string `json:"name"`
|
||||
Score int64 `json:"score"`
|
||||
Rank int `json:"rank"`
|
||||
}
|
||||
|
||||
type CyberrangeTeamMember struct {
|
||||
UUID string `json:"session_uuid"`
|
||||
Name string `json:"name"`
|
||||
Nickname string `json:"nickname"`
|
||||
EMail string `json:"email"`
|
||||
}
|
@ -9,6 +9,8 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"srs.epita.fr/fic-server/libfic"
|
||||
)
|
||||
|
||||
type AirbusAPI struct {
|
||||
@ -18,14 +20,6 @@ type AirbusAPI struct {
|
||||
InsecureSkipVerify bool
|
||||
}
|
||||
|
||||
type AirbusAPIResponse struct {
|
||||
Data interface{}
|
||||
CurrentPage int `json:"current_page"`
|
||||
PerPage int `json:"per_page"`
|
||||
LastPage int `json:"last_page"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
func (a *AirbusAPI) request(method, endpoint string, data io.Reader, out interface{}) error {
|
||||
var req *http.Request
|
||||
var err error
|
||||
@ -59,7 +53,7 @@ func (a *AirbusAPI) request(method, endpoint string, data io.Reader, out interfa
|
||||
if out != nil {
|
||||
jdec := json.NewDecoder(resp.Body)
|
||||
|
||||
if err := jdec.Decode(&AirbusAPIResponse{Data: out}); err != nil {
|
||||
if err := jdec.Decode(&fic.CyberrangeAPIResponse{Data: out}); err != nil {
|
||||
return fmt.Errorf("an error occurs when trying to decode response: %w", err)
|
||||
}
|
||||
}
|
||||
@ -164,7 +158,7 @@ func (a *AirbusAPI) GetChallengeFromName(name string) (*AirbusChallenge, error)
|
||||
return nil, fmt.Errorf("unable to find challenge %q", name)
|
||||
}
|
||||
|
||||
func (a *AirbusAPI) ValidateChallengeFromUser(team *AirbusTeam, challengeId AirbusChallengeId) (err error) {
|
||||
func (a *AirbusAPI) ValidateChallengeFromUser(team *fic.CyberrangeTeam, challengeId AirbusChallengeId) (err error) {
|
||||
log.Printf("ValidateChallenge: %s, %s, %s", a.SessionUUID, challengeId.String(), team.Members[0].UUID)
|
||||
if dryRun {
|
||||
return
|
||||
@ -179,7 +173,7 @@ type AirbusUserAwards struct {
|
||||
Value int64 `json:"value"`
|
||||
}
|
||||
|
||||
func (a *AirbusAPI) AwardUser(team *AirbusTeam, value int64, message string) (err error) {
|
||||
func (a *AirbusAPI) AwardUser(team *fic.CyberrangeTeam, value int64, message string) (err error) {
|
||||
awards := AirbusUserAwards{
|
||||
Message: message,
|
||||
Value: value,
|
||||
|
@ -16,6 +16,8 @@ import (
|
||||
"time"
|
||||
|
||||
"gopkg.in/fsnotify.v1"
|
||||
|
||||
"srs.epita.fr/fic-server/libfic"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -167,7 +169,7 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
ranking := []*AirbusTeam{}
|
||||
ranking := []*fic.CyberrangeTeam{}
|
||||
for _, team := range teams {
|
||||
tmp := team
|
||||
ranking = append(ranking, &tmp)
|
||||
|
@ -2,27 +2,12 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"srs.epita.fr/fic-server/libfic"
|
||||
)
|
||||
|
||||
type AirbusTeam struct {
|
||||
UUID string `json:"session_uuid"`
|
||||
Members []TeamMember `json:"members"`
|
||||
Name string `json:"name"`
|
||||
Score int64 `json:"score"`
|
||||
Rank int `json:"rank"`
|
||||
}
|
||||
|
||||
type TeamMember struct {
|
||||
UUID string `json:"session_uuid"`
|
||||
Name string `json:"name"`
|
||||
Nickname string `json:"nickname"`
|
||||
EMail string `json:"email"`
|
||||
}
|
||||
|
||||
type airbusDataTeam []AirbusTeam
|
||||
|
||||
func (a *AirbusAPI) GetTeams() ([]AirbusTeam, error) {
|
||||
var data airbusDataTeam
|
||||
func (a *AirbusAPI) GetTeams() ([]fic.CyberrangeTeam, error) {
|
||||
var data []fic.CyberrangeTeam
|
||||
err := a.request("GET", fmt.Sprintf("/v1/sessions/%s/teams", a.SessionUUID), nil, &data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -31,13 +16,13 @@ func (a *AirbusAPI) GetTeams() ([]AirbusTeam, error) {
|
||||
}
|
||||
}
|
||||
|
||||
type ByRank []*AirbusTeam
|
||||
type ByRank []*fic.CyberrangeTeam
|
||||
|
||||
func (a ByRank) Len() int { return len(a) }
|
||||
func (a ByRank) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
func (a ByRank) Less(i, j int) bool { return a[i].Rank < a[j].Rank }
|
||||
|
||||
type ByScore []*AirbusTeam
|
||||
type ByScore []*fic.CyberrangeTeam
|
||||
|
||||
func (a ByScore) Len() int { return len(a) }
|
||||
func (a ByScore) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
|
@ -5,6 +5,8 @@ import (
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"srs.epita.fr/fic-server/libfic"
|
||||
)
|
||||
|
||||
type TSValue struct {
|
||||
@ -32,7 +34,7 @@ func loadTS(tspath string) (timestamp map[string]*TSValue, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
func loadTSFromAPI(teams map[string]*AirbusTeam) (timestamp map[string]*TSValue, err error) {
|
||||
func loadTSFromAPI(teams map[string]*fic.CyberrangeTeam) (timestamp map[string]*TSValue, err error) {
|
||||
now := time.Now()
|
||||
timestamp = map[string]*TSValue{}
|
||||
|
||||
|
@ -23,7 +23,7 @@ type Walker struct {
|
||||
Exercices AirbusExercicesBindings
|
||||
Teams map[string]fic.ExportedTeam
|
||||
RevTeams map[string]string
|
||||
TeamBindings map[string]*AirbusTeam
|
||||
TeamBindings map[string]*fic.CyberrangeTeam
|
||||
API AirbusAPI
|
||||
Coeff float64
|
||||
}
|
||||
@ -35,7 +35,7 @@ func (w *Walker) fetchTeams() error {
|
||||
}
|
||||
|
||||
w.RevTeams = map[string]string{}
|
||||
w.TeamBindings = map[string]*AirbusTeam{}
|
||||
w.TeamBindings = map[string]*fic.CyberrangeTeam{}
|
||||
|
||||
for tid, team := range w.Teams {
|
||||
for i, t := range teams {
|
||||
@ -143,7 +143,7 @@ func (w *Walker) WalkScore(path string, d os.DirEntry, err error) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *Walker) TreatScoreGrid(path string, airbusTeam *AirbusTeam) error {
|
||||
func (w *Walker) TreatScoreGrid(path string, airbusTeam *fic.CyberrangeTeam) error {
|
||||
// Read score grid
|
||||
fdscores, err := os.Open(path)
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user