package main import ( "git.ddd.rip/ptrcnull/debil-finder/checks" "git.ddd.rip/ptrcnull/telegram" "github.com/CaliDog/certstream-go" "log" "os" "strings" ) func main() { tg := telegram.Client{Token: os.Getenv("TELEGRAM_TOKEN")} chatId := os.Getenv("TELEGRAM_CHAT_ID") res, err := tg.SendMessage(chatId, "Starting...") if err != nil { panic(err) } log.Println(res) c := &checks.Checks{ Message: func(msg string) { tg.SendMessage(chatId, msg) }, } recent := make([]string, 100) for i := range recent { recent[i] = "" } stream, errStream := certstream.CertStreamEventStream(false) for { select { case jq := <-stream: messageType, err := jq.String("message_type") if err != nil { tg.SendMessage(chatId, "failed decoding message: " + err.Error()) } if messageType != "certificate_update" { continue } allDomains, err := jq.ArrayOfStrings("data", "leaf_cert", "all_domains") if err != nil { tg.SendMessage(chatId, "failed getting domains: " + err.Error()) } match := false for _, domain := range allDomains { for _, tld := range []string{".pl", ".app", ".dev", ".cloud"} { if strings.HasSuffix(domain, tld) { match = true } } } for _, domain := range allDomains { for _, suffix := range []string{"ndc.pl", "workers.dev", "ec2.aws.dev"} { if strings.HasSuffix(domain, suffix) { match = false } } } if !match { continue } log.Println(allDomains) for _, domain := range allDomains { if domain[0] == '*' || domain == "sni.cloudflaressl.com" { continue } // skip if was checked recently skip := false for _, recentDomain := range recent { if domain == recentDomain { skip = true } } if skip { continue } log.Println("checking " + domain) go c.CheckGit(domain) go c.CheckEnv(domain) go c.CheckIndex(domain) recent = append(recent[1:], domain) } case err := <-errStream: log.Println(err) } } }