pihole-exporter/main.go

56 lines
1.1 KiB
Go
Raw Normal View History

2019-05-08 23:45:04 +02:00
package main
import (
2021-12-26 23:36:30 +01:00
"log"
2022-01-05 20:38:33 +01:00
2019-05-08 23:45:04 +02:00
"github.com/eko/pihole-exporter/config"
"github.com/eko/pihole-exporter/internal/metrics"
"github.com/eko/pihole-exporter/internal/pihole"
"github.com/eko/pihole-exporter/internal/server"
"github.com/xonvanetta/shutdown/pkg/shutdown"
2019-05-08 23:45:04 +02:00
)
func main() {
envConf, clientConfigs, err := config.Load()
if err != nil {
log.Fatal(err.Error())
}
2019-05-08 23:45:04 +02:00
metrics.Init()
serverDead := make(chan struct{})
2021-12-10 15:39:22 +01:00
clients := buildClients(clientConfigs, envConf)
s := server.NewServer(envConf.BindAddr, envConf.Port, clients)
go func() {
s.ListenAndServe()
close(serverDead)
}()
2019-05-08 23:45:04 +02:00
ctx := shutdown.Context()
2019-05-08 23:45:04 +02:00
go func() {
<-ctx.Done()
s.Stop()
}()
2019-05-08 23:45:04 +02:00
select {
case <-ctx.Done():
case <-serverDead:
}
2019-05-08 23:45:04 +02:00
2022-01-05 21:25:14 +01:00
log.Println("pihole-exporter HTTP server stopped")
2019-05-08 23:45:04 +02:00
}
2021-12-10 15:39:22 +01:00
func buildClients(clientConfigs []config.Config, envConfig *config.EnvConfig) []*pihole.Client {
2021-12-10 15:39:22 +01:00
clients := make([]*pihole.Client, 0, len(clientConfigs))
for i := range clientConfigs {
clientConfig := &clientConfigs[i]
client := pihole.NewClient(clientConfig, envConfig)
2021-12-10 15:39:22 +01:00
clients = append(clients, client)
}
return clients
}