package main import ( "fmt" "github.com/CaliDog/certstream-go" "github.com/sirupsen/logrus" "gitlab.dcso.lolcat/LABS/styx/broker" "gitlab.dcso.lolcat/LABS/styx/models" ) func main() { // 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() // certstream for { select { case jq := <-stream: if data, err := models.ExtractCertFromStream(jq); err == nil { // rawNode := models.WrapCertStreamData(*data) // models.SaveNode(rawNode) fingerprintNode := models.BuildNode("certstream", "fingerprint", data.Data.LeafCert.Fingerprint) models.SaveNode(fingerprintNode) fmt.Println(fingerprintNode) allDomains := data.Data.LeafCert.AllDomains var edge *models.Edge for _, domain := range allDomains { domainNode := models.BuildNode("certstream", "domain", domain) models.SaveNode(domainNode) edge = models.BuildEdge("certstream", fingerprintNode.ID, domainNode.ID) fmt.Println(edge) models.SaveEdge(edge) } broker.SendEventToKafka(Conn, *fingerprintNode) } case err := <-errStream: logrus.Error(err) } } // pastebin }