package main import ( "log" "os" "os/signal" "sync" "git.1e99.eu/1e99/2b2t/models" _ "github.com/mattn/go-sqlite3" ) func main() { logger := log.New(os.Stdout, "", log.Flags()) logger.Printf(` ___ ____ ___ _______ __ __ _ `) logger.Printf(` |__ \| _ \__ \__ __| \ \ / / | | `) logger.Printf(` ) | |_) | ) | | | \ \ /\ / /__ _ __| | _____ _ __ `) logger.Printf(` / /| _ < / / | | \ \/ \/ / _ \| '__| |/ / _ \ '__|`) logger.Printf(` / /_| |_) / /_ | | \ /\ / (_) | | | < __/ | `) logger.Printf(` |____|____/____| |_| \/ \/ \___/|_| |_|\_\___|_| `) logger.Printf(` `) logger.Printf(` `) submitUrl, found := os.LookupEnv("WORKER_SUBMIT_URL") if !found { logger.Printf("No \"WORKER_SUBMIT_URL\", exiting") os.Exit(1) } token, found := os.LookupEnv("WORKER_TOKEN") if !found { logger.Printf("No \"WORKER_TOKEN\", exiting") os.Exit(1) } poller := makePoller(logger) logger.Printf("Submitting data to %s", submitUrl) logger.Printf("Using poller %s", poller) logger.Printf("") var wg sync.WaitGroup stop := make(chan bool) queue := make(chan models.PlayerCount, 1024) go SubmitLoop(stop, &wg, queue, logger, submitUrl, token) go PollLoop(stop, &wg, queue, logger, poller) notify := make(chan os.Signal, 1) signal.Notify(notify, os.Interrupt) <-notify close(stop) wg.Wait() } func makePoller(logger *log.Logger) (poller Poller) { pollerType, found := os.LookupEnv("WORKER_POLLER") if !found { logger.Printf("No \"WORKER_POLLER\", defaulting to \"mcapi\"") pollerType = "mcapi" } switch pollerType { case "dummy": poller = &dummyPoller{} return case "mcapi": poller = &mcApiPoller{ Address: "2b2t.org", } return default: logger.Printf("Invalid poller type") os.Exit(1) return } }