Newer
Older
package managerClient
Fabian Seidl
committed
import (
"io"
"math/rand/v2"
"net/http"
Fabian Seidl
committed
"time"
"code.fbi.h-da.de/danet/quant/qkdnManager-simulator/config"
Fabian Seidl
committed
"github.com/sirupsen/logrus"
Fabian Seidl
committed
)
const securityAlert = "securityAlert"
const linkQuality = "linkQuality"
Fabian Seidl
committed
func SetupControllerHTTPClients(conf *config.ControllerClients) {
httpCli := &http.Client{
Timeout: time.Duration(5) * time.Second,
Fabian Seidl
committed
}
go func() {
for {
var randNumber int
Fabian Seidl
committed
if conf.RandDuration > 0 {
randNumber = conf.RandDuration
Fabian Seidl
committed
} else {
randNumber = 1
}
randAlert := time.Second * time.Duration(rand.IntN(randNumber))
time.Sleep(randAlert)
doUrlEncodedSecurityAlert(httpCli, conf)
Fabian Seidl
committed
}
}()
}
Fabian Seidl
committed
func doUrlEncodedSecurityAlert(httpCli *http.Client, conf *config.ControllerClients) {
status := getStatusSlice()[rand.IntN(len(getStatusSlice()))]
formBody := url.Values{
"ID": []string{uuid.NewString()},
"status": []string{status},
"KMS_ID": []string{"ID HERE"}, // TODO: think of way to add real IDs here
Fabian Seidl
committed
req, err := buildUrlEncodedRequest(conf.QkdnAppAddress, conf.ClientTargets[securityAlert], formBody)
Fabian Seidl
committed
if err != nil {
logrus.Error(err)
return
}
resp, err := httpCli.Do(req)
if err != nil {
Fabian Seidl
committed
logrus.Error(err)
} else {
body, err := io.ReadAll(resp.Body)
logrus.Infof("Body : %s, Err: %v", body, err)
Fabian Seidl
committed
func doUrlEncodedLinkQuality(httpCli *http.Client, conf *config.ControllerClients) {
quality := getQualityString()[rand.IntN(len(getQualityString()))]
formBody := url.Values{
"ID": []string{uuid.NewString()},
"KMS_ID": []string{"ID HERE"}, // TODO: think of way to add real IDs here
"PeerID": []string{"ID HERE"}, // TODO: think of way to add real IDs here
"quality": []string{quality},
}
Fabian Seidl
committed
req, err := buildUrlEncodedRequest(conf.QkdnAppAddress, conf.ClientTargets[linkQuality], formBody)
if err != nil {
logrus.Error(err)
return
}
resp, err := httpCli.Do(req)
if err != nil {
logrus.Error(err)
} else {
body, err := io.ReadAll(resp.Body)
logrus.Infof("Body : %s, Err: %v", body, err)
}
}
func getStatusSlice() []string {
return []string{"issue", "resolved"}
}
func getQualityString() []string {
return []string{"good", "ok", "bad"}
}