53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
)
|
|
|
|
var (
|
|
SigningToken = os.Getenv("SIGNING_TOKEN")
|
|
fediAlts = map[string]string{}
|
|
)
|
|
|
|
func main() {
|
|
err := json.Unmarshal([]byte(os.Getenv("FEDI_ALTS")), &fediAlts)
|
|
if err != nil {
|
|
log.Println("fedi alts map failed to parse", err)
|
|
}
|
|
|
|
listenAddr := os.Getenv("LISTEN_ADDR")
|
|
if listenAddr == "" {
|
|
listenAddr = "0.0.0.0:8555"
|
|
}
|
|
|
|
mux := http.NewServeMux()
|
|
|
|
// our routes
|
|
mux.HandleFunc("/hook/{token}", postGetHookToken)
|
|
mux.HandleFunc("/healthcheck", getHealthcheck)
|
|
|
|
go populateSwitches()
|
|
|
|
// prometheus
|
|
mux.Handle("/metrics", promhttp.Handler())
|
|
|
|
log.Println("[main] http server listening on", listenAddr)
|
|
err = http.ListenAndServe(listenAddr, mux)
|
|
if err != nil {
|
|
log.Fatalln("[main] http server errored", err)
|
|
}
|
|
}
|
|
|
|
func getHealthcheck(rw http.ResponseWriter, req *http.Request) {
|
|
_, err := pkApi.GetMember("iodbz")
|
|
if err != nil {
|
|
log.Println("[HEALTHCHECK FAIL] failed to reach pluralkit", err)
|
|
errStatusInternalServerError(rw)
|
|
return
|
|
}
|
|
}
|