72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"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"
|
|
)
|
|
|
|
const (
|
|
nodesFilename = "nodes.json"
|
|
edgesFilename = "edges.json"
|
|
)
|
|
|
|
func main() {
|
|
// checking that data files exist
|
|
err := fileExists(nodesFilename)
|
|
if err != nil {
|
|
logrus.Error(err)
|
|
}
|
|
|
|
err = fileExists(edgesFilename)
|
|
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)
|
|
}
|
|
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)
|
|
}
|
|
fmt.Println(node)
|
|
|
|
err = broker.SendEventToKafka(Conn, *node)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
case err := <-errStream:
|
|
logrus.Error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 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
|
|
}
|