styx/main.go

72 lines
1.3 KiB
Go
Raw Normal View History

package main
import (
"fmt"
2020-01-21 16:50:50 +01:00
"os"
"github.com/CaliDog/certstream-go"
"github.com/sirupsen/logrus"
"gitlab.dcso.lolcat/LABS/styx/broker"
"gitlab.dcso.lolcat/LABS/styx/models"
"gitlab.dcso.lolcat/LABS/styx/utils"
)
2020-01-21 16:50:50 +01:00
const (
NodesFilename = "nodes.json"
EdgesFilename = "edges.json"
2020-01-21 16:50:50 +01:00
)
func main() {
2020-01-21 16:50:50 +01:00
// checking that data files exist
err := fileExists(NodesFilename)
2020-01-21 16:50:50 +01:00
if err != nil {
logrus.Error(err)
}
err = fileExists(EdgesFilename)
2020-01-21 16:50:50 +01:00
if err != nil {
logrus.Error(err)
}
// The false flag specifies that we want heartbeat messages.
stream, errStream := certstream.CertStreamEventStream(false)
fmt.Println("Starting to get data from CertStream...")
Conn, err := broker.SetUpKafkaConnecter()
if err != nil {
panic(err)
}
2020-01-21 16:50:50 +01:00
go broker.ReadEventFromKafka()
for {
select {
case jq := <-stream:
if data, err := utils.ExtractCertFromStream(jq); err == nil {
node, err := models.BuildNode("certstream", *data)
if err != nil {
panic(err)
}
err = broker.SendEventToKafka(Conn, *node)
if err != nil {
panic(err)
}
}
case err := <-errStream:
logrus.Error(err)
}
}
}
2020-01-21 16:50:50 +01:00
// Helpers
func fileExists(filename string) error {
_, err := os.Stat(filename)
if os.IsNotExist(err) {
_, err := os.Create(filename)
if err != nil {
return err
}
}
return nil
}